unknown

add gitignore, make express architecture, install modules

1 +
2 +# Created by https://www.gitignore.io/api/node
3 +
4 +### Node ###
5 +# Logs
6 +logs
7 +*.log
8 +npm-debug.log*
9 +yarn-debug.log*
10 +yarn-error.log*
11 +
12 +# Runtime data
13 +pids
14 +*.pid
15 +*.seed
16 +*.pid.lock
17 +
18 +# Directory for instrumented libs generated by jscoverage/JSCover
19 +lib-cov
20 +
21 +# Coverage directory used by tools like istanbul
22 +coverage
23 +
24 +# nyc test coverage
25 +.nyc_output
26 +
27 +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
28 +.grunt
29 +
30 +# Bower dependency directory (https://bower.io/)
31 +bower_components
32 +
33 +# node-waf configuration
34 +.lock-wscript
35 +
36 +# Compiled binary addons (https://nodejs.org/api/addons.html)
37 +build/Release
38 +
39 +# Dependency directories
40 +node_modules/
41 +jspm_packages/
42 +kakao_option.js
43 +db_option.js
44 +session.js
45 +kakao_option.js
46 +# TypeScript v1 declaration files
47 +typings/
48 +
49 +# Optional npm cache directory
50 +.npm
51 +
52 +# Optional eslint cache
53 +.eslintcache
54 +
55 +# Optional REPL history
56 +.node_repl_history
57 +
58 +# Output of 'npm pack'
59 +*.tgz
60 +
61 +# Yarn Integrity file
62 +.yarn-integrity
63 +
64 +# dotenv environment variables file
65 +.env
66 +
67 +# parcel-bundler cache (https://parceljs.org/)
68 +.cache
69 +
70 +# next.js build output
71 +.next
72 +
73 +# nuxt.js build output
74 +.nuxt
75 +
76 +# vuepress build output
77 +.vuepress/dist
78 +
79 +# Serverless directories
80 +.serverless
81 +
82 +
83 +# End of https://www.gitignore.io/api/node
...\ No newline at end of file ...\ No newline at end of file
1 +var createError = require('http-errors');
2 +var express = require('express');
3 +var path = require('path');
4 +var cookieParser = require('cookie-parser');
5 +var logger = require('morgan');
6 +
7 +var indexRouter = require('./routes/index');
8 +var usersRouter = require('./routes/users');
9 +
10 +var app = express();
11 +
12 +// view engine setup
13 +app.set('views', path.join(__dirname, 'views'));
14 +app.set('view engine', 'ejs');
15 +
16 +app.use(logger('dev'));
17 +app.use(express.json());
18 +app.use(express.urlencoded({ extended: false }));
19 +app.use(cookieParser());
20 +app.use(express.static(path.join(__dirname, 'public')));
21 +
22 +app.use('/', indexRouter);
23 +app.use('/users', usersRouter);
24 +
25 +// catch 404 and forward to error handler
26 +app.use(function(req, res, next) {
27 + next(createError(404));
28 +});
29 +
30 +// error handler
31 +app.use(function(err, req, res, next) {
32 + // set locals, only providing error in development
33 + res.locals.message = err.message;
34 + res.locals.error = req.app.get('env') === 'development' ? err : {};
35 +
36 + // render the error page
37 + res.status(err.status || 500);
38 + res.render('error');
39 +});
40 +
41 +module.exports = app;
1 +#!/usr/bin/env node
2 +
3 +/**
4 + * Module dependencies.
5 + */
6 +
7 +var app = require('../app');
8 +var debug = require('debug')('project:server');
9 +var http = require('http');
10 +
11 +/**
12 + * Get port from environment and store in Express.
13 + */
14 +
15 +var port = normalizePort(process.env.PORT || '3000');
16 +app.set('port', port);
17 +
18 +/**
19 + * Create HTTP server.
20 + */
21 +
22 +var server = http.createServer(app);
23 +
24 +/**
25 + * Listen on provided port, on all network interfaces.
26 + */
27 +
28 +server.listen(port);
29 +server.on('error', onError);
30 +server.on('listening', onListening);
31 +
32 +/**
33 + * Normalize a port into a number, string, or false.
34 + */
35 +
36 +function normalizePort(val) {
37 + var port = parseInt(val, 10);
38 +
39 + if (isNaN(port)) {
40 + // named pipe
41 + return val;
42 + }
43 +
44 + if (port >= 0) {
45 + // port number
46 + return port;
47 + }
48 +
49 + return false;
50 +}
51 +
52 +/**
53 + * Event listener for HTTP server "error" event.
54 + */
55 +
56 +function onError(error) {
57 + if (error.syscall !== 'listen') {
58 + throw error;
59 + }
60 +
61 + var bind = typeof port === 'string'
62 + ? 'Pipe ' + port
63 + : 'Port ' + port;
64 +
65 + // handle specific listen errors with friendly messages
66 + switch (error.code) {
67 + case 'EACCES':
68 + console.error(bind + ' requires elevated privileges');
69 + process.exit(1);
70 + break;
71 + case 'EADDRINUSE':
72 + console.error(bind + ' is already in use');
73 + process.exit(1);
74 + break;
75 + default:
76 + throw error;
77 + }
78 +}
79 +
80 +/**
81 + * Event listener for HTTP server "listening" event.
82 + */
83 +
84 +function onListening() {
85 + var addr = server.address();
86 + var bind = typeof addr === 'string'
87 + ? 'pipe ' + addr
88 + : 'port ' + addr.port;
89 + debug('Listening on ' + bind);
90 +}
1 +{
2 + "name": "project",
3 + "version": "0.0.0",
4 + "lockfileVersion": 1,
5 + "requires": true,
6 + "dependencies": {
7 + "accepts": {
8 + "version": "1.3.5",
9 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
10 + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
11 + "requires": {
12 + "mime-types": "2.1.21",
13 + "negotiator": "0.6.1"
14 + }
15 + },
16 + "after": {
17 + "version": "0.8.2",
18 + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
19 + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
20 + },
21 + "array-flatten": {
22 + "version": "1.1.1",
23 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
24 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
25 + },
26 + "arraybuffer.slice": {
27 + "version": "0.0.7",
28 + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
29 + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
30 + },
31 + "async-limiter": {
32 + "version": "1.0.0",
33 + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
34 + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
35 + },
36 + "backo2": {
37 + "version": "1.0.2",
38 + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
39 + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
40 + },
41 + "base64-arraybuffer": {
42 + "version": "0.1.5",
43 + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
44 + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
45 + },
46 + "base64id": {
47 + "version": "1.0.0",
48 + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
49 + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY="
50 + },
51 + "basic-auth": {
52 + "version": "2.0.1",
53 + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
54 + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
55 + "requires": {
56 + "safe-buffer": "5.1.2"
57 + }
58 + },
59 + "better-assert": {
60 + "version": "1.0.2",
61 + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
62 + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
63 + "requires": {
64 + "callsite": "1.0.0"
65 + }
66 + },
67 + "blob": {
68 + "version": "0.0.5",
69 + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
70 + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig=="
71 + },
72 + "body-parser": {
73 + "version": "1.18.3",
74 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
75 + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
76 + "requires": {
77 + "bytes": "3.0.0",
78 + "content-type": "1.0.4",
79 + "debug": "2.6.9",
80 + "depd": "1.1.2",
81 + "http-errors": "1.6.3",
82 + "iconv-lite": "0.4.23",
83 + "on-finished": "2.3.0",
84 + "qs": "6.5.2",
85 + "raw-body": "2.3.3",
86 + "type-is": "1.6.16"
87 + }
88 + },
89 + "bytes": {
90 + "version": "3.0.0",
91 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
92 + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
93 + },
94 + "callsite": {
95 + "version": "1.0.0",
96 + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
97 + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
98 + },
99 + "camelize": {
100 + "version": "1.0.0",
101 + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz",
102 + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs="
103 + },
104 + "component-bind": {
105 + "version": "1.0.0",
106 + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
107 + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
108 + },
109 + "component-emitter": {
110 + "version": "1.2.1",
111 + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
112 + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
113 + },
114 + "component-inherit": {
115 + "version": "0.0.3",
116 + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
117 + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
118 + },
119 + "compressible": {
120 + "version": "2.0.15",
121 + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz",
122 + "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==",
123 + "requires": {
124 + "mime-db": "1.37.0"
125 + }
126 + },
127 + "compression": {
128 + "version": "1.7.3",
129 + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
130 + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
131 + "requires": {
132 + "accepts": "1.3.5",
133 + "bytes": "3.0.0",
134 + "compressible": "2.0.15",
135 + "debug": "2.6.9",
136 + "on-headers": "1.0.1",
137 + "safe-buffer": "5.1.2",
138 + "vary": "1.1.2"
139 + }
140 + },
141 + "content-disposition": {
142 + "version": "0.5.2",
143 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
144 + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
145 + },
146 + "content-security-policy-builder": {
147 + "version": "2.0.0",
148 + "resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.0.0.tgz",
149 + "integrity": "sha512-j+Nhmj1yfZAikJLImCvPJFE29x/UuBi+/MWqggGGc515JKaZrjuei2RhULJmy0MsstW3E3htl002bwmBNMKr7w=="
150 + },
151 + "content-type": {
152 + "version": "1.0.4",
153 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
154 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
155 + },
156 + "cookie": {
157 + "version": "0.3.1",
158 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
159 + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
160 + },
161 + "cookie-parser": {
162 + "version": "1.4.3",
163 + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz",
164 + "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=",
165 + "requires": {
166 + "cookie": "0.3.1",
167 + "cookie-signature": "1.0.6"
168 + }
169 + },
170 + "cookie-signature": {
171 + "version": "1.0.6",
172 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
173 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
174 + },
175 + "dasherize": {
176 + "version": "2.0.0",
177 + "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz",
178 + "integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg="
179 + },
180 + "debug": {
181 + "version": "2.6.9",
182 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
183 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
184 + "requires": {
185 + "ms": "2.0.0"
186 + }
187 + },
188 + "depd": {
189 + "version": "1.1.2",
190 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
191 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
192 + },
193 + "destroy": {
194 + "version": "1.0.4",
195 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
196 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
197 + },
198 + "dns-prefetch-control": {
199 + "version": "0.1.0",
200 + "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz",
201 + "integrity": "sha1-YN20V3dOF48flBXwyrsOhbCzALI="
202 + },
203 + "dont-sniff-mimetype": {
204 + "version": "1.0.0",
205 + "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.0.0.tgz",
206 + "integrity": "sha1-WTKJDcn04vGeXrAqIAJuXl78j1g="
207 + },
208 + "ee-first": {
209 + "version": "1.1.1",
210 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
211 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
212 + },
213 + "ejs": {
214 + "version": "2.5.9",
215 + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz",
216 + "integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ=="
217 + },
218 + "encodeurl": {
219 + "version": "1.0.2",
220 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
221 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
222 + },
223 + "engine.io": {
224 + "version": "3.3.1",
225 + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.1.tgz",
226 + "integrity": "sha512-p0njqQo5QWVxJauKcnp5IO+LBeE5JD1tAf+UxPU8ASEUHSpsSSfYR+kVb8XGGH8AEDUa1Dk5jCvPQShNBL5BdQ==",
227 + "requires": {
228 + "accepts": "1.3.5",
229 + "base64id": "1.0.0",
230 + "cookie": "0.3.1",
231 + "debug": "3.1.0",
232 + "engine.io-parser": "2.1.3",
233 + "ws": "6.1.2"
234 + },
235 + "dependencies": {
236 + "debug": {
237 + "version": "3.1.0",
238 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
239 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
240 + "requires": {
241 + "ms": "2.0.0"
242 + }
243 + }
244 + }
245 + },
246 + "engine.io-client": {
247 + "version": "3.3.1",
248 + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.1.tgz",
249 + "integrity": "sha512-q66JBFuQcy7CSlfAz9L3jH+v7DTT3i6ZEadYcVj2pOs8/0uJHLxKX3WBkGTvULJMdz0tUCyJag0aKT/dpXL9BQ==",
250 + "requires": {
251 + "component-emitter": "1.2.1",
252 + "component-inherit": "0.0.3",
253 + "debug": "3.1.0",
254 + "engine.io-parser": "2.1.3",
255 + "has-cors": "1.1.0",
256 + "indexof": "0.0.1",
257 + "parseqs": "0.0.5",
258 + "parseuri": "0.0.5",
259 + "ws": "6.1.2",
260 + "xmlhttprequest-ssl": "1.5.5",
261 + "yeast": "0.1.2"
262 + },
263 + "dependencies": {
264 + "debug": {
265 + "version": "3.1.0",
266 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
267 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
268 + "requires": {
269 + "ms": "2.0.0"
270 + }
271 + }
272 + }
273 + },
274 + "engine.io-parser": {
275 + "version": "2.1.3",
276 + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz",
277 + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==",
278 + "requires": {
279 + "after": "0.8.2",
280 + "arraybuffer.slice": "0.0.7",
281 + "base64-arraybuffer": "0.1.5",
282 + "blob": "0.0.5",
283 + "has-binary2": "1.0.3"
284 + }
285 + },
286 + "escape-html": {
287 + "version": "1.0.3",
288 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
289 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
290 + },
291 + "etag": {
292 + "version": "1.8.1",
293 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
294 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
295 + },
296 + "expect-ct": {
297 + "version": "0.1.1",
298 + "resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.1.1.tgz",
299 + "integrity": "sha512-ngXzTfoRGG7fYens3/RMb6yYoVLvLMfmsSllP/mZPxNHgFq41TmPSLF/nLY7fwoclI2vElvAmILFWGUYqdjfCg=="
300 + },
301 + "express": {
302 + "version": "4.16.4",
303 + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
304 + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
305 + "requires": {
306 + "accepts": "1.3.5",
307 + "array-flatten": "1.1.1",
308 + "body-parser": "1.18.3",
309 + "content-disposition": "0.5.2",
310 + "content-type": "1.0.4",
311 + "cookie": "0.3.1",
312 + "cookie-signature": "1.0.6",
313 + "debug": "2.6.9",
314 + "depd": "1.1.2",
315 + "encodeurl": "1.0.2",
316 + "escape-html": "1.0.3",
317 + "etag": "1.8.1",
318 + "finalhandler": "1.1.1",
319 + "fresh": "0.5.2",
320 + "merge-descriptors": "1.0.1",
321 + "methods": "1.1.2",
322 + "on-finished": "2.3.0",
323 + "parseurl": "1.3.2",
324 + "path-to-regexp": "0.1.7",
325 + "proxy-addr": "2.0.4",
326 + "qs": "6.5.2",
327 + "range-parser": "1.2.0",
328 + "safe-buffer": "5.1.2",
329 + "send": "0.16.2",
330 + "serve-static": "1.13.2",
331 + "setprototypeof": "1.1.0",
332 + "statuses": "1.4.0",
333 + "type-is": "1.6.16",
334 + "utils-merge": "1.0.1",
335 + "vary": "1.1.2"
336 + },
337 + "dependencies": {
338 + "statuses": {
339 + "version": "1.4.0",
340 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
341 + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
342 + }
343 + }
344 + },
345 + "feature-policy": {
346 + "version": "0.2.0",
347 + "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.2.0.tgz",
348 + "integrity": "sha512-2hGrlv6efG4hscYVZeaYjpzpT6I2OZgYqE2yDUzeAcKj2D1SH0AsEzqJNXzdoglEddcIXQQYop3lD97XpG75Jw=="
349 + },
350 + "finalhandler": {
351 + "version": "1.1.1",
352 + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
353 + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
354 + "requires": {
355 + "debug": "2.6.9",
356 + "encodeurl": "1.0.2",
357 + "escape-html": "1.0.3",
358 + "on-finished": "2.3.0",
359 + "parseurl": "1.3.2",
360 + "statuses": "1.4.0",
361 + "unpipe": "1.0.0"
362 + },
363 + "dependencies": {
364 + "statuses": {
365 + "version": "1.4.0",
366 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
367 + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
368 + }
369 + }
370 + },
371 + "forwarded": {
372 + "version": "0.1.2",
373 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
374 + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
375 + },
376 + "frameguard": {
377 + "version": "3.0.0",
378 + "resolved": "https://registry.npmjs.org/frameguard/-/frameguard-3.0.0.tgz",
379 + "integrity": "sha1-e8rUae57lukdEs6zlZx4I1qScuk="
380 + },
381 + "fresh": {
382 + "version": "0.5.2",
383 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
384 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
385 + },
386 + "has-binary2": {
387 + "version": "1.0.3",
388 + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
389 + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
390 + "requires": {
391 + "isarray": "2.0.1"
392 + }
393 + },
394 + "has-cors": {
395 + "version": "1.1.0",
396 + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
397 + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
398 + },
399 + "helmet": {
400 + "version": "3.15.0",
401 + "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.15.0.tgz",
402 + "integrity": "sha512-j9JjtAnWJj09lqe/PEICrhuDaX30TeokXJ9tW6ZPhVH0+LMoihDeJ58CdWeTGzM66p6EiIODmgAaWfdeIWI4Gg==",
403 + "requires": {
404 + "dns-prefetch-control": "0.1.0",
405 + "dont-sniff-mimetype": "1.0.0",
406 + "expect-ct": "0.1.1",
407 + "feature-policy": "0.2.0",
408 + "frameguard": "3.0.0",
409 + "helmet-crossdomain": "0.3.0",
410 + "helmet-csp": "2.7.1",
411 + "hide-powered-by": "1.0.0",
412 + "hpkp": "2.0.0",
413 + "hsts": "2.1.0",
414 + "ienoopen": "1.0.0",
415 + "nocache": "2.0.0",
416 + "referrer-policy": "1.1.0",
417 + "x-xss-protection": "1.1.0"
418 + }
419 + },
420 + "helmet-crossdomain": {
421 + "version": "0.3.0",
422 + "resolved": "https://registry.npmjs.org/helmet-crossdomain/-/helmet-crossdomain-0.3.0.tgz",
423 + "integrity": "sha512-YiXhj0E35nC4Na5EPE4mTfoXMf9JTGpN4OtB4aLqShKuH9d2HNaJX5MQoglO6STVka0uMsHyG5lCut5Kzsy7Lg=="
424 + },
425 + "helmet-csp": {
426 + "version": "2.7.1",
427 + "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.7.1.tgz",
428 + "integrity": "sha512-sCHwywg4daQ2mY0YYwXSZRsgcCeerUwxMwNixGA7aMLkVmPTYBl7gJoZDHOZyXkqPrtuDT3s2B1A+RLI7WxSdQ==",
429 + "requires": {
430 + "camelize": "1.0.0",
431 + "content-security-policy-builder": "2.0.0",
432 + "dasherize": "2.0.0",
433 + "platform": "1.3.5"
434 + }
435 + },
436 + "hide-powered-by": {
437 + "version": "1.0.0",
438 + "resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.0.0.tgz",
439 + "integrity": "sha1-SoWtZYgfYoV/xwr3F0oRhNzM4ys="
440 + },
441 + "hpkp": {
442 + "version": "2.0.0",
443 + "resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz",
444 + "integrity": "sha1-EOFCJk52IVpdMMROxD3mTe5tFnI="
445 + },
446 + "hsts": {
447 + "version": "2.1.0",
448 + "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.1.0.tgz",
449 + "integrity": "sha512-zXhh/DqgrTXJ7erTN6Fh5k/xjMhDGXCqdYN3wvxUvGUQvnxcFfUd8E+6vLg/nk3ss1TYMb+DhRl25fYABioTvA=="
450 + },
451 + "http-errors": {
452 + "version": "1.6.3",
453 + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
454 + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
455 + "requires": {
456 + "depd": "1.1.2",
457 + "inherits": "2.0.3",
458 + "setprototypeof": "1.1.0",
459 + "statuses": "1.5.0"
460 + }
461 + },
462 + "iconv-lite": {
463 + "version": "0.4.23",
464 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
465 + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
466 + "requires": {
467 + "safer-buffer": "2.1.2"
468 + }
469 + },
470 + "ienoopen": {
471 + "version": "1.0.0",
472 + "resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.0.0.tgz",
473 + "integrity": "sha1-NGpCj0dKrI9QzzeE6i0PFvYr2ms="
474 + },
475 + "indexof": {
476 + "version": "0.0.1",
477 + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
478 + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
479 + },
480 + "inherits": {
481 + "version": "2.0.3",
482 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
483 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
484 + },
485 + "ipaddr.js": {
486 + "version": "1.8.0",
487 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
488 + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
489 + },
490 + "isarray": {
491 + "version": "2.0.1",
492 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
493 + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
494 + },
495 + "media-typer": {
496 + "version": "0.3.0",
497 + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
498 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
499 + },
500 + "merge-descriptors": {
501 + "version": "1.0.1",
502 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
503 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
504 + },
505 + "methods": {
506 + "version": "1.1.2",
507 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
508 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
509 + },
510 + "mime": {
511 + "version": "1.4.1",
512 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
513 + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
514 + },
515 + "mime-db": {
516 + "version": "1.37.0",
517 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
518 + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
519 + },
520 + "mime-types": {
521 + "version": "2.1.21",
522 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
523 + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
524 + "requires": {
525 + "mime-db": "1.37.0"
526 + }
527 + },
528 + "morgan": {
529 + "version": "1.9.1",
530 + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
531 + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
532 + "requires": {
533 + "basic-auth": "2.0.1",
534 + "debug": "2.6.9",
535 + "depd": "1.1.2",
536 + "on-finished": "2.3.0",
537 + "on-headers": "1.0.1"
538 + }
539 + },
540 + "ms": {
541 + "version": "2.0.0",
542 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
543 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
544 + },
545 + "negotiator": {
546 + "version": "0.6.1",
547 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
548 + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
549 + },
550 + "nocache": {
551 + "version": "2.0.0",
552 + "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.0.0.tgz",
553 + "integrity": "sha1-ICtIAhoMTL3i34DeFaF0Q8i0OYA="
554 + },
555 + "object-component": {
556 + "version": "0.0.3",
557 + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
558 + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
559 + },
560 + "on-finished": {
561 + "version": "2.3.0",
562 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
563 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
564 + "requires": {
565 + "ee-first": "1.1.1"
566 + }
567 + },
568 + "on-headers": {
569 + "version": "1.0.1",
570 + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
571 + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
572 + },
573 + "parseqs": {
574 + "version": "0.0.5",
575 + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
576 + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
577 + "requires": {
578 + "better-assert": "1.0.2"
579 + }
580 + },
581 + "parseuri": {
582 + "version": "0.0.5",
583 + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
584 + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
585 + "requires": {
586 + "better-assert": "1.0.2"
587 + }
588 + },
589 + "parseurl": {
590 + "version": "1.3.2",
591 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
592 + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
593 + },
594 + "path-to-regexp": {
595 + "version": "0.1.7",
596 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
597 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
598 + },
599 + "platform": {
600 + "version": "1.3.5",
601 + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz",
602 + "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q=="
603 + },
604 + "proxy-addr": {
605 + "version": "2.0.4",
606 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
607 + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
608 + "requires": {
609 + "forwarded": "0.1.2",
610 + "ipaddr.js": "1.8.0"
611 + }
612 + },
613 + "qs": {
614 + "version": "6.5.2",
615 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
616 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
617 + },
618 + "range-parser": {
619 + "version": "1.2.0",
620 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
621 + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
622 + },
623 + "raw-body": {
624 + "version": "2.3.3",
625 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
626 + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
627 + "requires": {
628 + "bytes": "3.0.0",
629 + "http-errors": "1.6.3",
630 + "iconv-lite": "0.4.23",
631 + "unpipe": "1.0.0"
632 + }
633 + },
634 + "referrer-policy": {
635 + "version": "1.1.0",
636 + "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.1.0.tgz",
637 + "integrity": "sha1-NXdOtzW/UPtsB46DM0tHI1AgfXk="
638 + },
639 + "safe-buffer": {
640 + "version": "5.1.2",
641 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
642 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
643 + },
644 + "safer-buffer": {
645 + "version": "2.1.2",
646 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
647 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
648 + },
649 + "send": {
650 + "version": "0.16.2",
651 + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
652 + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
653 + "requires": {
654 + "debug": "2.6.9",
655 + "depd": "1.1.2",
656 + "destroy": "1.0.4",
657 + "encodeurl": "1.0.2",
658 + "escape-html": "1.0.3",
659 + "etag": "1.8.1",
660 + "fresh": "0.5.2",
661 + "http-errors": "1.6.3",
662 + "mime": "1.4.1",
663 + "ms": "2.0.0",
664 + "on-finished": "2.3.0",
665 + "range-parser": "1.2.0",
666 + "statuses": "1.4.0"
667 + },
668 + "dependencies": {
669 + "statuses": {
670 + "version": "1.4.0",
671 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
672 + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
673 + }
674 + }
675 + },
676 + "serve-static": {
677 + "version": "1.13.2",
678 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
679 + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
680 + "requires": {
681 + "encodeurl": "1.0.2",
682 + "escape-html": "1.0.3",
683 + "parseurl": "1.3.2",
684 + "send": "0.16.2"
685 + }
686 + },
687 + "setprototypeof": {
688 + "version": "1.1.0",
689 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
690 + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
691 + },
692 + "socket.io": {
693 + "version": "2.2.0",
694 + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz",
695 + "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==",
696 + "requires": {
697 + "debug": "4.1.0",
698 + "engine.io": "3.3.1",
699 + "has-binary2": "1.0.3",
700 + "socket.io-adapter": "1.1.1",
701 + "socket.io-client": "2.2.0",
702 + "socket.io-parser": "3.3.0"
703 + },
704 + "dependencies": {
705 + "debug": {
706 + "version": "4.1.0",
707 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
708 + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
709 + "requires": {
710 + "ms": "2.1.1"
711 + }
712 + },
713 + "ms": {
714 + "version": "2.1.1",
715 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
716 + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
717 + }
718 + }
719 + },
720 + "socket.io-adapter": {
721 + "version": "1.1.1",
722 + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz",
723 + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs="
724 + },
725 + "socket.io-client": {
726 + "version": "2.2.0",
727 + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz",
728 + "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==",
729 + "requires": {
730 + "backo2": "1.0.2",
731 + "base64-arraybuffer": "0.1.5",
732 + "component-bind": "1.0.0",
733 + "component-emitter": "1.2.1",
734 + "debug": "3.1.0",
735 + "engine.io-client": "3.3.1",
736 + "has-binary2": "1.0.3",
737 + "has-cors": "1.1.0",
738 + "indexof": "0.0.1",
739 + "object-component": "0.0.3",
740 + "parseqs": "0.0.5",
741 + "parseuri": "0.0.5",
742 + "socket.io-parser": "3.3.0",
743 + "to-array": "0.1.4"
744 + },
745 + "dependencies": {
746 + "debug": {
747 + "version": "3.1.0",
748 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
749 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
750 + "requires": {
751 + "ms": "2.0.0"
752 + }
753 + }
754 + }
755 + },
756 + "socket.io-parser": {
757 + "version": "3.3.0",
758 + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz",
759 + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==",
760 + "requires": {
761 + "component-emitter": "1.2.1",
762 + "debug": "3.1.0",
763 + "isarray": "2.0.1"
764 + },
765 + "dependencies": {
766 + "debug": {
767 + "version": "3.1.0",
768 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
769 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
770 + "requires": {
771 + "ms": "2.0.0"
772 + }
773 + }
774 + }
775 + },
776 + "statuses": {
777 + "version": "1.5.0",
778 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
779 + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
780 + },
781 + "to-array": {
782 + "version": "0.1.4",
783 + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
784 + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
785 + },
786 + "type-is": {
787 + "version": "1.6.16",
788 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
789 + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
790 + "requires": {
791 + "media-typer": "0.3.0",
792 + "mime-types": "2.1.21"
793 + }
794 + },
795 + "unpipe": {
796 + "version": "1.0.0",
797 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
798 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
799 + },
800 + "utils-merge": {
801 + "version": "1.0.1",
802 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
803 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
804 + },
805 + "vary": {
806 + "version": "1.1.2",
807 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
808 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
809 + },
810 + "ws": {
811 + "version": "6.1.2",
812 + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz",
813 + "integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==",
814 + "requires": {
815 + "async-limiter": "1.0.0"
816 + }
817 + },
818 + "x-xss-protection": {
819 + "version": "1.1.0",
820 + "resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.1.0.tgz",
821 + "integrity": "sha512-rx3GzJlgEeZ08MIcDsU2vY2B1QEriUKJTSiNHHUIem6eg9pzVOr2TL3Y4Pd6TMAM5D5azGjcxqI62piITBDHVg=="
822 + },
823 + "xmlhttprequest-ssl": {
824 + "version": "1.5.5",
825 + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
826 + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
827 + },
828 + "yeast": {
829 + "version": "0.1.2",
830 + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
831 + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
832 + }
833 + }
834 +}
1 +{
2 + "name": "project",
3 + "version": "0.0.0",
4 + "private": true,
5 + "scripts": {
6 + "start": "node ./bin/www"
7 + },
8 + "dependencies": {
9 + "body-parser": "^1.18.3",
10 + "compression": "^1.7.3",
11 + "cookie-parser": "~1.4.3",
12 + "debug": "~2.6.9",
13 + "ejs": "~2.5.7",
14 + "express": "~4.16.0",
15 + "http-errors": "~1.6.2",
16 + "morgan": "~1.9.0",
17 + "helmet": "^3.13.0",
18 + "socket.io": "^2.1.1"
19 + }
20 +}
1 +body {
2 + padding: 50px;
3 + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
4 +}
5 +
6 +a {
7 + color: #00B7FF;
8 +}
1 +var express = require('express');
2 +var router = express.Router();
3 +
4 +/* GET home page. */
5 +router.get('/', function(req, res, next) {
6 + res.render('index', { title: 'Express' });
7 +});
8 +
9 +module.exports = router;
1 +var express = require('express');
2 +var router = express.Router();
3 +
4 +/* GET users listing. */
5 +router.get('/', function(req, res, next) {
6 + res.send('respond with a resource');
7 +});
8 +
9 +module.exports = router;
1 +<h1><%= message %></h1>
2 +<h2><%= error.status %></h2>
3 +<pre><%= error.stack %></pre>
1 +<!DOCTYPE html>
2 +<html>
3 + <head>
4 + <title><%= title %></title>
5 + <link rel='stylesheet' href='/stylesheets/style.css' />
6 + </head>
7 + <body>
8 + <h1><%= title %></h1>
9 + <p>Welcome to <%= title %></p>
10 + </body>
11 +</html>