diff --git a/app.js b/app.js
index 8b8cf1e..5bed08f 100644
--- a/app.js
+++ b/app.js
@@ -1,52 +1,104 @@
+var fs = require('fs');
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
-var engine = require("express-handlebars");
var logger = require('morgan');
+var engine = require("express-handlebars");
+var session = require("express-session");
+var flash = require("express-flash");
+var dotenv = require('dotenv');
+var passport = require('passport')
+
+dotenv.config()
-var engineHelper = require("./helper/hbsHelper");
+var db = require('./database/connection')
+var engineHelper = require("./helper/hbs");
+var authRouter = require('./routes/auth');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
+var adminRouter = require('./routes/admins');
var app = express();
// view engine setup
const hbs = engine.create({
- extname: "hbs",
- defaultLayout: "layout",
- layoutsDir: `${__dirname}/views`,
- partialsDir: `${__dirname}/views/partials`,
- helpers: engineHelper,
+ extname: "hbs",
+ defaultLayout: "layout",
+ layoutsDir: `${__dirname}/views`,
+ partialsDir: `${__dirname}/views/partials`,
+ helpers: engineHelper,
});
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.engine("hbs", hbs.engine);
+// logger setup
+var app_log = fs.createWriteStream('./logs/app.log', {flags: 'a'});
+var error_log = fs.createWriteStream('./logs/error.log', {flags: 'a'});
+var short_log = fs.createWriteStream('./logs/short.log', {flags: 'a'});
+
app.use(logger('dev'));
+app.use(logger('dev', { stream: error_log }));
+app.use(logger('short', { stream: short_log }));
+app.use(logger('combined', { stream: app_log }));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
+// express-session setup
+app.use(session({
+ secret: process.env.SESSION_SECRET,
+ cookie: { maxAge: parseInt(process.env.SESSION_MAX_AGE) },
+ store: db.get(),
+ resave: true,
+ saveUninitialized: true
+}));
+
+app.use(passport.initialize());
+app.use(passport.session());
+app.use(passport.authenticate('session'));
+
+// express-flash setup
+app.use(flash())
+
+//db connection
+db.connect((err) => {
+ if (err) {
+ console.log(err);
+ } else {
+ // console.log("Data Base Connected...");
+ }
+});
+
+app.use('/', authRouter);
app.use('/', indexRouter);
-app.use('/users', usersRouter);
+app.use('/user', usersRouter);
+app.use('/admin', adminRouter);
// catch 404 and forward to error handler
app.use(function (req, res, next) {
- next(createError(404));
+ next(createError(404));
});
// error handler
app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message;
- res.locals.error = req.app.get('env') === 'development' ? err : {};
+ // set locals, only providing error in development
+ res.locals.message = err.message;
+ res.locals.error = req.app.get('env') === 'development' ? err : {};
- // render the error page
- res.status(err.status || 500);
- res.render('error', {error:true});
+ let error = {
+ code: err.status || 500,
+ message: err.message,
+ stack: err.stack,
+ }
+ // console.log(error);
+ res.render('error', {
+ title: `${error.code} Error | ${process.env.APP_NAME}`,
+ error
+ });
});
-module.exports = app;
+module.exports = app;
\ No newline at end of file
diff --git a/bin/setup b/bin/setup
new file mode 100644
index 0000000..e5e83bd
--- /dev/null
+++ b/bin/setup
@@ -0,0 +1,80 @@
+#!/usr/bin/env node
+
+const child_process = require("child_process");
+const readline = require("readline-sync");
+const db = require('../database/connection');
+const { models } = require('../database/models');
+const { admins } = require('../controller/admin');
+var dotenv = require('dotenv');
+
+dotenv.config();
+
+const execute = (command) => {
+ child_process.exec(command,
+ function (error, stdout, stderr) {
+ console.log('stdout: ' + stdout);
+ console.log('stderr: ' + stderr);
+ if (error !== null) {
+ console.log('exec error: ' + error);
+ process.abort();
+ }
+ });
+}
+
+const setName = (name) => {
+ name = name.trim()
+ name = name.replace(/\s/g, '_')
+ console.log(`The app name is set to : ${name}`)
+}
+
+console.log(`Welcome to ${process.env.APP_NAME}\n`);
+console.log("\n----------------------\n");
+
+console.log("First lets update the application to its latest");
+execute(`npm update`);
+console.log("The packages updates successfully");
+
+console.log("\n----------------------\n");
+console.log("Now lets start with configuring the Application");
+console.log("\n----------------------\n");
+
+var app_name = readline.question("Enter your application name: ");
+setName(app_name);
+
+console.log("\n----------------------\n");
+console.log("Now lets check the database connection.");
+
+db.connect((err) => {
+ if (err) {
+ console.log("\nPlease install mongo DB atlas to continue...\n");
+ console.log(err);
+ process.abort();
+ }
+});
+
+console.log("Data Base Connected sucessfully");
+console.log("\n----------------------\n");
+console.log("lets add an admin to manage\n");
+
+let user = models.user.super_admin;
+
+user.email = readline.question("Enter admin email: ");
+
+user.password = readline.questionNewPassword(
+ 'Enter a password: ',
+ {
+ confirmMessage: 'Confirm password: ',
+ min: 6
+ }
+)
+
+admins.add(user)
+ .then((response) => {
+ console.log("YOU are ready. Follow the following commands to start\n");
+ console.log("npm start");
+ process.abort();
+ })
+ .catch((error) => {
+ console.log(error);
+ process.abort();
+ })
\ No newline at end of file
diff --git a/config/authentication.js b/config/authentication.js
new file mode 100644
index 0000000..82d8ec9
--- /dev/null
+++ b/config/authentication.js
@@ -0,0 +1,78 @@
+var passport = require('passport');
+var LocalStrategy = require('passport-local');
+const db = require('../database/connection');
+const collections = require('../database/collections.json');
+const bcrypt = require('bcrypt');
+const ObjectId = require('mongodb').ObjectId;
+
+passport.use('local-login', new LocalStrategy(
+ {
+ usernameField: 'email',
+ passwordField: 'password',
+ passReqToCallback: true
+ },
+ (req, email, password, done) => {
+ db.get()
+ .collection(collections.USER)
+ .findOne(
+ {
+ email: email
+ },
+ {
+ projection: {
+ email: 1,
+ password: 1
+ }
+ }
+ )
+ .then((user) => {
+ if (user) {
+ bcrypt
+ .compare(password, user.password)
+ .then((status) => {
+ if (status) {
+ return done(null, user);
+ } else {
+ return done(null, false, req.flash('message', 'Incorrect password'));
+ }
+ }).catch((error) => {
+ return done(error)
+ });
+ } else {
+ return done(null, false, req.flash('message','Incorrect Email'));
+ }
+ }).catch((error) => {
+ return done(error)
+ })
+ }
+));
+
+passport.serializeUser(function (user, cb) {
+ process.nextTick(function () {
+ cb(null, user._id);
+ });
+});
+
+passport.deserializeUser(function (id, cb) {
+ process.nextTick(function () {
+ db.get()
+ .collection(collections.USER)
+ .findOne(
+ {
+ _id: ObjectId(id)
+ },
+ {
+ projection: {
+ password: 0
+ }
+ }
+ )
+ .then((user) => {
+ return cb(null, user)
+ }).catch((error) => {
+ return cb(error)
+ })
+ });
+});
+
+module.exports = passport;
\ No newline at end of file
diff --git a/controller/admin.js b/controller/admin.js
new file mode 100644
index 0000000..1c84728
--- /dev/null
+++ b/controller/admin.js
@@ -0,0 +1,218 @@
+const db = require('../database/connection');
+const { models } = require('../database/models');
+const collections = require('../database/collections.json');
+const bcrypt = require('bcrypt');
+const { ObjectId } = require('mongodb');
+
+const account = {
+
+ update: (id, data) => {
+ let user = {};
+ user.fname = data.fname;
+ user.sname = data.sname;
+ if (data.phone.length > 5) {
+ user.phone = data.phone;
+ }
+ return new Promise((resolve, reject) => {
+ db.get()
+ .collection(collections.USER)
+ .updateOne(
+ {
+ '_id': ObjectId(id)
+ },
+ {
+ $set: user,
+ }
+ )
+ .then((response) => {
+ // console.log(response)
+ resolve(response);
+ }).catch((error) => {
+ reject(error);
+ })
+ })
+ },
+
+ updatePassword: (id, data) => {
+
+ }
+}
+
+const admins = {
+
+ getAll: () => {
+ return new Promise((resolve, reject) => {
+ db.get()
+ .collection(collections.USER)
+ .find(
+ {
+ 'role': {
+ '$in': ['admin', 'super_admin']
+ }
+ },
+ {
+ projection: {
+ password: 0,
+ permission: 0,
+ events: 0,
+ flags: 0
+ }
+ }
+ )
+ .toArray()
+ .then((response) => {
+ // console.log(response)
+ resolve(response);
+ }).catch((error) => {
+ reject(error);
+ })
+ })
+ },
+
+ get: (id) => {
+ return new Promise((resolve, reject) => {
+ db.get()
+ .collection(collections.USER)
+ .findOne(
+ {
+ '_id': ObjectId(id)
+ },
+ {
+ projection: {
+ password: 0,
+ permission: 0,
+ events: 0,
+ flags: 0
+ }
+ }
+ )
+ .then((response) => {
+ // console.log(response)
+ resolve(response);
+ }).catch((error) => {
+ reject(error);
+ })
+ })
+ },
+
+ add: (inf) => {
+ return new Promise(async (resolve, reject) => {
+ let user = models.user.user;
+ if (inf.role == 'super_admin') {
+ user = models.user.super_admin;
+ } else {
+ user = models.user.admin;
+ }
+ user._id = new ObjectId();
+ user.fname = inf.fname;
+ user.sname = inf.sname;
+ user.email = inf.email;
+ user.password = await bcrypt.hash(inf.password, 10);
+ db.get()
+ .collection(collections.USER)
+ .insertOne(user)
+ .then((response) => {
+ resolve(response)
+ }).catch((error) => {
+ reject(error)
+ })
+ })
+ },
+
+ update: (id, data) => {
+ let user = {};
+ if (data.role == 'admin') {
+ let model = models.user.admin;
+ user.permission = model.permission;
+ user.fname = data.fname;
+ user.sname = data.sname;
+ user.role = model.role
+ } else if (data.role == 'super_admin') {
+ let model = models.user.super_admin;
+ user.permission = model.permission;
+ user.fname = data.fname;
+ user.sname = data.sname;
+ user.role = model.role
+ } else {
+ user = {}
+ }
+ return new Promise((resolve, reject) => {
+ db.get()
+ .collection(collections.USER)
+ .updateOne(
+ {
+ '_id': ObjectId(id)
+ },
+ {
+ $set: user,
+ }
+ )
+ .then((response) => {
+ // console.log(response)
+ resolve(response);
+ }).catch((error) => {
+ reject(error);
+ })
+ })
+ },
+
+ remove: (id) => {
+ return new Promise((resolve, reject) => {
+ db.get()
+ .collection(collections.USER)
+ .remove(
+ {
+ _id: ObjectId(id)
+ }
+ )
+ .then((response) => {
+ // console.log(response)
+ resolve(response);
+ }).catch((error) => {
+ reject(error);
+ })
+ })
+ },
+}
+
+const message = {
+
+ getAll: () => {
+ return new Promise((resolve, reject) => {
+ db.get()
+ .collection(collections.MESSAGE)
+ .find()
+ .toArray()
+ .then((response) => {
+ resolve(response);
+ }).catch((error) => {
+ reject(error);
+ })
+ })
+ },
+
+ delete: (id) => {
+ return new Promise((resolve, reject) => {
+ db.get()
+ .collection(collections.MESSAGE)
+ .remove(
+ {
+ _id: ObjectId(id)
+ }
+ )
+ .then((response) => {
+ // console.log(response)
+ resolve(response);
+ }).catch((error) => {
+ reject(error);
+ })
+ })
+ },
+
+}
+
+module.exports = {
+ account,
+ admins,
+ message
+}
\ No newline at end of file
diff --git a/controller/authentication.js b/controller/authentication.js
new file mode 100644
index 0000000..a9511b6
--- /dev/null
+++ b/controller/authentication.js
@@ -0,0 +1,73 @@
+const db = require('../database/connection');
+const bcrypt = require('bcrypt');
+const { ObjectId } = require('mongodb');
+const collections = require('../database/collections.json');
+
+
+module.exports = {
+
+ signup: (inf) => {
+ return new Promise(async (resolve, reject) => {
+ let user = db.models.user.user;
+ user.fname = inf.fname;
+ user.sname = inf.sname;
+ user.email = inf.email;
+ user.password = await bcrypt.hash(inf.password, 10);
+ db.get()
+ .collection(collections.USER)
+ .insertOne(user)
+ .then((response) => {
+ resolve(response)
+ }).catch((error) => {
+ reject(error)
+ })
+ })
+ },
+
+ check_user_exist: (email) => {
+ return new Promise(async (resolve, reject) => {
+ db.get()
+ .collection(collections.USER)
+ .findOne(
+ {
+ email: email
+ },
+ {
+ email: 1
+ }
+ )
+ .then((response) => {
+ if (response) {
+ reject('User Already Exist')
+ } else {
+ resolve(true)
+ }
+ }).catch((error) => {
+ reject(error)
+ })
+ })
+ },
+
+ // test: (email) => {
+ // return new Promise((resolve, reject) => {
+ // db.get()
+ // .collection(collections)
+ // .findOne(
+ // {
+ // _id: ObjectId(email)
+ // },
+ // {
+ // projection: {
+ // password: 0
+ // }
+ // }~
+ // )
+ // .then((response) => {
+ // // console.log(response)
+ // resolve(response);
+ // }).catch((error) => {
+ // reject(error);
+ // })
+ // })
+ // },
+}
\ No newline at end of file
diff --git a/controller/user.js b/controller/user.js
new file mode 100644
index 0000000..84812b5
--- /dev/null
+++ b/controller/user.js
@@ -0,0 +1,26 @@
+const db = require('../database/connection');
+const bcrypt = require('bcrypt');
+const { ObjectId } = require('mongodb');
+const collections = require('../database/collections.json');
+
+const contact = {
+ message: (data) => {
+ return new Promise(async (resolve, reject) => {
+ delete data[''];
+ data._id = new ObjectId();
+ data.date = new Date();
+ db.get()
+ .collection(collections.MESSAGE)
+ .insertOne(data)
+ .then((response) => {
+ resolve(response)
+ }).catch((error) => {
+ reject(error)
+ })
+ })
+ },
+}
+
+module.exports = {
+ contact
+}
\ No newline at end of file
diff --git a/database/collections.json b/database/collections.json
new file mode 100644
index 0000000..f00dfa5
--- /dev/null
+++ b/database/collections.json
@@ -0,0 +1,6 @@
+{
+ "USER": "users",
+ "MESSAGE": "messages",
+ "CANDIDATES": "candidates",
+ "RECRUITERS": "recruiters"
+}
\ No newline at end of file
diff --git a/database/connection.js b/database/connection.js
new file mode 100644
index 0000000..97698b2
--- /dev/null
+++ b/database/connection.js
@@ -0,0 +1,22 @@
+const mongoClient = require('mongodb').MongoClient
+
+const state = {
+ db: null
+}
+
+const connect = (done) => {
+ const url = process.env.DB_URL
+ const dbname = process.env.DB_NAME
+
+ mongoClient.connect(url, (err, data) => {
+ if (err) return done(err)
+ state.db = data.db(dbname)
+ done()
+ })
+}
+
+const get = () => {
+ return state.db
+}
+
+module.exports = { connect, get }
\ No newline at end of file
diff --git a/database/models.js b/database/models.js
new file mode 100644
index 0000000..272a3fd
--- /dev/null
+++ b/database/models.js
@@ -0,0 +1,93 @@
+const user = {
+ user: {
+ fname: '',
+ sname: '',
+ email: '',
+ phone: null,
+ password: null,
+ role: 'user',
+ profile: {
+ image: '/assets/images/user/user.png',
+ primary_address: {}
+ },
+ permissions: {
+ restricted: true,
+ self: ['view', 'update', 'delete']
+ },
+ events: {
+ joined: '',
+ general: []
+ },
+ flags: {
+ profile_completion: false
+ }
+ },
+
+ admin: {
+ fname: '',
+ sname: '',
+ email: '',
+ phone: null,
+ password: null,
+ role: 'admin',
+ profile: {
+ image: '/assets/images/user/user.png',
+ primary_address: {}
+ },
+ access: ['admin', 'restricted'],
+ permissions: {
+ restricted: false,
+ admin: true,
+ access:{
+ users: true,
+ messages: true
+ },
+ self: ['view', 'update', 'delete'],
+ messages: ['view', 'edit', 'update'],
+ users: ['view']
+ },
+ events: {
+ joined: '',
+ general: []
+ },
+ flags: {
+ profile_completed: false,
+ }
+ },
+
+ super_admin: {
+ fname: '',
+ sname: '',
+ email: '',
+ phone: null,
+ password: null,
+ role: 'super_admin',
+ profile: {
+ image: '/assets/images/user/user.png',
+ primary_address: {}
+ },
+ permissions: {
+ restricted: false,
+ admin: true,
+ access:{
+ users: true,
+ messages: true,
+ admins: true
+ },
+ users: ['all'],
+ messages: ['all'],
+ admins: ['all']
+ },
+ events: {
+ joined: '',
+ general: []
+ },
+ flags: {
+ profile_completed: false,
+ }
+ },
+};
+
+module.exports.models = {
+ user
+};
\ No newline at end of file
diff --git a/helper/function.js b/helper/function.js
new file mode 100644
index 0000000..9a54005
--- /dev/null
+++ b/helper/function.js
@@ -0,0 +1,26 @@
+module.exports = {
+ generateUUID: () => {
+ var dt = new Date().getTime();
+ var uuid = "xxxxyyxxyyxxyyyy".replace(/[xy]/g, function (c) {
+ var r = (dt + Math.random() * 16) % 16 | 0;
+ dt = Math.floor(dt / 16);
+ return (c == "x" ? r : (r & 0x3) | 0x8).toString(16);
+ });
+ return uuid;
+ },
+ generateOTP: () => {
+ var otp = Math.floor(100000 + Math.random() * 999999)
+ return otp;
+ },
+ changeDateType: (date) => {
+ const yyyy = date.getFullYear();
+ let mm = date.getMonth() + 1; // Months start at 0!
+ let dd = date.getDate();
+
+ if (dd < 10) dd = "0" + dd;
+ if (mm < 10) mm = "0" + mm;
+
+ const today = `${dd}/${mm}/${yyyy}`;
+ return today;
+ },
+};
diff --git a/helper/hbs.js b/helper/hbs.js
new file mode 100644
index 0000000..bfce87d
--- /dev/null
+++ b/helper/hbs.js
@@ -0,0 +1,41 @@
+module.exports = {
+ compare: (val1, val2) => {
+ return val1 == val2;
+ },
+ add: (val1, val2) => {
+ return parseInt(val1) + parseInt(val2);
+ },
+ difference: (val1, val2) => {
+ return parseInt(val1) - parseInt(val2);
+ },
+ multiply: (val1, val2) => {
+ return parseInt(val1) * parseInt(val2);
+ },
+ divide: (val1, val2) => {
+ return parseInt(val1) / parseInt(val2);
+ },
+ capsFirst: (str) => {
+ return str.charAt(0).toUpperCase() + str.slice(1);
+ },
+ formatDate: (date) => {
+ return date.getDate() + "/"
+ + (date.getMonth() + 1) + "/"
+ + date.getFullYear() + " @ "
+ + date.getHours() + ":"
+ + date.getMinutes() + ":"
+ + date.getSeconds();
+ },
+ viewControll: (user, asset='user', access='view') => {
+ if (user) {
+ if (user.permission[asset].includes('all')) {
+ return true
+ } else if (user.permission[asset].includes(access)) {
+ return true
+ } else {
+ return false
+ }
+ } else {
+ return false
+ }
+ }
+};
diff --git a/middlewares/access_control.js b/middlewares/access_control.js
new file mode 100644
index 0000000..1569819
--- /dev/null
+++ b/middlewares/access_control.js
@@ -0,0 +1,41 @@
+
+const access_controll = (asset, access) => {
+ return (req, res, next) => {
+ let user = req.user;
+
+ if (user) {
+ if (user.permissions[asset].includes('all')) {
+ next()
+ } else if (user.permissions[asset].includes(access)) {
+ next()
+ } else {
+ res.redirect('/')
+ }
+ } else {
+ res.redirect('/login')
+ }
+ }
+}
+
+const admin_vadlidation = () => {
+ return (req, res, next) => {
+ let user = req.user;
+
+ if (user) {
+ if (user.permissions.admin) {
+ next()
+ } else if (user.role == 'admin') {
+ } else {
+ res.redirect('/')
+ }
+ } else {
+ res.redirect('/login')
+ }
+
+ }
+}
+
+module.exports = {
+ access_controll,
+ admin_vadlidation
+}
\ No newline at end of file
diff --git a/middlewares/accsess.json b/middlewares/accsess.json
new file mode 100644
index 0000000..d8dc57a
--- /dev/null
+++ b/middlewares/accsess.json
@@ -0,0 +1,3 @@
+{
+ "admin":[]
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index e76938c..8ae6d7e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,889 +1,1286 @@
{
- "name": "node-jobfair-2022",
+ "name": "launchpadkerala",
"version": "0.0.0",
- "lockfileVersion": 2,
+ "lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "node-jobfair-2022",
+ "name": "launchpadkerala",
"version": "0.0.0",
+ "license": "MIT",
"dependencies": {
+ "bcrypt": "^5.0.1",
+ "child_process": "^1.0.2",
+ "connect-flash": "^0.1.1",
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
+ "dotenv": "^16.0.1",
"express": "^4.18.2",
+ "express-flash": "^0.0.2",
"express-handlebars": "^6.0.6",
+ "express-session": "^1.17.3",
"hbs": "^4.2.0",
"http-errors": "~1.6.3",
- "morgan": "~1.9.1"
+ "json": "^11.0.0",
+ "mongodb": "^4.7.0",
+ "morgan": "~1.9.1",
+ "passport": "^0.6.0",
+ "passport-local": "^1.0.0",
+ "readline": "^1.3.0",
+ "readline-sync": "^1.4.10"
}
},
- "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==",
+ "node_modules/@aws-crypto/ie11-detection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz",
+ "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==",
+ "optional": true,
"dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
+ "tslib": "^1.11.1"
}
},
- "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/@aws-crypto/ie11-detection/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
},
- "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/@aws-crypto/sha256-browser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz",
+ "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/ie11-detection": "^3.0.0",
+ "@aws-crypto/sha256-js": "^3.0.0",
+ "@aws-crypto/supports-web-crypto": "^3.0.0",
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-locate-window": "^3.0.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
},
- "node_modules/basic-auth": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
- "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+ "node_modules/@aws-crypto/sha256-js": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz",
+ "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==",
+ "optional": true,
"dependencies": {
- "safe-buffer": "5.1.2"
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-js/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-crypto/supports-web-crypto": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz",
+ "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-crypto/util": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz",
+ "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/util/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-sdk/abort-controller": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz",
+ "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "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==",
+ "node_modules/@aws-sdk/client-cognito-identity": {
+ "version": "3.321.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.321.1.tgz",
+ "integrity": "sha512-6XuGHbGjKmwmBP9fxVtHtgYsSUZEDJZAdBa9jD3+//6OG9Qh4/mxRUZJFImMT8DOrmNLHU2q2W/4HjsbDql6VA==",
+ "optional": true,
"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"
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.321.1",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/credential-provider-node": "3.321.1",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-signing": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.319.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.321.1",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.316.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.316.0",
+ "@aws-sdk/util-defaults-mode-node": "3.316.0",
+ "@aws-sdk/util-endpoints": "3.319.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
+ "node": ">=14.0.0"
}
},
- "node_modules/body-parser/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==",
+ "node_modules/@aws-sdk/client-sso": {
+ "version": "3.321.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.321.1.tgz",
+ "integrity": "sha512-ecoT4tBGtRJR5G7oLBTMXZmgZZlff1amhSdKPEtkWxv6kWc8VPb5rRuRgVPsDR9HuesI6ZVlODptvGtnfkIJwA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.319.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.321.1",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.316.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.316.0",
+ "@aws-sdk/util-defaults-mode-node": "3.316.0",
+ "@aws-sdk/util-endpoints": "3.319.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "node_modules/body-parser/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==",
+ "node_modules/@aws-sdk/client-sso-oidc": {
+ "version": "3.321.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.321.1.tgz",
+ "integrity": "sha512-PBVfHQbyrsfzbnO6u9d9Sik8JlXGLhHj3zLd87iBkYXBdHwD5NuvwWu7OtjUtrHjP4SfzodVwfjmTbDAFqbtzw==",
+ "optional": true,
"dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.319.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.321.1",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.316.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.316.0",
+ "@aws-sdk/util-defaults-mode-node": "3.316.0",
+ "@aws-sdk/util-endpoints": "3.319.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "node_modules/body-parser/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/body-parser/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==",
+ "node_modules/@aws-sdk/client-sts": {
+ "version": "3.321.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.321.1.tgz",
+ "integrity": "sha512-AB+N4a1TVEKl9Sd5O2TxTprEZp7Va6zPZLMraFAYMdmJVBmCmmwyBs7ygju685DpQ1dos5PRsKCRcossyY5pDQ==",
+ "optional": true,
"dependencies": {
- "ee-first": "1.1.1"
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/credential-provider-node": "3.321.1",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-sdk-sts": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-signing": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.319.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.321.1",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.316.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.316.0",
+ "@aws-sdk/util-defaults-mode-node": "3.316.0",
+ "@aws-sdk/util-endpoints": "3.319.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "fast-xml-parser": "4.1.2",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "node_modules/body-parser/node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "node_modules/body-parser/node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "node_modules/@aws-sdk/config-resolver": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz",
+ "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-config-provider": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "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==",
+ "node_modules/@aws-sdk/credential-provider-cognito-identity": {
+ "version": "3.321.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.321.1.tgz",
+ "integrity": "sha512-g+3MQcwhpw1WqQ27BJLCCS90aUExH8kT9o2WM2tYjGATfTQ8+tpAqao2JxChtfzQbq6m69M175bZ3o09EaKobQ==",
+ "optional": true,
"dependencies": {
- "balanced-match": "^1.0.0"
+ "@aws-sdk/client-cognito-identity": "3.321.1",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
}
},
- "node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz",
+ "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "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==",
+ "node_modules/@aws-sdk/credential-provider-imds": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz",
+ "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==",
+ "optional": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "tslib": "^2.5.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=14.0.0"
}
},
- "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==",
+ "node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.321.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.321.1.tgz",
+ "integrity": "sha512-prndSVQhiikNaI40bYnM2Q8PkC35FCwhbQnBk6KXNvdtfo9RqatMC639F+6oryb3BuMy++Ij4Yoi8WnPBs5Sww==",
+ "optional": true,
"dependencies": {
- "safe-buffer": "5.2.1"
+ "@aws-sdk/credential-provider-env": "3.310.0",
+ "@aws-sdk/credential-provider-imds": "3.310.0",
+ "@aws-sdk/credential-provider-process": "3.310.0",
+ "@aws-sdk/credential-provider-sso": "3.321.1",
+ "@aws-sdk/credential-provider-web-identity": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">=14.0.0"
}
},
- "node_modules/content-disposition/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/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.321.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.321.1.tgz",
+ "integrity": "sha512-5B1waOwSvY2JMLGRebo7IUqnTaGoCnby9cRbG/dhi7Ke97M3V8380S9THDJ/bktjL8zHEVfBVZy7HhXHzhSjEg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.310.0",
+ "@aws-sdk/credential-provider-imds": "3.310.0",
+ "@aws-sdk/credential-provider-ini": "3.321.1",
+ "@aws-sdk/credential-provider-process": "3.310.0",
+ "@aws-sdk/credential-provider-sso": "3.321.1",
+ "@aws-sdk/credential-provider-web-identity": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=14.0.0"
}
},
- "node_modules/cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
+ "node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz",
+ "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=14.0.0"
}
},
- "node_modules/cookie-parser": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
- "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
+ "node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.321.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.321.1.tgz",
+ "integrity": "sha512-kg0rc1OacJFgAvmZj0TOu+BSc+yRdnC5dO/RAag3XU6+hlQI5/C080RQp9Qj6V7ga0HtAJMRwJcUlCPA3RJPug==",
+ "optional": true,
"dependencies": {
- "cookie": "0.4.1",
- "cookie-signature": "1.0.6"
+ "@aws-sdk/client-sso": "3.321.1",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/token-providers": "3.321.1",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz",
+ "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==",
+ "optional": true,
"dependencies": {
- "ms": "2.0.0"
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
}
},
- "node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "node_modules/@aws-sdk/credential-providers": {
+ "version": "3.321.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.321.1.tgz",
+ "integrity": "sha512-z7uPo5B/pW8k2IHT2Nu2SFAWEzBnR/NnjUVOTwf93bxNbc7IxRODiCMggmK2wpjiRSBAc8zKKbZ4dHCcb4MyZg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-cognito-identity": "3.321.1",
+ "@aws-sdk/client-sso": "3.321.1",
+ "@aws-sdk/client-sts": "3.321.1",
+ "@aws-sdk/credential-provider-cognito-identity": "3.321.1",
+ "@aws-sdk/credential-provider-env": "3.310.0",
+ "@aws-sdk/credential-provider-imds": "3.310.0",
+ "@aws-sdk/credential-provider-ini": "3.321.1",
+ "@aws-sdk/credential-provider-node": "3.321.1",
+ "@aws-sdk/credential-provider-process": "3.310.0",
+ "@aws-sdk/credential-provider-sso": "3.321.1",
+ "@aws-sdk/credential-provider-web-identity": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=14.0.0"
}
},
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "node_modules/@aws-sdk/fetch-http-handler": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz",
+ "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/querystring-builder": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/hash-node": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz",
+ "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-buffer-from": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
+ "node": ">=14.0.0"
}
},
- "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/@aws-sdk/invalid-dependency": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz",
+ "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.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==",
+ "node_modules/@aws-sdk/is-array-buffer": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz",
+ "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "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/@aws-sdk/middleware-content-length": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz",
+ "integrity": "sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
},
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "node_modules/@aws-sdk/middleware-endpoint": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz",
+ "integrity": "sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=14.0.0"
}
},
- "node_modules/express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz",
+ "integrity": "sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA==",
+ "optional": true,
"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"
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.10.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/express-handlebars": {
- "version": "6.0.6",
- "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.6.tgz",
- "integrity": "sha512-E4QHYCh+9fyfdBEb8uKJ8p6HD4qq/sUSHBq83lRNlLJp2TQKEg2nFJYbVdC+M3QzaV19dODe43lgjQWVaIpbyQ==",
+ "node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz",
+ "integrity": "sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg==",
+ "optional": true,
"dependencies": {
- "glob": "^8.0.2",
- "graceful-fs": "^4.2.10",
- "handlebars": "^4.7.7"
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">=v12.22.9"
+ "node": ">=14.0.0"
}
},
- "node_modules/express/node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz",
+ "integrity": "sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=14.0.0"
}
},
- "node_modules/express/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==",
+ "node_modules/@aws-sdk/middleware-retry": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz",
+ "integrity": "sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/service-error-classification": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "tslib": "^2.5.0",
+ "uuid": "^8.3.2"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "node_modules/express/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==",
+ "node_modules/@aws-sdk/middleware-sdk-sts": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz",
+ "integrity": "sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ==",
+ "optional": true,
"dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
+ "@aws-sdk/middleware-signing": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "node_modules/express/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/express/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==",
+ "node_modules/@aws-sdk/middleware-serde": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz",
+ "integrity": "sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg==",
+ "optional": true,
"dependencies": {
- "ee-first": "1.1.1"
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "node_modules/express/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/express/node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "node_modules/express/node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "node_modules/@aws-sdk/middleware-signing": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz",
+ "integrity": "sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/signature-v4": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "node_modules/finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "node_modules/@aws-sdk/middleware-stack": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz",
+ "integrity": "sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==",
+ "optional": true,
"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"
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "node_modules/finalhandler/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==",
+ "node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.319.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.319.0.tgz",
+ "integrity": "sha512-ytaLx2dlR5AdMSne6FuDCISVg8hjyKj+cHU20b2CRA/E/z+XXrLrssp4JrCgizRKPPUep0psMIa22Zd6osTT5Q==",
+ "optional": true,
"dependencies": {
- "ee-first": "1.1.1"
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-endpoints": "3.319.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "node_modules/finalhandler/node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "node_modules/@aws-sdk/node-config-provider": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz",
+ "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "node_modules/foreachasync": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz",
- "integrity": "sha512-J+ler7Ta54FwwNcx6wQRDhTIbNeyDcARMkOcguEqnEdtm0jKvN3Li3PDAb2Du3ubJYEWfYL83XMROXdsXAXycw=="
- },
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "node_modules/@aws-sdk/node-http-handler": {
+ "version": "3.321.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.321.1.tgz",
+ "integrity": "sha512-DdQBrtFFDNtzphJIN3s93Vf+qd9LHSzH6WTQRrWoXhTDMHDzSI2Cn+c5KWfk89Nggp/n3+OTwUPQeCiBT5EBuw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/abort-controller": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/querystring-builder": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=14.0.0"
}
},
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "node_modules/@aws-sdk/property-provider": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz",
+ "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=14.0.0"
}
},
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
- },
- "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.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
+ "node_modules/@aws-sdk/protocol-http": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz",
+ "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==",
+ "optional": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=14.0.0"
}
},
- "node_modules/glob": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
- "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
+ "node_modules/@aws-sdk/querystring-builder": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz",
+ "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==",
+ "optional": true,
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-uri-escape": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=14.0.0"
}
},
- "node_modules/graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
- },
- "node_modules/handlebars": {
- "version": "4.7.7",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
- "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
+ "node_modules/@aws-sdk/querystring-parser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz",
+ "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==",
+ "optional": true,
"dependencies": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.0",
- "source-map": "^0.6.1",
- "wordwrap": "^1.0.0"
- },
- "bin": {
- "handlebars": "bin/handlebars"
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">=0.4.7"
- },
- "optionalDependencies": {
- "uglify-js": "^3.1.4"
+ "node": ">=14.0.0"
}
},
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "node_modules/@aws-sdk/service-error-classification": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz",
+ "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==",
+ "optional": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/shared-ini-file-loader": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz",
+ "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==",
+ "optional": true,
"dependencies": {
- "function-bind": "^1.1.1"
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.4.0"
+ "node": ">=14.0.0"
}
},
- "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"
+ "node_modules/@aws-sdk/signature-v4": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz",
+ "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/is-array-buffer": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-hex-encoding": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "@aws-sdk/util-uri-escape": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=14.0.0"
}
},
- "node_modules/hbs": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/hbs/-/hbs-4.2.0.tgz",
- "integrity": "sha512-dQwHnrfWlTk5PvG9+a45GYpg0VpX47ryKF8dULVd6DtwOE6TEcYQXQ5QM6nyOx/h7v3bvEQbdn19EDAcfUAgZg==",
+ "node_modules/@aws-sdk/smithy-client": {
+ "version": "3.316.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.316.0.tgz",
+ "integrity": "sha512-6YXOKbRnXeS8r8RWzuL6JMBolDYM5Wa4fD/VY6x/wK78i2xErHOvqzHgyyeLI1MMw4uqyd4wRNJNWC9TMPduXw==",
+ "optional": true,
"dependencies": {
- "handlebars": "4.7.7",
- "walk": "2.3.15"
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
+ "node": ">=14.0.0"
}
},
- "node_modules/http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "node_modules/@aws-sdk/token-providers": {
+ "version": "3.321.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.321.1.tgz",
+ "integrity": "sha512-I1sXS4qXirSvgvrOIPf+e1D7GvC83DdeyMxHZvuhHgeMCqDAzToS8OLxOX0enN9xZRHWAQYja8xyeGbDL2I0Zw==",
+ "optional": true,
"dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
+ "@aws-sdk/client-sso-oidc": "3.321.1",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">=14.0.0"
}
},
- "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==",
+ "node_modules/@aws-sdk/types": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz",
+ "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==",
+ "optional": true,
"dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "node_modules/@aws-sdk/url-parser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz",
+ "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==",
+ "optional": true,
"dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "@aws-sdk/querystring-parser": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
}
},
- "node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
- },
- "node_modules/ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "node_modules/@aws-sdk/util-base64": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz",
+ "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/util-buffer-from": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.10"
+ "node": ">=14.0.0"
}
},
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "engines": {
- "node": ">= 0.6"
+ "node_modules/@aws-sdk/util-body-length-browser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz",
+ "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
}
},
- "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/@aws-sdk/util-body-length-node": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz",
+ "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
},
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "node_modules/@aws-sdk/util-buffer-from": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz",
+ "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/is-array-buffer": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=14.0.0"
}
},
- "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"
+ "node_modules/@aws-sdk/util-config-provider": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz",
+ "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=14.0.0"
}
},
- "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==",
+ "node_modules/@aws-sdk/util-defaults-mode-browser": {
+ "version": "3.316.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.316.0.tgz",
+ "integrity": "sha512-6FSqLhYmaihtH2n1s4b2rlLW0ABU8N6VZIfzLfe2ING4PF0MzfaMMhnTFUHVXfKCVGoR8yP6iyFTRCyHGVEL1w==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">= 10.0.0"
}
},
- "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==",
+ "node_modules/@aws-sdk/util-defaults-mode-node": {
+ "version": "3.316.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.316.0.tgz",
+ "integrity": "sha512-dkYy10hdjPSScXXvnjGpZpnJxllkb6ICHgLMwZ4JczLHhPM12T/4PQ758YN8HS+muiYDGX1Bl2z1jd/bMcewBQ==",
+ "optional": true,
"dependencies": {
- "mime-db": "1.52.0"
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/credential-provider-imds": "3.310.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 10.0.0"
}
},
- "node_modules/minimatch": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
- "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+ "node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.319.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.319.0.tgz",
+ "integrity": "sha512-3I64UMoYA2e2++oOUJXRcFtYLpLylnZFRltWfPo1B3dLlf+MIWat9djT+mMus+hW1ntLsvAIVu1hLVePJC0gvw==",
+ "optional": true,
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=14.0.0"
}
},
- "node_modules/minimist": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
+ "node_modules/@aws-sdk/util-hex-encoding": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz",
+ "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
},
- "node_modules/morgan": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
- "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
+ "node_modules/@aws-sdk/util-locate-window": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz",
+ "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==",
+ "optional": true,
"dependencies": {
- "basic-auth": "~2.0.0",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "on-finished": "~2.3.0",
- "on-headers": "~1.0.1"
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "node_modules/@aws-sdk/util-middleware": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz",
+ "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
},
- "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==",
+ "node_modules/@aws-sdk/util-retry": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz",
+ "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/service-error-classification": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">= 14.0.0"
}
},
- "node_modules/neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+ "node_modules/@aws-sdk/util-uri-escape": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz",
+ "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.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/@aws-sdk/util-user-agent-browser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz",
+ "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
}
},
- "node_modules/on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz",
+ "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==",
+ "optional": true,
"dependencies": {
- "ee-first": "1.1.1"
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
}
},
- "node_modules/on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "node_modules/@aws-sdk/util-utf8": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz",
+ "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/util-buffer-from": "3.310.0",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=14.0.0"
}
},
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "node_modules/@aws-sdk/util-utf8-browser": {
+ "version": "3.259.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz",
+ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==",
+ "optional": true,
"dependencies": {
- "wrappy": "1"
+ "tslib": "^2.3.1"
}
},
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
+ "node_modules/@mapbox/node-pre-gyp": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
+ "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==",
+ "dependencies": {
+ "detect-libc": "^2.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "make-dir": "^3.1.0",
+ "node-fetch": "^2.6.7",
+ "nopt": "^5.0.0",
+ "npmlog": "^5.0.1",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.5",
+ "tar": "^6.1.11"
+ },
+ "bin": {
+ "node-pre-gyp": "bin/node-pre-gyp"
}
},
- "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/@types/node": {
+ "version": "18.16.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz",
+ "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q=="
},
- "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==",
+ "node_modules/@types/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog=="
+ },
+ "node_modules/@types/whatwg-url": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
+ "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
"dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
+ "@types/node": "*",
+ "@types/webidl-conversions": "*"
}
},
- "node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "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=="
+ },
+ "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": {
- "side-channel": "^1.0.4"
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
},
"engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">= 0.6"
}
},
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dependencies": {
+ "debug": "4"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">= 6.0.0"
}
},
- "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==",
+ "node_modules/agent-base/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
+ "ms": "2.1.2"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/raw-body/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==",
+ "node_modules/agent-base/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"engines": {
- "node": ">= 0.8"
+ "node": ">=8"
}
},
- "node_modules/raw-body/node_modules/http-errors": {
+ "node_modules/aproba": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
+ },
+ "node_modules/are-we-there-yet": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
+ "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
"dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
+ "delegates": "^1.0.0",
+ "readable-stream": "^3.6.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=10"
}
},
- "node_modules/raw-body/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/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/raw-body/node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
},
- "node_modules/raw-body/node_modules/statuses": {
+ "node_modules/basic-auth": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
+ "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+ "dependencies": {
+ "safe-buffer": "5.1.2"
+ },
"engines": {
"node": ">= 0.8"
}
},
- "node_modules/safe-buffer": {
+ "node_modules/basic-auth/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ "node_modules/bcrypt": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz",
+ "integrity": "sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^1.0.10",
+ "node-addon-api": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
},
- "node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "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",
- "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",
+ "iconv-lite": "0.4.24",
"on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
},
"engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/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": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
- "node_modules/send/node_modules/http-errors": {
+ "node_modules/body-parser/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==",
@@ -898,356 +1295,239 @@
"node": ">= 0.8"
}
},
- "node_modules/send/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/bowser": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
+ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==",
+ "optional": true
},
- "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/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/send/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==",
+ "node_modules/bson": {
+ "version": "4.7.2",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
+ "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
"dependencies": {
- "ee-first": "1.1.1"
+ "buffer": "^5.6.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=6.9.0"
}
},
- "node_modules/send/node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
},
- "node_modules/send/node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "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/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==",
+ "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": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
},
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/child_process": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz",
+ "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g=="
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=10"
}
},
- "node_modules/setprototypeof": {
+ "node_modules/color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
+ "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/connect-flash": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz",
+ "integrity": "sha512-2rcfELQt/ZMP+SM/pG8PyhJRaLKp+6Hk2IUBNkEit09X+vwn3QsAL3ZbYtxUn7NVPzbMTSLRDhqe0B/eh30RYA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/console-control-strings": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
},
- "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==",
+ "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": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "safe-buffer": "5.2.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.6"
}
},
- "node_modules/statuses": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+ "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/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "node_modules/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
"engines": {
- "node": ">=0.6"
+ "node": ">= 0.6"
}
},
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "node_modules/cookie-parser": {
+ "version": "1.4.6",
+ "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
+ "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
"dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
+ "cookie": "0.4.1",
+ "cookie-signature": "1.0.6"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8.0"
}
},
- "node_modules/uglify-js": {
- "version": "3.16.2",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.2.tgz",
- "integrity": "sha512-AaQNokTNgExWrkEYA24BTNMSjyqEXPSfhqoS0AxmHkCJ4U+Dyy5AvbGV/sqxuxficEfGGoX3zWw9R7QpLFfEsg==",
- "optional": true,
- "bin": {
- "uglifyjs": "bin/uglifyjs"
- },
- "engines": {
- "node": ">=0.8.0"
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "node_modules/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/unpipe": {
+ "node_modules/delegates": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
+ },
+ "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/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==",
+ "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.4.0"
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
- "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==",
+ "node_modules/detect-libc": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
+ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
"engines": {
- "node": ">= 0.8"
+ "node": ">=8"
}
},
- "node_modules/walk": {
- "version": "2.3.15",
- "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz",
- "integrity": "sha512-4eRTBZljBfIISK1Vnt69Gvr2w/wc3U6Vtrw7qiN5iqYJPH7LElcYh/iU4XWhdCy2dZqv1ToMyYlybDylfG/5Vg==",
- "dependencies": {
- "foreachasync": "^3.0.0"
+ "node_modules/dotenv": {
+ "version": "16.0.3",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
+ "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
+ "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/wrappy": {
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "node_modules/encodeurl": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
- }
- },
- "dependencies": {
- "accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "requires": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
}
},
- "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/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=="
},
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "basic-auth": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
- "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
- "requires": {
- "safe-buffer": "5.1.2"
- }
- },
- "body-parser": {
- "version": "1.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"
- },
- "dependencies": {
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
- },
- "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"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "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"
- }
- },
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
- }
- }
- },
- "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"
- }
- },
- "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"
- }
- },
- "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"
- },
- "dependencies": {
- "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=="
- }
- }
- },
- "content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
- },
- "cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
- },
- "cookie-parser": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
- "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
- "requires": {
- "cookie": "0.4.1",
- "cookie-signature": "1.0.6"
- }
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
- },
- "destroy": {
- "version": "1.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=="
- },
- "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": {
+ "node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "express": {
+ "node_modules/express": {
"version": "4.18.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
"integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
- "requires": {
+ "dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
"body-parser": "1.20.1",
@@ -1280,74 +1560,104 @@
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express-flash": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/express-flash/-/express-flash-0.0.2.tgz",
+ "integrity": "sha512-QVUR0ZZRCaa8+iPHoUQaQJrQWcQuK/Q+19M7IUIdIEtvwhrA/ifHT7y1CVJI41YfGiOQnbGtn3uvd2vOdgu58A==",
"dependencies": {
- "cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
- },
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
- },
- "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"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "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"
- }
- },
- "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=="
- },
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
- }
+ "connect-flash": "0.1.x"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "express-handlebars": {
- "version": "6.0.6",
- "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.6.tgz",
- "integrity": "sha512-E4QHYCh+9fyfdBEb8uKJ8p6HD4qq/sUSHBq83lRNlLJp2TQKEg2nFJYbVdC+M3QzaV19dODe43lgjQWVaIpbyQ==",
- "requires": {
- "glob": "^8.0.2",
+ "node_modules/express-handlebars": {
+ "version": "6.0.7",
+ "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.7.tgz",
+ "integrity": "sha512-iYeMFpc/hMD+E6FNAZA5fgWeXnXr4rslOSPkeEV6TwdmpJ5lEXuWX0u9vFYs31P2MURctQq2batR09oeNj0LIg==",
+ "dependencies": {
+ "glob": "^8.1.0",
"graceful-fs": "^4.2.10",
"handlebars": "^4.7.7"
+ },
+ "engines": {
+ "node": ">=v12.22.9"
+ }
+ },
+ "node_modules/express-session": {
+ "version": "1.17.3",
+ "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz",
+ "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==",
+ "dependencies": {
+ "cookie": "0.4.2",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "~2.0.0",
+ "on-headers": "~1.0.2",
+ "parseurl": "~1.3.3",
+ "safe-buffer": "5.2.1",
+ "uid-safe": "~2.1.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/express-session/node_modules/cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/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/express/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/fast-xml-parser": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz",
+ "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==",
+ "optional": true,
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ },
+ "funding": {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
}
},
- "finalhandler": {
+ "node_modules/finalhandler": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "requires": {
+ "dependencies": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
@@ -1356,337 +1666,942 @@
"statuses": "2.0.1",
"unpipe": "~1.0.0"
},
- "dependencies": {
- "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"
- }
- },
- "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"
}
},
- "foreachasync": {
+ "node_modules/foreachasync": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz",
"integrity": "sha512-J+ler7Ta54FwwNcx6wQRDhTIbNeyDcARMkOcguEqnEdtm0jKvN3Li3PDAb2Du3ubJYEWfYL83XMROXdsXAXycw=="
},
- "forwarded": {
+ "node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "fresh": {
+ "node_modules/fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "fs.realpath": {
+ "node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
- "function-bind": {
+ "node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
- "get-intrinsic": {
+ "node_modules/gauge": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
+ "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
+ "dependencies": {
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.2",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.1",
+ "object-assign": "^4.1.1",
+ "signal-exit": "^3.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/get-intrinsic": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
"integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "requires": {
+ "dependencies": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "glob": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
- "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
- "requires": {
+ "node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^5.0.1",
"once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
- "handlebars": {
+ "node_modules/handlebars": {
"version": "4.7.7",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
"integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
- "requires": {
+ "dependencies": {
"minimist": "^1.2.5",
"neo-async": "^2.6.0",
"source-map": "^0.6.1",
- "uglify-js": "^3.1.4",
"wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "handlebars": "bin/handlebars"
+ },
+ "engines": {
+ "node": ">=0.4.7"
+ },
+ "optionalDependencies": {
+ "uglify-js": "^3.1.4"
}
},
- "has": {
+ "node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
+ "dependencies": {
"function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
}
},
- "has-symbols": {
+ "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=="
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
},
- "hbs": {
+ "node_modules/hbs": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/hbs/-/hbs-4.2.0.tgz",
"integrity": "sha512-dQwHnrfWlTk5PvG9+a45GYpg0VpX47ryKF8dULVd6DtwOE6TEcYQXQ5QM6nyOx/h7v3bvEQbdn19EDAcfUAgZg==",
- "requires": {
+ "dependencies": {
"handlebars": "4.7.7",
"walk": "2.3.15"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
- "http-errors": {
+ "node_modules/http-errors": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
- "requires": {
+ "dependencies": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.0",
"statuses": ">= 1.4.0 < 2"
- }
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/http-errors/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/http-errors/node_modules/inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+ },
+ "node_modules/http-errors/node_modules/setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ },
+ "node_modules/http-errors/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "iconv-lite": {
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/https-proxy-agent/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/https-proxy-agent/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "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==",
- "requires": {
+ "dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "inflight": {
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "requires": {
+ "dependencies": {
"once": "^1.3.0",
"wrappy": "1"
}
},
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+ "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/ip": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
+ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
},
- "ipaddr.js": {
+ "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=="
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/json": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/json/-/json-11.0.0.tgz",
+ "integrity": "sha512-N/ITv3Yw9Za8cGxuQqSqrq6RHnlaHWZkAFavcfpH/R52522c26EbihMxnY7A1chxfXJ4d+cEFIsyTgfi9GihrA==",
+ "bin": {
+ "json": "lib/json.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
},
- "media-typer": {
+ "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=="
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/memory-pager": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
+ "optional": true
},
- "merge-descriptors": {
+ "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=="
},
- "methods": {
+ "node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "mime": {
+ "node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "mime-db": {
+ "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=="
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "mime-types": {
+ "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==",
- "requires": {
+ "dependencies": {
"mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "minimatch": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
- "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
- "requires": {
+ "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/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
+ "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mongodb": {
+ "version": "4.16.0",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.16.0.tgz",
+ "integrity": "sha512-0EB113Fsucaq1wsY0dOhi1fmZOwFtLOtteQkiqOXGklvWMnSH3g2QS53f0KTP+/6qOkuoXE2JksubSZNmxeI+g==",
+ "dependencies": {
+ "bson": "^4.7.2",
+ "mongodb-connection-string-url": "^2.5.4",
+ "socks": "^2.7.1"
+ },
+ "engines": {
+ "node": ">=12.9.0"
+ },
+ "optionalDependencies": {
+ "@aws-sdk/credential-providers": "^3.186.0",
+ "saslprep": "^1.0.3"
}
},
- "minimist": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
+ "node_modules/mongodb-connection-string-url": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz",
+ "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==",
+ "dependencies": {
+ "@types/whatwg-url": "^8.2.1",
+ "whatwg-url": "^11.0.0"
+ }
},
- "morgan": {
+ "node_modules/morgan": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
"integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
- "requires": {
+ "dependencies": {
"basic-auth": "~2.0.0",
"debug": "2.6.9",
"depd": "~1.1.2",
"on-finished": "~2.3.0",
"on-headers": "~1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/morgan/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "engines": {
+ "node": ">= 0.6"
}
},
- "ms": {
+ "node_modules/morgan/node_modules/on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
- "negotiator": {
+ "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=="
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "neo-async": {
+ "node_modules/neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
},
- "object-inspect": {
+ "node_modules/node-addon-api": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
+ "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA=="
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
+ "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-fetch/node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/node-fetch/node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/node-fetch/node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
+ "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/npmlog": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
+ "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
+ "dependencies": {
+ "are-we-there-yet": "^2.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^3.0.0",
+ "set-blocking": "^2.0.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/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=="
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
- "requires": {
+ "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"
}
},
- "on-headers": {
+ "node_modules/on-headers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "engines": {
+ "node": ">= 0.8"
+ }
},
- "once": {
+ "node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "requires": {
+ "dependencies": {
"wrappy": "1"
}
},
- "parseurl": {
+ "node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/passport": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/passport/-/passport-0.6.0.tgz",
+ "integrity": "sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==",
+ "dependencies": {
+ "passport-strategy": "1.x.x",
+ "pause": "0.0.1",
+ "utils-merge": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/jaredhanson"
+ }
+ },
+ "node_modules/passport-local": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz",
+ "integrity": "sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow==",
+ "dependencies": {
+ "passport-strategy": "1.x.x"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/passport-strategy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz",
+ "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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/pause": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
+ "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg=="
+ },
+ "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/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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/random-bytes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
+ "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.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/raw-body/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/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
},
- "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/readline": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
+ "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
},
- "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"
+ "node_modules/readline-sync": {
+ "version": "1.4.10",
+ "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz",
+ "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==",
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "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"
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "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=="
+ "node_modules/rimraf/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"
+ }
},
- "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"
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
},
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rimraf/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": {
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
- },
- "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"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "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"
},
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
},
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
}
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ ]
},
- "safer-buffer": {
+ "node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
- "send": {
+ "node_modules/saslprep": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
+ "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
+ "optional": true,
+ "dependencies": {
+ "sparse-bitfield": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz",
+ "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "requires": {
+ "dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
@@ -1701,142 +2616,321 @@
"range-parser": "~1.2.1",
"statuses": "2.0.1"
},
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/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": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
- },
- "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"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
- "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"
- }
- },
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
- }
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "serve-static": {
+ "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==",
- "requires": {
+ "dependencies": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
- "side-channel": {
+ "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==",
- "requires": {
+ "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/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
+ "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
+ "dependencies": {
+ "ip": "^2.0.0",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0",
+ "npm": ">= 3.0.0"
}
},
- "source-map": {
+ "node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "statuses": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
+ "node_modules/sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
+ "optional": true,
+ "dependencies": {
+ "memory-pager": "^1.0.2"
+ }
+ },
+ "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/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
+ "optional": true
+ },
+ "node_modules/tar": {
+ "version": "6.1.13",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
+ "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^4.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
- "toidentifier": {
+ "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=="
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+ "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
+ "optional": true
},
- "type-is": {
+ "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==",
- "requires": {
+ "dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "uglify-js": {
- "version": "3.16.2",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.2.tgz",
- "integrity": "sha512-AaQNokTNgExWrkEYA24BTNMSjyqEXPSfhqoS0AxmHkCJ4U+Dyy5AvbGV/sqxuxficEfGGoX3zWw9R7QpLFfEsg==",
- "optional": true
+ "node_modules/uglify-js": {
+ "version": "3.17.4",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
+ "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
+ "optional": true,
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/uid-safe": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
+ "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
+ "dependencies": {
+ "random-bytes": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
},
- "unpipe": {
+ "node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
- "utils-merge": {
+ "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=="
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "optional": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
},
- "vary": {
+ "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=="
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
},
- "walk": {
+ "node_modules/walk": {
"version": "2.3.15",
"resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz",
"integrity": "sha512-4eRTBZljBfIISK1Vnt69Gvr2w/wc3U6Vtrw7qiN5iqYJPH7LElcYh/iU4XWhdCy2dZqv1ToMyYlybDylfG/5Vg==",
- "requires": {
+ "dependencies": {
"foreachasync": "^3.0.0"
}
},
- "wordwrap": {
+ "node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/whatwg-url": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+ "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+ "dependencies": {
+ "tr46": "^3.0.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/wide-align": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+ "dependencies": {
+ "string-width": "^1.0.2 || 2 || 3 || 4"
+ }
+ },
+ "node_modules/wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
},
- "wrappy": {
+ "node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
}
diff --git a/package.json b/package.json
index 218df27..5d7b707 100644
--- a/package.json
+++ b/package.json
@@ -1,17 +1,36 @@
{
- "name": "node-jobfair-2022",
+ "name": "launchpadkerala",
"version": "0.0.0",
"private": true,
"scripts": {
- "start": "node ./bin/www"
+ "start": "node ./bin/www",
+ "setup": "node ./bin/setup"
},
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/basil-reji/express-app.git"
+ },
+ "author": "Basil Reji",
+ "license": "MIT",
"dependencies": {
+ "bcrypt": "^5.0.1",
+ "child_process": "^1.0.2",
+ "connect-flash": "^0.1.1",
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
+ "dotenv": "^16.0.1",
"express": "^4.18.2",
+ "express-flash": "^0.0.2",
"express-handlebars": "^6.0.6",
+ "express-session": "^1.17.3",
"hbs": "^4.2.0",
"http-errors": "~1.6.3",
- "morgan": "~1.9.1"
+ "json": "^11.0.0",
+ "mongodb": "^4.7.0",
+ "morgan": "~1.9.1",
+ "passport": "^0.6.0",
+ "passport-local": "^1.0.0",
+ "readline": "^1.3.0",
+ "readline-sync": "^1.4.10"
}
}
diff --git a/public/assets/images/user/user.png b/public/assets/images/user/user.png
new file mode 100644
index 0000000..6884d82
Binary files /dev/null and b/public/assets/images/user/user.png differ
diff --git a/public/javascripts/admin.js b/public/javascripts/admin.js
new file mode 100644
index 0000000..42c53cc
--- /dev/null
+++ b/public/javascripts/admin.js
@@ -0,0 +1,45 @@
+$("#harmburger").click(function () {
+ $("#harmburger").toggleClass('active')
+ $("#sidebar").toggleClass('close')
+ $("#header").toggleClass('shrink')
+ $("#main").toggleClass('shrink')
+});
+
+(function () {
+ "use strict";
+ feather.replace();
+})()
+
+function deleteMessage(id) {
+ if (confirm("Are you sure?. Do you want to delete? ") == true) {
+ $.ajax({
+ url: `/admin/messages/delete`,
+ data: {
+ id: id
+ },
+ method: 'post',
+ success: (response) => {
+ if (response.status) {
+ $(`#row-${id}`).remove()
+ }
+ }
+ })
+ }
+}
+
+function removeAdmin(id) {
+ if (confirm("Are you sure?. Do you want to remove? ") == true) {
+ $.ajax({
+ url: `/admin/admins/remove`,
+ data: {
+ id: id
+ },
+ method: 'post',
+ success: (response) => {
+ if (response.status) {
+ $(`#row-${id}`).remove()
+ }
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/public/stylesheets/admin.css b/public/stylesheets/admin.css
new file mode 100644
index 0000000..4324c9d
--- /dev/null
+++ b/public/stylesheets/admin.css
@@ -0,0 +1,960 @@
+* {
+ padding: 0;
+ margin: 0;
+}
+
+body {
+ width: 100%;
+ min-height: 100vh;
+ background-color: #DFF6FF;
+ display: flex;
+ flex-direction: column;
+ font-family: "Poppins", sans-serif;
+}
+
+#sidebar {
+ width: 15%;
+ height: 100vh;
+ position: fixed;
+ padding: 0.5rem 0.9rem;
+ float: left;
+ z-index: 11;
+ color: #47B5FF;
+ background-color: #06283D;
+ box-shadow: 3.4px 0px 10px rgba(0, 0, 0, 0.05), 27px 0px 80px rgba(0, 0, 0, 0.1);
+ transition: all 0.3s ease-in-out;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ overflow: hidden;
+}
+#sidebar #shead {
+ height: 2rem;
+ margin: 1rem 0rem;
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ transition: all 0.3s ease-in-out;
+}
+#sidebar #shead a {
+ text-decoration: none;
+ color: #DFF6FF;
+}
+#sidebar #shead a:hover, #sidebar #shead a:active, #sidebar #shead a:focus {
+ color: #47B5FF;
+}
+#sidebar #shead #slogo {
+ color: #DFF6FF;
+ font-size: 1.5rem;
+ transform: translate(0%, -20%);
+ transition: all 0.3s ease-in-out;
+}
+#sidebar #shead h4 {
+ margin: 0rem 0.5rem;
+ font-size: 1.3rem;
+ transform: translate(0%, -25%);
+}
+#sidebar #scont {
+ margin: auto 0;
+ width: 100%;
+}
+#sidebar #scont ul {
+ list-style: none;
+ text-decoration: none;
+ padding: 0;
+}
+#sidebar #scont ul li a {
+ padding: 0rem 0.8rem;
+ height: 2.7rem;
+ margin: 0.5rem 0rem;
+ font-family: "Open Sans", sans-serif;
+ color: #47B5FF;
+ border-radius: 0.5rem;
+ text-decoration: none;
+ display: flex;
+ align-items: center;
+ border: 2px solid rgba(223, 246, 255, 0);
+ transition: 0.3s ease-in-out;
+ transition-property: background-color, border, box-shadow;
+}
+#sidebar #scont ul li a .sico {
+ font-size: 1.3rem;
+ transition: all 0.3s ease-in-out;
+}
+#sidebar #scont ul li a h5 {
+ font-weight: 500;
+ font-size: 1rem;
+ margin: 0rem 0.85rem;
+ transition: all 0.3s ease-in-out;
+}
+#sidebar #scont ul li a:hover, #sidebar #scont ul li a:active, #sidebar #scont ul li a:focus {
+ color: #DFF6FF;
+}
+#sidebar #scont ul li a:hover, #sidebar #scont ul li a.active {
+ background-color: rgba(71, 181, 255, 0.8);
+ border: 2px solid rgba(71, 181, 255, 0.05);
+ box-shadow: 0px 4.02px 34.17px 0px rgba(0, 0, 0, 0.05);
+}
+#sidebar #scont ul li a:hover .sico,
+#sidebar #scont ul li a:hover h5, #sidebar #scont ul li a.active .sico,
+#sidebar #scont ul li a.active h5 {
+ color: #DFF6FF;
+}
+#sidebar #sfoot {
+ height: 2rem;
+ margin: 1rem 0rem;
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 0.8rem;
+ color: #47B5FF;
+}
+#sidebar #sfoot a {
+ text-decoration: none;
+ color: #47B5FF;
+ transition: all 0.3s ease;
+}
+#sidebar #sfoot a:hover {
+ color: #47B5FF;
+}
+#sidebar #sfoot a:active, #sidebar #sfoot a:focus {
+ text-decoration: none;
+ color: #47B5FF;
+}
+#sidebar.close {
+ padding: 0.5rem 1rem;
+ width: 5rem;
+}
+#sidebar.close #shead h4 {
+ display: none;
+}
+#sidebar.close #scont ul li a {
+ padding: 0rem 0.7rem;
+}
+#sidebar.close #scont ul li a .sico {
+ font-size: 1.5rem;
+}
+#sidebar.close #scont ul li a h5 {
+ display: none;
+}
+#sidebar.close #sfoot {
+ color: transparent;
+}
+#sidebar.close #sfoot a {
+ display: none;
+}
+
+@media only screen and (max-width: 1080px) {
+ #sidebar {
+ width: 15rem;
+ }
+ #sidebar #scont {
+ margin: 1rem 0rem;
+ margin-bottom: auto;
+ }
+ #sidebar.close {
+ transform: translateX(-102%);
+ }
+ #sidebar.close #scont ul li a h5 {
+ display: block;
+ }
+}
+#header {
+ padding: 0rem 1.5rem;
+ position: fixed;
+ top: 0;
+ right: 0;
+ width: calc(100% - 5rem);
+ height: 4rem;
+ background-color: #fafafa;
+ box-shadow: 0px 1.9px 2.2px rgba(0, 0, 0, 0.001), 0px 4.6px 5.3px rgba(0, 0, 0, 0.002), 0px 8.6px 10px rgba(0, 0, 0, 0.005), 0px 15.4px 17.9px rgba(0, 0, 0, 0.011), 0px 28.8px 33.4px rgba(0, 0, 0, 0.02), 0px 69px 80px rgba(0, 0, 0, 0.04);
+ display: flex;
+ align-items: center;
+ z-index: 10;
+ transition: all 0.3s ease-in-out;
+}
+#header #harmburger,
+#header .harmburger {
+ width: 2rem;
+ cursor: pointer;
+ display: flex;
+ flex-direction: column;
+ transition: all 0.3s ease-in-out;
+}
+#header #harmburger div,
+#header .harmburger div {
+ margin: 0.2rem 0rem;
+ width: 2rem;
+ height: 0.2rem;
+ border-radius: 1rem;
+ background-color: #06283D;
+ transition: all 0.3s ease-in-out;
+}
+#header #harmburger.active div,
+#header .harmburger.active div {
+ width: 2rem;
+}
+#header #harmburger.active div:nth-child(1),
+#header .harmburger.active div:nth-child(1) {
+ width: 1.8rem;
+}
+#header #harmburger.active div:nth-child(2),
+#header .harmburger.active div:nth-child(2) {
+ width: 1rem;
+}
+#header #harmburger.active div:nth-child(3),
+#header .harmburger.active div:nth-child(3) {
+ width: 1.5rem;
+}
+#header .header-nav ul {
+ list-style: none;
+}
+#header .header-nav > ul {
+ margin: 0;
+ padding: 0;
+}
+#header .header-nav .nav-icon {
+ font-size: 1.2rem;
+ color: #DFF6FF;
+}
+#header .header-nav .nav-profile {
+ color: rgba(6, 40, 61, 0.5);
+}
+#header .header-nav .nav-profile img {
+ max-height: 1.5rem;
+}
+#header .header-nav .nav-profile span {
+ font-size: 0.9rem;
+ font-weight: 600;
+}
+#header .header-nav .badge-number {
+ position: absolute;
+ inset: 4px 6px auto auto;
+ font-weight: normal;
+ font-size: 11px;
+ padding: 3px 6px;
+}
+#header.shrink {
+ width: 85%;
+}
+
+@media only screen and (max-width: 1080px) {
+ #header {
+ width: 100%;
+ flex-direction: row-reverse;
+ }
+ #header .harmburger {
+ align-items: flex-end;
+ }
+ #header.shrink {
+ width: 100%;
+ }
+}
+footer {
+ margin-top: auto;
+ width: 100%;
+}
+
+:root {
+ scroll-behavior: smooth;
+}
+
+body {
+ font-family: "Open Sans", sans-serif;
+ background: #f6f9ff;
+ color: #444444;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: "Open Sans", sans-serif;
+}
+
+#main {
+ width: calc(100% - 5rem);
+ position: absolute;
+ min-height: 100%;
+ top: 0;
+ right: 0;
+ z-index: 1;
+ padding: 0rem 2rem;
+ padding-top: 5rem;
+ overflow-x: hidden;
+ transition: all 0.3s ease-in-out;
+ display: flex;
+ flex-direction: column;
+}
+#main.shrink {
+ width: 85%;
+}
+
+@media only screen and (max-width: 1080px) {
+ #main {
+ width: 100%;
+ padding: 0rem 1rem;
+ padding-top: 5rem;
+ }
+ #main.shrink {
+ width: 100%;
+ }
+}
+section {
+ width: 100%;
+}
+
+.pagetitle {
+ margin: 0rem;
+ margin-bottom: 1rem;
+}
+.pagetitle h2 {
+ font-size: 24px;
+ margin-bottom: 0;
+ font-weight: 600;
+ color: rgba(6, 40, 61, 0.9);
+}
+.pagetitle .breadcrumb {
+ font-size: 14px;
+ font-family: "Nunito", sans-serif;
+ color: rgba(6, 40, 61, 0.5);
+ font-weight: 600;
+}
+.pagetitle .breadcrumb a {
+ color: rgba(6, 40, 61, 0.5);
+ transition: 0.3s;
+ text-decoration: none;
+}
+.pagetitle .breadcrumb a:hover {
+ color: rgba(6, 40, 61, 0.75);
+}
+.pagetitle .breadcrumb .breadcrumb-item::before {
+ color: rgba(6, 40, 61, 0.5);
+}
+.pagetitle .breadcrumb .active {
+ color: rgba(6, 40, 61, 0.85);
+ font-weight: 600;
+}
+
+form .form-control {
+ width: 100%;
+ box-shadow: none;
+ border-radius: 0.1rem;
+ margin: 0.25rem;
+ height: 2.5rem;
+}
+form .form-control:active, form .form-control:focus {
+ border: 1px solid #47B5FF;
+ box-shadow: none;
+}
+form .btn {
+ border: 2px solid #06283D;
+ background-color: transparent;
+ padding: 0.25rem 1rem;
+ margin: 0;
+ color: #06283D;
+ transition: all 0.3s ease-in-out;
+}
+form .btn:hover {
+ color: #fff;
+ background-color: #06283D;
+}
+form .btn-primary {
+ border: 2px solid #47b5ff;
+ background-color: transparent;
+ padding: 0.25rem 1rem;
+ margin: 0;
+ background-color: #47b5ff;
+ color: #fff;
+ transition: all 0.3s ease-in-out;
+}
+form .btn-primary:hover {
+ border-color: #1363DF;
+ color: #fff;
+ background-color: #1363DF;
+}
+
+.btn {
+ background-color: transparent;
+ color: #06283D;
+ border: 2px solid #06283D;
+ border-radius: 0.1rem;
+ transition: all 0.3s ease-in-out;
+}
+.btn:active, .btn:hover, .btn:focus {
+ border: 2px solid #06283D;
+ color: #fff;
+ background-color: #06283D;
+}
+
+.dropdown-menu {
+ border-radius: 0.1rem;
+ padding: 0.8rem 0;
+ animation-name: dropdown-animate;
+ animation-duration: 0.2s;
+ animation-fill-mode: both;
+ border: 0;
+ box-shadow: 0 0.2rem 1.8rem 0 rgba(6, 40, 61, 0.1);
+}
+.dropdown-menu .dropdown-footer a {
+ color: #252A34;
+ text-decoration: underline;
+}
+.dropdown-menu .dropdown-footer a:hover {
+ text-decoration: none;
+}
+.dropdown-menu .dropdown-divider {
+ color: rgba(71, 181, 255, 0.2);
+ margin: 0;
+}
+.dropdown-menu .dropdown-item {
+ font-size: 14px;
+ padding: 0.5rem 1rem;
+ transition: 0.3s;
+}
+.dropdown-menu .dropdown-item i {
+ margin-right: 0.8rem;
+ font-size: 18px;
+ line-height: 0;
+}
+.dropdown-menu .dropdown-item:hover {
+ background-color: #DFF6FF;
+}
+
+.dropdown-menu .dropdown-header,
+.dropdown-menu .dropdown-footer {
+ text-align: center;
+ font-size: 1rem;
+ padding: 0.25rem 1.5rem;
+}
+.dropdown-menu .dropdown-header h6,
+.dropdown-menu .dropdown-footer h6 {
+ margin: 0rem;
+ font-family: "Open Sans", sans-serif;
+ color: rgba(71, 181, 255, 0.85);
+}
+.dropdown-menu .dropdown-header p,
+.dropdown-menu .dropdown-footer p {
+ margin: 0;
+ font-size: 0.85rem;
+ font-weight: 600;
+ font-family: "Poppins", sans-serif;
+ color: rgba(6, 40, 61, 0.25);
+}
+
+@media (min-width: 768px) {
+ .dropdown-menu-arrow::before {
+ content: "";
+ width: 13px;
+ height: 13px;
+ background: #fff;
+ position: absolute;
+ top: -7px;
+ right: 20px;
+ transform: rotate(45deg);
+ border-top: 1px solid #fafafa;
+ border-left: 1px solid #fafafa;
+ }
+}
+@keyframes dropdown-animate {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+ 0% {
+ opacity: 0;
+ }
+}
+.card {
+ border: none;
+ border-radius: 0.1rem;
+ box-shadow: 0px 0 30px rgba(6, 40, 61, 0.1);
+}
+.card .card-header,
+.card .card-footer {
+ border-color: #DFF6FF;
+ background-color: #fff;
+ color: rgba(71, 181, 255, 0.5);
+ padding: 1rem;
+}
+.card .card-title {
+ padding: 1.2rem 0 1rem 0;
+ font-size: 1.2rem;
+ font-weight: 600;
+ color: rgba(6, 40, 61, 0.85);
+ font-family: "Poppins", sans-serif;
+}
+.card .card-title span {
+ color: rgba(6, 40, 61, 0.5);
+ font-size: 1rem;
+ font-weight: 400;
+}
+.card .card-body {
+ padding: 0 1.2rem 1.2rem 1.2rem;
+}
+.card .card-img-overlay {
+ background-color: rgba(255, 255, 255, 0.6);
+}
+
+.nav-tabs-bordered {
+ border-bottom: 2px solid #ebeef4;
+}
+.nav-tabs-bordered .nav-link {
+ margin-bottom: -2px;
+ border: none;
+ color: rgba(6, 40, 61, 0.5);
+}
+.nav-tabs-bordered .nav-link.active {
+ background-color: #fff;
+ color: #47B5FF;
+ border-bottom: 2px solid #47B5FF;
+}
+
+.nav-tabs-bordered .nav-link:hover,
+.nav-tabs-bordered .nav-link:focus {
+ color: #47B5FF;
+}
+
+.btn-ico {
+ padding: 0.1rem 0.25rem;
+ font-size: 1rem;
+ background-color: transparent;
+ border: none;
+}
+.btn-ico.red {
+ color: #e52c2c;
+}
+.btn-ico.blue {
+ color: #1363DF;
+}
+
+.forms {
+ background-color: #fff;
+ padding: 2rem;
+ box-shadow: 0px 0 30px rgba(6, 40, 61, 0.1);
+}
+.forms .error {
+ text-align: center;
+ color: #FC4F4F;
+}
+.forms .log_head {
+ text-align: center;
+ margin-bottom: 1rem;
+}
+.forms .log_head h3 {
+ color: #06283D;
+}
+.forms .log_head h3 span {
+ color: #47B5FF;
+ font-weight: 700;
+}
+.forms .log_head p {
+ color: rgba(6, 40, 61, 0.5);
+}
+.forms form {
+ margin: 0.5rem 0rem;
+}
+.forms form .form-group {
+ margin: 1rem 0rem;
+ margin-top: 1.5rem;
+ color: rgba(6, 40, 61, 0.9);
+}
+.forms form .form-group .form-control {
+ margin: 0;
+ padding: 0.5rem 1rem;
+ height: 2.5rem;
+ border-radius: 0.1rem;
+ border: 1px solid rgba(6, 40, 61, 0.1);
+ color: #06283D;
+ font-family: "Poppins", sans-serif;
+}
+.forms form .form-group .form-control:active, .forms form .form-group .form-control:focus {
+ box-shadow: none;
+ border: 1px solid #47B5FF;
+}
+.forms form .form-group .form-control::placeholder {
+ color: rgba(6, 40, 61, 0.4);
+}
+.forms form .form-group:last-child {
+ padding-bottom: 0;
+ margin-bottom: 0;
+}
+.forms form .btn {
+ width: 100%;
+ border: 2px solid #06283D;
+ background-color: transparent;
+ padding: 0.5rem 1.5rem;
+ margin: 0;
+ margin-top: 1rem;
+ color: #06283D;
+ transition: all 0.3s ease-in-out;
+}
+.forms form .btn:hover {
+ color: #fff;
+ background-color: #06283D;
+}
+.forms form .btn-primary {
+ width: 100%;
+ border: 2px solid #47b5ff;
+ background-color: transparent;
+ padding: 0.5rem 1.5rem;
+ margin: 0;
+ margin-top: 1rem;
+ background-color: #47b5ff;
+ color: #fff;
+ transition: all 0.3s ease-in-out;
+}
+.forms form .btn-primary:hover {
+ border-color: #1363DF;
+ color: #fff;
+ background-color: #1363DF;
+}
+.forms .log_footer {
+ text-align: center;
+ font-size: 0.8rem;
+}
+.forms .log_footer a {
+ font-weight: 600;
+}
+.forms.inner_form {
+ padding: 0rem;
+ margin: 0rem;
+ box-shadow: none;
+}
+.forms.inner_form form {
+ margin: 0;
+ padding: 0;
+ box-shadow: none;
+}
+
+.dashboard .filter {
+ position: absolute;
+ right: 0px;
+ top: 15px;
+}
+
+.dashboard .filter .icon {
+ color: #aab7cf;
+ padding-right: 20px;
+ padding-bottom: 5px;
+ transition: 0.3s;
+ font-size: 16px;
+}
+
+.dashboard .filter .icon:hover,
+.dashboard .filter .icon:focus {
+ color: #4154f1;
+}
+
+.dashboard .filter .dropdown-header {
+ padding: 8px 15px;
+}
+
+.dashboard .filter .dropdown-header h6 {
+ text-transform: uppercase;
+ font-size: 14px;
+ font-weight: 600;
+ letter-spacing: 1px;
+ color: #aab7cf;
+ margin-bottom: 0;
+ padding: 0;
+}
+
+.dashboard .filter .dropdown-item {
+ padding: 8px 15px;
+}
+
+/* Info Cards */
+.dashboard .info-card {
+ padding-bottom: 10px;
+}
+
+.dashboard .info-card h6 {
+ font-size: 28px;
+ color: #012970;
+ font-weight: 700;
+ margin: 0;
+ padding: 0;
+}
+
+.dashboard .card-icon {
+ font-size: 32px;
+ line-height: 0;
+ width: 64px;
+ height: 64px;
+ flex-shrink: 0;
+ flex-grow: 0;
+}
+
+.dashboard .sales-card .card-icon {
+ color: #4154f1;
+ background: #f6f6fe;
+}
+
+.dashboard .revenue-card .card-icon {
+ color: #2eca6a;
+ background: #e0f8e9;
+}
+
+.dashboard .customers-card .card-icon {
+ color: #ff771d;
+ background: #ffecdf;
+}
+
+/* Activity */
+.dashboard .activity {
+ font-size: 14px;
+}
+
+.dashboard .activity .activity-item .activite-label {
+ color: #888;
+ position: relative;
+ flex-shrink: 0;
+ flex-grow: 0;
+ min-width: 64px;
+}
+
+.dashboard .activity .activity-item .activite-label::before {
+ content: "";
+ position: absolute;
+ right: -11px;
+ width: 4px;
+ top: 0;
+ bottom: 0;
+ background-color: #eceefe;
+}
+
+.dashboard .activity .activity-item .activity-badge {
+ margin-top: 3px;
+ z-index: 1;
+ font-size: 11px;
+ line-height: 0;
+ border-radius: 50%;
+ flex-shrink: 0;
+ border: 3px solid #fff;
+ flex-grow: 0;
+}
+
+.dashboard .activity .activity-item .activity-content {
+ padding-left: 10px;
+ padding-bottom: 20px;
+}
+
+.dashboard .activity .activity-item:first-child .activite-label::before {
+ top: 5px;
+}
+
+.dashboard .activity .activity-item:last-child .activity-content {
+ padding-bottom: 0;
+}
+
+/* News & Updates */
+.dashboard .news .post-item + .post-item {
+ margin-top: 15px;
+}
+
+.dashboard .news img {
+ width: 80px;
+ float: left;
+ border-radius: 5px;
+}
+
+.dashboard .news h4 {
+ font-size: 15px;
+ margin-left: 95px;
+ font-weight: bold;
+ margin-bottom: 5px;
+}
+
+.dashboard .news h4 a {
+ color: #012970;
+ transition: 0.3s;
+}
+
+.dashboard .news h4 a:hover {
+ color: #4154f1;
+}
+
+.dashboard .news p {
+ font-size: 14px;
+ color: #777777;
+ margin-left: 95px;
+}
+
+/* Recent Sales */
+.dashboard .recent-sales {
+ font-size: 14px;
+}
+
+.dashboard .recent-sales .table thead {
+ background: #f6f6fe;
+}
+
+.dashboard .recent-sales .table thead th {
+ border: 0;
+}
+
+.dashboard .recent-sales .dataTable-top {
+ padding: 0 0 10px 0;
+}
+
+.dashboard .recent-sales .dataTable-bottom {
+ padding: 10px 0 0 0;
+}
+
+/* Top Selling */
+.dashboard .top-selling {
+ font-size: 14px;
+}
+
+.dashboard .top-selling .table thead {
+ background: #f6f6fe;
+}
+
+.dashboard .top-selling .table thead th {
+ border: 0;
+}
+
+.dashboard .top-selling .table tbody td {
+ vertical-align: middle;
+}
+
+.dashboard .top-selling img {
+ border-radius: 5px;
+ max-width: 60px;
+}
+
+/*--------------------------------------------------------------
+ # Icons list page
+ --------------------------------------------------------------*/
+.iconslist {
+ display: grid;
+ max-width: 100%;
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
+ gap: 1.25rem;
+ padding-top: 15px;
+}
+
+.iconslist .icon {
+ background-color: #fff;
+ border-radius: 0.25rem;
+ text-align: center;
+ color: #012970;
+ padding: 15px 0;
+}
+
+.iconslist i {
+ margin: 0.25rem;
+ font-size: 2.5rem;
+}
+
+.iconslist .label {
+ font-family: var(--bs-font-monospace);
+ display: inline-block;
+ width: 100%;
+ overflow: hidden;
+ padding: 0.25rem;
+ font-size: 12px;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ color: #666;
+}
+
+/*--------------------------------------------------------------
+ # Profie Page
+ --------------------------------------------------------------*/
+.profile .profile-card img {
+ max-width: 120px;
+}
+
+.profile .profile-card h2 {
+ font-size: 24px;
+ font-weight: 700;
+ color: #2c384e;
+ margin: 10px 0 0 0;
+}
+
+.profile .profile-card h3 {
+ font-size: 18px;
+}
+
+.profile .profile-card .social-links a {
+ font-size: 20px;
+ display: inline-block;
+ color: rgba(1, 41, 112, 0.5);
+ line-height: 0;
+ margin-right: 10px;
+ transition: 0.3s;
+}
+
+.profile .profile-card .social-links a:hover {
+ color: #012970;
+}
+
+.profile .profile-overview .row {
+ margin-bottom: 20px;
+ font-size: 15px;
+}
+
+.profile .profile-overview .card-title {
+ color: #012970;
+}
+
+.profile .profile-overview .label {
+ font-weight: 600;
+ color: rgba(1, 41, 112, 0.6);
+}
+
+.profile .profile-edit label {
+ font-weight: 600;
+ color: rgba(1, 41, 112, 0.6);
+}
+
+.profile .profile-edit img {
+ max-width: 120px;
+}
+
+/*--------------------------------------------------------------
+ # Error 404
+ --------------------------------------------------------------*/
+.error-404 {
+ padding: 30px;
+}
+
+.error-404 h1 {
+ font-size: 180px;
+ font-weight: 700;
+ color: #4154f1;
+ margin-bottom: 0;
+ line-height: 150px;
+}
+
+.error-404 h2 {
+ font-size: 24px;
+ font-weight: 700;
+ color: #012970;
+ margin-bottom: 30px;
+}
+
+.error-404 .btn {
+ background: #51678f;
+ color: #fff;
+ padding: 8px 30px;
+}
+
+.error-404 .btn:hover {
+ background: #3e4f6f;
+}
+
+@media (min-width: 992px) {
+ .error-404 img {
+ max-width: 50%;
+ }
+}
diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css
index db302e3..7ed1c96 100644
--- a/public/stylesheets/style.css
+++ b/public/stylesheets/style.css
@@ -1613,6 +1613,10 @@ section {
padding: 0;
}
}
+.box-shadow {
+ box-shadow: 0 0 30px rgba(214, 215, 216, 0.6);
+}
+
.inner_page_section {
padding: 60px 0 30px 0;
position: relative;
@@ -1761,6 +1765,83 @@ section {
padding: 0.25rem;
}
}
+#log {
+ height: auto;
+}
+#log .forms {
+ background-color: #fff;
+ padding: 2rem;
+}
+#log .forms .error {
+ text-align: center;
+ color: #FC4F4F;
+}
+#log .forms .log_head {
+ text-align: center;
+ margin-bottom: 2.5rem;
+}
+#log .forms .log_head h3 {
+ color: #151515;
+}
+#log .forms .log_head h3 span {
+ color: #ef7e28;
+ font-weight: 700;
+}
+#log .forms .log_head p {
+ color: rgba(21, 21, 21, 0.5);
+}
+#log .forms form {
+ margin: 0.5rem 0rem;
+}
+#log .forms form .form-group {
+ margin: 1rem 0rem;
+ margin-top: 1.5rem;
+ color: rgba(21, 21, 21, 0.9);
+}
+#log .forms form .form-group input {
+ height: 2.7rem;
+ border-radius: 0.1rem;
+ border: 1px solid rgba(21, 21, 21, 0.1);
+ color: #151515;
+ font-family: "Raleway", sans-serif;
+}
+#log .forms form .form-group input:active, #log .forms form .form-group input:focus {
+ box-shadow: none;
+ border: 1px solid #ef7e28;
+}
+#log .forms form .form-group input::placeholder {
+ color: rgba(21, 21, 21, 0.4);
+}
+#log .forms form .forgot {
+ text-align: right;
+ margin-bottom: 1rem;
+ font-size: 0.8rem;
+ text-decoration: underline;
+ color: rgba(21, 21, 21, 0.8);
+}
+#log .forms form .forgot a {
+ color: rgba(21, 21, 21, 0.5);
+}
+#log .forms form button {
+ width: 100%;
+ background-color: #ef7e28;
+ border: none;
+ padding: 0.6rem 1.5rem;
+ margin: 1rem 0rem;
+ color: #DFF6FF;
+ transition: all 0.3s ease-in-out;
+}
+#log .forms form button:hover {
+ background-color: #151515;
+}
+#log .forms .log_footer {
+ text-align: center;
+ font-size: 0.8rem;
+}
+#log .forms .log_footer a {
+ font-weight: 600;
+}
+
#updates {
padding: 60px 0 30px 0;
position: relative;
diff --git a/routes/admins.js b/routes/admins.js
new file mode 100644
index 0000000..9e2cb85
--- /dev/null
+++ b/routes/admins.js
@@ -0,0 +1,210 @@
+var express = require('express');
+var router = express.Router();
+const admin = require('../controller/admin');
+const authenticate = require('../controller/authentication')
+const {access_controll, admin_vadlidation} = require('../middlewares/access_control')
+
+const app_name = process.env.APP_NAME
+
+router.use(admin_vadlidation())
+
+router.get('/', function (req, res, next) {
+ let user = req.user
+ res.render('admin/dashboard', {
+ title: app_name,
+ page_title: 'Dashboard',
+ breadcrumbs: [
+ {
+ page_name: 'Dashboard',
+ active: true,
+ }
+ ],
+ dashboard_page: true,
+ user
+ });
+});
+
+router.get('/messages', access_controll('messages', 'view'), function (req, res, next) {
+ let user = req.user;
+ admin.message.getAll()
+ .then((data) => {
+ // console.log(data)
+ res.render('admin/messages', {
+ title: app_name,
+ page_title: 'Contacts',
+ breadcrumbs: [
+ {
+ page_name: 'Messages',
+ active: true,
+ }
+ ],
+ messages_page: true,
+ user,
+ data
+ });
+ })
+});
+
+router.post('/messages/delete', access_controll('messages', 'delete'), function (req, res, next) {
+ let user = req.user
+ admin.message.delete(req.body.id).then((response) => {
+ res.send(
+ {
+ response: "acknowledged",
+ status: true
+ }
+ );
+ })
+});
+
+router.get('/admins', access_controll('admins', 'view'), function (req, res, next) {
+ let user = req.user
+ admin.admins.getAll()
+ .then((admins) => {
+ // console.log(response);
+ res.render('admin/admins', {
+ title: app_name,
+ page_title: 'Admins',
+ breadcrumbs: [
+ {
+ page_name: 'Admins',
+ active: true,
+ }
+ ],
+ admins_page: true,
+ user,
+ admins
+ });
+ })
+});
+
+router.get('/add-admin', access_controll('admins', 'add'), function (req, res, next) {
+ let user = req.user;
+ let message = req.flash('message');
+ res.render('admin/admins/add_admin', {
+ title: app_name,
+ page_title: 'Admins',
+ breadcrumbs: [
+ {
+ page_name: 'Admins',
+ page_link: '/admins'
+ },
+ {
+ page_name: 'Add Admin',
+ active: true,
+ }
+ ],
+ admins_page: true,
+ user,
+ message
+ });
+});
+
+router.post('/add-admin', access_controll('admins', 'add'), function (req, res, next) {
+ // console.log(req.body);
+ let user = req.body
+
+ authenticate.check_user_exist(user.email).then((response) => {
+ if (user.password == user.cpassword) {
+ admin.admins.add(user).then((response) => {
+ res.redirect('/admin/admins')
+ })
+ } else {
+ req.flash('message', `Password not match`);
+ res.redirect('/admin/add-admin');
+ }
+ }).catch((error) => {
+ req.flash('message', `${error}`);
+ res.redirect('/admin/add-admin');
+ })
+
+});
+
+router.get('/admins/:id', access_controll('admins', 'edit'), function (req, res, next) {
+ let user = req.user
+ admin.admins.get(req.params.id)
+ .then((admin) => {
+ // console.log(response);
+ res.render('admin/admins/edit_admin', {
+ title: app_name,
+ page_title: 'Admins',
+ breadcrumbs: [
+ {
+ page_name: 'Admins',
+ page_link: '/admins'
+ },
+ {
+ page_name: 'Edit Admin',
+ active: true,
+ }
+ ],
+ admins_page: true,
+ user,
+ admin
+ });
+ })
+});
+
+router.post('/admins/update/:id', access_controll('admins', 'update'), function (req, res, next) {
+ // console.log(req.params.id);
+ // console.log(req.body)
+ let user = req.user
+ admin.admins.update(req.params.id, req.body)
+ .then((response) => {
+ res.redirect('/admin/admins/')
+ })
+});
+
+router.post('/admins/remove/', access_controll('admins', 'remove'), function (req, res, next) {
+ let user = req.user
+ admin.admins.remove(req.body.id).then((response) => {
+ res.send(
+ {
+ response: "ok",
+ status: true
+ }
+ );
+ })
+});
+
+router.get('/account', function (req, res, next) {
+ let user = req.user
+ res.render('admin/account', {
+ title: app_name,
+ page_title: 'My Account',
+ breadcrumbs: [
+ {
+ page_name: 'account',
+ active: true,
+ }
+ ],
+ account_page: true,
+ user
+ });
+});
+
+router.post('/account/update/profile', function (req, res, next) {
+ let user = req.user
+ // console.log(req.body)
+ admin.account.update(user._id, req.body)
+ .then((response) => {
+ res.send({
+ status: true,
+ message: 'ok'
+ })
+ })
+});
+
+router.post('/account/update/password', function (req, res, next) {
+ let user = req.user
+ // console.log(req.body)
+ admin.account.update(user._id, req.body)
+ .then((response) => {
+ res.send({
+ status: true,
+ message: 'ok'
+ })
+ })
+});
+
+module.exports = router;
diff --git a/routes/auth.js b/routes/auth.js
new file mode 100644
index 0000000..9f4f5bb
--- /dev/null
+++ b/routes/auth.js
@@ -0,0 +1,91 @@
+var express = require('express');
+var router = express.Router();
+var authenticate = require('../controller/authentication');
+var passport = require('../config/authentication');
+
+const app_name = process.env.APP_NAME
+
+router.use((req, res, next) => {
+ let user = req.user;
+
+ if (user) {
+ if (req.originalUrl == '/login' || req.originalUrl == '/signup') {
+ res.redirect('/')
+ } else {
+ if(user.permissions.admin){
+ if(req.originalUrl.startsWith("/admin")){
+ next()
+ }else{
+ res.redirect('/admin')
+ }
+ }
+ }
+ } else {
+ next()
+ }
+})
+
+/* GET home page. */
+router.get('/login', function (req, res, next) {
+ let message = req.flash('message');
+ res.render('auth/login', {
+ title: `Login | ${app_name}`,
+ noHeader: true,
+ noFooter: true,
+ app_name,
+ message
+ });
+});
+
+router.get('/signup', function (req, res, next) {
+ let message = req.flash('message');
+ res.render('auth/signup', {
+ title: `Signup | ${app_name}`,
+ noHeader: true,
+ noFooter: true,
+ app_name,
+ message
+ });
+});
+
+router.post('/signup', function (req, res, next) {
+ // console.log(req.body);
+ // let user = req.body
+
+ authenticate.check_user_exist(user.email).then((response) => {
+ if (user.password == user.cpassword) {
+ authenticate.do_signup(user).then((response) => {
+ // console.log(user);
+ // console.log(response);
+ res.redirect('/login')
+ })
+ } else {
+ req.flash('message', `Password not match`);
+ res.redirect('/signup');
+ }
+ }).catch((error) => {
+ req.flash('message', `${error}`);
+ res.redirect('/signup');
+ })
+
+});
+
+router.post('/login', passport.authenticate('local-login', {
+ successRedirect: '/',
+ failureRedirect: '/login',
+ failureFlash: {
+ type: 'messge',
+ message: 'Invalid email or password'
+ },
+ failureMessage: true
+}));
+
+router.get('/logout', function (req, res, next) {
+ req.logout(function (err) {
+ if (err) { return next(err); }
+ if (req.session) { req.session.destroy() }
+ res.redirect('/');
+ });
+});
+
+module.exports = router;
diff --git a/routes/index.js b/routes/index.js
index c8f0bcc..18c3aa5 100644
--- a/routes/index.js
+++ b/routes/index.js
@@ -1,20 +1,63 @@
var express = require('express');
var router = express.Router();
-var title = 'Launchpad Kerala'
+var app_name = 'Launchpad Kerala'
/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', {
- title: `${title}`,
- home_page: true
+
+/* GET home page. */
+router.get('/', (req, res, next) => {
+ let user = req.user
+ // console.log(req.user);
+ if (user && user.permissions.admin) {
+ res.redirect('/admin/')
+ } else {
+ res.render('index', {
+ app_name: app_name,
+ home_page: true
+ });
+ }
+});
+
+router.get('/contact', (req, res, next) => {
+ let user = req.user;
+ res.render('pages/contact', {
+ app_name: `Test Page | ${app_name}`,
+ user
});
});
+router.post('/contact', (req, res, next) => {
+ let user = req.user;
+ if (user) {
+ req.body.user = user.id;
+ } else {
+ req.body.user = null;
+ }
+ console.log(req.body)
+ userControl.contact.message(req.body)
+ .then((response) => {
+ res.send(
+ {
+ response: "acknowledged",
+ status: true
+ }
+ );
+ })
+ .catch((error) => {
+ res.send(
+ {
+ error,
+ status: false
+ }
+ );
+ })
+});
+
router.get('/updates', function (req, res, next) {
res.render('updates',
{
- title: `${title}`,
+ app_name: `${app_name}`,
page_head: 'News & Updates',
page_nav_name: 'Updates',
breadcrumbs: true,
@@ -25,7 +68,7 @@ router.get('/updates', function (req, res, next) {
router.get('/registration', function (req, res, next) {
res.render('pages/registration',
{
- title: `${title}`,
+ app_name: `${app_name}`,
page_head: 'Registration',
page_nav_name: 'Registration',
});
@@ -34,7 +77,7 @@ router.get('/registration', function (req, res, next) {
// router.get('/rank-list', function (req, res, next) {
// res.render('pages/ranklist',
// {
-// title: `Rank List | ${title}`,
+// app_name: `Rank List | ${app_name}`,
// page_head: 'Rank List of Online Test',
// page_nav_name: 'rank-list'
// });
@@ -43,7 +86,7 @@ router.get('/registration', function (req, res, next) {
// router.get('/instructions/choosing-recruiters', function (req, res, next) {
// res.render('pages/instructions',
// {
-// title: `Instructions | ${title}`,
+// app_name: `Instructions | ${app_name}`,
// page_head: 'Instruction for choosing recruiters',
// page_nav_name: 'instructions'
// });
@@ -52,7 +95,7 @@ router.get('/registration', function (req, res, next) {
router.get('/mocktest', function (req, res, next) {
res.render('pages/mocktest',
{
- title: `Mock Test | ${title}`,
+ app_name: `Mock Test | ${app_name}`,
page_head: 'Mock Test',
page_nav_name: 'mock test'
});
@@ -61,7 +104,7 @@ router.get('/mocktest', function (req, res, next) {
router.get('/privacy-policy', function (req, res, next) {
res.render('pages/privacy_policy',
{
- title: `User Pricay Policy | ${title}`,
+ app_name: `User Pricay Policy | ${app_name}`,
page_head: 'User Pricay Policy',
page_nav_name: 'pricay policy'
});
@@ -70,7 +113,7 @@ router.get('/privacy-policy', function (req, res, next) {
router.get('/final-test', function (req, res, next) {
res.render('pages/onlinetest',
{
- title: `Online Test | ${title}`,
+ app_name: `Online Test | ${app_name}`,
page_head: 'Online Test',
page_nav_name: 'online-test'
});
@@ -79,7 +122,7 @@ router.get('/final-test', function (req, res, next) {
router.get('/finaltest', function (req, res, next) {
res.render('pages/onlinetest',
{
- title: `Online Test | ${title}`,
+ app_name: `Online Test | ${app_name}`,
page_head: 'Online Test',
page_nav_name: 'online-test'
});
@@ -88,7 +131,7 @@ router.get('/finaltest', function (req, res, next) {
router.get('/online-test', function (req, res, next) {
res.render('pages/onlinetest',
{
- title: `Online Test | ${title}`,
+ app_name: `Online Test | ${app_name}`,
page_head: 'Online Test',
page_nav_name: 'online-test'
});
@@ -97,10 +140,29 @@ router.get('/online-test', function (req, res, next) {
router.get('/onlinetest', function (req, res, next) {
res.render('pages/onlinetest',
{
- title: `Online Test | ${title}`,
+ app_name: `Online Test | ${app_name}`,
page_head: 'Online Test',
page_nav_name: 'online-test'
});
});
-module.exports = router;
+router.get('/test', (req, res, next) => {
+ let user = req.user;
+ res.render('test', {
+ app_name: `Test Page | ${app_name}`,
+ user
+ });
+});
+
+router.post('/test', (req, res, next) => {
+ let user = req.user;
+ // console.log(req.body)
+ res.send(
+ {
+ response: "acknowledged",
+ status: true
+ }
+ );
+});
+
+module.exports = router;
\ No newline at end of file
diff --git a/scss/_admin_theme.scss b/scss/_admin_theme.scss
new file mode 100644
index 0000000..699d95d
--- /dev/null
+++ b/scss/_admin_theme.scss
@@ -0,0 +1,24 @@
+$ss-xm: 480px;
+$ss-sm: 768px;
+$ss-md: 992px;
+$ss-lg: 1200px;
+
+$white: #fff;
+
+$color_1: #DFF6FF;
+$color_2: #47B5FF;
+$color_3: #1363DF;
+$color_4: #06283D;
+$color_5: #252A34;
+
+$color_error: #FC4F4F;
+$color_success: #21BF73;
+
+$color_danger: #e52c2c;
+
+$background_color_1: #fafafa;
+$background_color_2: #EFEFEF;
+$background_color_3: #DFF6FF;
+
+$font_family_1: 'Open Sans', sans-serif;
+$font_family_2: 'Poppins', sans-serif;
\ No newline at end of file
diff --git a/scss/_theme.scss b/scss/_theme.scss
index 4a1af10..e33a3f8 100644
--- a/scss/_theme.scss
+++ b/scss/_theme.scss
@@ -10,6 +10,11 @@ $color3: #ef7e28;
$color4: #ffa22b;
$color5: #ff862b;
+$color_error: #FC4F4F;
+$color_success: #21BF73;
+
+$color_danger: #e52c2c;
+
$bg_color1: #fdf8f4;
$white: #fff;
@@ -17,4 +22,10 @@ $dark_color_1: #151515;
$font-family_1: "Poppins", sans-serif;
$font-family_2: "Raleway", sans-serif;
-$font-family_3: "Open Sans", sans-serif;
\ No newline at end of file
+$font-family_3: "Open Sans", sans-serif;
+
+$color_1: #DFF6FF;
+$color_2: $color3;
+$color_3: $color3;
+$color_4: $dark_color_1;
+$color_5: #252A34;
\ No newline at end of file
diff --git a/scss/admin.scss b/scss/admin.scss
new file mode 100644
index 0000000..cb0c018
--- /dev/null
+++ b/scss/admin.scss
@@ -0,0 +1,119 @@
+* {
+ padding: 0;
+ margin: 0;
+}
+
+@import "./admin_theme";
+
+body {
+ width: 100%;
+ min-height: 100vh;
+ background-color: $background_color_3;
+ display: flex;
+ flex-direction: column;
+ font-family: $font_family_2;
+}
+
+@import "./admin/nav/sidebar";
+@import "./admin/nav/header";
+@import "./admin/nav/footer";
+
+:root {
+ scroll-behavior: smooth;
+}
+
+body {
+ font-family: "Open Sans", sans-serif;
+ background: #f6f9ff;
+ color: #444444;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: $font_family_1;
+}
+
+#main {
+ width: calc(100% - 5rem);
+ position: absolute;
+ min-height: 100%;
+ top: 0;
+ right: 0;
+ z-index: 1;
+ padding: 0rem 2rem;
+ padding-top: 5rem;
+ overflow-x: hidden;
+ transition: all 0.3s ease-in-out;
+
+ display: flex;
+ flex-direction: column;
+
+ &.shrink {
+ width: 85%;
+ }
+}
+
+@media only screen and (max-width: 1080px) {
+ #main {
+ width: 100%;
+ padding: 0rem 1rem;
+ padding-top: 5rem;
+
+ &.shrink {
+ width: 100%;
+ }
+ }
+}
+
+section {
+ width: 100%;
+}
+
+.pagetitle {
+ margin: 0rem;
+ margin-bottom: 1rem;
+
+ h2 {
+ font-size: 24px;
+ margin-bottom: 0;
+ font-weight: 600;
+ color: rgba($color: $color_4, $alpha: 0.9);
+ }
+
+ .breadcrumb {
+ font-size: 14px;
+ font-family: "Nunito", sans-serif;
+ color: rgba($color: $color_4, $alpha: 0.5);
+ font-weight: 600;
+
+ a {
+ color: rgba($color: $color_4, $alpha: 0.5);
+ transition: 0.3s;
+ text-decoration: none;
+
+ &:hover {
+ color: rgba($color: $color_4, $alpha: 0.75);
+ }
+ }
+
+ .breadcrumb-item {
+ &::before {
+ color: rgba($color: $color_4, $alpha: 0.5);
+ }
+ }
+
+ .active {
+ color: rgba($color: $color_4, $alpha: 0.85);
+ font-weight: 600;
+ }
+ }
+}
+
+@import './admin/defaults';
+@import './admin/components';
+@import "./admin/dashboard";
+@import "./admin/admins";
\ No newline at end of file
diff --git a/scss/admin/_admins.scss b/scss/admin/_admins.scss
new file mode 100644
index 0000000..71ebbe2
--- /dev/null
+++ b/scss/admin/_admins.scss
@@ -0,0 +1,3 @@
+#admin{
+
+}
\ No newline at end of file
diff --git a/scss/admin/_components.scss b/scss/admin/_components.scss
new file mode 100644
index 0000000..866426d
--- /dev/null
+++ b/scss/admin/_components.scss
@@ -0,0 +1,199 @@
+@mixin box-shadow-1 {
+ box-shadow: 0px 0 30px rgba($color: $color_4, $alpha: 0.1);
+}
+
+
+.card {
+ border: none;
+ border-radius: 0.1rem;
+ box-shadow: 0px 0 30px rgba($color: $color_4, $alpha: 0.1);
+
+ .card-header,
+ .card-footer {
+ border-color: $color_1;
+ background-color: $white;
+ color: rgba($color: $color_2, $alpha: 0.5);
+ padding: 1rem;
+ }
+
+ .card-title {
+ padding: 1.2rem 0 1rem 0;
+ font-size: 1.2rem;
+ font-weight: 600;
+ color: rgba($color: $color_4, $alpha: 0.85);
+ font-family: "Poppins", sans-serif;
+
+ span {
+ color: rgba($color: $color_4, $alpha: 0.5);
+ font-size: 1rem;
+ font-weight: 400;
+ }
+ }
+
+ .card-body {
+ padding: 0 1.2rem 1.2rem 1.2rem;
+ }
+
+ .card-img-overlay {
+ background-color: rgba(255, 255, 255, 0.6);
+ }
+
+}
+
+.nav-tabs-bordered {
+ border-bottom: 2px solid #ebeef4;
+
+ .nav-link {
+ margin-bottom: -2px;
+ border: none;
+ color: rgba($color: $color_4, $alpha: 0.5);
+
+ &.active {
+ background-color: $white;
+ color: $color_2;
+ border-bottom: 2px solid $color_2;
+ }
+ }
+}
+
+.nav-tabs-bordered .nav-link:hover,
+.nav-tabs-bordered .nav-link:focus {
+ color: $color_2;
+}
+
+.btn-ico {
+ padding: 0.1rem 0.25rem;
+ font-size: 1rem;
+ background-color: transparent;
+ border: none;
+
+ &.red {
+ color: $color_danger;
+ }
+
+ &.blue {
+ color: $color_3;
+ }
+}
+
+.forms {
+ background-color: $white;
+ padding: 2rem;
+ @include box-shadow-1;
+
+ .error {
+ text-align: center;
+ color: $color_error;
+ }
+
+ .log_head {
+ text-align: center;
+ margin-bottom: 1rem;
+
+ h3 {
+ color: $color_4;
+ // margin-bottom: rem;
+
+ span {
+ color: $color_2;
+ font-weight: 700;
+ }
+ }
+
+ p {
+ color: rgba($color: $color_4, $alpha: 0.5);
+ }
+ }
+
+ form {
+ margin: 0.5rem 0rem;
+
+ .form-group {
+ margin: 1rem 0rem;
+ margin-top: 1.5rem;
+ color: rgba($color: $color_4, $alpha: 0.9);
+
+
+ .form-control {
+ margin: 0;
+ padding: 0.5rem 1.0rem;
+ height: 2.5rem;
+ border-radius: 0.1rem;
+ border: 1px solid rgba($color: $color_4, $alpha: 0.1);
+ color: $color_4;
+ font-family: $font_family_2;
+
+ &:active,
+ &:focus {
+ box-shadow: none;
+ border: 1px solid $color_2;
+ }
+
+ &::placeholder {
+ color: rgba($color: $color_4, $alpha: 0.4);
+ }
+ }
+
+ &:last-child{
+ padding-bottom: 0;
+ margin-bottom: 0;
+ }
+
+ }
+
+ .btn {
+ width: 100%;
+ border: 2px solid $color_4;
+ background-color: transparent;
+ padding: 0.5rem 1.5rem;
+ margin: 0;
+ margin-top: 1rem;
+ color: $color_4;
+ transition: all 0.3s ease-in-out;
+
+ &:hover {
+ color: $white;
+ background-color: $color_4;
+ }
+ }
+
+ .btn-primary{
+ width: 100%;
+ border: 2px solid rgba($color: $color_2, $alpha: 1);
+ background-color: transparent;
+ padding: 0.5rem 1.5rem;
+ margin: 0;
+ margin-top: 1rem;
+ background-color: rgba($color: $color_2, $alpha: 1);
+ color: $white;
+ transition: all 0.3s ease-in-out;
+
+ &:hover {
+ border-color: $color_3;
+ color: $white;
+ background-color: $color_3;
+ }
+ }
+ }
+
+ .log_footer {
+ text-align: center;
+ font-size: 0.8rem;
+
+ a {
+ font-weight: 600;
+ }
+ }
+
+ &.inner_form{
+ padding: 0rem;
+ margin: 0rem;
+ box-shadow: none;
+
+ form{
+ margin: 0;
+ padding: 0;
+ box-shadow: none;
+ }
+ }
+}
\ No newline at end of file
diff --git a/scss/admin/_dashboard.scss b/scss/admin/_dashboard.scss
new file mode 100644
index 0000000..a92f5b4
--- /dev/null
+++ b/scss/admin/_dashboard.scss
@@ -0,0 +1,278 @@
+.dashboard .filter {
+ position: absolute;
+ right: 0px;
+ top: 15px;
+}
+.dashboard .filter .icon {
+ color: #aab7cf;
+ padding-right: 20px;
+ padding-bottom: 5px;
+ transition: 0.3s;
+ font-size: 16px;
+}
+.dashboard .filter .icon:hover,
+.dashboard .filter .icon:focus {
+ color: #4154f1;
+}
+.dashboard .filter .dropdown-header {
+ padding: 8px 15px;
+}
+.dashboard .filter .dropdown-header h6 {
+ text-transform: uppercase;
+ font-size: 14px;
+ font-weight: 600;
+ letter-spacing: 1px;
+ color: #aab7cf;
+ margin-bottom: 0;
+ padding: 0;
+}
+.dashboard .filter .dropdown-item {
+ padding: 8px 15px;
+}
+
+/* Info Cards */
+.dashboard .info-card {
+ padding-bottom: 10px;
+}
+.dashboard .info-card h6 {
+ font-size: 28px;
+ color: #012970;
+ font-weight: 700;
+ margin: 0;
+ padding: 0;
+}
+.dashboard .card-icon {
+ font-size: 32px;
+ line-height: 0;
+ width: 64px;
+ height: 64px;
+ flex-shrink: 0;
+ flex-grow: 0;
+}
+.dashboard .sales-card .card-icon {
+ color: #4154f1;
+ background: #f6f6fe;
+}
+.dashboard .revenue-card .card-icon {
+ color: #2eca6a;
+ background: #e0f8e9;
+}
+.dashboard .customers-card .card-icon {
+ color: #ff771d;
+ background: #ffecdf;
+}
+
+/* Activity */
+.dashboard .activity {
+ font-size: 14px;
+}
+.dashboard .activity .activity-item .activite-label {
+ color: #888;
+ position: relative;
+ flex-shrink: 0;
+ flex-grow: 0;
+ min-width: 64px;
+}
+.dashboard .activity .activity-item .activite-label::before {
+ content: "";
+ position: absolute;
+ right: -11px;
+ width: 4px;
+ top: 0;
+ bottom: 0;
+ background-color: #eceefe;
+}
+.dashboard .activity .activity-item .activity-badge {
+ margin-top: 3px;
+ z-index: 1;
+ font-size: 11px;
+ line-height: 0;
+ border-radius: 50%;
+ flex-shrink: 0;
+ border: 3px solid #fff;
+ flex-grow: 0;
+}
+.dashboard .activity .activity-item .activity-content {
+ padding-left: 10px;
+ padding-bottom: 20px;
+}
+.dashboard .activity .activity-item:first-child .activite-label::before {
+ top: 5px;
+}
+.dashboard .activity .activity-item:last-child .activity-content {
+ padding-bottom: 0;
+}
+
+/* News & Updates */
+.dashboard .news .post-item + .post-item {
+ margin-top: 15px;
+}
+.dashboard .news img {
+ width: 80px;
+ float: left;
+ border-radius: 5px;
+}
+.dashboard .news h4 {
+ font-size: 15px;
+ margin-left: 95px;
+ font-weight: bold;
+ margin-bottom: 5px;
+}
+.dashboard .news h4 a {
+ color: #012970;
+ transition: 0.3s;
+}
+.dashboard .news h4 a:hover {
+ color: #4154f1;
+}
+.dashboard .news p {
+ font-size: 14px;
+ color: #777777;
+ margin-left: 95px;
+}
+
+/* Recent Sales */
+.dashboard .recent-sales {
+ font-size: 14px;
+}
+.dashboard .recent-sales .table thead {
+ background: #f6f6fe;
+}
+.dashboard .recent-sales .table thead th {
+ border: 0;
+}
+.dashboard .recent-sales .dataTable-top {
+ padding: 0 0 10px 0;
+}
+.dashboard .recent-sales .dataTable-bottom {
+ padding: 10px 0 0 0;
+}
+
+/* Top Selling */
+.dashboard .top-selling {
+ font-size: 14px;
+}
+.dashboard .top-selling .table thead {
+ background: #f6f6fe;
+}
+.dashboard .top-selling .table thead th {
+ border: 0;
+}
+.dashboard .top-selling .table tbody td {
+ vertical-align: middle;
+}
+.dashboard .top-selling img {
+ border-radius: 5px;
+ max-width: 60px;
+}
+
+/*--------------------------------------------------------------
+ # Icons list page
+ --------------------------------------------------------------*/
+.iconslist {
+ display: grid;
+ max-width: 100%;
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
+ gap: 1.25rem;
+ padding-top: 15px;
+}
+.iconslist .icon {
+ background-color: #fff;
+ border-radius: 0.25rem;
+ text-align: center;
+ color: #012970;
+ padding: 15px 0;
+}
+.iconslist i {
+ margin: 0.25rem;
+ font-size: 2.5rem;
+}
+.iconslist .label {
+ font-family: var(--bs-font-monospace);
+ display: inline-block;
+ width: 100%;
+ overflow: hidden;
+ padding: 0.25rem;
+ font-size: 12px;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ color: #666;
+}
+
+/*--------------------------------------------------------------
+ # Profie Page
+ --------------------------------------------------------------*/
+.profile .profile-card img {
+ max-width: 120px;
+}
+.profile .profile-card h2 {
+ font-size: 24px;
+ font-weight: 700;
+ color: #2c384e;
+ margin: 10px 0 0 0;
+}
+.profile .profile-card h3 {
+ font-size: 18px;
+}
+.profile .profile-card .social-links a {
+ font-size: 20px;
+ display: inline-block;
+ color: rgba(1, 41, 112, 0.5);
+ line-height: 0;
+ margin-right: 10px;
+ transition: 0.3s;
+}
+.profile .profile-card .social-links a:hover {
+ color: #012970;
+}
+.profile .profile-overview .row {
+ margin-bottom: 20px;
+ font-size: 15px;
+}
+.profile .profile-overview .card-title {
+ color: #012970;
+}
+.profile .profile-overview .label {
+ font-weight: 600;
+ color: rgba(1, 41, 112, 0.6);
+}
+.profile .profile-edit label {
+ font-weight: 600;
+ color: rgba(1, 41, 112, 0.6);
+}
+.profile .profile-edit img {
+ max-width: 120px;
+}
+
+/*--------------------------------------------------------------
+ # Error 404
+ --------------------------------------------------------------*/
+.error-404 {
+ padding: 30px;
+}
+.error-404 h1 {
+ font-size: 180px;
+ font-weight: 700;
+ color: #4154f1;
+ margin-bottom: 0;
+ line-height: 150px;
+}
+.error-404 h2 {
+ font-size: 24px;
+ font-weight: 700;
+ color: #012970;
+ margin-bottom: 30px;
+}
+.error-404 .btn {
+ background: #51678f;
+ color: #fff;
+ padding: 8px 30px;
+}
+.error-404 .btn:hover {
+ background: #3e4f6f;
+}
+@media (min-width: 992px) {
+ .error-404 img {
+ max-width: 50%;
+ }
+}
diff --git a/scss/admin/_defaults.scss b/scss/admin/_defaults.scss
new file mode 100644
index 0000000..7191b11
--- /dev/null
+++ b/scss/admin/_defaults.scss
@@ -0,0 +1,154 @@
+form {
+ .form-control {
+ width: 100%;
+ box-shadow: none;
+ border-radius: 0.1rem;
+ margin: 0.25rem;
+ height: 2.5rem;
+
+ &:active,
+ &:focus {
+ border: 1px solid $color_2;
+ box-shadow: none;
+ }
+ }
+
+ .btn {
+ border: 2px solid $color_4;
+ background-color: transparent;
+ padding: 0.25rem 1rem;
+ margin: 0;
+ color: $color_4;
+ transition: all 0.3s ease-in-out;
+
+ &:hover {
+ color: $white;
+ background-color: $color_4;
+ }
+ }
+
+ .btn-primary {
+ border: 2px solid rgba($color: $color_2, $alpha: 1);
+ background-color: transparent;
+ padding: 0.25rem 1rem;
+ margin: 0;
+ background-color: rgba($color: $color_2, $alpha: 1);
+ color: $white;
+ transition: all 0.3s ease-in-out;
+
+ &:hover {
+ border-color: $color_3;
+ color: $white;
+ background-color: $color_3;
+ }
+ }
+}
+
+.btn {
+ background-color: transparent;
+ color: $color_4;
+ border: 2px solid $color_4;
+ border-radius: 0.1rem;
+ transition: all 0.3s ease-in-out;
+
+ &:active,
+ &:hover,
+ &:focus {
+ border: 2px solid $color_4;
+ color: $white;
+ background-color: $color_4;
+ }
+}
+
+.dropdown-menu {
+ border-radius: 0.1rem;
+ padding: 0.8rem 0;
+ animation-name: dropdown-animate;
+ animation-duration: 0.2s;
+ animation-fill-mode: both;
+ border: 0;
+ box-shadow: 0 0.2rem 1.8rem 0 rgba($color: $color_4, $alpha: 0.1);
+
+ .dropdown-footer {
+ a {
+ color: $color_5;
+ text-decoration: underline;
+
+ &:hover {
+ text-decoration: none;
+ }
+ }
+ }
+
+ .dropdown-divider {
+ color: rgba($color: $color_2, $alpha: 0.2);
+ margin: 0;
+ }
+
+ .dropdown-item {
+ font-size: 14px;
+ padding: 0.5rem 1rem;
+ transition: 0.3s;
+
+ i {
+ margin-right: 0.8rem;
+ font-size: 18px;
+ line-height: 0;
+ }
+
+ &:hover {
+ background-color: $background_color_3;
+ }
+ }
+}
+
+.dropdown-menu .dropdown-header,
+.dropdown-menu .dropdown-footer {
+ text-align: center;
+ font-size: 1rem;
+ padding: 0.25rem 1.5rem;
+
+ h6 {
+ margin: 0rem;
+ font-family: $font_family_1;
+ color: rgba($color: $color_2, $alpha: 0.85)
+ }
+
+ p {
+ margin: 0;
+ font-size: 0.85rem;
+ font-weight: 600;
+ font-family: $font_family_2;
+ color: rgba($color: $color_4, $alpha: 0.25)
+ }
+}
+
+
+@media (min-width: 768px) {
+ .dropdown-menu-arrow::before {
+ content: "";
+ width: 13px;
+ height: 13px;
+ background: $white;
+ position: absolute;
+ top: -7px;
+ right: 20px;
+ transform: rotate(45deg);
+ border-top: 1px solid $background_color_1;
+ border-left: 1px solid $background_color_1;
+ }
+}
+
+@keyframes dropdown-animate {
+ 0% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+
+ 0% {
+ opacity: 0;
+ }
+}
\ No newline at end of file
diff --git a/scss/admin/nav/_footer.scss b/scss/admin/nav/_footer.scss
new file mode 100644
index 0000000..c59ef59
--- /dev/null
+++ b/scss/admin/nav/_footer.scss
@@ -0,0 +1,4 @@
+footer{
+ margin-top: auto;
+ width: 100%;
+}
\ No newline at end of file
diff --git a/scss/admin/nav/_header.scss b/scss/admin/nav/_header.scss
new file mode 100644
index 0000000..6dc1b14
--- /dev/null
+++ b/scss/admin/nav/_header.scss
@@ -0,0 +1,121 @@
+#header {
+ padding: 0rem 1.5rem;
+ position: fixed;
+ top: 0;
+ right: 0;
+ width: calc(100% - 5rem);
+ height: 4rem;
+ background-color: $background_color_1;
+ box-shadow:
+ 0px 1.9px 2.2px rgba(0, 0, 0, 0.001),
+ 0px 4.6px 5.3px rgba(0, 0, 0, 0.002),
+ 0px 8.6px 10px rgba(0, 0, 0, 0.005),
+ 0px 15.4px 17.9px rgba(0, 0, 0, 0.011),
+ 0px 28.8px 33.4px rgba(0, 0, 0, 0.02),
+ 0px 69px 80px rgba(0, 0, 0, 0.04);
+
+
+ display: flex;
+ align-items: center;
+ z-index: 10;
+ transition: all 0.3s ease-in-out;
+
+ #harmburger,
+ .harmburger {
+ width: 2rem;
+ cursor: pointer;
+ display: flex;
+ flex-direction: column;
+ transition: all 0.3s ease-in-out;
+
+ div {
+ margin: 0.2rem 0rem;
+ width: 2rem;
+ height: 0.2rem;
+ border-radius: 1rem;
+ background-color: $color_4;
+ transition: all 0.3s ease-in-out;
+ }
+
+ &.active {
+ div {
+ width: 2rem;
+
+ &:nth-child(1) {
+ width: 1.8rem;
+ }
+
+ &:nth-child(2) {
+ width: 1rem;
+ }
+
+ &:nth-child(3) {
+ width: 1.5rem;
+ }
+ }
+ }
+ }
+
+ .header-nav {
+ ul {
+ list-style: none;
+ }
+
+ &>ul {
+ margin: 0;
+ padding: 0;
+ }
+
+ .nav-icon {
+ font-size: 1.2rem;
+ color: $color_1;
+ }
+
+ .nav-profile {
+ color: rgba($color: $color_4, $alpha: 0.5);
+
+ img {
+ max-height: 1.5rem;
+ }
+
+ span {
+ font-size: 0.9rem;
+ font-weight: 600;
+ }
+ }
+
+ .badge-number {
+ position: absolute;
+ inset: 4px 6px auto auto;
+ font-weight: normal;
+ font-size: 11px;
+ padding: 3px 6px;
+ }
+
+ }
+
+
+ &.shrink {
+ width: 85%;
+ }
+}
+
+@media only screen and (max-width: 1080px) {
+ #header {
+ width: 100%;
+
+ .harmburger {
+ align-items: flex-end;
+ }
+
+ flex-direction: row-reverse;
+
+ // nav {
+ // margin-right: 1rem;
+ // }
+
+ &.shrink {
+ width: 100%;
+ }
+ }
+}
\ No newline at end of file
diff --git a/scss/admin/nav/_sidebar.scss b/scss/admin/nav/_sidebar.scss
new file mode 100644
index 0000000..4470599
--- /dev/null
+++ b/scss/admin/nav/_sidebar.scss
@@ -0,0 +1,198 @@
+#sidebar {
+ width: 15%;
+ height: 100vh;
+ position: fixed;
+ padding: 0.5rem 0.9rem;
+ float: left;
+ z-index: 11;
+ color: $color_2;
+ background-color: $color_4;
+ box-shadow: 3.4px 0px 10px rgba(0, 0, 0, 0.05),
+ 27px 0px 80px rgba(0, 0, 0, 0.1);
+ transition: all 0.3s ease-in-out;
+
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ overflow: hidden;
+
+ #shead {
+ height: 2rem;
+ margin: 1rem 0rem;
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ a{
+ text-decoration: none;
+ color: $color_1;
+
+ &:hover, &:active, &:focus{
+ color: $color_2;
+ }
+ }
+
+ #slogo {
+ color: $color_1;
+ font-size: 1.5rem;
+ transform: translate(0%, -20%);
+ transition: all 0.3s ease-in-out;
+ }
+
+ h4{
+ margin: 0rem 0.5rem;
+ font-size: 1.3rem;
+ transform: translate(0%, -25%);
+ }
+
+ transition: all 0.3s ease-in-out;
+ }
+
+ #scont {
+ margin: auto 0;
+ width: 100%;
+ ul {
+ list-style: none;
+ text-decoration: none;
+ padding: 0;
+ li {
+ // background-color: $color3;
+ a {
+ padding: 0rem 0.8rem;
+ height: 2.7rem;
+ margin: 0.5rem 0rem;
+ font-family: $font_family_1;
+ color: $color_2;
+ border-radius: 0.5rem;
+ text-decoration: none;
+ display: flex;
+ align-items: center;
+ border: 2px solid rgba($color: $color_1, $alpha: 0);
+
+ transition: 0.3s ease-in-out;
+ transition-property: background-color,border, box-shadow;
+
+ .sico {
+ font-size: 1.3rem;
+ transition: all 0.3s ease-in-out;
+ }
+
+ h5 {
+ font-weight: 500;
+ font-size: 1rem;
+ margin: 0rem 0.85rem;
+ transition: all 0.3s ease-in-out;
+ }
+
+ &:hover,
+ &:active,
+ &:focus {
+ color: $color_1;
+ }
+
+ &:hover,
+ &.active {
+ .sico,
+ h5 {
+ color: $color_1;
+ }
+
+ background-color: rgba($color: $color_2, $alpha: 0.8);
+ border: 2px solid rgba($color: $color_2, $alpha: 0.05);
+ box-shadow: 0px 4.02px 34.17px 0px rgba(0, 0, 0, 0.05);
+ }
+ }
+ }
+ }
+ }
+
+ #sfoot{
+ height: 2rem;
+ margin: 1rem 0rem;
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 0.8rem;
+
+ color: $color_2;
+
+ a{
+ text-decoration: none;
+ color: $color_2;
+ transition: all 0.3s ease;
+
+ &:hover{
+ color: $color_2;
+ }
+
+ &:active, &:focus{
+ text-decoration: none;
+ color: $color_2;
+ }
+ }
+ }
+
+ &.close {
+ padding: 0.5rem 1rem;
+ width: 5rem;
+
+ #shead{
+ h4{
+ display: none;
+ }
+ }
+
+ #scont {
+ ul {
+ li {
+ a {
+ padding: 0rem 0.7rem;
+ .sico {
+ font-size: 1.5rem;
+ }
+
+ h5 {
+ display: none;
+ }
+ }
+ }
+ }
+ }
+
+ #sfoot{
+ color: transparent;
+ a{
+ display: none;
+ }
+ }
+ }
+}
+
+@media only screen and (max-width: 1080px) {
+ #sidebar {
+ width: 15rem;
+
+ #scont{
+ margin: 1rem 0rem;
+ margin-bottom: auto;
+ }
+
+ &.close {
+ transform: translateX(-102%);
+ #scont {
+ ul {
+ li {
+ a {
+ h5 {
+ display: block;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/scss/pages/_auth.scss b/scss/pages/_auth.scss
new file mode 100644
index 0000000..86100ed
--- /dev/null
+++ b/scss/pages/_auth.scss
@@ -0,0 +1,96 @@
+#log {
+ height: auto;
+ // margin-top: 15vh;
+
+ .forms {
+ background-color: $white;
+ padding: 2rem;
+
+ .error{
+ text-align: center;
+ color: $color_error;
+ }
+
+ .log_head{
+ text-align: center;
+ margin-bottom: 2.5rem;
+ h3{
+ color: $color_4;
+ // margin-bottom: rem;
+
+ span{
+ color: $color_2;
+ font-weight: 700;
+ }
+ }
+
+ p{
+ color: rgba($color: $color_4, $alpha: 0.5);
+ }
+ }
+
+ form {
+ margin: 0.5rem 0rem;
+ .form-group {
+ margin: 1rem 0rem;
+ margin-top: 1.5rem;
+ color: rgba($color: $color_4, $alpha: 0.9);
+
+
+ input {
+ height: 2.7rem;
+ border-radius: 0.1rem;
+ border: 1px solid rgba($color: $color_4, $alpha: 0.1);
+ color: $color_4;
+ font-family: $font_family_2;
+
+ &:active,
+ &:focus {
+ box-shadow: none;
+ border: 1px solid $color_2;
+ }
+
+ &::placeholder{
+ color: rgba($color: $color_4, $alpha: 0.4);
+ }
+ }
+
+ }
+
+ .forgot{
+ text-align: right;
+ margin-bottom: 1rem;
+ font-size: 0.8rem;
+ text-decoration: underline;
+ color: rgba($color: $color_4, $alpha: 0.8);
+
+ a{
+ color: rgba($color: $color_4, $alpha: 0.5);;
+ }
+ }
+
+ button{
+ width: 100%;
+ background-color: $color_2;
+ border: none;
+ padding: 0.6rem 1.5rem;
+ margin: 1rem 0rem;
+ color: $color_1;
+ transition: all 0.3s ease-in-out;
+
+ &:hover{
+ background-color: $color_4;
+ }
+ }
+ }
+
+ .log_footer{
+ text-align: center;
+ font-size: 0.8rem;
+
+ a{
+ font-weight: 600;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/scss/style.scss b/scss/style.scss
index cdddd9f..a9b4c61 100644
--- a/scss/style.scss
+++ b/scss/style.scss
@@ -840,9 +840,14 @@ section {
}
}
+.box-shadow {
+ box-shadow: 0 0 30px rgba(214, 215, 216, 0.6);
+}
+
// @import './register';
@import './pages/inner_pages';
+@import './pages/auth';
@import './pages/updates';
@import './pages/registration';
@import './partials/footer';
\ No newline at end of file
diff --git a/views/admin/account.hbs b/views/admin/account.hbs
new file mode 100644
index 0000000..05a67a8
--- /dev/null
+++ b/views/admin/account.hbs
@@ -0,0 +1,253 @@
+
+ {{message}} {{message}} To continue please Login to the {{app_name}} To continue please Login to the {{app_name}} {{message}} To continue please Login to the {{app_name}} {{message}}Profile Details
+
+ {{#with user}}
+ Edit Profile
+ {{#with user}}
+
+ {{/with}}
+
+ Change You Password
+
+ Add Admin
+ Edit Admin
+ Visitors | This Year
+
+ 100
+ 12% decrease
+
+ Login to {{app_name}}
+ {{!-- Login to {{app_name}}
+ {{!-- Signup Up {{app_name}}
+ {{!--