From 229c7a120d5126df3457f063e0e7a4cbbbbe441a Mon Sep 17 00:00:00 2001 From: Mamadu Lamarana Bah <mamadulamarana.bah.etu@univ-lille.fr> Date: Wed, 6 Mar 2024 18:18:14 +0100 Subject: [PATCH] Rendu Tp express --- express/app.js | 37 + express/bin/www | 90 ++ express/controllers/error.controller.js | 24 + express/controllers/index.controller.js | 34 + express/controllers/json.controller.js | 36 + express/html/first.html | 20 + express/html/second.html | 23 + express/middlewares/error.middleware.js | 11 + express/package-lock.json | 1275 ++++++++++++++++++++ express/package.json | 16 + express/public/images/timoleon_oceanie.jpg | Bin 0 -> 49790 bytes express/public/stylesheets/style.css | 8 + express/routes/index.js | 14 + express/routes/jsonRouter.js | 12 + express/stylesheets/style.css | 8 + express/views/error.pug | 6 + express/views/index.pug | 5 + express/views/layout.pug | 7 + package-lock.json | 6 + 19 files changed, 1632 insertions(+) create mode 100644 express/app.js create mode 100644 express/bin/www create mode 100644 express/controllers/error.controller.js create mode 100644 express/controllers/index.controller.js create mode 100644 express/controllers/json.controller.js create mode 100644 express/html/first.html create mode 100644 express/html/second.html create mode 100644 express/middlewares/error.middleware.js create mode 100644 express/package-lock.json create mode 100644 express/package.json create mode 100644 express/public/images/timoleon_oceanie.jpg create mode 100644 express/public/stylesheets/style.css create mode 100644 express/routes/index.js create mode 100644 express/routes/jsonRouter.js create mode 100644 express/stylesheets/style.css create mode 100644 express/views/error.pug create mode 100644 express/views/index.pug create mode 100644 express/views/layout.pug create mode 100644 package-lock.json diff --git a/express/app.js b/express/app.js new file mode 100644 index 0000000..77ee540 --- /dev/null +++ b/express/app.js @@ -0,0 +1,37 @@ +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'); +const jsonRouter = require('./routes/jsonRouter'); + +// define middlewares managing unknown routes +const error = require('./middlewares/error.middleware'); + + +var app = express(); + +// view engine setup +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'pug'); + +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); +app.use('/json', jsonRouter); + +// catch 404 and forward to error handler +app.use(function(req, res, next) { + next(createError(404)); +}); + +// error handler +app.use(error); + +module.exports = app; diff --git a/express/bin/www b/express/bin/www new file mode 100644 index 0000000..05cf405 --- /dev/null +++ b/express/bin/www @@ -0,0 +1,90 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var app = require('../app'); +var debug = require('debug')('express:server'); +var http = require('http'); + +/** + * Get port from environment and store in Express. + */ + +var port = normalizePort(process.env.PORT || '3000'); +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); +} diff --git a/express/controllers/error.controller.js b/express/controllers/error.controller.js new file mode 100644 index 0000000..24fbdef --- /dev/null +++ b/express/controllers/error.controller.js @@ -0,0 +1,24 @@ +const createError = require('http-errors'); +const url = require('url'); + +// catch 404 and forward to error handler +const notFound = + (req, res, next) => { + next(createError(404)); + }; + + +// error handler +const handleError = + (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', { error : err, url : req.url } ); + }; + +module.exports.notFound = notFound; +module.exports.handleError = handleError; diff --git a/express/controllers/index.controller.js b/express/controllers/index.controller.js new file mode 100644 index 0000000..0dd9a4d --- /dev/null +++ b/express/controllers/index.controller.js @@ -0,0 +1,34 @@ +const path = require('path'); + + +module.exports.home = + (req, res) => { + res.render('index', { title: 'Express' }); +} + +module.exports.first = +(_,res) => { + const options = { + root : 'html', + headers: { + 'Content-Type': 'text/html', + 'x-timestamp': Date.now(), + 'x-sent': true + } + }; + res.sendFile('first.html', options); +} + +module.exports.second = +(_,res) => { + const options = { + root : 'html', + headers: { + 'Content-Type': 'text/html', + 'x-timestamp': Date.now(), + 'x-sent': true + } + }; + res.sendFile('second.html', options); +} + diff --git a/express/controllers/json.controller.js b/express/controllers/json.controller.js new file mode 100644 index 0000000..7bf09e9 --- /dev/null +++ b/express/controllers/json.controller.js @@ -0,0 +1,36 @@ + +class jsonController { + constructor() { + this.random = this.random.bind(this); + this.home = this.home.bind(this); + } + + getCurrentDate() { + const date = new Date(); + const d = date.toISOString(); + return d; + } + + random(_, res) { + const params = {}; + params.randomValue = Math.floor(Math.random()*101); + res.status(200).json(params); + } + + home(req, res) { + const params = {}; + if(Object.keys(req.query).length !== 0) { + for (const param of Object.keys(req.query)) { + params[param] = req.query[param]; + } + } + params.date = this.getCurrentDate(); + res.status(200).json(params); + } + + + +} + +// export controller object. Could be defined as a singleton. +module.exports = new jsonController(); diff --git a/express/html/first.html b/express/html/first.html new file mode 100644 index 0000000..6106c8c --- /dev/null +++ b/express/html/first.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> + +<head> + <meta charset="UTF-8"/> + <title>FIRST</title> + <link href="/stylesheets/style.css" rel="stylesheet" type="text/css"/> + + +</head> + +<body> + <h1>First page</h1> + + <p> + delivered by express + </p> +</body> +</html> diff --git a/express/html/second.html b/express/html/second.html new file mode 100644 index 0000000..44e46df --- /dev/null +++ b/express/html/second.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> + +<head> + <meta charset="UTF-8"/> + <title>SECOND</title> + <link href="/stylesheets/style.css" rel="stylesheet" type="text/css"/> + + +</head> + +<body> + <h1>Second page</h1> + + <p> + delivered by express + </p> + <p> + <img src="/images/timoleon_oceanie.jpg" alt="timoleon océanie" /> + </p> +</body> +</html> diff --git a/express/middlewares/error.middleware.js b/express/middlewares/error.middleware.js new file mode 100644 index 0000000..489ff3d --- /dev/null +++ b/express/middlewares/error.middleware.js @@ -0,0 +1,11 @@ +const express = require('express'); +const router = express.Router(); + +const errorController = require('../controllers/error.controller'); + +// catch 404 and forward to error handler +router.use(errorController.notFound); +// error handler +router.use(errorController.handleError); + +module.exports = router; diff --git a/express/package-lock.json b/express/package-lock.json new file mode 100644 index 0000000..13e88f8 --- /dev/null +++ b/express/package-lock.json @@ -0,0 +1,1275 @@ +{ + "name": "express", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "express", + "version": "0.0.0", + "dependencies": { + "cookie-parser": "~1.4.4", + "debug": "~2.6.9", + "express": "~4.16.1", + "http-errors": "~1.6.3", + "morgan": "~1.9.1", + "pug": "2.0.0-beta11" + } + }, + "node_modules/@types/babel-types": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.15.tgz", + "integrity": "sha512-JUgfZHUOMbtjopxiOQaaF+Uovk5wpDqpXR+XLWiOivCWSy1FccO30lvNNpCt8geFwq8VmGT2y9OMkOpA0g5O5g==" + }, + "node_modules/@types/babylon": { + "version": "6.16.9", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.9.tgz", + "integrity": "sha512-sEKyxMVEowhcr8WLfN0jJYe4gS4Z9KC2DGz0vqfC7+MXFbmvOF7jSjALC77thvAO2TLgFUPa9vDeOak+AcUrZA==", + "dependencies": { + "@types/babel-types": "*" + } + }, + "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/acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw==", + "dependencies": { + "acorn": "^4.0.4" + } + }, + "node_modules/align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", + "dependencies": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "engines": { + "node": ">=0.4.2" + } + }, + "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/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bin": { + "babylon": "bin/babylon.js" + } + }, + "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/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", + "dependencies": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/clean-css": { + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha512-aTWyttSdI2mYi07kWqHi24NUU9YlELFKGOAgFzZjDN1064DMAOy2FBuoyGmkKRlXkbpXd0EVHmiVkbKhKoirTw==", + "dependencies": { + "commander": "2.8.x", + "source-map": "0.4.x" + }, + "bin": { + "cleancss": "bin/cleancss" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", + "dependencies": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "node_modules/commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ==", + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/constantinople": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", + "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", + "dependencies": { + "@types/babel-types": "^7.0.0", + "@types/babylon": "^6.16.2", + "babel-types": "^6.26.0", + "babylon": "^6.18.0" + } + }, + "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/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "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/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==" + }, + "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/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/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "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/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "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/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/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==" + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", + "integrity": "sha512-vyMeQMq+AiH5uUnoBfMTwf18tO3bM6k1QXBE9D6ueAAquEfCZe3AJPtud9g6qS0+4X8xA7ndpZiDyeb2l2qOBw==", + "dependencies": { + "acorn": "~4.0.2", + "object-assign": "^4.0.1" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==" + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", + "engines": { + "node": ">=0.10.0" + } + }, + "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/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/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "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-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "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/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "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/pug": { + "version": "2.0.0-beta11", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.0-beta11.tgz", + "integrity": "sha512-iV0ibDCWLJGw8eEtBKAqbJZecOabQa6hpFeH+GCBzsAsCNSvpjo4wuHMPcmqtaZhxoO3ElbMePf8jkrM9TKulw==", + "dependencies": { + "pug-code-gen": "^1.1.1", + "pug-filters": "^2.1.1", + "pug-lexer": "^3.0.0", + "pug-linker": "^2.0.2", + "pug-load": "^2.0.5", + "pug-parser": "^2.0.2", + "pug-runtime": "^2.0.3", + "pug-strip-comments": "^1.0.2" + } + }, + "node_modules/pug-attrs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", + "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", + "dependencies": { + "constantinople": "^3.0.1", + "js-stringify": "^1.0.1", + "pug-runtime": "^2.0.5" + } + }, + "node_modules/pug-code-gen": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-1.1.1.tgz", + "integrity": "sha512-UwZaJVhjhy2kYntLqXjSV1ae+K96ve6bG+N5bLFfA6yyGJTEkguct19MWDyUM9D8CDU3NNxVctUAh5McF19E6w==", + "dependencies": { + "constantinople": "^3.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.1", + "pug-attrs": "^2.0.2", + "pug-error": "^1.3.2", + "pug-runtime": "^2.0.3", + "void-elements": "^2.0.1", + "with": "^5.0.0" + } + }, + "node_modules/pug-error": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==" + }, + "node_modules/pug-filters": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-2.1.5.tgz", + "integrity": "sha512-xkw71KtrC4sxleKiq+cUlQzsiLn8pM5+vCgkChW2E6oNOzaqTSIBKIQ5cl4oheuDzvJYCTSYzRaVinMUrV4YLQ==", + "dependencies": { + "clean-css": "^3.3.0", + "constantinople": "^3.0.1", + "jstransformer": "1.0.0", + "pug-error": "^1.3.2", + "pug-walk": "^1.1.5", + "resolve": "^1.1.6", + "uglify-js": "^2.6.1" + } + }, + "node_modules/pug-lexer": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-3.1.0.tgz", + "integrity": "sha512-DxXOrmCIDVEwzN2ozZBK1t4QRTR6pLv5YkqM6dLdaSHnm+LJJRBngVn4IDMMBZQR9xUpxrRm9rffmku2OEqkJw==", + "dependencies": { + "character-parser": "^2.1.1", + "is-expression": "^3.0.0", + "pug-error": "^1.3.2" + } + }, + "node_modules/pug-linker": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-2.0.3.tgz", + "integrity": "sha512-ZqKljvFUl1K5L4G5WABJ5FUYWOY0K2AXLmwj2QfM7nPCUcxfsmr05SikjgXGXVoIrygGzM/iWSsXwnkWId4AHw==", + "dependencies": { + "pug-error": "^1.3.2", + "pug-walk": "^1.1.2" + } + }, + "node_modules/pug-load": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", + "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", + "dependencies": { + "object-assign": "^4.1.0", + "pug-walk": "^1.1.8" + } + }, + "node_modules/pug-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-2.0.2.tgz", + "integrity": "sha512-PW8kKDLN07MbFljR/GaYHPBGW+64YldtFFZUEGltJ67RRzebI/DxZy4njlxacy9JeheosyVprZ9C5DIexG1D/Q==", + "dependencies": { + "pug-error": "^1.3.2", + "token-stream": "0.0.1" + } + }, + "node_modules/pug-runtime": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==" + }, + "node_modules/pug-strip-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", + "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", + "dependencies": { + "pug-error": "^1.3.3" + } + }, + "node_modules/pug-walk": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==" + }, + "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/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", + "dependencies": { + "align-text": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.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/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/token-stream": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", + "integrity": "sha512-nfjOAu/zAWmX9tgwi5NRp7O7zTDUD1miHiB40klUnAh9qnL1iXdgzcz/i5dMaL5jahcBAaSfmNOBBJBLJW8TEg==" + }, + "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/uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", + "dependencies": { + "source-map": "~0.5.1", + "yargs": "~3.10.0" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + }, + "optionalDependencies": { + "uglify-to-browserify": "~1.0.0" + } + }, + "node_modules/uglify-js/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", + "optional": true + }, + "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" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/with": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", + "integrity": "sha512-uAnSsFGfSpF6DNhBXStvlZILfHJfJu4eUkfbRGk94kGO1Ta7bg6FwfvoOhhyHAJuFbCw+0xk4uJ3u57jLvlCJg==", + "dependencies": { + "acorn": "^3.1.0", + "acorn-globals": "^3.0.0" + } + }, + "node_modules/with/node_modules/acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", + "dependencies": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } +} diff --git a/express/package.json b/express/package.json new file mode 100644 index 0000000..b3a649a --- /dev/null +++ b/express/package.json @@ -0,0 +1,16 @@ +{ + "name": "express", + "version": "0.0.0", + "private": true, + "scripts": { + "start": "node ./bin/www" + }, + "dependencies": { + "cookie-parser": "~1.4.4", + "debug": "~2.6.9", + "express": "~4.16.1", + "http-errors": "~1.6.3", + "morgan": "~1.9.1", + "pug": "2.0.0-beta11" + } +} diff --git a/express/public/images/timoleon_oceanie.jpg b/express/public/images/timoleon_oceanie.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c86e8d685b1d8173df2f1cfa5e1ce3bc96a8fa8b GIT binary patch literal 49790 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 a)PD6lkNdB61unMKUTm4HdD!jz|C<1-f9IP3 literal 0 HcmV?d00001 diff --git a/express/public/stylesheets/style.css b/express/public/stylesheets/style.css new file mode 100644 index 0000000..9453385 --- /dev/null +++ b/express/public/stylesheets/style.css @@ -0,0 +1,8 @@ +body { + padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +} + +a { + color: #00B7FF; +} diff --git a/express/routes/index.js b/express/routes/index.js new file mode 100644 index 0000000..14282c1 --- /dev/null +++ b/express/routes/index.js @@ -0,0 +1,14 @@ +var express = require('express'); +var router = express.Router(); + +// import controller for index +const indexController = require('../controllers/index.controller'); + +/* GET home page. */ +router.get('/', indexController.home ); + + +router.get('/first', indexController.first ); +router.get('/second', indexController.second ); + +module.exports = router; diff --git a/express/routes/jsonRouter.js b/express/routes/jsonRouter.js new file mode 100644 index 0000000..8c55af2 --- /dev/null +++ b/express/routes/jsonRouter.js @@ -0,0 +1,12 @@ +var express = require('express'); +var router = express.Router(); + +// import controller for index +const jsonController = require('../controllers/json.controller'); + +/* GET home page. */ +router.get('/?', jsonController.home ); +router.get('/random', jsonController.random); + + +module.exports = router; diff --git a/express/stylesheets/style.css b/express/stylesheets/style.css new file mode 100644 index 0000000..9453385 --- /dev/null +++ b/express/stylesheets/style.css @@ -0,0 +1,8 @@ +body { + padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +} + +a { + color: #00B7FF; +} diff --git a/express/views/error.pug b/express/views/error.pug new file mode 100644 index 0000000..51ec12c --- /dev/null +++ b/express/views/error.pug @@ -0,0 +1,6 @@ +extends layout + +block content + h1= message + h2= error.status + pre #{error.stack} diff --git a/express/views/index.pug b/express/views/index.pug new file mode 100644 index 0000000..3d63b9a --- /dev/null +++ b/express/views/index.pug @@ -0,0 +1,5 @@ +extends layout + +block content + h1= title + p Welcome to #{title} diff --git a/express/views/layout.pug b/express/views/layout.pug new file mode 100644 index 0000000..15af079 --- /dev/null +++ b/express/views/layout.pug @@ -0,0 +1,7 @@ +doctype html +html + head + title= title + link(rel='stylesheet', href='/stylesheets/style.css') + body + block content diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..92c8aa2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "javascriptfs", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} -- GitLab