From 8609e9bddd8a4ed5389cd18797286a7fd8fc5b74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Akif=20Y=C3=BCce?= <70021050+Akif9748@users.noreply.github.com> Date: Sat, 26 Feb 2022 21:12:54 +0300 Subject: [PATCH] Add files via upload --- index.js | 30 + json.sqlite | Bin 0 -> 8192 bytes package-lock.json | 2309 +++++++++++++++++++++++++++++++++++ package.json | 27 + public/css/styles.css | 117 ++ public/images/favicon.jpg | Bin 0 -> 5126 bytes public/images/favicon.png | Bin 0 -> 5126 bytes public/images/guest.png | Bin 0 -> 4477 bytes public/images/logo.jpg | Bin 0 -> 15488 bytes reset.js | 4 + routes/get/createThread.js | 10 + routes/get/index.js | 12 + routes/get/login.js | 1 + routes/get/register.js | 1 + routes/get/threads.js | 23 + routes/get/users.js | 28 + routes/post/createThread.js | 12 + routes/post/login.js | 29 + routes/post/register.js | 31 + routes/post/threads.js | 19 + views/error.ejs | 36 + views/index.ejs | 52 + views/login.ejs | 35 + views/openThread.ejs | 47 + views/register.ejs | 43 + views/thread.ejs | 87 ++ views/threads.ejs | 44 + views/user.ejs | 64 + views/users.ejs | 46 + 29 files changed, 3107 insertions(+) create mode 100644 index.js create mode 100644 json.sqlite create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/css/styles.css create mode 100644 public/images/favicon.jpg create mode 100644 public/images/favicon.png create mode 100644 public/images/guest.png create mode 100644 public/images/logo.jpg create mode 100644 reset.js create mode 100644 routes/get/createThread.js create mode 100644 routes/get/index.js create mode 100644 routes/get/login.js create mode 100644 routes/get/register.js create mode 100644 routes/get/threads.js create mode 100644 routes/get/users.js create mode 100644 routes/post/createThread.js create mode 100644 routes/post/login.js create mode 100644 routes/post/register.js create mode 100644 routes/post/threads.js create mode 100644 views/error.ejs create mode 100644 views/index.ejs create mode 100644 views/login.ejs create mode 100644 views/openThread.ejs create mode 100644 views/register.ejs create mode 100644 views/thread.ejs create mode 100644 views/threads.ejs create mode 100644 views/user.ejs create mode 100644 views/users.ejs diff --git a/index.js b/index.js new file mode 100644 index 0000000..b3e43b9 --- /dev/null +++ b/index.js @@ -0,0 +1,30 @@ +const express = require('express'); +const bodyParser = require('body-parser'); +const path = require("path"); +const fs = require("fs"); +const session = require('express-session'); +const error = require("./errors/error.js") + +const app = express(); + +app.use(session({ secret: 'secret', resave: true, saveUninitialized: true })); +app.use(express.static(path.join(__dirname, "public"))); +app.use(bodyParser.urlencoded({ extended: true })); +app.use(express.json()); + +app.set('views', path.join(__dirname, 'views')); +app.set("view engine", "ejs"); + +//Temp: +app.get("/", (req, res) => res.redirect("/index")); + +for (const type of fs.readdirSync("./routes")) + for (const file of fs.readdirSync("./routes/" + type)) + app[type](`/${file.replace(".js", "")}*`, require(`./routes/${type}/${file}`)) + +app.get('*', (req, res) => error(res, 404, "We have not got this page.")); +app.post('*', (req, res) => error(res, 404, "We have not got this page.")); + +const port = process.env.PORT || 3000; + +app.listen(port, () => console.log("SERVER ON PORT:", port)); \ No newline at end of file diff --git a/json.sqlite b/json.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..d44e3fe04fe2bb00aa73e5d94ba86acfd0a7bf89 GIT binary patch literal 8192 zcmeHK-EP}96qb`F=WcPVfFMGEdN* z@4rL+-Jklc#ngQKdb4?Et#978n!jHA4Q`)%G{3s_VM~uQDMIz^1P{|h%S7WYW(4Kp zm$&EdlThR_ZecOg<21wF6P$=x!j7H8=pgW2Zq{B1Enp3gwVtZ3Z66&SwY40MlXNO{ zJCWK}smjH~4q>Cc*skorL6sYI@%_l>w1CfPzQcgN9J$fQO9#hKq(2_7LG#P zbxzHqo){x~X+De5>{w(dK7YRrUyG$uVk8yr7W|oSF>e)gW#uQQj5`7M$!Y5{6<~EN zj;m}p?-;8Y5Odk?r^g}(%X2Y^CUPhb(I^^3DoR3`gi)n=;2sE$cwW(;UNnj2l}BMO z&1Ug%b~hc)4h>JM<6uXzk)l1CNu}GsQU`w*A?MX=yIEUYepFl+V3NmY55<^`U%1 z{d5`)aqIPi^^IF^zPzeu*^4sRw^%`g939N(GbOY3f6E;YIFyvcS?1)+4b0r;+eP*+ z7tsr!mYJ~nPJPUQ;Bnw`kCqP_)V$1d=tXg||FXHZapToZLz8Ji|Ml+j59I7a)BSMO z6ys<680OnsbNiMv@{%Yy%%ncK=z^g!o;Rm0d?<71ObKN!gb}=#e$!aL`RH%%Km8q< C>dw#r literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3e08fa9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2309 @@ +{ + "name": "akf-forum", + "version": "2.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "akf-forum", + "version": "2.0.0", + "license": "GPL-3.0-or-later", + "dependencies": { + "body-parser": "^1.19.2", + "ejs": "^3.1.6", + "express": "^4.17.3", + "express-session": "^1.17.2", + "quick.db": "^7.1.3" + } + }, + "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/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/better-sqlite3": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.5.0.tgz", + "integrity": "sha512-6FdG9DoytYGDhLW7VWW1vxjEz7xHkqK6LnaUQYA8d6GHNgZhu9PFX2xwKEEnSBRoT1J4PjTUPeg217ShxNmuPg==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.0.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "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/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "dependencies": { + "jake": "^10.6.1" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "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.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-session": { + "version": "1.17.2", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz", + "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==", + "dependencies": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.1", + "uid-safe": "~2.1.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express-session/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/express-session/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.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": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "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-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "dependencies": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "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": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "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/node-abi": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", + "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "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": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "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/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "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": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "node_modules/prebuild-install": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", + "integrity": "sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "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/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quick.db": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/quick.db/-/quick.db-7.1.3.tgz", + "integrity": "sha512-0S1fVb9OAZGhkI4ZIc5Oe4yWMwhz20xSsziwd6+yGWKKMsPt+XOfj/gD5CesGxd2WdqBkZFBiP8ZqWDu55HLHA==", + "dependencies": { + "better-sqlite3": "^7.1.1", + "lodash": "^4.17.20" + } + }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", + "engines": { + "node": ">= 0.8" + } + }, + "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.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/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/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "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/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "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.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/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/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "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/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + }, + "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" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "better-sqlite3": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.5.0.tgz", + "integrity": "sha512-6FdG9DoytYGDhLW7VWW1vxjEz7xHkqK6LnaUQYA8d6GHNgZhu9PFX2xwKEEnSBRoT1J4PjTUPeg217ShxNmuPg==", + "requires": { + "bindings": "^1.5.0", + "prebuild-install": "^7.0.0" + } + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "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" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "requires": { + "jake": "^10.6.1" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, + "express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "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.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "express-session": { + "version": "1.17.2", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz", + "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==", + "requires": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.1", + "uid-safe": "~2.1.5" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.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": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "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==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "requires": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "requires": { + "mime-db": "1.51.0" + } + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "node-abi": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", + "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", + "requires": { + "semver": "^7.3.5" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "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==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "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": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "prebuild-install": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", + "integrity": "sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==", + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "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" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==" + }, + "quick.db": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/quick.db/-/quick.db-7.1.3.tgz", + "integrity": "sha512-0S1fVb9OAZGhkI4ZIc5Oe4yWMwhz20xSsziwd6+yGWKKMsPt+XOfj/gD5CesGxd2WdqBkZFBiP8ZqWDu55HLHA==", + "requires": { + "better-sqlite3": "^7.1.1", + "lodash": "^4.17.20" + } + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" + }, + "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.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "requires": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "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==" + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "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.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "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==" + } + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "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" + } + }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "requires": { + "random-bytes": "~1.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ed1fdc2 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "akf-forum", + "version": "2.0.0", + "description": "A Node.js based forum software", + "main": "index.js", + "scripts": { + "start": "node index.js", + "restart": "node reset.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Akif9748/akf-forum.git" + }, + "author": "Akif9748", + "license": "GPL-3.0-or-later", + "bugs": { + "url": "https://github.com/Akif9748/akf-forum/issues" + }, + "homepage": "https://github.com/Akif9748/akf-forum#readme", + "dependencies": { + "body-parser": "^1.19.2", + "ejs": "^3.1.6", + "express": "^4.17.3", + "express-session": "^1.17.2", + "quick.db": "^7.1.3" + } +} diff --git a/public/css/styles.css b/public/css/styles.css new file mode 100644 index 0000000..62c002c --- /dev/null +++ b/public/css/styles.css @@ -0,0 +1,117 @@ +img.yuvarlak { + border-radius: 50%; + height: 30px; + width: 30px; + object-fit: cover; +} + +img.logo { + width: 266px; + height: 75px; + display: inline; +} + +textarea { + + font-family: monospace; + background-color: #262626; + border: 2px solid #444444; + color: #BCBCBC; + width: auto; + height: auto; + cursor: pointer; +} + +p { + font-size: 25px; +} + +hr { + border-color: #444444; + border: 0; + border-top: 1px solid #eee; + margin: 20px 0; +} + +body, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: monospace; + background: #262626; + color: #bcbcbc; + max-width: 69rem; + margin: auto; + margin-top: 10px; + + /* funny number */ +} + +a:link { + color: #5f87af; +} + +a:hover { + color: #af5f5f; +} + +a:visited { + color: #8787af; +} + +a:active { + color: #af5f5f; +} + +pre { + background-color: #1c1c1c; + padding: 1em; + border: 0; +} + +h1, +h2, +h3, +h4, +h5 { + margin-bottom: 0.1rem; +} + +hr { + border-color: #444444; +} + +button, input { + font-family: monospace; + background-color: #262626; + border: 2px solid #444444; + + color: #BCBCBC; + width: auto; + height: 30px; + +} + +button.buyuk { + width: 150px; + height: 50px; +} + +input { + width: 75%; + cursor: pointer; + color: #bcbcbc; +} + +button:hover { + background-color: #BCBCBC; + color: #262626; +} + +.mainpage { + padding: 10px; + float: right; +} \ No newline at end of file diff --git a/public/images/favicon.jpg b/public/images/favicon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..056cf0b605de066dae6e3c38fd3d836bd983c7d0 GIT binary patch literal 5126 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 ZQb3N5c2-*U;qLc_mw7UQR literal 0 HcmV?d00001 diff --git a/public/images/favicon.png b/public/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..056cf0b605de066dae6e3c38fd3d836bd983c7d0 GIT binary patch literal 5126 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 ZQb3N5c2-*U;qLc_mw7UQR literal 0 HcmV?d00001 diff --git a/public/images/guest.png b/public/images/guest.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d854ae92160b9c09874d33ee394b5d68cfb5bd GIT binary patch literal 4477 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 literal 0 HcmV?d00001 diff --git a/public/images/logo.jpg b/public/images/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50ccc03369c93539fe819272643cffa84800e501 GIT binary patch literal 15488 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 JU)t#H{|6+fYB~S_ literal 0 HcmV?d00001 diff --git a/reset.js b/reset.js new file mode 100644 index 0000000..e4cfcb6 --- /dev/null +++ b/reset.js @@ -0,0 +1,4 @@ +const { set } = require("quick.db"); +set("users", new Array()); +set("threads", new Array()); +set("secret", new Object()); \ No newline at end of file diff --git a/routes/get/createThread.js b/routes/get/createThread.js new file mode 100644 index 0000000..fc5dde2 --- /dev/null +++ b/routes/get/createThread.js @@ -0,0 +1,10 @@ +const { User } = require("../../classes/index"); + + +module.exports = (req, res) => { + + if (!req.session.loggedin) return res.redirect('/login'); + const user = new User().getId(req.session.userid) + res.render("openThread", { user }) + +} \ No newline at end of file diff --git a/routes/get/index.js b/routes/get/index.js new file mode 100644 index 0000000..53b6d9f --- /dev/null +++ b/routes/get/index.js @@ -0,0 +1,12 @@ +const { User } = require("../../classes/index"); +const { get } = require("quick.db") +module.exports = (req, res) => { + if (!req.session.loggedin) return res.redirect('/login'); + + const mem = process.memoryUsage().heapUsed / Math.pow(2, 20); + const users = get("users").length; + const threads = get("threads").length; + + const user = new User().getId(req.session.userid) + res.render("index", { mem, user, users, threads }) +} \ No newline at end of file diff --git a/routes/get/login.js b/routes/get/login.js new file mode 100644 index 0000000..0a1ddec --- /dev/null +++ b/routes/get/login.js @@ -0,0 +1 @@ +module.exports = (req,res)=> res.render("login"); \ No newline at end of file diff --git a/routes/get/register.js b/routes/get/register.js new file mode 100644 index 0000000..4d1b2ba --- /dev/null +++ b/routes/get/register.js @@ -0,0 +1 @@ +module.exports = (req,res)=> res.render("register"); \ No newline at end of file diff --git a/routes/get/threads.js b/routes/get/threads.js new file mode 100644 index 0000000..11fa060 --- /dev/null +++ b/routes/get/threads.js @@ -0,0 +1,23 @@ +const { Thread, Message, User } = require("../../classes/index"); +const db = require("quick.db"); + +const error = require("../../errors/error.js") + +module.exports = (req,res) =>{ + if (!req.session.loggedin) return res.redirect('/login'); + + const id = req.url.slice(9); + const user = new User().getId(req.session.userid); + + if (!id) { + const threads = db.get("threads").slice(0, 10) + const links = threads.map(thread => "/threads/" + threads.indexOf(thread)) + return res.render("threads", { threads, links, user }) + } + const thread = new Thread().getId(id); + + if (thread) + res.render("thread", { thread, user }) + else + error(res, 404, "We have not got this thread."); +} \ No newline at end of file diff --git a/routes/get/users.js b/routes/get/users.js new file mode 100644 index 0000000..87d375d --- /dev/null +++ b/routes/get/users.js @@ -0,0 +1,28 @@ +const { Thread, Message, User } = require("../../classes/index"); +const db = require("quick.db"); +const error = require("../../errors/error.js") + +module.exports = (req,res) =>{ + if (!req.session.loggedin) return res.redirect('/login'); + const user = new User().getId(req.session.userid) + + const id = req.url.slice(7); + + if (!id) { + + const users = db.get("users").slice(0, 10); + + const links = users.map(user => "/users/" + user.id) + return res.render("users", { users, links, user }) + + } + + const member = new User().getId(id); + + + if (member) + res.render("user", { user, member }) + else + error(res, 404, "We have not got this user."); + +} \ No newline at end of file diff --git a/routes/post/createThread.js b/routes/post/createThread.js new file mode 100644 index 0000000..506287d --- /dev/null +++ b/routes/post/createThread.js @@ -0,0 +1,12 @@ +const { User, Thread } = require("../../classes/index"); + + +module.exports = (req, res) => { + if (!req.session.loggedin) return res.redirect('/login'); + + const info = req.body; + const thread = new Thread(info.title, info.content, new User().getId(req.session.userid)).takeId(); + thread.write() + res.redirect('/threads/' + thread.id); + +} \ No newline at end of file diff --git a/routes/post/login.js b/routes/post/login.js new file mode 100644 index 0000000..a75f915 --- /dev/null +++ b/routes/post/login.js @@ -0,0 +1,29 @@ +const db = require("quick.db"); +const error = require("../../errors/error.js") + +module.exports = (req, res) => { + + let username = req.body.username; + let password = req.body.password; + if (username && password) { + const user = db.get("secret." + username) + + if (user) { + // Authenticate the user + if (user.key !== password) return error(res, 404, 'Incorrect Password!') + + req.session.loggedin = true; + req.session.username = username; + req.session.userid = user.id; + + res.redirect('/'); + } else + error(res, 404, 'Incorrect Username and/or Password!') + + + } else + error(res, 404, "You forgot entering some values") + + + +} \ No newline at end of file diff --git a/routes/post/register.js b/routes/post/register.js new file mode 100644 index 0000000..845d5b0 --- /dev/null +++ b/routes/post/register.js @@ -0,0 +1,31 @@ +const db = require("quick.db"); +const error = require("../../errors/error.js") +const { User } = require("../../classes/index"); + +module.exports = (req, res) => { + + let username = req.body.username; + let password = req.body.password; + + if (username && password) { + const user = db.get("secret." + username) + + if (user) { + error(res, 404, `We have got an user named ${username}!`) + + } else { + let avatar = req.body.avatar || "/images/guest.png" + const user2 = new User(req.body.username, avatar).takeId() + db.set("secret." + username, { id: user2.id, key: password }) + req.session.loggedin = true; + req.session.username = username; + req.session.userid = user2.id; + user2.write() + res.redirect('/'); + } + + } else + error(res, 404, "You forgot entering some values") + + +} \ No newline at end of file diff --git a/routes/post/threads.js b/routes/post/threads.js new file mode 100644 index 0000000..e607daf --- /dev/null +++ b/routes/post/threads.js @@ -0,0 +1,19 @@ +const { Thread, Message, User } = require("../../classes/index"); +const error = require("../../errors/error.js") + +module.exports = (req, res) => { + if (!req.session.loggedin) return res.redirect('/login'); + + const id = req.url.slice(9); + const thread = new Thread().getId(id); + + if (thread) { + thread.push(new Message(req.body.content, new User().getId(req.session.userid))) + thread.write(); + res.redirect('/threads/' + id); + + } + else + error(res, 404, "We have not got this thread."); + +} \ No newline at end of file diff --git a/views/error.ejs b/views/error.ejs new file mode 100644 index 0000000..e3fa82b --- /dev/null +++ b/views/error.ejs @@ -0,0 +1,36 @@ + + + + + + + + <%= type %> + + + + + + + + + + +
+ + +
+ + + + + +

<%= type %>

+

<%= error %>

+ + + + + + \ No newline at end of file diff --git a/views/index.ejs b/views/index.ejs new file mode 100644 index 0000000..ebda816 --- /dev/null +++ b/views/index.ejs @@ -0,0 +1,52 @@ + + + + + + + + Main page! + + + + + + + + + + +
+ + + + +

> <%= user.name %> + alt=<%= user.name %>> +

+
+ + +

Welcome, > <%= user.name %> + alt=<%= user.name %>> +

+
+

Statics:

+
    + +
  • +

    User count: <%= users %>

    +
  • +
  • +

    Thread count: <%= threads %>

    +
  • +
  • +

    Memory usage: <%= mem.toFixed(2); %> MB

    +
  • + +
+ + + + + \ No newline at end of file diff --git a/views/login.ejs b/views/login.ejs new file mode 100644 index 0000000..53c267d --- /dev/null +++ b/views/login.ejs @@ -0,0 +1,35 @@ + + + + + + + + LOGIN + + + + + + + + + + +
+ +
+ + + +

Login

+
+
+ + + +
+ + + + \ No newline at end of file diff --git a/views/openThread.ejs b/views/openThread.ejs new file mode 100644 index 0000000..f027602 --- /dev/null +++ b/views/openThread.ejs @@ -0,0 +1,47 @@ + + + + + + + + Open Thread + + + + + + + + + + +
+ + + +

> <%= user.name %> + alt=<%= user.name %>> +

+
+ + + + + +
+

Title:

+ + +
+

Content:

+ + +
+ +
+ + + + + \ No newline at end of file diff --git a/views/register.ejs b/views/register.ejs new file mode 100644 index 0000000..d34e8f7 --- /dev/null +++ b/views/register.ejs @@ -0,0 +1,43 @@ + + + + + + + + Register + + + + + + + + + + +
+ + + +
+ + + +

Register

+
+
+ + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/views/thread.ejs b/views/thread.ejs new file mode 100644 index 0000000..9aca042 --- /dev/null +++ b/views/thread.ejs @@ -0,0 +1,87 @@ + + + + + + + + + <%= thread.title %> + + + + + + + + + + + +
+ + + + +

> <%= user.name %> + alt=<%= user.name %>> +

+
+ + + + +

+ <%= thread.title %> +

+ + +
+

+ alt=<%= thread.author.name %>> + > <%= thread.author.name %>: +

+

+ <%= thread.content %> +

+

+ <%=new Date(thread.time).toLocaleString() %> +

+
+ +
+ <% thread.messages.forEach(message=>{ %> + +
+

+ alt=<%= message.author.name %>> + > <%= message.author.name %>: +

+ +

+ <%= message.content %> +

+

+ <%=new Date(message.time).toLocaleString() %> +

+ +
+ +
+ <% }); %> + + +
+ + +
+ +
+ + +
+ + + + + \ No newline at end of file diff --git a/views/threads.ejs b/views/threads.ejs new file mode 100644 index 0000000..02fc03e --- /dev/null +++ b/views/threads.ejs @@ -0,0 +1,44 @@ + + + + + + + + Main page! + + + + + + + + + + +
+ + + +

> <%= user.name %> + alt=<%= user.name %>> +

+
+ + + + +

Threads:

+ + + + + + \ No newline at end of file diff --git a/views/user.ejs b/views/user.ejs new file mode 100644 index 0000000..0d6aeaa --- /dev/null +++ b/views/user.ejs @@ -0,0 +1,64 @@ + + + + + + + + + <%= member.name %> + + + + + + + + + + + +
+ + + + +

> <%= user.name %> + alt=<%= user.name %>> +

+
+ + + +

Avatar:

+ alt=<%= member.name %>> + +
+

Name:

+

+ + + <%= member.name %> + +

+ + +
+

Created at:

+

+ + + <%= new Date(member.time).toLocaleString() %> + +

+ + + + + + + + + + + \ No newline at end of file diff --git a/views/users.ejs b/views/users.ejs new file mode 100644 index 0000000..0fb8da9 --- /dev/null +++ b/views/users.ejs @@ -0,0 +1,46 @@ + + + + + + + + Users! + + + + + + + + + + +
+ + + +

> <%= user.name %> + alt=<%= user.name %>> +

+
+ + + + +

USERS:

+
    + <% users.forEach(user=>{ %> +
  • +

    > <%= user.name %> + alt=<%= user.name %>> +

    +
  • + <% }); %> +
+ + + + + + \ No newline at end of file