Onja
1 year ago
commit
39e38ce379
9 changed files with 1392 additions and 0 deletions
@ -0,0 +1,144 @@ |
|||||
|
# Created by https://www.toptal.com/developers/gitignore/api/node |
||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=node |
||||
|
|
||||
|
### Node ### |
||||
|
# Logs |
||||
|
logs |
||||
|
*.log |
||||
|
npm-debug.log* |
||||
|
yarn-debug.log* |
||||
|
yarn-error.log* |
||||
|
lerna-debug.log* |
||||
|
.pnpm-debug.log* |
||||
|
|
||||
|
# Diagnostic reports (https://nodejs.org/api/report.html) |
||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json |
||||
|
|
||||
|
# Runtime data |
||||
|
pids |
||||
|
*.pid |
||||
|
*.seed |
||||
|
*.pid.lock |
||||
|
|
||||
|
# Directory for instrumented libs generated by jscoverage/JSCover |
||||
|
lib-cov |
||||
|
|
||||
|
# Coverage directory used by tools like istanbul |
||||
|
coverage |
||||
|
*.lcov |
||||
|
|
||||
|
# nyc test coverage |
||||
|
.nyc_output |
||||
|
|
||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) |
||||
|
.grunt |
||||
|
|
||||
|
# Bower dependency directory (https://bower.io/) |
||||
|
bower_components |
||||
|
|
||||
|
# node-waf configuration |
||||
|
.lock-wscript |
||||
|
|
||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html) |
||||
|
build/Release |
||||
|
|
||||
|
# Dependency directories |
||||
|
node_modules/ |
||||
|
jspm_packages/ |
||||
|
|
||||
|
# Snowpack dependency directory (https://snowpack.dev/) |
||||
|
web_modules/ |
||||
|
|
||||
|
# TypeScript cache |
||||
|
*.tsbuildinfo |
||||
|
|
||||
|
# Optional npm cache directory |
||||
|
.npm |
||||
|
|
||||
|
# Optional eslint cache |
||||
|
.eslintcache |
||||
|
|
||||
|
# Optional stylelint cache |
||||
|
.stylelintcache |
||||
|
|
||||
|
# Microbundle cache |
||||
|
.rpt2_cache/ |
||||
|
.rts2_cache_cjs/ |
||||
|
.rts2_cache_es/ |
||||
|
.rts2_cache_umd/ |
||||
|
|
||||
|
# Optional REPL history |
||||
|
.node_repl_history |
||||
|
|
||||
|
# Output of 'npm pack' |
||||
|
*.tgz |
||||
|
|
||||
|
# Yarn Integrity file |
||||
|
.yarn-integrity |
||||
|
|
||||
|
# dotenv environment variable files |
||||
|
.env |
||||
|
.env.development.local |
||||
|
.env.test.local |
||||
|
.env.production.local |
||||
|
.env.local |
||||
|
|
||||
|
# parcel-bundler cache (https://parceljs.org/) |
||||
|
.cache |
||||
|
.parcel-cache |
||||
|
|
||||
|
# Next.js build output |
||||
|
.next |
||||
|
out |
||||
|
|
||||
|
# Nuxt.js build / generate output |
||||
|
.nuxt |
||||
|
dist |
||||
|
|
||||
|
# Gatsby files |
||||
|
.cache/ |
||||
|
# Comment in the public line in if your project uses Gatsby and not Next.js |
||||
|
# https://nextjs.org/blog/next-9-1#public-directory-support |
||||
|
# public |
||||
|
|
||||
|
# vuepress build output |
||||
|
.vuepress/dist |
||||
|
|
||||
|
# vuepress v2.x temp and cache directory |
||||
|
.temp |
||||
|
|
||||
|
# Docusaurus cache and generated files |
||||
|
.docusaurus |
||||
|
|
||||
|
# Serverless directories |
||||
|
.serverless/ |
||||
|
|
||||
|
# FuseBox cache |
||||
|
.fusebox/ |
||||
|
|
||||
|
# DynamoDB Local files |
||||
|
.dynamodb/ |
||||
|
|
||||
|
# TernJS port file |
||||
|
.tern-port |
||||
|
|
||||
|
# Stores VSCode versions used for testing VSCode extensions |
||||
|
.vscode-test |
||||
|
|
||||
|
# yarn v2 |
||||
|
.yarn/cache |
||||
|
.yarn/unplugged |
||||
|
.yarn/build-state.yml |
||||
|
.yarn/install-state.gz |
||||
|
.pnp.* |
||||
|
|
||||
|
### Node Patch ### |
||||
|
# Serverless Webpack directories |
||||
|
.webpack/ |
||||
|
|
||||
|
# Optional stylelint cache |
||||
|
|
||||
|
# SvelteKit build / generate output |
||||
|
.svelte-kit |
||||
|
|
||||
|
# End of https://www.toptal.com/developers/gitignore/api/node |
@ -0,0 +1,90 @@ |
|||||
|
#!/usr/bin/env node |
||||
|
|
||||
|
/** |
||||
|
* Module dependencies. |
||||
|
*/ |
||||
|
|
||||
|
var app = require('../src/app'); |
||||
|
var debug = require('debug')('bodacc:server'); |
||||
|
var http = require('http'); |
||||
|
|
||||
|
/** |
||||
|
* Get port from environment and store in Express. |
||||
|
*/ |
||||
|
|
||||
|
var port = normalizePort(process.env.PORT || '3100'); |
||||
|
app.set('port', port); |
||||
|
|
||||
|
/** |
||||
|
* Create HTTP server. |
||||
|
*/ |
||||
|
|
||||
|
var server = http.createServer(app); |
||||
|
|
||||
|
/** |
||||
|
* Listen on provided port, on all network interfaces. |
||||
|
*/ |
||||
|
|
||||
|
server.listen(port); |
||||
|
server.on('error', onError); |
||||
|
server.on('listening', onListening); |
||||
|
|
||||
|
/** |
||||
|
* Normalize a port into a number, string, or false. |
||||
|
*/ |
||||
|
|
||||
|
function normalizePort(val) { |
||||
|
var port = parseInt(val, 10); |
||||
|
|
||||
|
if (isNaN(port)) { |
||||
|
// named pipe |
||||
|
return val; |
||||
|
} |
||||
|
|
||||
|
if (port >= 0) { |
||||
|
// port number |
||||
|
return port; |
||||
|
} |
||||
|
|
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Event listener for HTTP server "error" event. |
||||
|
*/ |
||||
|
|
||||
|
function onError(error) { |
||||
|
if (error.syscall !== 'listen') { |
||||
|
throw error; |
||||
|
} |
||||
|
|
||||
|
var bind = typeof port === 'string' |
||||
|
? 'Pipe ' + port |
||||
|
: 'Port ' + port; |
||||
|
|
||||
|
// handle specific listen errors with friendly messages |
||||
|
switch (error.code) { |
||||
|
case 'EACCES': |
||||
|
console.error(bind + ' requires elevated privileges'); |
||||
|
process.exit(1); |
||||
|
break; |
||||
|
case 'EADDRINUSE': |
||||
|
console.error(bind + ' is already in use'); |
||||
|
process.exit(1); |
||||
|
break; |
||||
|
default: |
||||
|
throw error; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Event listener for HTTP server "listening" event. |
||||
|
*/ |
||||
|
|
||||
|
function onListening() { |
||||
|
var addr = server.address(); |
||||
|
var bind = typeof addr === 'string' |
||||
|
? 'pipe ' + addr |
||||
|
: 'port ' + addr.port; |
||||
|
debug('Listening on ' + bind); |
||||
|
} |
@ -0,0 +1,999 @@ |
|||||
|
{ |
||||
|
"name": "bodacc", |
||||
|
"version": "0.0.0", |
||||
|
"lockfileVersion": 2, |
||||
|
"requires": true, |
||||
|
"packages": { |
||||
|
"": { |
||||
|
"name": "bodacc", |
||||
|
"version": "0.0.0", |
||||
|
"dependencies": { |
||||
|
"cookie-parser": "~1.4.4", |
||||
|
"csv-parser": "^3.0.0", |
||||
|
"debug": "~2.6.9", |
||||
|
"ejs": "~2.6.1", |
||||
|
"events": "^3.3.0", |
||||
|
"express": "~4.16.1", |
||||
|
"http-errors": "~1.6.3", |
||||
|
"morgan": "~1.9.1", |
||||
|
"slugify": "^1.6.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/accepts": { |
||||
|
"version": "1.3.8", |
||||
|
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", |
||||
|
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", |
||||
|
"dependencies": { |
||||
|
"mime-types": "~2.1.34", |
||||
|
"negotiator": "0.6.3" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/array-flatten": { |
||||
|
"version": "1.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |
||||
|
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" |
||||
|
}, |
||||
|
"node_modules/basic-auth": { |
||||
|
"version": "2.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", |
||||
|
"integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", |
||||
|
"dependencies": { |
||||
|
"safe-buffer": "5.1.2" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.8" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/body-parser": { |
||||
|
"version": "1.18.3", |
||||
|
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", |
||||
|
"integrity": "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==", |
||||
|
"dependencies": { |
||||
|
"bytes": "3.0.0", |
||||
|
"content-type": "~1.0.4", |
||||
|
"debug": "2.6.9", |
||||
|
"depd": "~1.1.2", |
||||
|
"http-errors": "~1.6.3", |
||||
|
"iconv-lite": "0.4.23", |
||||
|
"on-finished": "~2.3.0", |
||||
|
"qs": "6.5.2", |
||||
|
"raw-body": "2.3.3", |
||||
|
"type-is": "~1.6.16" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.8" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/bytes": { |
||||
|
"version": "3.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", |
||||
|
"integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.8" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/content-disposition": { |
||||
|
"version": "0.5.2", |
||||
|
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", |
||||
|
"integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/content-type": { |
||||
|
"version": "1.0.5", |
||||
|
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", |
||||
|
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/cookie": { |
||||
|
"version": "0.4.1", |
||||
|
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", |
||||
|
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/cookie-parser": { |
||||
|
"version": "1.4.6", |
||||
|
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", |
||||
|
"integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", |
||||
|
"dependencies": { |
||||
|
"cookie": "0.4.1", |
||||
|
"cookie-signature": "1.0.6" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.8.0" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/cookie-signature": { |
||||
|
"version": "1.0.6", |
||||
|
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", |
||||
|
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" |
||||
|
}, |
||||
|
"node_modules/csv-parser": { |
||||
|
"version": "3.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.0.0.tgz", |
||||
|
"integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==", |
||||
|
"dependencies": { |
||||
|
"minimist": "^1.2.0" |
||||
|
}, |
||||
|
"bin": { |
||||
|
"csv-parser": "bin/csv-parser" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 10" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/debug": { |
||||
|
"version": "2.6.9", |
||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
||||
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", |
||||
|
"dependencies": { |
||||
|
"ms": "2.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/depd": { |
||||
|
"version": "1.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", |
||||
|
"integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/destroy": { |
||||
|
"version": "1.0.4", |
||||
|
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", |
||||
|
"integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" |
||||
|
}, |
||||
|
"node_modules/ee-first": { |
||||
|
"version": "1.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", |
||||
|
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" |
||||
|
}, |
||||
|
"node_modules/ejs": { |
||||
|
"version": "2.6.2", |
||||
|
"resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", |
||||
|
"integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==", |
||||
|
"engines": { |
||||
|
"node": ">=0.10.0" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/encodeurl": { |
||||
|
"version": "1.0.2", |
||||
|
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", |
||||
|
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.8" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/escape-html": { |
||||
|
"version": "1.0.3", |
||||
|
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", |
||||
|
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" |
||||
|
}, |
||||
|
"node_modules/etag": { |
||||
|
"version": "1.8.1", |
||||
|
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", |
||||
|
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/events": { |
||||
|
"version": "3.3.0", |
||||
|
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", |
||||
|
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", |
||||
|
"engines": { |
||||
|
"node": ">=0.8.x" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/express": { |
||||
|
"version": "4.16.4", |
||||
|
"resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", |
||||
|
"integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", |
||||
|
"dependencies": { |
||||
|
"accepts": "~1.3.5", |
||||
|
"array-flatten": "1.1.1", |
||||
|
"body-parser": "1.18.3", |
||||
|
"content-disposition": "0.5.2", |
||||
|
"content-type": "~1.0.4", |
||||
|
"cookie": "0.3.1", |
||||
|
"cookie-signature": "1.0.6", |
||||
|
"debug": "2.6.9", |
||||
|
"depd": "~1.1.2", |
||||
|
"encodeurl": "~1.0.2", |
||||
|
"escape-html": "~1.0.3", |
||||
|
"etag": "~1.8.1", |
||||
|
"finalhandler": "1.1.1", |
||||
|
"fresh": "0.5.2", |
||||
|
"merge-descriptors": "1.0.1", |
||||
|
"methods": "~1.1.2", |
||||
|
"on-finished": "~2.3.0", |
||||
|
"parseurl": "~1.3.2", |
||||
|
"path-to-regexp": "0.1.7", |
||||
|
"proxy-addr": "~2.0.4", |
||||
|
"qs": "6.5.2", |
||||
|
"range-parser": "~1.2.0", |
||||
|
"safe-buffer": "5.1.2", |
||||
|
"send": "0.16.2", |
||||
|
"serve-static": "1.13.2", |
||||
|
"setprototypeof": "1.1.0", |
||||
|
"statuses": "~1.4.0", |
||||
|
"type-is": "~1.6.16", |
||||
|
"utils-merge": "1.0.1", |
||||
|
"vary": "~1.1.2" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.10.0" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/express/node_modules/cookie": { |
||||
|
"version": "0.3.1", |
||||
|
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", |
||||
|
"integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/finalhandler": { |
||||
|
"version": "1.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", |
||||
|
"integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", |
||||
|
"dependencies": { |
||||
|
"debug": "2.6.9", |
||||
|
"encodeurl": "~1.0.2", |
||||
|
"escape-html": "~1.0.3", |
||||
|
"on-finished": "~2.3.0", |
||||
|
"parseurl": "~1.3.2", |
||||
|
"statuses": "~1.4.0", |
||||
|
"unpipe": "~1.0.0" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.8" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/forwarded": { |
||||
|
"version": "0.2.0", |
||||
|
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", |
||||
|
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/fresh": { |
||||
|
"version": "0.5.2", |
||||
|
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", |
||||
|
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/http-errors": { |
||||
|
"version": "1.6.3", |
||||
|
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", |
||||
|
"integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", |
||||
|
"dependencies": { |
||||
|
"depd": "~1.1.2", |
||||
|
"inherits": "2.0.3", |
||||
|
"setprototypeof": "1.1.0", |
||||
|
"statuses": ">= 1.4.0 < 2" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/iconv-lite": { |
||||
|
"version": "0.4.23", |
||||
|
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", |
||||
|
"integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", |
||||
|
"dependencies": { |
||||
|
"safer-buffer": ">= 2.1.2 < 3" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">=0.10.0" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/inherits": { |
||||
|
"version": "2.0.3", |
||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", |
||||
|
"integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" |
||||
|
}, |
||||
|
"node_modules/ipaddr.js": { |
||||
|
"version": "1.9.1", |
||||
|
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", |
||||
|
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.10" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/media-typer": { |
||||
|
"version": "0.3.0", |
||||
|
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", |
||||
|
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/merge-descriptors": { |
||||
|
"version": "1.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", |
||||
|
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" |
||||
|
}, |
||||
|
"node_modules/methods": { |
||||
|
"version": "1.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", |
||||
|
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/mime": { |
||||
|
"version": "1.4.1", |
||||
|
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", |
||||
|
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", |
||||
|
"bin": { |
||||
|
"mime": "cli.js" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/mime-db": { |
||||
|
"version": "1.52.0", |
||||
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", |
||||
|
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/mime-types": { |
||||
|
"version": "2.1.35", |
||||
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", |
||||
|
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", |
||||
|
"dependencies": { |
||||
|
"mime-db": "1.52.0" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/minimist": { |
||||
|
"version": "1.2.8", |
||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", |
||||
|
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", |
||||
|
"funding": { |
||||
|
"url": "https://github.com/sponsors/ljharb" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/morgan": { |
||||
|
"version": "1.9.1", |
||||
|
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", |
||||
|
"integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", |
||||
|
"dependencies": { |
||||
|
"basic-auth": "~2.0.0", |
||||
|
"debug": "2.6.9", |
||||
|
"depd": "~1.1.2", |
||||
|
"on-finished": "~2.3.0", |
||||
|
"on-headers": "~1.0.1" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.8.0" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/ms": { |
||||
|
"version": "2.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |
||||
|
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" |
||||
|
}, |
||||
|
"node_modules/negotiator": { |
||||
|
"version": "0.6.3", |
||||
|
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", |
||||
|
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/on-finished": { |
||||
|
"version": "2.3.0", |
||||
|
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", |
||||
|
"integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", |
||||
|
"dependencies": { |
||||
|
"ee-first": "1.1.1" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.8" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/on-headers": { |
||||
|
"version": "1.0.2", |
||||
|
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", |
||||
|
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.8" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/parseurl": { |
||||
|
"version": "1.3.3", |
||||
|
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", |
||||
|
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.8" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/path-to-regexp": { |
||||
|
"version": "0.1.7", |
||||
|
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", |
||||
|
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" |
||||
|
}, |
||||
|
"node_modules/proxy-addr": { |
||||
|
"version": "2.0.7", |
||||
|
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", |
||||
|
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", |
||||
|
"dependencies": { |
||||
|
"forwarded": "0.2.0", |
||||
|
"ipaddr.js": "1.9.1" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.10" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/qs": { |
||||
|
"version": "6.5.2", |
||||
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", |
||||
|
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", |
||||
|
"engines": { |
||||
|
"node": ">=0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/range-parser": { |
||||
|
"version": "1.2.1", |
||||
|
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", |
||||
|
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/raw-body": { |
||||
|
"version": "2.3.3", |
||||
|
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", |
||||
|
"integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", |
||||
|
"dependencies": { |
||||
|
"bytes": "3.0.0", |
||||
|
"http-errors": "1.6.3", |
||||
|
"iconv-lite": "0.4.23", |
||||
|
"unpipe": "1.0.0" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.8" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/safe-buffer": { |
||||
|
"version": "5.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", |
||||
|
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" |
||||
|
}, |
||||
|
"node_modules/safer-buffer": { |
||||
|
"version": "2.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", |
||||
|
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" |
||||
|
}, |
||||
|
"node_modules/send": { |
||||
|
"version": "0.16.2", |
||||
|
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", |
||||
|
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", |
||||
|
"dependencies": { |
||||
|
"debug": "2.6.9", |
||||
|
"depd": "~1.1.2", |
||||
|
"destroy": "~1.0.4", |
||||
|
"encodeurl": "~1.0.2", |
||||
|
"escape-html": "~1.0.3", |
||||
|
"etag": "~1.8.1", |
||||
|
"fresh": "0.5.2", |
||||
|
"http-errors": "~1.6.2", |
||||
|
"mime": "1.4.1", |
||||
|
"ms": "2.0.0", |
||||
|
"on-finished": "~2.3.0", |
||||
|
"range-parser": "~1.2.0", |
||||
|
"statuses": "~1.4.0" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.8.0" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/serve-static": { |
||||
|
"version": "1.13.2", |
||||
|
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", |
||||
|
"integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", |
||||
|
"dependencies": { |
||||
|
"encodeurl": "~1.0.2", |
||||
|
"escape-html": "~1.0.3", |
||||
|
"parseurl": "~1.3.2", |
||||
|
"send": "0.16.2" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.8.0" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/setprototypeof": { |
||||
|
"version": "1.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", |
||||
|
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" |
||||
|
}, |
||||
|
"node_modules/slugify": { |
||||
|
"version": "1.6.6", |
||||
|
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", |
||||
|
"integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", |
||||
|
"engines": { |
||||
|
"node": ">=8.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/statuses": { |
||||
|
"version": "1.4.0", |
||||
|
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", |
||||
|
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/type-is": { |
||||
|
"version": "1.6.18", |
||||
|
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", |
||||
|
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", |
||||
|
"dependencies": { |
||||
|
"media-typer": "0.3.0", |
||||
|
"mime-types": "~2.1.24" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">= 0.6" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/unpipe": { |
||||
|
"version": "1.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", |
||||
|
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.8" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/utils-merge": { |
||||
|
"version": "1.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", |
||||
|
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.4.0" |
||||
|
} |
||||
|
}, |
||||
|
"node_modules/vary": { |
||||
|
"version": "1.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", |
||||
|
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", |
||||
|
"engines": { |
||||
|
"node": ">= 0.8" |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"accepts": { |
||||
|
"version": "1.3.8", |
||||
|
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", |
||||
|
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", |
||||
|
"requires": { |
||||
|
"mime-types": "~2.1.34", |
||||
|
"negotiator": "0.6.3" |
||||
|
} |
||||
|
}, |
||||
|
"array-flatten": { |
||||
|
"version": "1.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |
||||
|
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" |
||||
|
}, |
||||
|
"basic-auth": { |
||||
|
"version": "2.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", |
||||
|
"integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", |
||||
|
"requires": { |
||||
|
"safe-buffer": "5.1.2" |
||||
|
} |
||||
|
}, |
||||
|
"body-parser": { |
||||
|
"version": "1.18.3", |
||||
|
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", |
||||
|
"integrity": "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==", |
||||
|
"requires": { |
||||
|
"bytes": "3.0.0", |
||||
|
"content-type": "~1.0.4", |
||||
|
"debug": "2.6.9", |
||||
|
"depd": "~1.1.2", |
||||
|
"http-errors": "~1.6.3", |
||||
|
"iconv-lite": "0.4.23", |
||||
|
"on-finished": "~2.3.0", |
||||
|
"qs": "6.5.2", |
||||
|
"raw-body": "2.3.3", |
||||
|
"type-is": "~1.6.16" |
||||
|
} |
||||
|
}, |
||||
|
"bytes": { |
||||
|
"version": "3.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", |
||||
|
"integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" |
||||
|
}, |
||||
|
"content-disposition": { |
||||
|
"version": "0.5.2", |
||||
|
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", |
||||
|
"integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==" |
||||
|
}, |
||||
|
"content-type": { |
||||
|
"version": "1.0.5", |
||||
|
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", |
||||
|
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" |
||||
|
}, |
||||
|
"cookie": { |
||||
|
"version": "0.4.1", |
||||
|
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", |
||||
|
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" |
||||
|
}, |
||||
|
"cookie-parser": { |
||||
|
"version": "1.4.6", |
||||
|
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", |
||||
|
"integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", |
||||
|
"requires": { |
||||
|
"cookie": "0.4.1", |
||||
|
"cookie-signature": "1.0.6" |
||||
|
} |
||||
|
}, |
||||
|
"cookie-signature": { |
||||
|
"version": "1.0.6", |
||||
|
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", |
||||
|
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" |
||||
|
}, |
||||
|
"csv-parser": { |
||||
|
"version": "3.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.0.0.tgz", |
||||
|
"integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==", |
||||
|
"requires": { |
||||
|
"minimist": "^1.2.0" |
||||
|
} |
||||
|
}, |
||||
|
"debug": { |
||||
|
"version": "2.6.9", |
||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
||||
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", |
||||
|
"requires": { |
||||
|
"ms": "2.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"depd": { |
||||
|
"version": "1.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", |
||||
|
"integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" |
||||
|
}, |
||||
|
"destroy": { |
||||
|
"version": "1.0.4", |
||||
|
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", |
||||
|
"integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" |
||||
|
}, |
||||
|
"ee-first": { |
||||
|
"version": "1.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", |
||||
|
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" |
||||
|
}, |
||||
|
"ejs": { |
||||
|
"version": "2.6.2", |
||||
|
"resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", |
||||
|
"integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==" |
||||
|
}, |
||||
|
"encodeurl": { |
||||
|
"version": "1.0.2", |
||||
|
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", |
||||
|
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" |
||||
|
}, |
||||
|
"escape-html": { |
||||
|
"version": "1.0.3", |
||||
|
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", |
||||
|
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" |
||||
|
}, |
||||
|
"etag": { |
||||
|
"version": "1.8.1", |
||||
|
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", |
||||
|
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" |
||||
|
}, |
||||
|
"events": { |
||||
|
"version": "3.3.0", |
||||
|
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", |
||||
|
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" |
||||
|
}, |
||||
|
"express": { |
||||
|
"version": "4.16.4", |
||||
|
"resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", |
||||
|
"integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", |
||||
|
"requires": { |
||||
|
"accepts": "~1.3.5", |
||||
|
"array-flatten": "1.1.1", |
||||
|
"body-parser": "1.18.3", |
||||
|
"content-disposition": "0.5.2", |
||||
|
"content-type": "~1.0.4", |
||||
|
"cookie": "0.3.1", |
||||
|
"cookie-signature": "1.0.6", |
||||
|
"debug": "2.6.9", |
||||
|
"depd": "~1.1.2", |
||||
|
"encodeurl": "~1.0.2", |
||||
|
"escape-html": "~1.0.3", |
||||
|
"etag": "~1.8.1", |
||||
|
"finalhandler": "1.1.1", |
||||
|
"fresh": "0.5.2", |
||||
|
"merge-descriptors": "1.0.1", |
||||
|
"methods": "~1.1.2", |
||||
|
"on-finished": "~2.3.0", |
||||
|
"parseurl": "~1.3.2", |
||||
|
"path-to-regexp": "0.1.7", |
||||
|
"proxy-addr": "~2.0.4", |
||||
|
"qs": "6.5.2", |
||||
|
"range-parser": "~1.2.0", |
||||
|
"safe-buffer": "5.1.2", |
||||
|
"send": "0.16.2", |
||||
|
"serve-static": "1.13.2", |
||||
|
"setprototypeof": "1.1.0", |
||||
|
"statuses": "~1.4.0", |
||||
|
"type-is": "~1.6.16", |
||||
|
"utils-merge": "1.0.1", |
||||
|
"vary": "~1.1.2" |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"cookie": { |
||||
|
"version": "0.3.1", |
||||
|
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", |
||||
|
"integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==" |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"finalhandler": { |
||||
|
"version": "1.1.1", |
||||
|
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", |
||||
|
"integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", |
||||
|
"requires": { |
||||
|
"debug": "2.6.9", |
||||
|
"encodeurl": "~1.0.2", |
||||
|
"escape-html": "~1.0.3", |
||||
|
"on-finished": "~2.3.0", |
||||
|
"parseurl": "~1.3.2", |
||||
|
"statuses": "~1.4.0", |
||||
|
"unpipe": "~1.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"forwarded": { |
||||
|
"version": "0.2.0", |
||||
|
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", |
||||
|
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" |
||||
|
}, |
||||
|
"fresh": { |
||||
|
"version": "0.5.2", |
||||
|
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", |
||||
|
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" |
||||
|
}, |
||||
|
"http-errors": { |
||||
|
"version": "1.6.3", |
||||
|
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", |
||||
|
"integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", |
||||
|
"requires": { |
||||
|
"depd": "~1.1.2", |
||||
|
"inherits": "2.0.3", |
||||
|
"setprototypeof": "1.1.0", |
||||
|
"statuses": ">= 1.4.0 < 2" |
||||
|
} |
||||
|
}, |
||||
|
"iconv-lite": { |
||||
|
"version": "0.4.23", |
||||
|
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", |
||||
|
"integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", |
||||
|
"requires": { |
||||
|
"safer-buffer": ">= 2.1.2 < 3" |
||||
|
} |
||||
|
}, |
||||
|
"inherits": { |
||||
|
"version": "2.0.3", |
||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", |
||||
|
"integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" |
||||
|
}, |
||||
|
"ipaddr.js": { |
||||
|
"version": "1.9.1", |
||||
|
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", |
||||
|
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" |
||||
|
}, |
||||
|
"media-typer": { |
||||
|
"version": "0.3.0", |
||||
|
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", |
||||
|
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" |
||||
|
}, |
||||
|
"merge-descriptors": { |
||||
|
"version": "1.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", |
||||
|
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" |
||||
|
}, |
||||
|
"methods": { |
||||
|
"version": "1.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", |
||||
|
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" |
||||
|
}, |
||||
|
"mime": { |
||||
|
"version": "1.4.1", |
||||
|
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", |
||||
|
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" |
||||
|
}, |
||||
|
"mime-db": { |
||||
|
"version": "1.52.0", |
||||
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", |
||||
|
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" |
||||
|
}, |
||||
|
"mime-types": { |
||||
|
"version": "2.1.35", |
||||
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", |
||||
|
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", |
||||
|
"requires": { |
||||
|
"mime-db": "1.52.0" |
||||
|
} |
||||
|
}, |
||||
|
"minimist": { |
||||
|
"version": "1.2.8", |
||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", |
||||
|
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" |
||||
|
}, |
||||
|
"morgan": { |
||||
|
"version": "1.9.1", |
||||
|
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", |
||||
|
"integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", |
||||
|
"requires": { |
||||
|
"basic-auth": "~2.0.0", |
||||
|
"debug": "2.6.9", |
||||
|
"depd": "~1.1.2", |
||||
|
"on-finished": "~2.3.0", |
||||
|
"on-headers": "~1.0.1" |
||||
|
} |
||||
|
}, |
||||
|
"ms": { |
||||
|
"version": "2.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |
||||
|
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" |
||||
|
}, |
||||
|
"negotiator": { |
||||
|
"version": "0.6.3", |
||||
|
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", |
||||
|
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" |
||||
|
}, |
||||
|
"on-finished": { |
||||
|
"version": "2.3.0", |
||||
|
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", |
||||
|
"integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", |
||||
|
"requires": { |
||||
|
"ee-first": "1.1.1" |
||||
|
} |
||||
|
}, |
||||
|
"on-headers": { |
||||
|
"version": "1.0.2", |
||||
|
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", |
||||
|
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" |
||||
|
}, |
||||
|
"parseurl": { |
||||
|
"version": "1.3.3", |
||||
|
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", |
||||
|
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" |
||||
|
}, |
||||
|
"path-to-regexp": { |
||||
|
"version": "0.1.7", |
||||
|
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", |
||||
|
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" |
||||
|
}, |
||||
|
"proxy-addr": { |
||||
|
"version": "2.0.7", |
||||
|
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", |
||||
|
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", |
||||
|
"requires": { |
||||
|
"forwarded": "0.2.0", |
||||
|
"ipaddr.js": "1.9.1" |
||||
|
} |
||||
|
}, |
||||
|
"qs": { |
||||
|
"version": "6.5.2", |
||||
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", |
||||
|
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" |
||||
|
}, |
||||
|
"range-parser": { |
||||
|
"version": "1.2.1", |
||||
|
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", |
||||
|
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" |
||||
|
}, |
||||
|
"raw-body": { |
||||
|
"version": "2.3.3", |
||||
|
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", |
||||
|
"integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", |
||||
|
"requires": { |
||||
|
"bytes": "3.0.0", |
||||
|
"http-errors": "1.6.3", |
||||
|
"iconv-lite": "0.4.23", |
||||
|
"unpipe": "1.0.0" |
||||
|
} |
||||
|
}, |
||||
|
"safe-buffer": { |
||||
|
"version": "5.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", |
||||
|
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" |
||||
|
}, |
||||
|
"safer-buffer": { |
||||
|
"version": "2.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", |
||||
|
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" |
||||
|
}, |
||||
|
"send": { |
||||
|
"version": "0.16.2", |
||||
|
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", |
||||
|
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", |
||||
|
"requires": { |
||||
|
"debug": "2.6.9", |
||||
|
"depd": "~1.1.2", |
||||
|
"destroy": "~1.0.4", |
||||
|
"encodeurl": "~1.0.2", |
||||
|
"escape-html": "~1.0.3", |
||||
|
"etag": "~1.8.1", |
||||
|
"fresh": "0.5.2", |
||||
|
"http-errors": "~1.6.2", |
||||
|
"mime": "1.4.1", |
||||
|
"ms": "2.0.0", |
||||
|
"on-finished": "~2.3.0", |
||||
|
"range-parser": "~1.2.0", |
||||
|
"statuses": "~1.4.0" |
||||
|
} |
||||
|
}, |
||||
|
"serve-static": { |
||||
|
"version": "1.13.2", |
||||
|
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", |
||||
|
"integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", |
||||
|
"requires": { |
||||
|
"encodeurl": "~1.0.2", |
||||
|
"escape-html": "~1.0.3", |
||||
|
"parseurl": "~1.3.2", |
||||
|
"send": "0.16.2" |
||||
|
} |
||||
|
}, |
||||
|
"setprototypeof": { |
||||
|
"version": "1.1.0", |
||||
|
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", |
||||
|
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" |
||||
|
}, |
||||
|
"slugify": { |
||||
|
"version": "1.6.6", |
||||
|
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", |
||||
|
"integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==" |
||||
|
}, |
||||
|
"statuses": { |
||||
|
"version": "1.4.0", |
||||
|
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", |
||||
|
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" |
||||
|
}, |
||||
|
"type-is": { |
||||
|
"version": "1.6.18", |
||||
|
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", |
||||
|
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", |
||||
|
"requires": { |
||||
|
"media-typer": "0.3.0", |
||||
|
"mime-types": "~2.1.24" |
||||
|
} |
||||
|
}, |
||||
|
"unpipe": { |
||||
|
"version": "1.0.0", |
||||
|
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", |
||||
|
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" |
||||
|
}, |
||||
|
"utils-merge": { |
||||
|
"version": "1.0.1", |
||||
|
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", |
||||
|
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" |
||||
|
}, |
||||
|
"vary": { |
||||
|
"version": "1.1.2", |
||||
|
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", |
||||
|
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,19 @@ |
|||||
|
{ |
||||
|
"name": "bodacc", |
||||
|
"version": "0.0.0", |
||||
|
"private": true, |
||||
|
"scripts": { |
||||
|
"start": "node ./bin/www" |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"cookie-parser": "~1.4.4", |
||||
|
"csv-parser": "^3.0.0", |
||||
|
"debug": "~2.6.9", |
||||
|
"ejs": "~2.6.1", |
||||
|
"events": "^3.3.0", |
||||
|
"express": "~4.16.1", |
||||
|
"http-errors": "~1.6.3", |
||||
|
"morgan": "~1.9.1", |
||||
|
"slugify": "^1.6.6" |
||||
|
} |
||||
|
} |
@ -0,0 +1,42 @@ |
|||||
|
var createError = require('http-errors'); |
||||
|
var express = require('express'); |
||||
|
var path = require('path'); |
||||
|
var cookieParser = require('cookie-parser'); |
||||
|
var logger = require('morgan'); |
||||
|
|
||||
|
var indexRouter = require('./routes/index'); |
||||
|
|
||||
|
var app = express(); |
||||
|
|
||||
|
// Declare a global variable to hold project path
|
||||
|
global.__basedir = __dirname; |
||||
|
|
||||
|
// view engine setup
|
||||
|
app.set('views', path.join(__dirname, 'views')); |
||||
|
app.set('view engine', 'ejs'); |
||||
|
|
||||
|
app.use(logger('dev')); |
||||
|
app.use(express.json()); |
||||
|
app.use(express.urlencoded({ extended: false })); |
||||
|
app.use(cookieParser()); |
||||
|
app.use(express.static(path.join(__dirname, 'public'))); |
||||
|
|
||||
|
app.use('/', indexRouter); |
||||
|
|
||||
|
// catch 404 and forward to error handler
|
||||
|
app.use(function(req, res, next) { |
||||
|
next(createError(404)); |
||||
|
}); |
||||
|
|
||||
|
// error handler
|
||||
|
app.use(function(err, req, res, next) { |
||||
|
// set locals, only providing error in development
|
||||
|
res.locals.message = err.message; |
||||
|
res.locals.error = req.app.get('env') === 'development' ? err : {}; |
||||
|
|
||||
|
// render the error page
|
||||
|
res.status(err.status || 500); |
||||
|
res.render('error'); |
||||
|
}); |
||||
|
|
||||
|
module.exports = app; |
@ -0,0 +1,75 @@ |
|||||
|
const path = require('path'); |
||||
|
const URL = require("url"); |
||||
|
const fs = require('fs'); |
||||
|
const util = require('util'); |
||||
|
const http = require('http'); |
||||
|
const https = require('https'); |
||||
|
const exec = util.promisify(require('child_process').exec); |
||||
|
|
||||
|
const EventEmitter = require('events'); |
||||
|
const csv = require('csv-parser'); |
||||
|
const slugify = require('slugify'); |
||||
|
|
||||
|
const dest = path.join(appRoot, 'public/csv'); |
||||
|
|
||||
|
|
||||
|
// Create a generateFilePath function witch returns a path with a filename and datetime
|
||||
|
function generateFilePath(filename) { |
||||
|
return path.join(dest, `${filename}-${Date.now()}.csv`); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// Create a class File that extends EventEmitter
|
||||
|
class File extends EventEmitter { |
||||
|
|
||||
|
// Create a constructor that takes a url as a parameter
|
||||
|
constructor(url) { |
||||
|
super(); |
||||
|
this.url = url; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
// Create a download method that downloads the file from the url
|
||||
|
async download() { |
||||
|
const url = URL.parse(this.url); |
||||
|
this.filename = slugify(url.hostname, { lower: true }); |
||||
|
this.filepath = generateFilePath(this.filename); |
||||
|
|
||||
|
const file = fs.createWriteStream(this.filepath); |
||||
|
const request = url.protocol === 'https:' ? https : http; |
||||
|
|
||||
|
// Emit a download.start event with the url and filepath
|
||||
|
this.emit('download.start', { url: this.url, filepath: this.filepath }); |
||||
|
|
||||
|
// Handle file errors
|
||||
|
file.on('error', (err) => { |
||||
|
fs.unlink(filepath, () => { |
||||
|
// Emit a download.error event with the error
|
||||
|
this.emit('download.error', { url: this.url, filepath: this.filepath, error: err, type: 'file' }); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
return new Promise((resolve, reject) => { |
||||
|
request |
||||
|
.get(url.href, (response) => { |
||||
|
response.pipe(file); |
||||
|
|
||||
|
file.on('finish', () => { |
||||
|
// Emit a download.end event with the url and filepath
|
||||
|
this.emit('download.end', { url: this.url, filepath: this.filepath }); |
||||
|
file.close(() => { |
||||
|
resolve(filepath); |
||||
|
}); |
||||
|
}); |
||||
|
}) |
||||
|
.on('error', (err) => { |
||||
|
fs.unlink(filepath, () => { |
||||
|
// Emit a download.error event with the error
|
||||
|
this.emit('download.error', { url: this.url, filepath: this.filepath, error: err, type: 'request' }); |
||||
|
reject(err.message); |
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
} |
@ -0,0 +1,9 @@ |
|||||
|
var express = require('express'); |
||||
|
var router = express.Router(); |
||||
|
|
||||
|
/* GET home page. */ |
||||
|
router.get('/', function(req, res, next) { |
||||
|
res.render('index', { title: 'Express' }); |
||||
|
}); |
||||
|
|
||||
|
module.exports = router; |
@ -0,0 +1,3 @@ |
|||||
|
<h1><%= message %></h1> |
||||
|
<h2><%= error.status %></h2> |
||||
|
<pre><%= error.stack %></pre> |
@ -0,0 +1,11 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<title><%= title %></title> |
||||
|
<link rel='stylesheet' href='/stylesheets/style.css' /> |
||||
|
</head> |
||||
|
<body> |
||||
|
<h1><%= title %></h1> |
||||
|
<p>Welcome to <%= title %></p> |
||||
|
</body> |
||||
|
</html> |
Loading…
Reference in new issue