From 208e773d655e4790745b6805dee1e89805b0c438 Mon Sep 17 00:00:00 2001 From: Firepup Sixfifty Date: Sun, 1 Oct 2023 18:39:12 -0500 Subject: [PATCH] Initial commit --- .gitignore | 8 + .replit | 81 + index.js | 513 ++++++ nodemon.json | 5 + old-index.js | 22 + package-lock.json | 2035 +++++++++++++++++++++ package.json | 23 + public/dynamic/about-you.ejs | 25 + public/dynamic/raw.ejs | 20 + public/dynamic/server-info.ejs | 18 + public/dynamic/spotify-history.ejs | 25 + public/dynamic/spotify-queue.ejs | 27 + public/dynamic/spotify.ejs | 32 + public/errors/403.ejs | 24 + public/errors/404.ejs | 24 + public/errors/422.ejs | 22 + public/errors/500.ejs | 25 + public/icons/favicon.ico | Bin 0 -> 26622 bytes public/images/not-here.txt | 1 + public/pages/cheese.html | 58 + public/pages/construction.html | 18 + public/pages/dvd-screensaver.html | 93 + public/pages/forbidden.html | 19 + public/pages/hidden.html | 57 + public/pages/index.html | 36 + public/pages/maintenance.html | 17 + public/pages/password-generator.html | 24 + public/pages/pfps.html | 37 + public/pages/ratings.html | 32 + public/pages/ratings/9pfs.html | 20 + public/pages/ratings/bigminiboss.html | 20 + public/pages/ratings/coderelijah.html | 20 + public/pages/ratings/jayayseaohbee14.html | 20 + public/pages/ratings/pikachub2005.html | 20 + public/pages/ratings/youngchief.html | 20 + public/pages/usage.html | 24 + public/pages/users.html | 32 + public/pages/users/9pfs.html | 20 + public/pages/users/bigminiboss.html | 20 + public/pages/users/coderelijah.html | 20 + public/pages/users/jayayseaohbee14.html | 20 + public/pages/users/pikachub2005.html | 20 + public/pages/users/youngchief.html | 21 + public/pages/visits.html | 73 + public/raw/flags.txt | 336 ++++ public/raw/minifier | 34 + public/scripts/eruda_loader.js | 33 + public/scripts/footer.js | 6 + public/scripts/hidden.js | 23 + public/scripts/hidden2.js | 9 + public/scripts/maintenance.js | 13 + public/scripts/pgen.js | 25 + public/scripts/pgen2.js | 8 + public/scripts/poof.js | 5 + public/scripts/script.js | 10 + public/scripts/test.js | 0 public/styles/cheese.css | 77 + public/styles/ejsstyle.css | 97 + public/styles/old.hidden.css | 58 + public/styles/style.css | 90 + replit.nix | 14 + restart | 16 + 62 files changed, 4545 insertions(+) create mode 100644 .gitignore create mode 100644 .replit create mode 100644 index.js create mode 100644 nodemon.json create mode 100644 old-index.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/dynamic/about-you.ejs create mode 100644 public/dynamic/raw.ejs create mode 100644 public/dynamic/server-info.ejs create mode 100644 public/dynamic/spotify-history.ejs create mode 100644 public/dynamic/spotify-queue.ejs create mode 100644 public/dynamic/spotify.ejs create mode 100644 public/errors/403.ejs create mode 100644 public/errors/404.ejs create mode 100644 public/errors/422.ejs create mode 100644 public/errors/500.ejs create mode 100644 public/icons/favicon.ico create mode 100644 public/images/not-here.txt create mode 100644 public/pages/cheese.html create mode 100644 public/pages/construction.html create mode 100644 public/pages/dvd-screensaver.html create mode 100644 public/pages/forbidden.html create mode 100644 public/pages/hidden.html create mode 100644 public/pages/index.html create mode 100644 public/pages/maintenance.html create mode 100644 public/pages/password-generator.html create mode 100644 public/pages/pfps.html create mode 100644 public/pages/ratings.html create mode 100644 public/pages/ratings/9pfs.html create mode 100644 public/pages/ratings/bigminiboss.html create mode 100644 public/pages/ratings/coderelijah.html create mode 100644 public/pages/ratings/jayayseaohbee14.html create mode 100644 public/pages/ratings/pikachub2005.html create mode 100644 public/pages/ratings/youngchief.html create mode 100644 public/pages/usage.html create mode 100644 public/pages/users.html create mode 100644 public/pages/users/9pfs.html create mode 100644 public/pages/users/bigminiboss.html create mode 100644 public/pages/users/coderelijah.html create mode 100644 public/pages/users/jayayseaohbee14.html create mode 100644 public/pages/users/pikachub2005.html create mode 100644 public/pages/users/youngchief.html create mode 100644 public/pages/visits.html create mode 100644 public/raw/flags.txt create mode 100644 public/raw/minifier create mode 100644 public/scripts/eruda_loader.js create mode 100644 public/scripts/footer.js create mode 100644 public/scripts/hidden.js create mode 100644 public/scripts/hidden2.js create mode 100644 public/scripts/maintenance.js create mode 100644 public/scripts/pgen.js create mode 100644 public/scripts/pgen2.js create mode 100644 public/scripts/poof.js create mode 100644 public/scripts/script.js create mode 100644 public/scripts/test.js create mode 100644 public/styles/cheese.css create mode 100644 public/styles/ejsstyle.css create mode 100644 public/styles/old.hidden.css create mode 100644 public/styles/style.css create mode 100644 replit.nix create mode 100644 restart diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..41af388 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +__pycache__/** +.upm +venv/** +**/__pycache__/** +.pythonlibs/** +.config/** +replit*txt +node_modules/** diff --git a/.replit b/.replit new file mode 100644 index 0000000..23de556 --- /dev/null +++ b/.replit @@ -0,0 +1,81 @@ +entrypoint = "index.js" + +hidden = [".config", "package-lock.json"] + +#[interpreter] +#command = ["prybar-nodejs", "-q", "--ps1", "\u0001\u001b[33m\u0002\u0001\u001b[00m\u0002 ", "-i"] +run = ["npm", "run", "start"] + +[[hints]] +regex = "Error \\[ERR_REQUIRE_ESM\\]" +message = "We see that you are using require(...) inside your code. We currently do not support this syntax. Please use 'import' instead when using external modules. (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import)" + +[nix] +channel = "stable-22_11" + +[env] +XDG_CONFIG_HOME = "/home/runner/.config" +PATH = "/home/runner/$REPL_SLUG/.config/npm/node_global/bin:/home/runner/$REPL_SLUG/node_modules/.bin" +npm_config_prefix = "/home/runner/$REPL_SLUG/.config/npm/node_global" + +[gitHubImport] +requiredFiles = [".replit", "replit.nix", ".config", "package.json", "package-lock.json"] + +[packager] +language = "nodejs" + + [packager.features] + packageSearch = true + guessImports = false + enabledForHosting = false + +[unitTest] +language = "nodejs" + +[debugger] +support = true + + [debugger.interactive] + transport = "localhost:0" + startCommand = [ "dap-node" ] + + [debugger.interactive.initializeMessage] + command = "initialize" + type = "request" + + [debugger.interactive.initializeMessage.arguments] + clientID = "replit" + clientName = "replit.com" + columnsStartAt1 = true + linesStartAt1 = true + locale = "en-us" + pathFormat = "path" + supportsInvalidatedEvent = true + supportsProgressReporting = true + supportsRunInTerminalRequest = true + supportsVariablePaging = true + supportsVariableType = true + + [debugger.interactive.launchMessage] + command = "launch" + type = "request" + + [debugger.interactive.launchMessage.arguments] + args = [] + console = "externalTerminal" + cwd = "." + environment = [] + pauseForSourceMap = false + program = "./index.js" + request = "launch" + sourceMaps = true + stopOnEntry = false + type = "pwa-node" + +[languages] + +[languages.javascript] +pattern = "**/{*.js,*.jsx,*.ts,*.tsx}" + +[languages.javascript.languageServer] +start = "typescript-language-server --stdio" \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..c16d425 --- /dev/null +++ b/index.js @@ -0,0 +1,513 @@ +const express = require("express"), http = require('http'), UAParser = require('ua-parser-js'), fs = require('fs'), path = require("path"), app = express(), directory = __dirname, htmlfileloc = directory + "/public/pages", rawfileloc = directory + "/public/raw", cssfileloc = directory + "/public/scripts", jsfileloc = directory + "/public/styles", iconfileloc = directory + "/public/icons", errorfileloc = directory + "/public/errors", dynamfileloc = directory + "/public/dynamic", err404loc = errorfileloc + "/404.ejs", err422loc = errorfileloc + "/422.ejs", err403loc = errorfileloc + "/403.ejs", err500loc = errorfileloc + "/500.ejs", conloc = htmlfileloc + "/construction.html", port = 8080, validImageTypes = ['.jpg', '.jpeg', '.png', '.gif'], imgsrv = "https://image-hosting.firepup650.repl.co", axios = require('axios'), und = undefined, users = ["youngchief","coderelijah","bigminiboss","pikachub2005","jayayseaohbee14","9pfs"], aliases = {"smallmaxworker":"bigminiboss","9pfs1":"9pfs"}; +var tracks = und, datas = und; +app.use(require("expressjs-remembering-doomsdaybear")) +app.set('trust proxy', 1) +const cookieCheck = (req, res, next) => { + const options = { + maxAge: 1000 * 60 * 60 * 24 * 365 * 20, + httpOnly: true, + sameSite: 'strict', + }; + res.cookie('cookiesEnabled', 'true', options); + next(); +}; +const spotifyRequest = ((rawData, name, time, deezerData) => { + axios.get('https://api.youngchief.xyz/spotify/now').then(res => { + let data = res.data; + // console.log(data); + //data = JSON.parse(data.replace(/'/g, "\"")); + axios.get(`https://api.deezer.com/2.0/track/isrc:${data.isrc}`).then(resp => { + let dzData = resp.data; + let song = dzData.title; + let duration = dzData.duration; + //console.log(dzData); + rawData(data,song,duration,dzData); + }).catch(err => { + console.log('YCSPR Error (ISRC API):', err.message); + rawData(data,"Unknown","Unknown",{}); + }); + }).catch(err => { + console.log('YCSPR Error (YC\'s end):', err.message); + rawData(und,err.message,und,und); + }); +}); +const spotifyQueueRequest = ((rawData, isrcs, names, dzDatas) => { + axios.get('https://api.youngchief.xyz/spotify/queue').then(res => { + let data = res.data; + // console.log(data); + //data = JSON.parse(data.replace(/'/g, "\"")); + let ids = []; + let tracks = []; + let datas = []; + for (track in data.queue) { + ids.push(data.queue[track]); + axios.get(`https://api.deezer.com/2.0/track/isrc:${data.queue[track]}`).then(resp => { + let dzData = resp.data; + datas.push(dzData); + let song = dzData.title; + tracks.push(song); + }).catch(err => { + console.log('YCSPR Error (ISRC API):', err.message); + }); + } + console.log("DEBUG: TRACKS =",tracks); + console.log("DEBUG: IDS =",ids); + rawData(data,ids,tracks,datas); + }).catch(err => { + console.log('YCSPR Error (YC\'s end):', err.message, err); + rawData(und,err.message,und,und); + }); +}); +const spotifyHistoryRequest = ((rawData, isrcs, names, dzDatas) => { + axios.get('https://api.youngchief.xyz/spotify/history').then(res => { + let data = res.data; + // console.log(data); + //data = JSON.parse(data.replace(/'/g, "\"")); + let ids = []; + tracks = []; + datas = []; + for (track in data.history) { + ids.push(data.history[track]); + axios.get(`https://api.deezer.com/2.0/track/isrc:${data.history[track]}`).then(resp => { + let dzData = resp.data; + datas.push(dzData); + let song = dzData.title; + tracks.push(song); + }).catch(err => { + console.log('YCSPR Error (ISRC API):', err.message); + }); + } + console.log("DEBUG: TRACKS =",tracks); + console.log("DEBUG: IDS =",ids); + rawData(data,ids,tracks,datas); + }).catch(err => { + console.log('YCSPR Error (YC\'s e nd):', err.message, err); + rawData(und,err.message,und,und); + }); +}); +let startTime = Date.now(); +let totalPages = 0; +const countPages = (dir, callback) => { + let count = 0; + fs.readdir(dir, (err, files) => { + if (err) return callback(err); + let pending = files.length; + if (!pending) return callback(null, count); + files.forEach(file => { + let filePath = path.join(dir, file); + fs.stat(filePath, (err, stats) => { + if (err) return callback(err); + if (stats.isDirectory()) { + countPages(filePath, (err, res) => { + if (err) return callback(err); + count += res; + if (!--pending) callback(null, count); + }); + } else if (stats.isFile() && ['.html', '.ejs'].includes(path.extname(file))) { + count++; + if (!--pending) callback(null, count); + } else { + if (!--pending) callback(null, count); + } + }); + }); + }); +}; +countPages('public', (err, count) => { + if (err) { + console.error(err); + return; + } + console.log(count + " pages") + totalPages = count; +}); +function isUser(user) { + let valid = false; + for (id in users) { + if (user === users[id]) { + valid = true; + } + } + return valid; +}; +function isAlias(user) { + let realUser = ""; + for (var key in aliases) { + if (key === user) { + realUser = aliases[key]; + } + } + return realUser; +}; +function getContributors(dezData) { + let contribs = dezData.contributors; + let retValue = ""; + for (value in contribs) { + if (retValue) { + retValue = `${retValue}, ${contribs[value].name}` + } else { + retValue = contribs[value].name + } + } + console.log(retValue); + return retValue; +}; +// Next function was provided by Youngchief +function secondsToMinutes(seconds) { + let minutes = Math.floor(seconds / 60); // get the number of whole minutes + let leftoverSeconds = seconds % 60; // get the remaining seconds + if (leftoverSeconds >= 10) { + return minutes + ":" + leftoverSeconds; + } else { + return minutes + ":" + leftoverSeconds + "0"; + } +}; +app.use(cookieCheck); +app.use(express.static(cssfileloc)); +app.use(express.static(jsfileloc)); +app.use(express.static(iconfileloc)); +app.get("/images/:filename", function(req, res, next) { + let path = '/' + req.params.filename; + let fulllink = imgsrv + path; + res.redirect(fulllink) +}); +app.get("/images/:directory/:filename", function(req, res, next) { + let path = '/' + req.params.directory + '/' + req.params.filename; + let fulllink = imgsrv + path; + res.redirect(fulllink) +}); +app.set("view engine", "ejs"); +app.get("/cause-error-500", function(req, res, next) { + throw new Error("Intentional 500 Internal Server Error"); +}); +app.get("/cause-error-404", function(req, res) { + res.status(404).render(err404loc, { message: "Intentional 404 Not Found" }); +}); +app.get("/cause-error-403", function(req, res) { + res.status(403).render(err403loc, { message: "Intentional 403 Forbidden" }); +}); +app.get('/', function(req, res) { + res.sendFile(path.join(htmlfileloc, `index.html`)); +}); +app.get(/\.html$/, function(req, res) { + if (!req.url.endsWith('.js') && !req.url.endsWith('.css') && req.url.endsWith('.html')) { + const strippedUrl = req.url.slice(0, -5); + return res.redirect(strippedUrl); + } + next(); +}); +app.get("/about-browser", function(req, res) { + return res.redirect("/about-you"); +}); +app.get("/youngchief-spotify", function(req, res) { + return res.redirect("/youngchief/spotify"); +}); +app.get('/about-you', function(req, res) { + let uAH = req.headers['user-agent']; + let browserName = 'Unknown'; + let browserVersion = 'Unknown'; + let cookiesEnabled = req.headers.cookie ? true : false; + let platformName = 'Unknown'; + let platformVersion = 'Unknown'; + let deviceModel = 'Unknown'; + let deviceType = 'Unknown'; + let deviceVendor = 'Unknown'; + let agent = new UAParser(uAH); + platformName = agent.getOS().name; + platformVersion = agent.getOS().version; + deviceModel = agent.getDevice().model; + deviceType = agent.getDevice().type; + deviceVendor = agent.getDevice().vendor; + browserName = agent.getBrowser().name; + browserVersion = agent.getBrowser().version; + let datarray = [platformName, platformVersion, deviceModel, deviceVendor, browserName, browserVersion]; + let itemid = 0; + datarray.forEach((item) => { + if (item == undefined) { + datarray[itemid] = "Unknown"; + } + itemid++; + }); + platformName = datarray[0]; + platformVersion = datarray[1]; + deviceModel = datarray[2]; + deviceVendor = datarray[3]; + browserName = datarray[4]; + browserVersion = datarray[5]; + if (deviceType == undefined) { + deviceType = 'Unknown, might be desktop.'; + } + res.render(path.join(dynamfileloc, 'about-you'), { + userAgent: uAH, + browserName: browserName, + browserVersion: browserVersion, + cookiesEnabled: cookiesEnabled, + platformName: platformName, + platformVersion: platformVersion, + deviceModel: deviceModel, + deviceType: deviceType, + deviceVendor: deviceVendor + }); +}); +app.get("/server-info", (req, res) => { + let uptime = (Date.now() - startTime) / 1000; + let author = "Firepup650"; + res.render(dynamfileloc + '/server-info.ejs', { + author: author, + uptime: uptime, + images: totalPages + }); +}); +// Youngchief +app.get("/youngchief/spotify", (req, res) => { + spotifyRequest((data, song, length, dzData) => { + let playing = "Not set by route"; + let progress = "Not set by route"; + let isrc = "Not set by route"; + let name = "Not set by route"; + let raw = "Not set by route"; + let dur = "Not set by route"; + let contribs = "Not set by route"; + let cal = "Not set by route"; + let end = "Not set by route"; + let error = und; + if (data && data.error) { + end = "Youngchief's end"; + raw = JSON.stringify(data).replace(/,/g,", "); + cal = imgsrv+"/error.png"; + error = data.error; + } else if (data && data.playing) { + playing = data.playing; + progress = Math.round(data.progress/1000); + isrc = data.isrc; + name = song; + dur = secondsToMinutes(length); + raw = JSON.stringify(data).replace(/,/g,", "); + contribs = getContributors(dzData); + cal = dzData.album.cover_xl; + } else { + end = "My end, probably"; + raw = "Unknown (Server Error)"; + cal = imgsrv+"/error.png"; + error = song; + } + res.render(dynamfileloc + '/spotify.ejs', { + playing: playing, + progress: secondsToMinutes(progress), + isrc: isrc, + name: name, + len: dur, + raw: raw, + cont: contribs, + cal: cal, + end: end, + err: error + }); + }); +}); +app.get("/youngchief/spotify/queue", (req, res) => { + spotifyQueueRequest((data, ids, tracks, dzDatas) => { + let isrcs = "Not set by route"; + let names = "Not set by route"; + let raw = "Not set by route"; + let end = "Not set by route"; + let error = und; + if (data && data.error) { + end = "Youngchief's end"; + raw = JSON.stringify(data).replace(/,/g,", "); + error = data.error; + } else if (data && ids) { + isrcs = JSON.stringify(ids).replace(/,/g,", ").replace(/\[/g,"").replace(/\]/g,"").replace(/\"/g,""); + names = JSON.stringify(tracks).replace(/,/g,", ").replace(/\[/g,"").replace(/\]/g,"").replace(/\"/g,""); + raw = JSON.stringify(data).replace(/,/g,", "); + } else { + end = "My end, probably"; + raw = "Unknown (Server Error)"; + error = "Internal Error"; + } + res.render(dynamfileloc + '/spotify-queue.ejs', { + isrc: isrcs, + name: names, + raw: raw, + end: end, + err: error + }); + }); +}); +app.get("/youngchief/spotify/history", (req, res) => { + spotifyHistoryRequest((data, ids, tracks, dzDatas) => { + let isrcs = "Not set by route"; + let names = "Not set by route"; + let raw = "Not set by route"; + let end = "Not set by route"; + let error = und; + if (data && data.error) { + end = "Youngchief's end"; + raw = JSON.stringify(data).replace(/,/g,", "); + error = data.error; + } else if (data && ids) { + isrcs = JSON.stringify(ids).replace(/,/g,", ").replace(/\[/g,"").replace(/\]/g,"").replace(/\"/g,""); + names = JSON.stringify(tracks).replace(/,/g,", ").replace(/\[/g,"").replace(/\]/g,"").replace(/\"/g,""); + raw = JSON.stringify(data).replace(/,/g,", "); + } else { + end = "My end, probably"; + raw = "Unknown (Server Error)"; + error = "Internal Error"; + } + res.render(dynamfileloc + '/spotify-history.ejs', { + isrc: isrcs, + name: names, + raw: raw, + end: end, + err: error + }); + }); +}); +// EOY +app.get('/users/:name', function(req, res) { + return res.redirect(`/user/${req.params.name}`); +}); +app.get('/rating/:name', function(req, res) { + return res.redirect(`/ratings/${req.params.name}`); +}); +app.get('/user/:name', function(req, res) { + let user = req.params.name + if (isUser(user)) { + const htmlFilePath = path.join(htmlfileloc, `users/${user}.html`); + res.sendFile(htmlFilePath); + } else { + let test = isAlias(user); + if (test) { + return res.redirect(`/user/${test}`) + } else { + res.status(404).render(err404loc, {message: `User "${user}" does not have a user page. Contact @Firepup650 if you believe you have seen this message in error.`}); + } + } +}); +app.get('/ratings/:name', function(req, res) { + let user = req.params.name + if (isUser(user)) { + const htmlFilePath = path.join(htmlfileloc, `ratings/${user}.html`); + res.sendFile(htmlFilePath); + } else { + let test = isAlias(user); + if (test) { + return res.redirect(`/ratings/${test}`) + } else { + res.status(404).render(err404loc, {message: `User "${user}" does not have a ratings page. Contact @Firepup650 if you believe you have seen this message in error.`}); + } + } +}); +app.get('/:file', function(req, res) { + const fileName = req.params.file; + const htmlFilePath = path.join(htmlfileloc, `${fileName}.html`); + if (fs.existsSync(htmlFilePath) && fileName != "construction") { + if (fileName.startsWith('forbid')) { + res.status(403).render(err403loc); + } else { + res.sendFile(htmlFilePath); + } + } else { + if (isUser(fileName)) { + return res.redirect(`/user/${fileName}`) + } else if (!(isAlias(fileName))) { + res.status(404).render(err404loc); + } else { + return res.redirect(`/user/${isAlias(fileName)}`); + } + } +}); +app.get('/raw/:file', function(req, res) { + const fileName = req.params.file; + const filePath = path.join(rawfileloc, `${fileName}`); + if (fs.existsSync(filePath)) { + if (fileName.startsWith('forbid')) { + res.status(403).render(err403loc); + } else { + res.sendFile(filePath); + /* + fs.readFile(filePath, 'utf8', (err, data) => { + if (err) { + res.render(dynamfileloc+"/raw.ejs", {fileName: "Error", fileData: err}); + return; + } + res.render(dynamfileloc+"/raw.ejs", {fileName: fileName, fileData: data.replace(/\n/g, "
").replace(/=/g, " = ")}); + }) + //*/ + } + } else { + res.status(404).render(err404loc, {message: "The requested file was not found on the server."}); + } +}); +app.get('/rawFile/:file', function(req, res) { + const fileName = req.params.file; + const filePath = path.join(rawfileloc, `${fileName}`); + if (fs.existsSync(filePath)) { + if (fileName.startsWith('forbid')) { + res.status(403).render(err403loc); + } else { + //res.sendFile(filePath); + ///* + fs.readFile(filePath, 'utf8', (err, data) => { + if (err) { + res.render(dynamfileloc+"/raw.ejs", {fileName: "Error", fileData: err, raw: false}); + return; + } + res.render(dynamfileloc+"/raw.ejs", {fileName: fileName, fileData: data.replace(/\n/g, "
"), raw: true}); + }) + //*/ + } + } else { + res.status(404).render(err404loc, {message: "The requested file was not found on the server."}); + } +}); +app.get('/file/:file', function(req, res) { + const fileName = req.params.file; + const filePath = path.join(rawfileloc, `${fileName}`); + if (fs.existsSync(filePath)) { + if (fileName.startsWith('forbid')) { + res.status(403).render(err403loc); + } else { + //res.sendFile(filePath); + ///* + fs.readFile(filePath, 'utf8', (err, data) => { + if (err) { + res.render(dynamfileloc+"/raw.ejs", {fileName: "Error", fileData: err, raw: false}); + return; + } + res.render(dynamfileloc+"/raw.ejs", {fileName: fileName, fileData: data.replace(/\n/g, "
").replace(/=/g, " = "), raw: false}); + }) + //*/ + } + } else { + res.status(404).render(err404loc, {message: "The requested file was not found on the server."}); + } +}); +app.use(function(req, res, next) { + res.status(404).render(err404loc); +}); +app.use(function(error, req, res, next) { + res.status(500).render(err500loc, { error }); +}); +app.listen(port, () => { + console.log(`Server started on port ${port}`); +}); +app.on("error", error => { + if (error.syscall !== "listen") { + throw error; + } + + const bind = typeof port === "string" ? "Pipe " + port : "Port " + port; + + switch (error.code) { + case "EACCES": + console.error(bind + " requires elevated privileges"); + process.exit(1); + break; + case "EADDRINUSE": + console.error(bind + " is already in use"); + break; + default: + throw error; + } +}); \ No newline at end of file diff --git a/nodemon.json b/nodemon.json new file mode 100644 index 0000000..2eb80b7 --- /dev/null +++ b/nodemon.json @@ -0,0 +1,5 @@ +{ + "ignore": ["public/**","views/**"], + "watch": ["index.js","nodemon.json","restart"], + "ext": "js,mjs,json" +} \ No newline at end of file diff --git a/old-index.js b/old-index.js new file mode 100644 index 0000000..cd0f99e --- /dev/null +++ b/old-index.js @@ -0,0 +1,22 @@ +const express = require("express"); +const app = express(); +const fileloc = __dirname+"/public" +const err404loc = __dirname+"/404.html" +const err500loc = __dirname+"/500.html" +const files = express.static(fileloc) + +app.use(files); +app.get("/cause-error-500", function(req, res, next) { + throw new Error("Intentional 500 error"); +}); +app.get("/cause-error-404", function(req, res) { + res.status(404).send("Intentional 404 error"); +}); +app.use(function(req, res, next) { + res.status(404).sendFile(err404loc); +}); +app.use(function(error, req, res, next) { + res.sendStatus(500).sendFile(err500loc); +}); + +app.listen(8080); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..faf5c85 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2035 @@ +{ + "name": "nodejs", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "nodejs", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "axios": "^1.3.5", + "ejs": "^3.1.9", + "express": "^4.18.2", + "ua-parser-js": "^1.0.33" + }, + "devDependencies": { + "nodemon": "^2.0.20" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "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-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "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/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "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.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "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": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "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/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "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/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "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": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "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/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-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "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": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.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.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/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==", + "dev": true + }, + "node_modules/nodemon/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "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.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "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/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "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/ua-parser-js": { + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz", + "integrity": "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + } + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "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-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "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" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "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.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "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" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "requires": { + "jake": "^10.8.5" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "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" + } + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "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-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dev": true, + "requires": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.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": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "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" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "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.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "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": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "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.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + } + }, + "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" + } + }, + "ua-parser-js": { + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz", + "integrity": "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==" + }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..c8c8d3b --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "nodejs", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "nodemon index.js", + "dev": "nodemon index.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "axios": "^1.3.5", + "ejs": "^3.1.9", + "express": "^4.18.2", + "ua-parser-js": "^1.0.33" + }, + "devDependencies": { + "nodemon": "^2.0.20" + } +} diff --git a/public/dynamic/about-you.ejs b/public/dynamic/about-you.ejs new file mode 100644 index 0000000..b34c915 --- /dev/null +++ b/public/dynamic/about-you.ejs @@ -0,0 +1,25 @@ + + + + + + FP650 - About You + + + + +

About Your Browser

+ + +

User Agent: <%= userAgent %>

+

Browser Name: <%= browserName %>

+

Browser Version: <%= browserVersion %>

+

Platform Name: <%= platformName %>

+

Platform Version: <%= platformVersion %>

+

Device Model: <%= deviceModel %>

+

Device Type: <%= deviceType %>

+

Device Vendor: <%= deviceVendor %>

+

Cookies Enabled: <%= cookiesEnabled %>

+ + + \ No newline at end of file diff --git a/public/dynamic/raw.ejs b/public/dynamic/raw.ejs new file mode 100644 index 0000000..1512da6 --- /dev/null +++ b/public/dynamic/raw.ejs @@ -0,0 +1,20 @@ + + + + + + FP650 - Raw - <%= fileName %> + + + + + + + <% if (!raw) { %> +

<%- fileData %>

+ + <% } else { %> +

<%- fileData %>

+ <% } %> + + \ No newline at end of file diff --git a/public/dynamic/server-info.ejs b/public/dynamic/server-info.ejs new file mode 100644 index 0000000..e3a96fb --- /dev/null +++ b/public/dynamic/server-info.ejs @@ -0,0 +1,18 @@ + + + + FP650 - Server Info + + + + + + + +

Server Info:

+

Author: <%= author %>

+

Uptime: <%= uptime %> seconds

+

Total Pages: <%= images %>

+ + + \ No newline at end of file diff --git a/public/dynamic/spotify-history.ejs b/public/dynamic/spotify-history.ejs new file mode 100644 index 0000000..5825231 --- /dev/null +++ b/public/dynamic/spotify-history.ejs @@ -0,0 +1,25 @@ + + + + FP650 - YCS - History + + + + + + + +

Youngchief's Spotify History:

+ <% if (typeof err == 'undefined') { %> +

Status: OK

+

History (isrcs): <%= isrc %>

+

History (Song Names): <%= name %>

+ <% } else { %> +

Status: ERROR

+

Error Origin: <%= end %>

+

Error: <%= err %>

+ <% } %> +

Raw data: <%= raw %>

+ + + \ No newline at end of file diff --git a/public/dynamic/spotify-queue.ejs b/public/dynamic/spotify-queue.ejs new file mode 100644 index 0000000..9c5c63e --- /dev/null +++ b/public/dynamic/spotify-queue.ejs @@ -0,0 +1,27 @@ + + + + FP650 - YCS - Queue + + + + + + + +

Youngchief's Spotify Queue:

+ <% if (typeof err == 'undefined') { %> +

Status: OK

+

Queue (isrcs): <%= isrc %>

+

Queue (Song Names): <%= name %>

+ <% } else { %> +

Status: ERROR

+

Error Origin: <%= end %>

+

Error: <%= err %>

+ <% } %> +

Raw data: <%= raw %>

+ + + + + \ No newline at end of file diff --git a/public/dynamic/spotify.ejs b/public/dynamic/spotify.ejs new file mode 100644 index 0000000..3f4fd3b --- /dev/null +++ b/public/dynamic/spotify.ejs @@ -0,0 +1,32 @@ + + + + FP650 - Youngchief's Spotify + + + + + + + +

Youngchief's Spotify:

+ <% if (typeof err == 'undefined') { %> +

Status: OK

+

Currently listening: <%= playing %>

+

Progress in track (in miliseconds): <%= progress %>/<%= len %>

+

Unique song ID (isrc): <%= isrc %>

+

Song Name: <%= name %>

+

Artist(s): <%= cont %>

+ <% } else { %> +

Status: ERROR

+

Error Origin: <%= end %>

+

Error: <%= err %>

+ <% } %> +

Raw data: <%= raw %>

+

Cover Art:

+ + + + + + \ No newline at end of file diff --git a/public/errors/403.ejs b/public/errors/403.ejs new file mode 100644 index 0000000..3644fb1 --- /dev/null +++ b/public/errors/403.ejs @@ -0,0 +1,24 @@ + + + + + + FP650 - 403 Error + + + + + + +

403 Forbidden

+ <% if (typeof message !== 'undefined') { %> +

Error message:

+

<%= message %>

+ <% } else { %> +

The requested page is forbidden to access on the server.

+ <% } %> + + + + + \ No newline at end of file diff --git a/public/errors/404.ejs b/public/errors/404.ejs new file mode 100644 index 0000000..4d6b4a7 --- /dev/null +++ b/public/errors/404.ejs @@ -0,0 +1,24 @@ + + + + + + FP650 - 404 Error + + + + + + +

404 Not Found

+ <% if (typeof message !== 'undefined') { %> +

Error message:

+

<%= message %>

+ <% } else { %> +

The requested page was not found on the server.

+ <% } %> + + + + + \ No newline at end of file diff --git a/public/errors/422.ejs b/public/errors/422.ejs new file mode 100644 index 0000000..0066201 --- /dev/null +++ b/public/errors/422.ejs @@ -0,0 +1,22 @@ + + + + + + FP650 - 422 Error + + + + +

422 Unprocessable Entity

+ <% if (typeof message !== 'undefined') { %> +

Error message:

+

<%= message %>

+ <% } else { %> +

The requested url did not match a valid image request format.

+ <% } %> + + + + + \ No newline at end of file diff --git a/public/errors/500.ejs b/public/errors/500.ejs new file mode 100644 index 0000000..8856225 --- /dev/null +++ b/public/errors/500.ejs @@ -0,0 +1,25 @@ + + + + + + FP650 - 500 Error + + + + + + +

500 Internal Server Error

+

An error has occurred on the server.

+ <% if (error) { %> +

Error message:

+
<%= error.message %>
+

Stack trace:

+
<%= error.stack %>
+ <% } %> + + + + + \ No newline at end of file diff --git a/public/icons/favicon.ico b/public/icons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..11d6fdf32943f6a0c25c8068a58dcf3e702accbe GIT binary patch literal 26622 zcmeI5zl$8n6~|i~oI1>_OxEXLsvY!L)MW$Mos{K#UY131ICOq4yBIg@yApNzK%Mv9mv_a_bhKf( zR-a3e3^VNBym?bTfBw9oSFc{lvfE3(@5{^ol*`(_Y%V(skxbd5m*RabGJoTIDt_n# z!?(^>IEforEBlO1U?c28{V@2Oj zo;)cZKYko?c-VKM`O#ol)V{n>{+;Nbq8KxK{!Dd06Uom`GWoW=13&YHvB!Rh1crvC z$?TeI{g(X|DQ>JY|>*$*bHVqrFg!+ zuT0DtZgKA08h(8|*5`nu1n&et;t=|a=u`xlb$a&f*%p2&-fFedoXWRou~?X@CciQK z@PYj$6)(RRpEYmDx;Hld=&#m4o0VaGHfK|@mf|h7sK>Fyb824R7=9_-oNpU*-7xCP zKNBuzBCj{aqh8|zc5%3*VlBm+irM+{m@@w9D8hx`Dao5HURdoZ*(Y{8E)_X+%B9`#@W4j#k4_@fMkKQ5c|aMcZ=V$bQdicJrW;$8>~|0yTH$|^ZO2a z(U5cl_?-)vb%YHuITsxqes+HG*ijyW9}qX^mY%qX@JPlG@mI&-!$>}_`Mvo0{bR`Z zPnC&rv*#iBMLs4m86(q&pQ~@}>$c~w;T7k1jNeSS+g_2Yd}7$uaoCDq>i!^(G0tmt zzO#JjdLQeGakJ+x{J5sx=elPx8es&6k37%HCf}B0TUP=z^V9M!f4g+?-Z9glnI3X@ zoSoYe>t37fQ}~8YU*6ZpZQ=(;HXf<_s~AIIZ9ae7!=B->=)=wGeVbJIuJ8lLzQq2P zvUwjo!)HjY{))anyL@4e*_`W=+jrea{0hTjh`%N~ByZ8jo|B8h-qYnf_fp(D?Yi!D z>F%oId?5RV&`NTrh6QC&<6ESI^Km%inS5U^`MIcYdN?!AXs4Wh!o3Ferd|cWExt49 z@_T9>afdBTac6T^xoz*9seODtZsN2LH(xJ3hT%qg@fjQGN2M)XFu>J?; zhlU?(M%Yt`fyCETl8~g{Q#hlHSvRA14QyBq!0@2(BQ9lgv+lAUruGy->1Jn@cUI9lFz2J-J3)_*;gw!cZ& z)_#J0&AG+5JCt&b;ZA!BSQ>7Yx8di{$|>Iy*p(@{L*&W!NqY*I8Ghuv?;pbM^MUkN$tl?y z=-0m=34Yu2cLaXLAKLeiA1!{&->*e|G5B}wJ6~?%$9dY)Q2ZoUbkKb4nsl4;vU@xJ z000cT;!xPJMzZeN+$B%U-{k%w(VV_(3cpX`=;Mjcz*G;mL2lo;NG~?@QdhrfzrBBe zpC#5e`Lz*?@Z7!uZblwIcYb;3ZIC!;l@(_jWFX#;*?VjsBA?H%L!EuL?se>=EE^b~ zUh3*g?Yr>b;tvt9p$~6^o(t@z&L^<9aUe%Gi41wKV@g@Na`ZuU7onf{ zkM(P^%D3)v;l+N$dcrevx!!A&^gXG)=fGO+HtuNkyf^%~bMWUs3^V-HPjgqm=a%#NnchvR@9D>w`DgYc z!%sR2^cWVqLNglt~77Bu0 zzS~jbw^APqQIm$^=f96md(jm93Uu`0$M|7iD!IAP*n&;y^$EPt%E0DDx ziXZ)3zqO7@__^b0FeMd#^vRs=O6HGp&Q>|kJ{f-UTI`C7qQcY5X?1PtE4k%Hwc!^- z|Gwi#9J)Ov%wK%8&qO?ai-itrE6x+`_~p44fh%x6+rSTf^ksUjlJWJi-BrHL_+wll z{O?QJdTf7e=9e|2Jw6drhFuqa%cZ_7yGDMw(JlL1%9cZmKRXL-7(d_v4Beh0U#muj zADCTVSJ(DqpK?^D030m=_0mViK>K*{U*uet!^lOd?(I+H_LE}Car(*wqWa@ z#kkowCI_?HHsMmW#9y0JU`TvfAI2v)UWH%XxKh!y_wsessPl`pscoEuU(dE+T@B9L z;=pk6zIT;V9j4^HoFAiV-Q*GM}vVObtwY7y$$l~)p;;&u<`|s-#2ALlz-&4Fke@$OX z&ep4h8KYRlNsV3SXYXUyL+N{H_qJn;(N z7z4)`IL5#+297asjDbUq0o^TqFlp&L@#U`^|Er6455D{_$1mH;-&SouR#tA5^HA}C zZUWIlG9&bVBm uDQ_w}Ltnled=K137I41EvY7+|hTmq{nGoD6zZ3+ + + + + + FP650 - Cheese + + + + +
+ +
+ + + +

+ Bouncing cheese + + + + + + \ No newline at end of file diff --git a/public/pages/construction.html b/public/pages/construction.html new file mode 100644 index 0000000..97c5961 --- /dev/null +++ b/public/pages/construction.html @@ -0,0 +1,18 @@ + + + + + + FP650 - Unfinished page + + + + + + +

Page under construction.

+ + + + + \ No newline at end of file diff --git a/public/pages/dvd-screensaver.html b/public/pages/dvd-screensaver.html new file mode 100644 index 0000000..3e2be45 --- /dev/null +++ b/public/pages/dvd-screensaver.html @@ -0,0 +1,93 @@ + + + + + + FP650 - DVD Screensaver + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/pages/forbidden.html b/public/pages/forbidden.html new file mode 100644 index 0000000..da781aa --- /dev/null +++ b/public/pages/forbidden.html @@ -0,0 +1,19 @@ + + + + + + FP650 - You shouldn't be here. + + + + + + + +

You shouldn't be here.

+ + + + + \ No newline at end of file diff --git a/public/pages/hidden.html b/public/pages/hidden.html new file mode 100644 index 0000000..8292a61 --- /dev/null +++ b/public/pages/hidden.html @@ -0,0 +1,57 @@ + + + + + + FP650 - Hidden :O + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + There should be stuff here in a second. If there's not, then reload. (Or, you know, you have javascript turned off.) + Note: if you can't see anything after the page loads, it might be that you have "auto-dark" extension on, or you're using some builtin browser feature that darkens webpages, and decided to invert the images. If that is the case, sorry! Can't fix that and have the page not be blinding. -\(-_-)/- + + \ No newline at end of file diff --git a/public/pages/index.html b/public/pages/index.html new file mode 100644 index 0000000..78af67a --- /dev/null +++ b/public/pages/index.html @@ -0,0 +1,36 @@ + + + + + + Firepup650 + + + + + + + + +
Welcome to my site!
+ Go to the Maintenance page +
+ Go to the DVD Screensaver page +
+ Go to the Cheese page +
+ Go to the Password Generator page +
+ Go to the Users page +
+ Go to the About Browser page +
+ Go to the Server Info page +
+ Go to the Vists page +
+ Go to the Usage page +
+ + + \ No newline at end of file diff --git a/public/pages/maintenance.html b/public/pages/maintenance.html new file mode 100644 index 0000000..66c3873 --- /dev/null +++ b/public/pages/maintenance.html @@ -0,0 +1,17 @@ + + + + + + FP650 - Maintenance + + + + + + + +

Website under maintenance.

+ + + \ No newline at end of file diff --git a/public/pages/password-generator.html b/public/pages/password-generator.html new file mode 100644 index 0000000..b697f24 --- /dev/null +++ b/public/pages/password-generator.html @@ -0,0 +1,24 @@ + + + + + + FP650 - Password Generator + + + + + + + +

Click the button to generate a random password:

+ + + + + +
+ + + + \ No newline at end of file diff --git a/public/pages/pfps.html b/public/pages/pfps.html new file mode 100644 index 0000000..f16a359 --- /dev/null +++ b/public/pages/pfps.html @@ -0,0 +1,37 @@ + + + + + + Firepup650 + + + + +
+ + + +
+ + + + + +
My profile pictures
+
+ "Offical" PFP
+
+ "Forum" PFP
+
+ "Chat" PFP +
+ + + \ No newline at end of file diff --git a/public/pages/ratings.html b/public/pages/ratings.html new file mode 100644 index 0000000..f14d1dd --- /dev/null +++ b/public/pages/ratings.html @@ -0,0 +1,32 @@ + + + + + + FP650 - Ratings + + + + + + + + +
Current user ratings
+ Youngchief +
+ CoderElijah +
+ bigminiboss +
+ PikachuB2005 +
+ JayAySeaOhBee14 +
+ 9pfs +
+

Talk to @Firepup650 about getting a rating page!

+
+ + + diff --git a/public/pages/ratings/9pfs.html b/public/pages/ratings/9pfs.html new file mode 100644 index 0000000..b86b61a --- /dev/null +++ b/public/pages/ratings/9pfs.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratings - 9pfs + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@9pfs
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/ratings/bigminiboss.html b/public/pages/ratings/bigminiboss.html new file mode 100644 index 0000000..9245b12 --- /dev/null +++ b/public/pages/ratings/bigminiboss.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratings - BMB + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@bigminiboss
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/ratings/coderelijah.html b/public/pages/ratings/coderelijah.html new file mode 100644 index 0000000..3213d17 --- /dev/null +++ b/public/pages/ratings/coderelijah.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratings - CE + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@CoderElijah
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/ratings/jayayseaohbee14.html b/public/pages/ratings/jayayseaohbee14.html new file mode 100644 index 0000000..88205e9 --- /dev/null +++ b/public/pages/ratings/jayayseaohbee14.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratngs - JASOB14 + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@JayAySeaOhBee14
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/ratings/pikachub2005.html b/public/pages/ratings/pikachub2005.html new file mode 100644 index 0000000..b2b2a62 --- /dev/null +++ b/public/pages/ratings/pikachub2005.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratings - PB2005 + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@PikachuB2005
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/ratings/youngchief.html b/public/pages/ratings/youngchief.html new file mode 100644 index 0000000..d312dff --- /dev/null +++ b/public/pages/ratings/youngchief.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratings - YC + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@Youngchief
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/usage.html b/public/pages/usage.html new file mode 100644 index 0000000..5f69b18 --- /dev/null +++ b/public/pages/usage.html @@ -0,0 +1,24 @@ + + + + + + FP650 - Usage + + + + + + + + +
Things I use on this site
+

1. Bookie0's BounceCSS is used for styling

+

3. Most of the site uses code I've made, or adapted from online sources

+

4. The "cheese" page uses code from commandblockguy's site, and "dvd-screensaver" uses adapted code of the same.

+

5. The DVD logo is used on the "dvd-sceensaver" page

+

6. The countapi.xyz API is used for tracking total page views.

+
+ + + \ No newline at end of file diff --git a/public/pages/users.html b/public/pages/users.html new file mode 100644 index 0000000..d0958f4 --- /dev/null +++ b/public/pages/users.html @@ -0,0 +1,32 @@ + + + + + + FP650 - Users + + + + + + + + +
Current user pages
+ Youngchief +
+ CoderElijah +
+ bigminiboss +
+ PikachuB2005 +
+ JayAySeaOhBee14 +
+ 9pfs +
+

Talk to @Firepup650 about getting a page!

+
+ + + diff --git a/public/pages/users/9pfs.html b/public/pages/users/9pfs.html new file mode 100644 index 0000000..6274ab4 --- /dev/null +++ b/public/pages/users/9pfs.html @@ -0,0 +1,20 @@ + + + + + + FP650 - 9pfs + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@9pfs
has not yet provided content to put on this page.
+ + + + + diff --git a/public/pages/users/bigminiboss.html b/public/pages/users/bigminiboss.html new file mode 100644 index 0000000..2d29f56 --- /dev/null +++ b/public/pages/users/bigminiboss.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - bigminiboss + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@bigminiboss
has not yet provided content to put on this page.
+ + + + + diff --git a/public/pages/users/coderelijah.html b/public/pages/users/coderelijah.html new file mode 100644 index 0000000..2e614f3 --- /dev/null +++ b/public/pages/users/coderelijah.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - CoderElijah + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@CoderElijah
has not yet provided content to put on this page.
+ + + + + diff --git a/public/pages/users/jayayseaohbee14.html b/public/pages/users/jayayseaohbee14.html new file mode 100644 index 0000000..0dc5937 --- /dev/null +++ b/public/pages/users/jayayseaohbee14.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - JASOB14 + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@JayAySeaOhBee14
has not yet provided content to put on this page.
+ + + + + diff --git a/public/pages/users/pikachub2005.html b/public/pages/users/pikachub2005.html new file mode 100644 index 0000000..df9ece7 --- /dev/null +++ b/public/pages/users/pikachub2005.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - PikachuB2005 + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@PikachuB2005
has not yet provided content to put on this page.
+ + + + + diff --git a/public/pages/users/youngchief.html b/public/pages/users/youngchief.html new file mode 100644 index 0000000..fc7c462 --- /dev/null +++ b/public/pages/users/youngchief.html @@ -0,0 +1,21 @@ + + + + + + Firepup650 - Youngchief + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@Youngchief
has not yet provided content to put on this page.
+

Youngchief's Spotify Status

+ + + + + diff --git a/public/pages/visits.html b/public/pages/visits.html new file mode 100644 index 0000000..af78364 --- /dev/null +++ b/public/pages/visits.html @@ -0,0 +1,73 @@ + + + + + + Firepup650 - Website Visits + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + +

This website has had a total of 0 views.

+

This page has had a total of 0 views.

+

The page_name_error page has had a total of 0 views.

+

The maintenance page has had a total of 0 views.

+

The index page has had a total of 0 views.

+

The cheese page has had a total of 0 views.

+

The dvd-screensaver page has had a total of 0 views.

+

The password-generator page has had a total of 0 views.

+

The about-you page has had a total of 0 views.

+

The server-info page has had a total of 0 views.

+

The user pages have had a total of 0 views.

+

The user ratings pages have had a total of 0 views.

+

Youngchief's Spotify pages have had a total of 0 views.

+

Under Costruction Pages have had a total of 0 views.

+

This website has had 0 error 404s.

+

This website has had 0 error 403s.

+

This website has had 0 error 500s.

+
+ + + diff --git a/public/raw/flags.txt b/public/raw/flags.txt new file mode 100644 index 0000000..b9b2e91 --- /dev/null +++ b/public/raw/flags.txt @@ -0,0 +1,336 @@ +flag-a-spring-folly=false +flag-admin-join-team=true +flag-allow-camera-iframe=true +flag-analytics-v2=true +flag-anonymous-workspace=false +flag-anthropomorphized-jaguar=true +flag-apple-sso=true +flag-autocomplete=true +flag-beta-template-java10=true +flag-beta-template-nodejs=true +flag-beta-template-pygame=true +flag-beta-template-python3=true +flag-beta-template-python_turtle=true +flag-beta-template-pyxel=true +flag-bicoastal-turtle=false +flag-bigger-help-btn=true +flag-biological-computer=true +flag-bounties=true +flag-bounties-add-socials-to-application-form=false +flag-bounties-application-cash-out=true +flag-bounties-home-module=true +flag-bounties-hunter-profile-label=true +flag-bounties-my-cycles-earn-cta=false +flag-bounties-negotiate=false +flag-bounties-new-event-log=true +flag-bounties-pinned-bounty=0 +flag-bounties-sidebar-nav-item=total +flag-bounties-small-btn-home=true +flag-bounty-chat=true +flag-bounty-hunter-services=true +flag-bounty-hunter-services-in-new-tab=true +flag-bounty-hunter-services-proposal-form=true +flag-bounty-poster-sidebar-banner=false +flag-bounty-reputation=true +flag-bounty-services-in-create-modal=true +flag-bundle-world=true +flag-buy-baby-food-with-cycles=true +flag-bytebot-api=false +flag-call-analytics-identify=true +flag-cash-out=true +flag-cash-out-admin=true +flag-checkout-for-plans=false +flag-cluicurl=true +flag-cm-tooltips-mount-at-root=false +flag-code-suggestion-engine=false +flag-code-suggestion-multiplayer=true +flag-codex-codegen-context-strategy=false +flag-codex-java=false +flag-collect-datadog-analytics=true +flag-colored-tool-icons=false +flag-colored-tool-icons-ghostwriter-marketing=false +flag-comment-codemirror=false +flag-community-hub-entry-banner=false +flag-copy-stacks-mutation=true +flag-copy-unit-ui=true +flag-create-repl-label=true +flag-create-repl-onboarding-step=false +flag-curlclui-html-preview=false +flag-curriculum-hub=true +flag-custom-themes=true +flag-custom-themes-alpha=true +flag-cycles-hacker-nudge=false +flag-dd-rum=true +flag-dd-rum-session-replay=false +flag-debugger-hover-variable=true +flag-debugger-v2=false +flag-deployments=true +flag-deployments-custom-domains=true +flag-deployments-lifecycle-commands=true +flag-deployments-paid-tiers=true +flag-deployments-server-side=true +flag-desktop=false +flag-disable-github-import=false +flag-domain-linking-v2=true +flag-dotcom-email=true +flag-dotreplit-packager=true +flag-draft-courses=false +flag-draw-attention-import-github=false +flag-dusty-sentence=false +flag-eager-load-directories=true +flag-edit-repl-info-forms=false +flag-editor-css-containment=true +flag-editor-git-conflict-markers=false +flag-editor-header=true +flag-editor-new-indent=true +flag-editor-statusbar=true +flag-egress-actions=false +flag-egress-add-on=true +flag-egress-notifs=true +flag-egress-snafu=false +flag-egress-summary=true +flag-elegant-elephant=true +flag-expiring-hacker-emails=false +flag-expt-100-days-of-code-entries=true +flag-expt-hide-placeholder-if-lesson=false +flag-expt-youtube-tutorials-learn-page=true +flag-ext-data-module=true +flag-extension-creator=true +flag-extension-devtools=true +flag-extensions=true +flag-extensions-enforce-scopes=false +flag-filetree-menu-2=false +flag-filetree-multiselect=true +flag-filetree-search=true +flag-filter-team-repls=true +flag-fly-me-to-the-moon=false +flag-follow-rollout-reporting=true +flag-following-feed=true +flag-freak-flag=true +flag-funky-future=false +flag-geo-signup-continent=true +flag-ghostrunner=false +flag-ghostwriter-banner-variant=personal +flag-ghostwriter-chat-engine=gpt-3.5-turbo +flag-ghostwriter-chat-engine-override=false +flag-ghostwriter-chat-explain-code=false +flag-ghostwriter-chat-ext=false +flag-ghostwriter-chat-prompt-strategy=chat-last-n-messages-file-context +flag-ghostwriter-complete-engine=self-hosted-large +flag-ghostwriter-doc-embeddings=true +flag-ghostwriter-enable-debugger-error-logging=false +flag-ghostwriter-enable-generic-debugger=false +flag-ghostwriter-file-content-strategy=initial-characters +flag-ghostwriter-neighboring-context=true +flag-ghostwriter-neighboring-context-strategy=none +flag-ghsp=true +flag-git-gud=true +flag-git-gud-gutter=true +flag-gitgud-gql-updates=true +flag-glowing-giraffe=true +flag-google-classroom-share=true +flag-gpus=true +flag-graphql-introspection=false +flag-gw-portals=false +flag-gwc-empty-state-is-message=false +flag-gwc-metered-cap-all-time=25 +flag-gwc-metered-cap-time-window=90 +flag-gwc-payers-default-open=true +flag-hacker-gift=false +flag-hacker2022-for-president=true +flag-hackweek-winner=false +flag-handicap-goval-conn=false +flag-hide-and-seek=true +flag-highlight-active-word=false +flag-home-recent-repls-improved=true +flag-i18n=false +flag-i18n-survey=false +flag-iap-apple=false +flag-iframe-extensions=false +flag-infinite-spiral=false +flag-infinity-drive=false +flag-infinity-drive-beta=false +flag-infinity-drive-eight-gigs=false +flag-jam-clui-commands=false +flag-kill-switch-native-auth=false +flag-kill-switch-notification-permissions=false +flag-killswitch-bad-graphql=false +flag-killswitch-bounties-no-anon-access=false +flag-killswitch-bounties-no-public-applications=false +flag-killswitch-bounties-require-captcha=false +flag-killswitch-ghostwriter=false +flag-killswitch-ghostwriter-reject-probability=0 +flag-killswitch-product-gating=false +flag-killswitch-relatedRepls=false +flag-killswitch-teams=false +flag-killswitch-tip-repl=false +flag-killswitch-track-segment-events-delta=false +flag-landing-mobile-section=true +flag-launching-new-courses=true +flag-layout-dnd=true +flag-layout-fixed-sidebar=true +flag-layout-navigator=true +flag-layout-tour-killswitch=true +flag-livestream-replit-developer-day-2023=off +flag-look-for-errors=false +flag-low-cycles-email=true +flag-lsp-hover-cmd-definition=true +flag-lsp-status-in-ws=false +flag-mark-all-threads-as-read=true +flag-mb-cache-test=false +flag-mb-github-connect=false +flag-mb-github-integration-explorers=true +flag-mb-github-integration-release=true +flag-mb-import-from-github=true +flag-mb-updated-git-section=false +flag-md-preview2=true +flag-migrate-replbox=true +flag-minimal-mobile-code-editor=false +flag-mobile-auth-pass=false +flag-mobile-banner=true +flag-mobile-console-dupe-input-fix=false +flag-mobile-new-side-filetree=true +flag-mobile-new-tab-pane=true +flag-mobile-research-survey=false +flag-mobile-show-run-fab=false +flag-mobile-show-seach=false +flag-mobile-show-seach-internal=false +flag-mobile-show-switch-server-cta=false +flag-mobile-show-switch-server-cta-release=true +flag-mobile-swipe-perf=true +flag-mobile-undo=true +flag-mobile-web-fun=true +flag-multiplayer-management-2=true +flag-multiselect=false +flag-nectar-nanny=true +flag-neon-databases=true +flag-neon-databases-discount=false +flag-neon-databases-tour=true +flag-new-bounty-search-sort=false +flag-new-coder-onboarding=true +flag-new-cover-page=true +flag-new-pub-flow=true +flag-nix-modules-tool=false +flag-no-cycles-discount=true +flag-no-pong-reconnect=false +flag-notifications=true +flag-notifications-handle=false +flag-notifications-permissions=false +flag-null-diagnostics=true +flag-onboarding-experiment=true +flag-one-websocket=false +flag-open-with=true +flag-orlando-honeymoon=true +flag-ot-data-loss-client-tracking=false +flag-p-signup=control +flag-pane-bindings-bottom-bar=false +flag-patch-dotreplit=true +flag-pedit-multiplayer=false +flag-plastic-plates=true +flag-postgres-databases=false +flag-postgres-db-god-mode=false +flag-privacy-change=true +flag-pro-dev-activation-create=false +flag-pro-dev-identify-server-side=true +flag-pro-dev-onboarding-v1=true +flag-pro-dev-onboarding-v2=false +flag-profile-2=true +flag-profile-noupgrade=false +flag-promo-modal-variant=cycles +flag-readme-preview=true +flag-repl-analytics=true +flag-repl-auth-sidebar=true +flag-repl-logs=false +flag-replview-file-gcs=false +flag-report-repl-spotlight=true +flag-rm-layout-state-clear=true +flag-run-button-editor=false +flag-run-keybindings-in-capture=true +flag-search-replace-clui=true +flag-search-replace-pane=true +flag-self-grouping-projects=true +flag-sell-biological-computer=true +flag-semantic-scrollbar=false +flag-semantic-search-v1=false +flag-series-of-tubes=false +flag-service-worker=true +flag-services-mobile=true +flag-shellhints=true +flag-show-custom-themes-mobile=false +flag-show-custom-themes-mobile-failsafe=true +flag-show-custom-themes-mobile-internal=false +flag-show-download-mobile-app-banner=true +flag-show-location-field-in-the-user-profile=true +flag-show-new-repricing-mobile=false +flag-show-repls-as-first-tab-profile=true +flag-show-teams-on-mobile=false +flag-show-tip-tour=false +flag-sidebar-repls-menu=false +flag-siderepl-expt=false +flag-signup-marketing-sidebar=control +flag-signup-refactor=true +flag-soren-is-a-fool=true +flag-spooky-extensions=false +flag-status-bar-branch=true +flag-storage-dynamic-resize-beta=false +flag-storage-utilization=false +flag-tab-menu=true +flag-task-manager=true +flag-tea-for-two-and-two-for-tea=false +flag-team-export=true +flag-team-org-management=true +flag-teams-business=true +flag-teams-dates=false +flag-teams-google-classroom=true +flag-teams-onboarding=true +flag-teams-overview-killswitch=false +flag-teams-pro-add-remove-seats=true +flag-teams-pro-beta=true +flag-teams-projects-overview-fetch-tests=true +flag-teams-rapid-trial=true +flag-teams-restrict-after-submit=false +flag-teams-stripe-checkout=true +flag-template-examples=true +flag-test-roles=true +flag-test-string-flag=var-2 +flag-thread-notifications=false +flag-thread-selection-experiment=false +flag-thread-snippets=true +flag-threads-2=true +flag-threads-dropdown-menu=false +flag-threads-pane=true +flag-threads-popup-notifications=false +flag-tip-balance-top-up-behavior=immediate-checkout +flag-tip-repl=true +flag-toolchain-multiple-runners=false +flag-transaction-history-new=true +flag-transfer-files=true +flag-transfer-repl=true +flag-tutorial-onboarding-tooltips=false +flag-typing-indicator=true +flag-typing-presence=false +flag-ultra-hardcore=false +flag-unit-aware-share-links=true +flag-unit-aware-share-links-ui=true +flag-unload-prevention=false +flag-unsupported-browser-page=false +flag-use-annotation-subscriptions=true +flag-use-es-community-feed=false +flag-use-new-code-rendering=true +flag-user-extensions=true +flag-vade-retro-alternativa=false +flag-verification-no-worker=false +flag-virtualized-commandbar=true +flag-webview-alternate-domain=false +flag-workspace-experience-survey=true +flag-workspace-header-chat-entry=true +flag-workspace-v2=true +flag-ws-bounties=false +flag-ws-density-filetree=false +flag-ws-diagnostics-status=false +flag-ws-draft-files=true +flag-ws-keybindings=false +flag-ws-quick-jump=true +flag-xterm-dom-rendering-firefox=true +flag-xterm-file-parser=true +flag-yo-ho-ho=false diff --git a/public/raw/minifier b/public/raw/minifier new file mode 100644 index 0000000..887aee3 --- /dev/null +++ b/public/raw/minifier @@ -0,0 +1,34 @@ +#/usr/bin/bash +echo "Writing new \".replit\" file..." +echo "entrypoint = \"main.py\" +modules = [\"python-3.10:v18-20230807-322e88b\"] + +hidden = [\".*\", \"replit*\",\"*.sh\"] + +[nix] +channel = \"stable-23_05\" + +[deployment] +run = [\"sh\", \"-c\", \"python3 main.py\"]" > .replit +echo "Writing new \"pyproject.toml\" file..." +echo "[tool.poetry] +name = \"python-template\" +version = \"0.1.0\" +description = \"\" +authors = [\"Your Name \"] + +[tool.poetry.dependencies] +python = \"^3.10.11\" + +[build-system] +requires = [\"poetry-core>=1.0.0\"] +build-backend = \"poetry.core.masonry.api\"" > pyproject.toml +echo "Writing new \"replit.nix\" file..." +echo "{ pkgs }: { + deps = [ + ]; +}" > replit.nix +echo "Removing \"venv\" folder..." +rm -rf venv +echo "Restarting Repl to apply changes..." +kill 1 diff --git a/public/scripts/eruda_loader.js b/public/scripts/eruda_loader.js new file mode 100644 index 0000000..3a09b21 --- /dev/null +++ b/public/scripts/eruda_loader.js @@ -0,0 +1,33 @@ +let dPressed = false; +let ePressed = false; +let vPressed = false; +function keydownListener(event) { + if (event.key === "d") { + dPressed = true; + } else if (event.key === "e" && dPressed) { + ePressed = true; + } else if (event.key === "v" && ePressed) { + eruda.init(); + document.removeEventListener('keyup', keyupListener); + document.removeEventListener('keydown', keydownListener); + } else { + dPressed = false; + ePressed = false; + vPressed = false; + } +} +document.addEventListener('keydown', keydownListener); +function keyupListener(e) { + if ( + //e.shiftKey && + e.ctrlKey && + e.altKey && + e.key === "d" + ) { + eruda.init(); + document.removeEventListener('keyup', keyupListener); + document.removeEventListener('keydown', keydownListener); + } +} +document.addEventListener('keyup', keyupListener); +console.debug("Listener Script ready.") \ No newline at end of file diff --git a/public/scripts/footer.js b/public/scripts/footer.js new file mode 100644 index 0000000..c8c1f68 --- /dev/null +++ b/public/scripts/footer.js @@ -0,0 +1,6 @@ +var foot = document.createElement("footer"); +foot.innerHTML = `This website uses Bookie0's BounceCSS for styling.
Website © 2023 Firepup650`; +foot.style.marginTop = "auto"; +foot.style.textAlign = "center"; +document.querySelector("body").append(foot); +console.debug("Footer Script done.") \ No newline at end of file diff --git a/public/scripts/hidden.js b/public/scripts/hidden.js new file mode 100644 index 0000000..15687e5 --- /dev/null +++ b/public/scripts/hidden.js @@ -0,0 +1,23 @@ +var text = `` +var array = ["87","69","76","67","79","77","69", + "spc","84","79", + "spc","84","72","69", + "spc","72","73","68","68","69","78", + "spc","80","65","71","69","46", + "spc","67","79","77","77","69","78","84", + "spc","73","45","65","77","45","65","45","83","85","80","69","82","45","83","69","65","82","67","72","69","82", + "spc","73","70","spc","89","79","85", + "spc","67","65","78", + "spc","82","69","65","68", + "spc","84","72","73","83","46"] +array.forEach( + (item) => { + if (item != "spc") { + //text += `char(`+item+`)` + text += `char(`+item+`)` + } + else { + text += "
" + }}) +document.getElementById("shh").innerHTML = text +console.log("Page loaded.") \ No newline at end of file diff --git a/public/scripts/hidden2.js b/public/scripts/hidden2.js new file mode 100644 index 0000000..4062afd --- /dev/null +++ b/public/scripts/hidden2.js @@ -0,0 +1,9 @@ +function dLS(url) { + var script = document.createElement("script"); + script.src = url; + document.head.appendChild(script); +} +dLS("hidden.js") +dLS("footer.js") +dLS("poof.js") +console.log("Hidden scripts loaded") \ No newline at end of file diff --git a/public/scripts/maintenance.js b/public/scripts/maintenance.js new file mode 100644 index 0000000..bfce85e --- /dev/null +++ b/public/scripts/maintenance.js @@ -0,0 +1,13 @@ +maintenance = false +if (maintenance) { + if (window.location.href.indexOf("maintenance") == -1) { + document.getElementById("Maintenance").innerHTML = `Warning:
Site under maintenance.
Be warned, site may be unstable.
` + } + document.getElementById("Maintenance").removeAttribute("hidden") + if (window.location.href.indexOf("maintenance") == -1 && window.location.href.indexOf('id') == -1) { + window.location.href = "/maintenance" +} +} else if (!(window.location.href.indexOf("maintenance") == -1)) { + document.getElementById("Maintenance").innerHTML = `Website not under maintenance.` +} +console.info("Maintenance Script done.") \ No newline at end of file diff --git a/public/scripts/pgen.js b/public/scripts/pgen.js new file mode 100644 index 0000000..9c4155e --- /dev/null +++ b/public/scripts/pgen.js @@ -0,0 +1,25 @@ +function genPwd() { + var pwdLen = Math.floor(Math.random() * 21) + 10; + var pwdChars = ""; + if (document.getElementById("commnsym").checked) { + pwdChars = pwdChars + "!@#$%&?*/" + } + if (document.getElementById("uncomsym").checked) { + pwdChars = pwdChars + "~^()_+`-={}[]\\|;:'\"<,>." + } + if (document.getElementById("uppercas").checked) { + pwdChars = pwdChars + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + } + if (document.getElementById("lowercas").checked) { + pwdChars = pwdChars + "abcdefghijklmnopqrstuvwxyz" + } + if (document.getElementById("numerics").checked) { + pwdChars = pwdChars + "0123456789" + } + if (pwdChars != "") { + var rndPwd = new Array(pwdLen).fill(pwdChars).map(x => (function(chars) { let umax = Math.pow(2, 32), r = new Uint32Array(1), max = umax - (umax % chars.length); do { crypto.getRandomValues(r); } while(r[0] > max); return chars[r[0] % chars.length]; })(x)).join(''); + } else { + var rndPwd = new Array(100000).fill("!@#$%&?*/~^()_+`-={}[]\\|;:'\"<,>.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789").map(x => (function(chars) { let umax = Math.pow(2, 32), r = new Uint32Array(1), max = umax - (umax % chars.length); do { crypto.getRandomValues(r); } while(r[0] > max); return chars[r[0] % chars.length]; })(x)).join(''); + } + document.getElementById("password").innerText = "Your random password is: " + rndPwd; +} \ No newline at end of file diff --git a/public/scripts/pgen2.js b/public/scripts/pgen2.js new file mode 100644 index 0000000..b535d1e --- /dev/null +++ b/public/scripts/pgen2.js @@ -0,0 +1,8 @@ +function dLS(url) { + var script = document.createElement("script"); + script.src = url; + document.head.appendChild(script); +} +dLS("pgen.js") +dLS("footer.js") +console.log("PwdGen scripts loaded") \ No newline at end of file diff --git a/public/scripts/poof.js b/public/scripts/poof.js new file mode 100644 index 0000000..0a6655e --- /dev/null +++ b/public/scripts/poof.js @@ -0,0 +1,5 @@ +const randomNum = Math.floor(Math.random() * 1001); +if ((randomNum == 650)) { + document.body.innerHTML = ""; +} +console.log("Poof check done.") \ No newline at end of file diff --git a/public/scripts/script.js b/public/scripts/script.js new file mode 100644 index 0000000..517797b --- /dev/null +++ b/public/scripts/script.js @@ -0,0 +1,10 @@ +function dLS(url) { + var script = document.createElement("script"); + script.src = url; + document.head.appendChild(script); +} +dLS("https://cdn.jsdelivr.net/npm/eruda@2.11.3/eruda.min.js") +dLS("/footer.js") +dLS("/maintenance.js") +dLS("/eruda_loader.js") +console.info("Main Script done.") \ No newline at end of file diff --git a/public/scripts/test.js b/public/scripts/test.js new file mode 100644 index 0000000..e69de29 diff --git a/public/styles/cheese.css b/public/styles/cheese.css new file mode 100644 index 0000000..b2cb856 --- /dev/null +++ b/public/styles/cheese.css @@ -0,0 +1,77 @@ +html, body { + height: 100%; + width: 100%; + color: #00FF00; + margin: 0; + padding: 0; +} + +html { + background-color: #000000; +} + +.warning { + color: #FF0000; +} + +body { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +.block { + width: 100%; +} + +footer { + margin-top: auto; + text-align: center; +} + +a:has(button) { + box-shadow: none !important; + transform: none !important; +} + +#replit-badge { + box-shadow: none; + transform: none; + outline: none; + background: #000000; +} + +.center { + display: block; + margin: 0 auto; + text-align: center; + color: #00FF00; +} + +.left { + text-align: left; +} + +.right { + text-align: right; +} + +.rainbow { + background: linear-gradient(to right , #ff0000 0% , #e100ff 10% , #00b3ff 30% , #00ff1e 50% , #ff0000 90%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} + +.color { + color: #00FF00; +} + +.force-color { + background: #00ff00; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} \ No newline at end of file diff --git a/public/styles/ejsstyle.css b/public/styles/ejsstyle.css new file mode 100644 index 0000000..84fe018 --- /dev/null +++ b/public/styles/ejsstyle.css @@ -0,0 +1,97 @@ +html, body { + height: 100%; + width: 100%; + background-color: #000000; + margin: 0; + padding: 0; +} + +* { + color: #00FF00; +} + +.warning { + color: #FF0000; +} + +body { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +.content { + flex: 1; +} + +.block { + width: 100%; +} + +footer { + margin-top: auto; + text-align: center; +} + +footer { + position: absolute; + bottom: 0; + width: 100%; +} + +a:has(button) { +box-shadow: none !important; +transform: none !important; +} + +#replit-badge { + box-shadow: none; + transform: none; + outline: none; + background: #000000; +} + +.center { + display: block; + margin: 0 auto; + text-align: center; +} + +.left { + text-align: left; +} + +.right { + text-align: right; +} + +/* +.rainbow { + background: linear-gradient(90.02deg, #ff0000 0.02%, #e100ff 27.09%, #00b3ff 51.04%, #00ff1e 76.56%, #ff0000 99.99%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} +*/ + +.rainbow { + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; + background-image: linear-gradient(to right, #ff0000 0%, #e100ff 10%, #00b3ff 30%, #00ff1e 50%, #ff0000 90%); +} + +.color { + color: #00FF00; +} + +.force-color { + background: #00ff00; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} \ No newline at end of file diff --git a/public/styles/old.hidden.css b/public/styles/old.hidden.css new file mode 100644 index 0000000..56603af --- /dev/null +++ b/public/styles/old.hidden.css @@ -0,0 +1,58 @@ +html, body { + height: 100%; + width: 100%; + background-color: #FFFFFF; +} + +* { + color: #00aa00; +} + +.warning { + color: #aa0000; +} + +body { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +footer { + margin-top: auto; + text-align: center; +} + +a:has(button) { +box-shadow: none !important; +transform: none !important; +} + +#replit-badge { + box-shadow: none; + transform: none; + outline: none; + background: #FFFFFF; +} + +.center { + display: block; + margin: 0 auto; + text-align: center; +} + +.left { + text-align: left; +} + +.right { + text-align: right; +} + +.rainbow { + background: linear-gradient(90.02deg, #ff0000 0.02%, #e100ff 27.09%, #00b3ff 51.04%, #00ff1e 76.56%, #ff0000 99.99%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} diff --git a/public/styles/style.css b/public/styles/style.css new file mode 100644 index 0000000..e634f45 --- /dev/null +++ b/public/styles/style.css @@ -0,0 +1,90 @@ +@import url('https://fonts.googleapis.com/css2?family=Source+Code+Pro&display=swap'); + +html, body { + height: 100%; + width: 100%; + background-color: #000000; + color: #00FF00; + margin: 0; + padding: 0; + font-family: 'Source Code Pro', monospace !important; +} + +.warning { + color: #FF0000; +} + +body { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +.block { + width: 100%; +} + +footer { + margin-top: auto; + text-align: center; +} + +a, button, .rainbow, .force-color, span, label { + font-family: 'Source Code Pro', monospace !important; +} + +a:has(button) { + box-shadow: none !important; + transform: none !important; +} + +#replit-badge { + box-shadow: none; + transform: none; + outline: none; + background: #000000; +} + +.center { + display: block; + margin: 0 auto; + text-align: center; +} + +.left { + text-align: left; +} + +.right { + text-align: right; +} + +/* +.rainbow { + background: linear-gradient(90.02deg, #ff0000 0.02%, #e100ff 27.09%, #00b3ff 51.04%, #00ff1e 76.56%, #ff0000 99.99%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} +*/ + +.rainbow { + background: linear-gradient(to right, #ff0000 0%, #e100ff 10%, #00b3ff 30%, #00ff1e 50%, #ff0000 90%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} + +.color { + color: #00FF00; +} + +.force-color { + background: #00ff00; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} \ No newline at end of file diff --git a/replit.nix b/replit.nix new file mode 100644 index 0000000..d70c3be --- /dev/null +++ b/replit.nix @@ -0,0 +1,14 @@ +{ pkgs }: { + deps = [ + pkgs.calc + pkgs.openssh + pkgs.inetutils + pkgs.lsof + pkgs.nodejs-18_x + pkgs.nodePackages.typescript-language-server + pkgs.yarn + pkgs.replitPackages.jest + pkgs.ncurses.dev + pkgs.pkg-config + ]; +} \ No newline at end of file diff --git a/restart b/restart new file mode 100644 index 0000000..02de4bc --- /dev/null +++ b/restart @@ -0,0 +1,16 @@ +old code for image requests: + /* + var options = { + host: 'image-hosting.firepup650.repl.co', + path: path, + method: 'GET' + }; + var request = http.get(options, function(response) { + res.writeHead(response.statusCode, { + 'Content-Type': response.headers['content-type'] + }); + response.pipe(res); + }).on("error", function(e) { + console.log("Got error: " + e.message, e); + }); + */ \ No newline at end of file