diff --git a/.history/app_20210503150708.js b/.history/app_20210503150708.js
deleted file mode 100644
index ae33225..0000000
--- a/.history/app_20210503150708.js
+++ /dev/null
@@ -1,93 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }).
-then(result => {
- console.log('connected');
- app.listen(process.env.PORT || 5000) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/app_20210503152356.js b/.history/app_20210503152356.js
deleted file mode 100644
index 1c52ad8..0000000
--- a/.history/app_20210503152356.js
+++ /dev/null
@@ -1,96 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-app.use(require('./models/Coupon'))
-app.use(require('./routes/Coupon'))
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }).
-then(result => {
- console.log('connected');
- app.listen(process.env.PORT || 5000) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/app_20210503152948.js b/.history/app_20210503152948.js
deleted file mode 100644
index 8421cd5..0000000
--- a/.history/app_20210503152948.js
+++ /dev/null
@@ -1,99 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const port=process.env.PORT || 5000;
-
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-app.use(require('./models/Coupon'))
-app.use(require('./routes/Coupon'))
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }).
-then(result => {
- console.log('connected');
- app.listen(,()=>{
- console.log("server is running on port",port);
- }) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/app_20210503152953.js b/.history/app_20210503152953.js
deleted file mode 100644
index d0ed53b..0000000
--- a/.history/app_20210503152953.js
+++ /dev/null
@@ -1,99 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const port=process.env.PORT || 5000;
-
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-app.use(require('./models/Coupon'))
-app.use(require('./routes/Coupon'))
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }).
-then(result => {
- console.log('connected');
- app.listen(()=>{
- console.log("server is running on port",port);
- }) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/app_20210503153001.js b/.history/app_20210503153001.js
deleted file mode 100644
index 510184e..0000000
--- a/.history/app_20210503153001.js
+++ /dev/null
@@ -1,99 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const port=process.env.PORT || 5000;
-
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-app.use(require('./models/Coupon'))
-app.use(require('./routes/Coupon'))
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }).
-then(result => {
- console.log('connected');
- app.listen(()=>{
- console.log("server is running on port",port);
- },port) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/app_20210503153018.js b/.history/app_20210503153018.js
deleted file mode 100644
index 0950006..0000000
--- a/.history/app_20210503153018.js
+++ /dev/null
@@ -1,99 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const port=process.env.PORT || 5000;
-
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-app.use(require('./models/Coupon'))
-app.use(require('./routes/Coupon'))
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }).
-then(result => {
- console.log('connected');
- app.listen(port,()=>{
- console.log("server is running on port",port);
- }) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/app_20210503153622.js b/.history/app_20210503153622.js
deleted file mode 100644
index 2f26c3b..0000000
--- a/.history/app_20210503153622.js
+++ /dev/null
@@ -1,99 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const port=process.env.PORT || 5000;
-
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-app.use(require('./models/Coupon'))
-app.use(require('./routes/Coupon'))
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }).
-then(result => {
- console.log('connected');
- app.listen(port,()=>{
- console.log("server is running on port",port);
- }) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/app_20210503153812.js b/.history/app_20210503153812.js
deleted file mode 100644
index 7e4c371..0000000
--- a/.history/app_20210503153812.js
+++ /dev/null
@@ -1,98 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const port=process.env.PORT || 5000;
-
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-app.use(require('./routes/Coupon'))
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }).
-then(result => {
- console.log('connected');
- app.listen(port,()=>{
- console.log("server is running on port",port);
- }) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/app_20210503153844.js b/.history/app_20210503153844.js
deleted file mode 100644
index 1673a63..0000000
--- a/.history/app_20210503153844.js
+++ /dev/null
@@ -1,99 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const port=process.env.PORT || 5000;
-
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-require('./models/Coupon')
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-app.use(require('./routes/Coupon'))
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }).
-then(result => {
- console.log('connected');
- app.listen(port,()=>{
- console.log("server is running on port",port);
- }) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/app_20210503160225.js b/.history/app_20210503160225.js
deleted file mode 100644
index 5a6ac7a..0000000
--- a/.history/app_20210503160225.js
+++ /dev/null
@@ -1,99 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const port=process.env.PORT || 5000;
-
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-require('./models/Coupon')
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-app.use(require('./routes/Coupon'))
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true ,useFindAndModify:true}).
-then(result => {
- console.log('connected');
- app.listen(port,()=>{
- console.log("server is running on port",port);
- }) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/app_20210503160253.js b/.history/app_20210503160253.js
deleted file mode 100644
index c081f70..0000000
--- a/.history/app_20210503160253.js
+++ /dev/null
@@ -1,99 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const port=process.env.PORT || 5000;
-
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-require('./models/Coupon')
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-app.use(require('./routes/Coupon'))
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true ,useFindAndModify:false}).
-then(result => {
- console.log('connected');
- app.listen(port,()=>{
- console.log("server is running on port",port);
- }) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/app_20210503160401.js b/.history/app_20210503160401.js
deleted file mode 100644
index c081f70..0000000
--- a/.history/app_20210503160401.js
+++ /dev/null
@@ -1,99 +0,0 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const port=process.env.PORT || 5000;
-
-const cors = require('cors') ;
-//const passport = require('passport');
-//const cookieSession = require('cookie-session') ;
-//require('./passport-setup') ;
-
-const app = express() ;
-
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-require('./models/Coupon')
-
-// app.use(cookieSession({
-// name: 'test-session',
-// keys: ['key1', 'key2']
-// }))
-
-// const isLoggedIn = (req , res , next) => {
-// if(req.user)
-// {
-// next()
-// }
-// else
-// {
-// res.json({
-// error : "No user"
-// })
-// }
-// }
-
-// app.use(passport.initialize());
-// app.use(passport.session());
-
-
-// app.get('/failed' , (req , res) => {
-// res.json({
-// error : "You have failed to login"
-// })
-// })
-
-// app.get('/' , (req , res) => {
-// console.log('you are not logged in');
-
-// })
-
-// app.get('/good' ,isLoggedIn , (req , res) => {
-// res.json({
-// message:"success" ,
-// user : req.user
-// })
-// })
-
-// app.get('/auth/google',
-// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-
-// app.get('/auth/google/callback',
-// passport.authenticate('google', { failureRedirect: '/failed' }),
-// function(req, res) {
-// res.redirect('/good');
-// });
-
-// app.get('/logout', (req , res) => {
-// req.session = null ;
-// req.logout() ;
-// res.redirect('/') ;
-// })
-app.use(require('./routes/Coupon'))
-app.use(authRoute) ;
-
-app.use(profileRoute) ;
-
-app.use(paymentRoute) ;
-
-app.use(courseRoute) ;
-
-app.use(adminRoute) ;
-
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true ,useFindAndModify:false}).
-then(result => {
- console.log('connected');
- app.listen(port,()=>{
- console.log("server is running on port",port);
- }) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
diff --git a/.history/models/Coupon_20210503151008.js b/.history/models/Coupon_20210503151008.js
deleted file mode 100644
index e69de29..0000000
diff --git a/.history/models/Coupon_20210503151143.js b/.history/models/Coupon_20210503151143.js
deleted file mode 100644
index 9b0b365..0000000
--- a/.history/models/Coupon_20210503151143.js
+++ /dev/null
@@ -1,7 +0,0 @@
-const mongoose=require('mongoose')
-const coupon=mongoose.Schema({
- coupon:{
- type:String,
- required:true
- }
-})
diff --git a/.history/models/Coupon_20210503151154.js b/.history/models/Coupon_20210503151154.js
deleted file mode 100644
index e2d580b..0000000
--- a/.history/models/Coupon_20210503151154.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const mongoose=require('mongoose')
-const coupon=mongoose.Schema({
- coupon:{
- type:String
- }
-})
diff --git a/.history/models/Coupon_20210503151227.js b/.history/models/Coupon_20210503151227.js
deleted file mode 100644
index 2efa4c6..0000000
--- a/.history/models/Coupon_20210503151227.js
+++ /dev/null
@@ -1,8 +0,0 @@
-const mongoose=require('mongoose')
-const CouponSchema=mongoose.Schema({
- coupon:{
- type:String
- }
-})
-
-module.exports=mongoose.model('Coupon',CouponSchema)
\ No newline at end of file
diff --git a/.history/models/Coupon_20210503151229.js b/.history/models/Coupon_20210503151229.js
deleted file mode 100644
index 2efa4c6..0000000
--- a/.history/models/Coupon_20210503151229.js
+++ /dev/null
@@ -1,8 +0,0 @@
-const mongoose=require('mongoose')
-const CouponSchema=mongoose.Schema({
- coupon:{
- type:String
- }
-})
-
-module.exports=mongoose.model('Coupon',CouponSchema)
\ No newline at end of file
diff --git a/.history/models/Coupon_20210503152726.js b/.history/models/Coupon_20210503152726.js
deleted file mode 100644
index 5a0c169..0000000
--- a/.history/models/Coupon_20210503152726.js
+++ /dev/null
@@ -1,8 +0,0 @@
-const mongoose=require('mongoose')
-const CouponSchema=new mongoose.Schema({
- coupon:{
- type:String
- }
-})
-
-module.exports=mongoose.model('Coupon',CouponSchema)
\ No newline at end of file
diff --git a/.history/models/Coupon_20210503153800.js b/.history/models/Coupon_20210503153800.js
deleted file mode 100644
index 6aa1d0e..0000000
--- a/.history/models/Coupon_20210503153800.js
+++ /dev/null
@@ -1,8 +0,0 @@
-const mongoose=require('mongoose')
-const CouponSchema=new mongoose.Schema({
- coupon:{
- type:String
- }
-})
-
-module.exports=mongoose.model("Coupon",CouponSchema)
\ No newline at end of file
diff --git a/.history/models/Coupon_20210503154746.js b/.history/models/Coupon_20210503154746.js
deleted file mode 100644
index e69ad70..0000000
--- a/.history/models/Coupon_20210503154746.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const mongoose=require('mongoose')
-const CouponSchema=new mongoose.Schema({
- coupon_code:{
- type:String
- },
- percentage:{
- type:String
- }
-})
-
-module.exports=mongoose.model("Coupon",CouponSchema)
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503151244.js b/.history/routes/Coupon_20210503151244.js
deleted file mode 100644
index e69de29..0000000
diff --git a/.history/routes/Coupon_20210503151301.js b/.history/routes/Coupon_20210503151301.js
deleted file mode 100644
index ab6990b..0000000
--- a/.history/routes/Coupon_20210503151301.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const express = require('express') ;
-const authController = require('../controllers/auth') ;
-const isAuth = require('../middleware/requirelogin') ;
-const router = express.Router() ;
-
diff --git a/.history/routes/Coupon_20210503151644.js b/.history/routes/Coupon_20210503151644.js
deleted file mode 100644
index a987d87..0000000
--- a/.history/routes/Coupon_20210503151644.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const coupon=require('../models/Coupon');
-
-router.get('/',(req,res)=>{
- coupon.find()
- .then(res=>{
- res.status(200).json({coupon:res})
- })
-})
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503152048.js b/.history/routes/Coupon_20210503152048.js
deleted file mode 100644
index c8911fa..0000000
--- a/.history/routes/Coupon_20210503152048.js
+++ /dev/null
@@ -1,25 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = require('../models/Coupon');
-
-router.get('/get-coupon',(req,res)=>{
- coupon.find()
- .then(res=>{
- res.status(200).json({coupon:res})
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {discount}=req.body;
- const coupon=new Coupon({
- coupon:discount
- });
- coupon.save().then(
- res=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-
-
-})
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503152427.js b/.history/routes/Coupon_20210503152427.js
deleted file mode 100644
index df96b10..0000000
--- a/.history/routes/Coupon_20210503152427.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = require('../models/Coupon');
-
-router.get('/get-coupon',(req,res)=>{
- coupon.find()
- .then(res=>{
- res.status(200).json({coupon:res})
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {discount}=req.body;
- const coupon=new Coupon({
- coupon:discount
- });
- coupon.save().then(
- res=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-
-
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503152622.js b/.history/routes/Coupon_20210503152622.js
deleted file mode 100644
index d084e4e..0000000
--- a/.history/routes/Coupon_20210503152622.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = require('../models/Coupon');
-
-router.get('/get-coupon',(req,res)=>{
- coupon.find()
- .then(res=>{
- res.status(200).json({coupon:res})
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {discount}=req.body;
- const coupon=new Coupon({
- coupon:discount
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-
-
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503152827.js b/.history/routes/Coupon_20210503152827.js
deleted file mode 100644
index 72f252b..0000000
--- a/.history/routes/Coupon_20210503152827.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = require('../models/Coupon');
-
-router.get('/get-coupon',(req,res)=>{
- coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {discount}=req.body;
- const coupon=new Coupon({
- coupon:discount
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-
-
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503153143.js b/.history/routes/Coupon_20210503153143.js
deleted file mode 100644
index 5a33aec..0000000
--- a/.history/routes/Coupon_20210503153143.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = require('../models/Coupon');
-
-router.get('/get-coupon',(req,res)=>{
- coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {discount}=req.body;
- const coupon=new Coupon({
- coupon:discount
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-
-
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503153304.js b/.history/routes/Coupon_20210503153304.js
deleted file mode 100644
index 30dcd9e..0000000
--- a/.history/routes/Coupon_20210503153304.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = require('../models/Coupon');
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {discount}=req.body;
- const coupon=new Coupon({
- coupon:discount
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-
-
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503153306.js b/.history/routes/Coupon_20210503153306.js
deleted file mode 100644
index 30dcd9e..0000000
--- a/.history/routes/Coupon_20210503153306.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = require('../models/Coupon');
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {discount}=req.body;
- const coupon=new Coupon({
- coupon:discount
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-
-
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503153356.js b/.history/routes/Coupon_20210503153356.js
deleted file mode 100644
index b93052a..0000000
--- a/.history/routes/Coupon_20210503153356.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {discount}=req.body;
- const coupon=new Coupon({
- coupon:discount
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-
-
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503153430.js b/.history/routes/Coupon_20210503153430.js
deleted file mode 100644
index b93052a..0000000
--- a/.history/routes/Coupon_20210503153430.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {discount}=req.body;
- const coupon=new Coupon({
- coupon:discount
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-
-
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503154437.js b/.history/routes/Coupon_20210503154437.js
deleted file mode 100644
index ce7371d..0000000
--- a/.history/routes/Coupon_20210503154437.js
+++ /dev/null
@@ -1,33 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {discount}=req.body;
- const coupon=new Coupon({
- coupon:discount
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-})
-
-router.delete('/delete-coupon',(req,res)=>{
- Coupon.remove({_id:req.body.id})
- .then((result)=>{
- res.status(200).json({message:"Coupon Deleted"})
- })
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503154828.js b/.history/routes/Coupon_20210503154828.js
deleted file mode 100644
index 4434613..0000000
--- a/.history/routes/Coupon_20210503154828.js
+++ /dev/null
@@ -1,34 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {percentage,coupon_code}=req.body;
- const coupon=new Coupon({
- coupon_code,
- percentage
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-})
-
-router.delete('/delete-coupon',(req,res)=>{
- Coupon.remove({_id:req.body.id})
- .then((result)=>{
- res.status(200).json({message:"Coupon Deleted"})
- })
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503155530.js b/.history/routes/Coupon_20210503155530.js
deleted file mode 100644
index c794196..0000000
--- a/.history/routes/Coupon_20210503155530.js
+++ /dev/null
@@ -1,41 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {percentage,coupon_code}=req.body;
- const coupon=new Coupon({
- coupon_code,
- percentage
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-})
-
-router.delete('/delete-coupon',(req,res)=>{
- Coupon.remove({_id:req.body.id})
- .then((result)=>{
- res.status(200).json({message:"Coupon Deleted"})
- })
-})
-
-router.put("/update-coupon",(req,res)=>{
- Coupon.findByIdAndUpdate({_id:req.body.id},{$push:{coupon_code:req.body.coupon_code}})
- .then((result)=>{
- res.status(200).json({message:"Coupon Updated"})
- })
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503155602.js b/.history/routes/Coupon_20210503155602.js
deleted file mode 100644
index 690aad5..0000000
--- a/.history/routes/Coupon_20210503155602.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {percentage,coupon_code}=req.body;
- const coupon=new Coupon({
- coupon_code,
- percentage
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-})
-
-router.delete('/delete-coupon',(req,res)=>{
- Coupon.remove({_id:req.body.id})
- .then((result)=>{
- res.status(200).json({message:"Coupon Deleted"})
- })
-})
-
-router.put("/update-coupon",(req,res)=>{
- Coupon.findByIdAndUpdate({_id:req.body.id},{$push:{coupon_code:req.body.coupon_code}})
- .then((result)=>{
- res.status(200).json({message:"Coupon Updated"})
- }).catch(err=>{
- console.log(err);
- })
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503155643.js b/.history/routes/Coupon_20210503155643.js
deleted file mode 100644
index b57ad04..0000000
--- a/.history/routes/Coupon_20210503155643.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {percentage,coupon_code}=req.body;
- const coupon=new Coupon({
- coupon_code,
- percentage
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-})
-
-router.delete('/delete-coupon',(req,res)=>{
- Coupon.remove({_id:req.body.id})
- .then((result)=>{
- res.status(200).json({message:"Coupon Deleted"})
- })
-})
-
-router.put("/update-coupon",(req,res)=>{
- Coupon.findByIdAndUpdate({_id:req.body.id},{$push:{percentage:req.body.percentage,coupon_code:req.body.coupon_code}})
- .then((result)=>{
- res.status(200).json({message:"Coupon Updated"})
- }).catch(err=>{
- console.log(err);
- })
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503155753.js b/.history/routes/Coupon_20210503155753.js
deleted file mode 100644
index 1ed31b8..0000000
--- a/.history/routes/Coupon_20210503155753.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {percentage,coupon_code}=req.body;
- const coupon=new Coupon({
- coupon_code,
- percentage
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-})
-
-router.delete('/delete-coupon',(req,res)=>{
- Coupon.remove({_id:req.body.id})
- .then((result)=>{
- res.status(200).json({message:"Coupon Deleted"})
- })
-})
-
-router.put("/update-coupon",(req,res)=>{
- Coupon.findByIdAndUpdate(_id:req.body.id,{$push:{percentage:req.body.percentage,coupon_code:req.body.coupon_code}})
- .then((result)=>{
- res.status(200).json({message:"Coupon Updated"})
- }).catch(err=>{
- console.log(err);
- })
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503155800.js b/.history/routes/Coupon_20210503155800.js
deleted file mode 100644
index 1ed31b8..0000000
--- a/.history/routes/Coupon_20210503155800.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {percentage,coupon_code}=req.body;
- const coupon=new Coupon({
- coupon_code,
- percentage
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-})
-
-router.delete('/delete-coupon',(req,res)=>{
- Coupon.remove({_id:req.body.id})
- .then((result)=>{
- res.status(200).json({message:"Coupon Deleted"})
- })
-})
-
-router.put("/update-coupon",(req,res)=>{
- Coupon.findByIdAndUpdate(_id:req.body.id,{$push:{percentage:req.body.percentage,coupon_code:req.body.coupon_code}})
- .then((result)=>{
- res.status(200).json({message:"Coupon Updated"})
- }).catch(err=>{
- console.log(err);
- })
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503155845.js b/.history/routes/Coupon_20210503155845.js
deleted file mode 100644
index b5c9c47..0000000
--- a/.history/routes/Coupon_20210503155845.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {percentage,coupon_code}=req.body;
- const coupon=new Coupon({
- coupon_code,
- percentage
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-})
-
-router.delete('/delete-coupon',(req,res)=>{
- Coupon.remove({_id:req.body.id})
- .then((result)=>{
- res.status(200).json({message:"Coupon Deleted"})
- })
-})
-
-router.put("/update-coupon",(req,res)=>{
- Coupon.findByIdAndUpdate(req.body._id,{$set:{percentage:req.body.percentage,coupon_code:req.body.coupon_code}})
- .then((result)=>{
- res.status(200).json({message:"Coupon Updated"})
- }).catch(err=>{
- console.log(err);
- })
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503155915.js b/.history/routes/Coupon_20210503155915.js
deleted file mode 100644
index 65d5e6d..0000000
--- a/.history/routes/Coupon_20210503155915.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {percentage,coupon_code}=req.body;
- const coupon=new Coupon({
- coupon_code,
- percentage
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-})
-
-router.delete('/delete-coupon',(req,res)=>{
- Coupon.remove({_id:req.body.id})
- .then((result)=>{
- res.status(200).json({message:"Coupon Deleted"})
- })
-})
-
-router.put("/update-coupon",(req,res)=>{
- Coupon.findByIdAndUpdate(req.body._id,{$set:{percentage:req.body.percentage,coupon_code:req.body.coupon_code}})
- .then((result)=>{
- res.status(200).json({message:result})
- }).catch(err=>{
- console.log(err);
- })
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503160010.js b/.history/routes/Coupon_20210503160010.js
deleted file mode 100644
index 2af6cdf..0000000
--- a/.history/routes/Coupon_20210503160010.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const express = require('express') ;
-const router = express.Router() ;
-const mongoose=require('mongoose');
-const Coupon = mongoose.model('Coupon')
-
-router.get('/get-coupon',(req,res)=>{
- Coupon.find()
- .then(result=>{
- res.status(200).json({coupon:result})
- console.log(result);
- })
-})
-
-router.post('/set-coupon',(req,res)=>{
- const {percentage,coupon_code}=req.body;
- const coupon=new Coupon({
- coupon_code,
- percentage
- });
- coupon.save().then(
- result=>{
- res.status(200).json({message:"Coupon set Successfully"})
- }
- )
-})
-
-router.delete('/delete-coupon',(req,res)=>{
- Coupon.remove({_id:req.body.id})
- .then((result)=>{
- res.status(200).json({message:"Coupon Deleted"})
- })
-})
-
-router.put("/update-coupon",(req,res)=>{
- Coupon.findByIdAndUpdate(req.body._id,{$set:{percentage:req.body.percentage,coupon_code:req.body.coupon_code}},{new:true})
- .then((result)=>{
- res.status(200).json({message:result})
- }).catch(err=>{
- console.log(err);
- })
-})
-
-module.exports=router
\ No newline at end of file
diff --git a/.history/routes/Coupon_20210503160014.js b/.history/routes/Coupon_20210503160014.js
deleted file mode 100644
index 4c21c39..0000000
--- a/.history/routes/Coupon_20210503160014.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
-
- {
- $set: {
- percentage: req.body.percentage,
- coupon_code: req.body.coupon_code,
- },
- },
- { new: true }
- )
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160018.js b/.history/routes/Coupon_20210503160018.js
deleted file mode 100644
index cb3110f..0000000
--- a/.history/routes/Coupon_20210503160018.js
+++ /dev/null
@@ -1,49 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- percentage: req.body.percentage,
- coupon_code: req.body.coupon_code,
- },
- },
- { new: true }
- )
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160037.js b/.history/routes/Coupon_20210503160037.js
deleted file mode 100644
index 3f41149..0000000
--- a/.history/routes/Coupon_20210503160037.js
+++ /dev/null
@@ -1,48 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code: req.body.coupon_code,
- },
- },
- { new: true }
- )
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160039.js b/.history/routes/Coupon_20210503160039.js
deleted file mode 100644
index 8a53f22..0000000
--- a/.history/routes/Coupon_20210503160039.js
+++ /dev/null
@@ -1,48 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code: req.body.coupon_code
- },
- },
- { new: true }
- )
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160151.js b/.history/routes/Coupon_20210503160151.js
deleted file mode 100644
index bed7eac..0000000
--- a/.history/routes/Coupon_20210503160151.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code: req.body.coupon_code
- },
- },
- { new: true })
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160427.js b/.history/routes/Coupon_20210503160427.js
deleted file mode 100644
index 317ccc8..0000000
--- a/.history/routes/Coupon_20210503160427.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- {_id:req.body._id},
- {
- $set: {
- coupon_code: req.body.coupon_code
- },
- },
- { new: true })
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160555.js b/.history/routes/Coupon_20210503160555.js
deleted file mode 100644
index 527ec89..0000000
--- a/.history/routes/Coupon_20210503160555.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- {_id:req.body._id},
- {
- $set: {
- coupon_code: req.body.coupon_code
- },
- },
- { new: true })
- .then((result) => {
- res.status(200).json({ message: req.body.coupon_code });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160634.js b/.history/routes/Coupon_20210503160634.js
deleted file mode 100644
index 317ccc8..0000000
--- a/.history/routes/Coupon_20210503160634.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- {_id:req.body._id},
- {
- $set: {
- coupon_code: req.body.coupon_code
- },
- },
- { new: true })
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160748.js b/.history/routes/Coupon_20210503160748.js
deleted file mode 100644
index 45f4363..0000000
--- a/.history/routes/Coupon_20210503160748.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code: req.body.coupon_code
- }
- },
- { new: true })
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160850.js b/.history/routes/Coupon_20210503160850.js
deleted file mode 100644
index 32442f3..0000000
--- a/.history/routes/Coupon_20210503160850.js
+++ /dev/null
@@ -1,51 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code: req.body.coupon_code
- }
- },
- { new: true },(err,result)=>{
- if(err){
- return res.status(422).json({error:err})
- }else{
- return res.status(200).json({ message: result });
- }
-
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160852.js b/.history/routes/Coupon_20210503160852.js
deleted file mode 100644
index 953dbcc..0000000
--- a/.history/routes/Coupon_20210503160852.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code: req.body.coupon_code
- }
- },
- { new: true },(err,result)=>{
- if(err){
- return res.status(422).json({error:err})
- }else{
- return res.status(200).json({ message: result });
- }
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160913.js b/.history/routes/Coupon_20210503160913.js
deleted file mode 100644
index 58a684a..0000000
--- a/.history/routes/Coupon_20210503160913.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $push: {
- coupon_code: req.body.coupon_code
- }
- },
- { new: true },(err,result)=>{
- if(err){
- return res.status(422).json({error:err})
- }else{
- return res.status(200).json({ message: result });
- }
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503160949.js b/.history/routes/Coupon_20210503160949.js
deleted file mode 100644
index 953dbcc..0000000
--- a/.history/routes/Coupon_20210503160949.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code: req.body.coupon_code
- }
- },
- { new: true },(err,result)=>{
- if(err){
- return res.status(422).json({error:err})
- }else{
- return res.status(200).json({ message: result });
- }
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503161113.js b/.history/routes/Coupon_20210503161113.js
deleted file mode 100644
index 42a9321..0000000
--- a/.history/routes/Coupon_20210503161113.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findOneAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code: req.body.coupon_code
- }
- },
- { new: true },(err,result)=>{
- if(err){
- return res.status(422).json({error:err})
- }else{
- return res.status(200).json({ message: result });
- }
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503161127.js b/.history/routes/Coupon_20210503161127.js
deleted file mode 100644
index 953dbcc..0000000
--- a/.history/routes/Coupon_20210503161127.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code: req.body.coupon_code
- }
- },
- { new: true },(err,result)=>{
- if(err){
- return res.status(422).json({error:err})
- }else{
- return res.status(200).json({ message: result });
- }
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503161157.js b/.history/routes/Coupon_20210503161157.js
deleted file mode 100644
index 45f4363..0000000
--- a/.history/routes/Coupon_20210503161157.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code: req.body.coupon_code
- }
- },
- { new: true })
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503161211.js b/.history/routes/Coupon_20210503161211.js
deleted file mode 100644
index 45f4363..0000000
--- a/.history/routes/Coupon_20210503161211.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code: req.body.coupon_code
- }
- },
- { new: true })
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503161322.js b/.history/routes/Coupon_20210503161322.js
deleted file mode 100644
index 7813150..0000000
--- a/.history/routes/Coupon_20210503161322.js
+++ /dev/null
@@ -1,48 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- const {coupon_code,percentage} =req.body;
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code,percentage
- }
- },
- { new: true })
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/.history/routes/Coupon_20210503161402.js b/.history/routes/Coupon_20210503161402.js
deleted file mode 100644
index 7813150..0000000
--- a/.history/routes/Coupon_20210503161402.js
+++ /dev/null
@@ -1,48 +0,0 @@
-const express = require("express");
-const router = express.Router();
-const mongoose = require("mongoose");
-const Coupon = mongoose.model("Coupon");
-
-router.get("/get-coupon", (req, res) => {
- Coupon.find().then((result) => {
- res.status(200).json({ coupon: result });
- console.log(result);
- });
-});
-
-router.post("/set-coupon", (req, res) => {
- const { percentage, coupon_code } = req.body;
- const coupon = new Coupon({
- coupon_code,
- percentage,
- });
- coupon.save().then((result) => {
- res.status(200).json({ message: "Coupon set Successfully" });
- });
-});
-
-router.delete("/delete-coupon", (req, res) => {
- Coupon.remove({ _id: req.body.id }).then((result) => {
- res.status(200).json({ message: "Coupon Deleted" });
- });
-});
-
-router.put("/update-coupon", (req, res) => {
- const {coupon_code,percentage} =req.body;
- Coupon.findByIdAndUpdate(
- req.body._id,
- {
- $set: {
- coupon_code,percentage
- }
- },
- { new: true })
- .then((result) => {
- res.status(200).json({ message: result });
- })
- .catch((err) => {
- console.log(err);
- });
-});
-
-module.exports = router;
diff --git a/app.js b/app.js
index 2b05bf2..180c92c 100644
--- a/app.js
+++ b/app.js
@@ -1,27 +1,26 @@
-const express = require('express') ;
-const mongoose = require('mongoose') ;
-const bodyparser = require('body-parser') ;
-const authRoute = require('./routes/auth') ;
-const profileRoute = require('./routes/profile') ;
-const paymentRoute = require('./routes/payment') ;
-const courseRoute = require('./routes/course') ;
-const adminRoute = require('./routes/admin') ;
-const couponRoute = require('./routes/Coupon') ;
-const queryRoute = require('./routes/query') ;
-const port=process.env.PORT || 5000;
+const express = require("express");
+const app = express();
+const mongoose = require("mongoose");
+const bodyparser = require("body-parser");
+const authRoute = require("./routes/auth");
+const profileRoute = require("./routes/profile");
+const paymentRoute = require("./routes/payment");
+const courseRoute = require("./routes/course");
+const couponRoute = require("./routes/Coupon");
+const queryRoute = require("./routes/query");
+const adminRoute = require("./routes/admin");
+const blogRouter = require("./routes/blog");
+const port = process.env.PORT || 5000;
+const cors = require("cors");
-const cors = require('cors') ;
//const passport = require('passport');
//const cookieSession = require('cookie-session') ;
//require('./passport-setup') ;
-const app = express() ;
+const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`;
-const MONGO_URI = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@cluster0.dqxva.mongodb.net/${process.env.MONGO_DEFAULT_DATABASE}?retryWrites=true&w=majority`
-
-app.use(cors()) ;
-app.use(bodyparser.json()) ;
-require('./models/Coupon')
+app.use(cors());
+app.use(bodyparser.json());
// app.use(cookieSession({
// name: 'test-session',
@@ -36,7 +35,7 @@ require('./models/Coupon')
// else
// {
// res.json({
-// error : "No user"
+// error : "No user"
// })
// }
// }
@@ -44,13 +43,12 @@ require('./models/Coupon')
// app.use(passport.initialize());
// app.use(passport.session());
-
// app.get('/failed' , (req , res) => {
// res.json({
// error : "You have failed to login"
// })
// })
-
+
// app.get('/' , (req , res) => {
// console.log('you are not logged in');
@@ -66,7 +64,7 @@ require('./models/Coupon')
// app.get('/auth/google',
// passport.authenticate('google', { scope: ['profile' , 'email'] }));
-// app.get('/auth/google/callback',
+// app.get('/auth/google/callback',
// passport.authenticate('google', { failureRedirect: '/failed' }),
// function(req, res) {
// res.redirect('/good');
@@ -78,27 +76,29 @@ require('./models/Coupon')
// res.redirect('/') ;
// })
-app.use(authRoute) ;
+mongoose.connect(MONGO_URI, {
+ useNewUrlParser: true,
+ useUnifiedTopology: true,
+ useFindAndModify: false,
+});
+let conn = mongoose.connection.on("connected", (res) => {
+ console.log("Connected to MongoDB");
+ app.listen(port, () => {
+ console.log("Server Listening on Port", port);
+ });
+});
+app.use(authRoute);
-app.use(profileRoute) ;
+app.use(profileRoute);
-app.use(paymentRoute) ;
+app.use(paymentRoute);
-app.use(courseRoute) ;
+app.use(courseRoute);
-app.use(adminRoute) ;
+app.use(adminRoute);
-app.use(couponRoute) ;
+app.use(couponRoute);
-app.use(queryRoute) ;
-
-mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true ,useFindAndModify:false}).
-then(result => {
- console.log('connected');
- app.listen(port,()=>{
- console.log("server is running on port",port);
- }) ;
-})
-.catch(err => {
- console.log(err);
-})
\ No newline at end of file
+app.use(blogRouter);
+
+app.use(queryRoute);
diff --git a/controllers/auth.js b/controllers/auth.js
index d61d12d..07a4a01 100644
--- a/controllers/auth.js
+++ b/controllers/auth.js
@@ -1,110 +1,427 @@
-const bcrypt = require('bcryptjs') ;
-const User = require('../models/User') ;
-const Student = require('../models/Student') ;
-const jwt = require('jsonwebtoken');
+const bcrypt = require("bcryptjs");
+const User = require("../models/User");
+const Student = require("../models/Student");
+const jwt = require("jsonwebtoken");
const JWT_secret = "Cantileverlabs";
+const messagebird = require("messagebird")("llVKD53ve6QRpbCKOHzWBADaS", null, [
+ "ENABLE_CONVERSATIONSAPI_WHATSAPP_SANDBOX",
+]);
+const nodemailer = require("nodemailer");
+const smtpTransport = require("nodemailer-smtp-transport");
+// const { OAuth2Client } = require("google-auth-library");
+// const client = new OAuth2Client(
+// "7810129519-dr5l4l1i7a7bh07sbvl49gd80coenphj.apps.googleusercontent.com"
+// );
-module.exports.Protected = async (req,res,next)=>{
- res.send("Hello User")
-}
-module.exports.postSignup = async (req , res , next) => {
- try
- { //we need firstName , lastName , email , password as input
- let firstName = req.body.firstName || " " ;
- let lastName = req.body.lastName || " " ;
- let email = req.body.email ;
- let password = req.body.password ;
- let user = await User.findOne({email:email}) ;
- if(user)
- {
- res.json({
- message:"User already exist" ,
- type:"error"
- })
- }
- else
- {
- const hashedPass = await bcrypt.hash(password , 12) ;
- user = new User({
- firstName : firstName ,
- lastName : lastName ,
- email : email ,
- password : hashedPass ,
- isAdmin : false
- }) ;
- user = await user.save() ;
- await Student.deleteOne({user:user._id}) ;
- let student = new Student({
- user:user._id
- })
- student = await student.save() ;
- user.student = student._id ;
- await user.save() ;
- res.json({
- message:"Successfully signed Up" ,
- type:"success"
- })
- }
- }
- catch(err)
- {
- console.log(err);
- }
-} ;
+// -------------------------------------------- mail transporter -----------------------------------------
+var transport = nodemailer.createTransport(
+ smtpTransport({
+ host: `${process.env.HOST}`, //`${process.env.HOST}`
+ port: 465,
+ auth: {
+ user: `${process.env.EMAIL}`, //`${process.env.EMAIL}`
+ pass: `${process.env.PASS}`, //`${process.env.PASS}`
+ },
+ })
+);
-module.exports.postSignin = async (req , res , next) => {
- try
- {
- //we need email and password as input
- let email = req.body.email ;
- let password = req.body.password ;
- let user = await User.findOne({email : email}) ;
- if(user)
- {
- const isMatched = await bcrypt.compare(password , user.password) ;
- if(isMatched)
- {
- const token = jwt.sign({_id:user._id},JWT_secret)
- if(!user.numLoggedIn)
- {
- user.numLoggedIn = 0 ;
- }
- user.numLoggedIn = user.numLoggedIn + 1 ;
- res.json(
- {
- token:token ,
- isAdmin : user.isAdmin
- }
- )
- await user.save() ;
- }
- else
- {
- res.json({
- message:"email and password doesn't match" ,
- type:"error"
- })
- }
- }
- else
- {
- res.json({
- message:"No user with this email exists" ,
- type : "error"
- })
- }
- }
- catch(err)
- {
- console.log(err);
- }
-}
+// -------------------------------------------- mail transporter -----------------------------------------
-module.exports.checkProtected = (req , res , next) => {
- console.log(req.user);
- res.json({
- message:"Protected" ,
- user : req.user
- })
-}
\ No newline at end of file
+module.exports.Protected = async (req, res, next) => {
+ res.send("Hello User");
+};
+module.exports.postSignup = async (req, res, next) => {
+ try {
+ //we need firstName , lastName , email , password as input
+ let firstName = req.body.firstName || " ";
+ let lastName = req.body.lastName || " ";
+ const { sending_company_email, email, password, subject } = req.body;
+ let user = await User.findOne({ email: email });
+ if (user) {
+ res.json({
+ message: "User already exist",
+ type: "error",
+ });
+ } else {
+ const email_otp = Math.floor(100000 + Math.random() * 900000);
+ console.log("otp", email_otp);
+ const hashedPass = await bcrypt.hash(password, 12);
+ user = new User({
+ firstName: firstName,
+ lastName: lastName,
+ email: email,
+ password: hashedPass,
+ isAdmin: false,
+ // email_otp,
+ });
+ user = await user.save();
+ await Student.deleteOne({ user: user._id });
+ let student = new Student({
+ user: user._id,
+ });
+ student = await student.save();
+ user.student = student._id;
+ await user.save();
+ // const message = {
+ // from: `${sending_company_email}`, // Sender address
+ // to: `${email}`, // List of recipients
+ // subject: `${subject}`, // Subject line
+ // html: '', // design html for email message.
+ // };
+ // transport.sendMail(message, function (err, info) {
+ // if (err) {
+ // console.log(err);
+ // } else {
+ // console.log(info);
+ // }
+ // });
+ res.json({
+ message: "You Are Registered, Please Login",
+ type: "success",
+ });
+ }
+ } catch (err) {
+ console.log(err);
+ }
+};
+
+module.exports.verfiyemail = async (req, res, next) => {
+ const { email, otp } = req.body;
+ try {
+ let user = await User.findOne({ email: email });
+ if (user) {
+ const isMatched = await (user.email_otp == otp ? true : false);
+ if (isMatched) {
+ if (!user.isVerified) {
+ user.isVerified = true;
+ await user.save();
+ res.json({
+ message: "User Verified, Please Login",
+ });
+ } else {
+ res.json({
+ message: "User Already Verified, Please Login",
+ });
+ }
+ } else {
+ res.json({
+ message: "OTP Doesn't Matched!",
+ type: "error",
+ });
+ }
+ } else {
+ res.json({
+ message: "No user with this email exists",
+ type: "error",
+ });
+ }
+ } catch {
+ (err) => {
+ console.log(err);
+ };
+ }
+};
+
+module.exports.postSignin = async (req, res, next) => {
+ try {
+ //we need email and password as input
+ let email = req.body.email;
+ let password = req.body.password;
+ let user = await User.findOne({ email: email });
+ if (user) {
+ const isMatched = await bcrypt.compare(password, user.password);
+ if (isMatched) {
+ const token = jwt.sign({ _id: user._id }, JWT_secret);
+ res.json({
+ token: token,
+ });
+ } else {
+ res.json({
+ message: "email and password doesn't match",
+ type: "error",
+ });
+ }
+ } else {
+ res.json({
+ message: "No user with this email exists",
+ type: "error",
+ });
+ }
+ } catch (err) {
+ console.log(err);
+ }
+};
+// Gmail Login Starts.
+// -----------------------------------------------------------------------------------------------
+
+//1026548376782-5p5tjck8ffhan9l1ajhv6orr87dfkrrf.apps.googleusercontent.com
+
+// module.exports.googleSignIn = async (req, res, next) => {
+// const { tokenId } = req.params;
+// console.log("TokenId from frontend", tokenId);
+// client
+// .verifyIdToken({
+// idToken: tokenId,
+// audience:
+// "7810129519-dr5l4l1i7a7bh07sbvl49gd80coenphj.apps.googleusercontent.com",
+// })
+// .then((response) => {
+// console.log(response.payload);
+// });
+// };
+
+// Phone verification Starts.
+// -----------------------------------------------------------------------------------------------
+
+module.exports.sendOTP = (req, res, next) => {
+ //uNNYosMopvvCW9RTR1tRWJmYC test
+ //llVKD53ve6QRpbCKOHzWBADaS live
+ const { phoneNumber } = req.body;
+ try {
+ if (!phoneNumber) {
+ res.status(422).json({ message: "Please Add All Required Fields" });
+ return;
+ } else {
+ messagebird.verify.create(
+ phoneNumber,
+ {
+ template: "Your verification code is %token",
+ },
+ function (err, response) {
+ if (err) {
+ console.log(err);
+ res.status(422).json({ message: err.errors[0].description });
+ } else {
+ console.log(response);
+ res.json({ id: response.id });
+ }
+ }
+ );
+ }
+ } catch (err) {
+ console.log(err);
+ }
+};
+
+module.exports.getOTP = (req, res, next) => {
+ try {
+ const { id, otp } = req.body;
+ messagebird.verify.verify(id, otp, function (err, response) {
+ if (err) {
+ console.log({ error: err.errors[0].description, id: id });
+ res.json({ error: err.errors[0].description, id: id });
+ } else {
+ console.log(response);
+ res.json({ message: "Code Verified" });
+ }
+ });
+ } catch (err) {
+ console.log(err);
+ }
+};
+// Phone verification End.
+// -----------------------------------------------------------------------------------------------
+
+// -----------------------------------------------------------------------------------------------
+// Forgot password Starts
+
+module.exports.forgotpassword = async (req, res, next) => {
+ const { email, link, sending_company_email, subject } = req.body;
+ //link = https://cantileverlabs.herokuapp.com/resetpassword/:id/:token
+ try {
+ await User.findOne({ email }).then((user) => {
+ if (!user) {
+ res.status(404).json({ error: "User not found with this Email" });
+ return;
+ } else {
+ const payload = {
+ email: user.email,
+ _id: user._id,
+ };
+ const secret = JWT_secret + user.password;
+ const token = jwt.sign(payload, secret, { expiresIn: "10m" });
+ User.findByIdAndUpdate(user._id, {
+ $set: { passwordResetToken: token },
+ })
+ .then((data) => {
+ const reset_link = `${link}/${user._id}/${token}`;
+ const message = {
+ from: `${sending_company_email}`, // Sender address
+ to: `${user.email}`, // List of recipients
+ subject: `${subject}`, // Subject line
+ html: `
+
+
+
+
+
+ Reset Password Email Template
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ You have
+ requested to reset your password
+
+
+ We cannot simply send you your old password. A unique link to reset your
+ password has been generated for you. To reset your password, click the
+ following link and follow the instructions.
+
+ Reset
+ Password
+
+
+ Facing any issue? Write us at
+
info@cantileverlabs.com
+
+
+
+ Privacy Policy
+Terms Of Use
+Contact Us
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
copyright 2018 Cantilever Labs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `, // design html for email message.
+ };
+ transport.sendMail(message, function (err, info) {
+ if (err) {
+ console.log(err);
+ } else {
+ console.log(info);
+ }
+ });
+ res.status(200).json({
+ message: "Link is Active for 10 mins",
+ reset_link,
+ });
+ })
+ .catch((err) => {
+ console.log(err);
+ });
+ }
+ });
+ } catch {
+ (error) => {
+ console.log("Error from forgot pass", error);
+ };
+ }
+};
+module.exports.resetpassword = async (req, res, next) => {
+ const { _id, token } = req.params;
+ const { password } = req.body;
+ try {
+ let user = await User.findById({ _id });
+ if (!user) {
+ res.json({ error: "User not Found or WrongId" });
+ return;
+ } else {
+ const secret = JWT_secret + user.password;
+ const user_token = user.passwordResetToken;
+ const payload = jwt.verify(token, secret);
+ const hashedPass = await bcrypt.hash(password, 12);
+ if (token == user_token) {
+ user.password = hashedPass;
+ await user
+ .save()
+ .then((ok) => {
+ res.header("Access-Control-Allow-Origin", "*");
+ res.header("Access-Control-Allow-Headers", "*");
+ res.json({ message: "Password Updated!" });
+ })
+ .catch((err) => {
+ console.log("Error in save", err);
+ });
+ } else {
+ res.status(422).json({ error: "Either Token not found or Expired!" });
+ return;
+ }
+ }
+ } catch {
+ (err) => {
+ console.log("error from try catch resetpass", err);
+ };
+ }
+};
+
+// Forgot password Ends
+
+// Email verification Ends
+
+// -----------------------------------------------------------------------------------------------
+
+module.exports.checkProtected = (req, res, next) => {
+ console.log(req.user);
+ res.json({
+ message: "Protected",
+ user: req.user,
+ });
+};
diff --git a/controllers/blog.js b/controllers/blog.js
new file mode 100644
index 0000000..f731fde
--- /dev/null
+++ b/controllers/blog.js
@@ -0,0 +1,121 @@
+const { log } = require("handlebars");
+const Blog = require("../models/Blog");
+const User = require("../models/User");
+
+module.exports.getAllBlogs = async (req, res, next) => {
+ try {
+ let blog = await Blog.find();
+ if (blog) {
+ res.json({ blogs: blog });
+ } else {
+ console.log("Error in Blog", blog);
+ return;
+ }
+ } catch {
+ (err) => {
+ res.status(422).json({ error: err });
+ };
+ }
+};
+
+module.exports.getSingleBlog = async (req, res, next) => {
+ try {
+ const { id } = req.params;
+ let blog = await Blog.findById({ _id: id });
+ if (blog) {
+ res.json({ blog });
+ } else {
+ res.json({ error: "Blog Not Found" });
+ }
+ } catch {
+ (err) => {
+ console.log("Error", err);
+ };
+ }
+};
+
+module.exports.addBlog = async (req, res, next) => {
+ const { _id, title, body, author } = req.body; //_id is of user from frontend who is adding the blog.
+ try {
+ console.log("Image File", req.file);
+ let user = await User.findById({ _id });
+ if (!title) {
+ res.status(422).json({ message: "Please, Add Title of the Blog" });
+ return;
+ }
+ if (!body) {
+ res.status(422).json({ message: "Please, Add Body of the Blog" });
+ return;
+ }
+ if (user) {
+ let blog = new Blog({
+ title,
+ body,
+ image: req.file.location,
+ date: new Date().toISOString(),
+ author,
+ });
+ await blog.save();
+ res.json({ message: "Blog Saved Successfully!" });
+ } else {
+ res.status.json({ error: "User Doesn't Exists" });
+ return;
+ }
+ } catch {
+ (err) => {
+ res.status(422).json({ error: err });
+ };
+ }
+};
+
+module.exports.deleteBlog = async (req, res, next) => {
+ const { _id } = req.body;
+ try {
+ let blog = await Blog.find({ _id });
+ if (blog) {
+ await Blog.findByIdAndDelete(_id);
+ res.json({ message: "Blog Deleted!" });
+ } else {
+ res.status(404).json({ message: "Blog Not Found" });
+ return;
+ }
+ } catch {
+ (err) => {
+ res.status(422).json({ error: err });
+ };
+ }
+};
+
+module.exports.editBlog = async (req, res, next) => {
+ const { _id, body, title, image } = req.body;
+
+ try {
+ if (!title) {
+ res.status(422).json({ message: "Please, Add the Title of the Blog." });
+ return;
+ }
+ if (!body) {
+ res.status(422).json({ message: "Please, Add the Body of the Blog." });
+ return;
+ }
+ if (!image) {
+ res.status(422).json({ message: "Please, Add the Image of the Blog." });
+ return;
+ }
+ let blog = await Blog.findById({ _id });
+ if (blog) {
+ blog.title = title;
+ blog.body = body;
+ blog.image = image;
+ blog = await blog.save();
+ res.json({ message: "Blog Updated!" });
+ } else {
+ res.status(422).json({ error: "Blog Doesn't Found" });
+ return;
+ }
+ } catch {
+ (err) => {
+ res.status(422).json({ error: err });
+ };
+ }
+};
diff --git a/controllers/coupon.js b/controllers/coupon.js
index 2220624..238e1ed 100644
--- a/controllers/coupon.js
+++ b/controllers/coupon.js
@@ -1,64 +1,52 @@
const Coupon = require("../models/Coupon");
-module.exports.getAllCoupons = async (req , res , next) => {
- try
- {
- const coupons = await Coupon.find() ;
- console.log(coupons) ;
- res.json({
- coupons : coupons
- }) ;
- }
- catch(err)
- {
- console.log(err) ;
- }
-}
+module.exports.getAllCoupons = async (req, res, next) => {
+ try {
+ const coupons = await Coupon.find();
+ console.log(coupons);
+ res.json({
+ coupons: coupons,
+ });
+ } catch (err) {
+ console.log(err);
+ }
+};
-module.exports.addCoupon = async (req , res , next) => {
- try
- {
- const couponCode = req.body.couponCode ;
- const percentage = req.body.percentage ;
- const numAllowed = req.body.numAllowed ;
-
- let coupon = await Coupon.findOne({couponCode : couponCode}) ;
- if(coupon)
- {
- res.json({
- error:"coupon already Exist"
- })
- }
- else
- {
- let coupon = new Coupon({
- couponCode : couponCode ,
- percentage : percentage ,
- numAllowed : numAllowed
- }) ;
- coupon = await coupon.save() ;
- res.json({
- message: "Created Successfully"
- })
- }
- }
- catch(err)
- {
- console.log(err);
- }
-}
+module.exports.addCoupon = async (req, res, next) => {
+ try {
+ const couponCode = req.body.couponCode;
+ const percentage = req.body.percentage;
+ const numAllowed = req.body.numAllowed;
-module.exports.deleteCoupon = async (req , res, next) => {
- try
- {
- const couponCode = req.body.couponCode ;
- await Coupon.deleteOne({couponCode : couponCode}) ;
- res.json({
- message: "Deleted Successfully"
- })
+ let coupon = await Coupon.findOne({ couponCode: couponCode });
+ if (coupon) {
+ res.json({
+ error: "Coupon already Exist",
+ });
+ } else {
+ let coupon = new Coupon({
+ couponCode: couponCode,
+ percentage: percentage,
+ numAllowed: numAllowed,
+ });
+ coupon = await coupon.save();
+ res.json({
+ message: "Created Successfully",
+ });
}
- catch(err)
- {
- console.log(err);
- }
-}
\ No newline at end of file
+ } catch (err) {
+ console.log(err);
+ }
+};
+
+module.exports.deleteCoupon = async (req, res, next) => {
+ try {
+ const couponCode = req.body.couponCode;
+ await Coupon.deleteOne({ couponCode: couponCode });
+ res.json({
+ message: "Deleted Successfully",
+ });
+ } catch (err) {
+ console.log(err);
+ }
+};
diff --git a/controllers/payment.js b/controllers/payment.js
index 394a24f..57ff4fa 100644
--- a/controllers/payment.js
+++ b/controllers/payment.js
@@ -9,8 +9,8 @@ const { getAllCoupons } = require('./coupon');
//test credentials of razorpay
const instance = new razorpay({
- key_id : 'rzp_test_tLx9c6GiWjKcsl' ,
- key_secret : '4Cf52d6C3amkptdRLCTdC2sT'
+ key_id : process.env.KEY_ID ,
+ key_secret : process.env.KEY_SECRET
}) ;
module.exports.postVerify =async (req , res , next) => {
@@ -108,6 +108,9 @@ module.exports.postRazorpay = async (req , res , next) => {
const courseId = req.body.courseId ;
const couponCode = req.body.couponCode ;
const userId = req.user._id ;
+
+ console.log("Course ID =" ,courseId ," Coupon code =" , couponCode ," user ID =" , userId) ;
+
let user = await User.findById(userId) ;
let student =await Student.findById(user.student) ;
let course =await CourseType.findById(courseId) ;
diff --git a/controllers/profile.js b/controllers/profile.js
index 6017015..662b62c 100644
--- a/controllers/profile.js
+++ b/controllers/profile.js
@@ -1,103 +1,118 @@
-const Student = require('../models/Student') ;
-const User = require('../models/User') ;
+const Student = require("../models/Student");
+const User = require("../models/User");
//function for trimming strings
-function trim_arr(arr)
-{
- let newArr = arr.map(a => {
- return a.trim() ;
- })
- return newArr ;
+function trim_arr(arr) {
+ let newArr = arr.map((a) => {
+ return a.trim();
+ });
+ return newArr;
}
-module.exports.getProfile =async (req , res , next) => {
- try
- {
- //we can get the profile of the user including the courses which user has bought
- const userId = req.user._id ;
- let user = await User.findById(userId) ;
- let student = await Student.findOne({user : userId}).populate("courses.basicInfo") ;
- res.json({
- user:user ,
- student:student
- }) ;
- }
- catch(err)
- {
- res.json({
- error:err
- }) ;
- }
-}
+module.exports.getProfile = async (req, res, next) => {
+ try {
+ //we can get the profile of the user including the courses which user has bought
+ const userId = req.user._id;
+ let user = await User.findById(userId);
+ let student = await Student.findOne({ user: userId }).populate(
+ "courses.basicInfo"
+ );
+ res.json({
+ user: user,
+ student: student,
+ });
+ } catch (err) {
+ res.json({
+ error: err,
+ });
+ }
+};
-module.exports.postProfile = async (req , res , next) => {
- try
- {
- //Here we are updating the profile of the user
- const userId = req.user._id ;
- let interests = req.body.interests ;
- let projects = req.body.projects ;
- let yearofgrad = req.body.yearofgrad ;
- let phoneNumber = req.body.phoneNumber ;
- let institute = req.body.institute ;
- let skills = req.body.skills ;
+module.exports.postProfile = async (req, res, next) => {
+ try {
+ //Here we are updating the profile of the user
+ const userId = req.user._id;
+ let interests = req.body.interests;
+ let projects = req.body.projects;
+ let yearofgrad = req.body.yearofgrad;
+ let phoneNumber = req.body.phoneNumber;
+ let institute = req.body.institute;
+ let skills = req.body.skills;
- let student = await Student.findOne({user : userId}) ;
- if(interests)
- {
- student.interests = trim_arr(interests.split(",")) ;
- }
- if(projects)
- {
- student.projects = trim_arr(projects.split(",")) ;
- }
- if(skills)
- {
- student.skills = trim_arr(skills.split(",")) ;
- }
- if(yearofgrad)
- {
- student.yearofgrad = yearofgrad.trim() ;
- }
- if(phoneNumber)
- {
- student.phoneNumber = phoneNumber.trim() ;
- }
- if(institute)
- {
- student.institute = institute.trim() ;
- }
- await student.save() ;
+ let student = await Student.findOne({ user: userId });
+ if (interests) {
+ student.interests = trim_arr(interests.split(","));
+ }
+ if (projects) {
+ student.projects = trim_arr(projects.split(","));
+ }
+ if (skills) {
+ student.skills = trim_arr(skills.split(","));
+ }
+ if (yearofgrad) {
+ student.yearofgrad = yearofgrad.trim();
+ }
+ if (phoneNumber) {
+ student.phoneNumber = phoneNumber.trim();
+ }
+ if (institute) {
+ student.institute = institute.trim();
+ }
+ await student.save();
- res.json({
- message:"Updated profile"
- })
- }
- catch(err)
- {
- console.log(err);
- res.json({
- error:err
- }) ;
- }
-}
+ res.json({
+ message: "Updated profile",
+ });
+ } catch (err) {
+ console.log(err);
+ res.json({
+ error: err,
+ });
+ }
+};
-module.exports.deleteUser = async (req , res , next) => {
- //here we are deleting the user
- const userId = req.user._id ;
- try
- {
- await Student.deleteOne({user:userId}) ;
- await User.deleteOne({_id : userId}) ;
- res.json({
- message:"Successfully deleted"
- }) ;
+module.exports.deleteUser = async (req, res, next) => {
+ //here we are deleting the user
+ const userId = req.user._id;
+ try {
+ await Student.deleteOne({ user: userId });
+ await User.deleteOne({ _id: userId });
+ res.json({
+ message: "Successfully deleted",
+ });
+ } catch (err) {
+ console.log(err);
+ res.json({
+ error: err,
+ });
+ }
+};
+
+module.exports.editProfile = async (req, res, next) => {
+ const { _id, newFirstName, newLastName, email } = req.body;
+ try {
+ if (_id) {
+ let user = await User.findById({ _id });
+ console.log("User", user);
+ if (user) {
+ user.firstName = newFirstName;
+ user.lastName = newLastName;
+ user.email = email;
+ user = await user.save();
+ res.json({ message: "Profile Updated!" });
+ } else {
+ res.status(422).json({ error: "User Not Found with that Id" });
+ return;
+ }
+ } else {
+ res.status(422).json({ error: "User Id is Must" });
+ return;
}
- catch(err)
- {
- console.log(err);
- res.json({
- error:err
- }) ;
- }
-}
\ No newline at end of file
+ } catch {
+ (err) => {
+ console.log("error", err);
+ res.status(422).json({ error: err });
+ return;
+ };
+ }
+};
diff --git a/controllers/query.js b/controllers/query.js
index c4eca85..8dc4c39 100644
--- a/controllers/query.js
+++ b/controllers/query.js
@@ -3,11 +3,12 @@ const Query = require('../models/query') ;
module.exports.addQuery = async (req , res , next)=> {
try
{
- let firstName = req.body.firstName || " " ;
- let lastName = req.body.lastName || " " ;
+ let fullName = req.body.fullName || " " ;
+ let phoneNumber = req.body.phoneNumber ;
let email = req.body.email ;
let query = req.body.query || " " ;
let other = req.body.other || false ;
+ let graduationYear = req.body.graduationYear ;
let queryModel = await Query.findOne({email:email , query:query}) ;
if(queryModel)
{
@@ -22,11 +23,12 @@ module.exports.addQuery = async (req , res , next)=> {
else
{
queryModel = new Query ({
- firstName : firstName ,
- lastName : lastName ,
+ fullName : fullName ,
+ phoneNumber : phoneNumber ,
email : email,
query : query ,
numAsked : 1 ,
+ graduationYear : graduationYear ,
other : other
}) ;
await queryModel.save() ;
diff --git a/models/Blog.js b/models/Blog.js
new file mode 100644
index 0000000..7ebbcc7
--- /dev/null
+++ b/models/Blog.js
@@ -0,0 +1,25 @@
+const mongoose = require("mongoose");
+
+const blogSchema = new mongoose.Schema({
+ title: {
+ type: String,
+ require: true,
+ },
+ author: { required: true, type: String },
+ date: {
+ type: Date,
+ },
+ image: {
+ type: Object,
+ default: "",
+ },
+ body: {
+ type: String,
+ required: true,
+ },
+ isBookMarked: {
+ type: Boolean,
+ default: false,
+ },
+});
+module.exports = mongoose.model("Blog", blogSchema);
diff --git a/models/Coupon.js b/models/Coupon.js
index fc50617..08963e3 100644
--- a/models/Coupon.js
+++ b/models/Coupon.js
@@ -1,17 +1,21 @@
-const mongoose=require('mongoose')
-const CouponSchema=new mongoose.Schema({
- couponCode:{
- type:String,
- required:true
- },
- percentage:{
- type:Number ,
- required:true
- },
- numAllowed:{
- type:Number ,
- required:true
- }
-})
+const mongoose = require("mongoose");
+const CouponSchema = new mongoose.Schema({
+ couponCode: {
+ type: String,
+ required: true,
+ },
+ percentage: {
+ type: String,
+ required: true,
+ },
+ remainingTimes: {
+ type: Number,
+ required: true,
+ },
+ numAllowed: {
+ type: Number,
+ required: true,
+ },
+});
-module.exports = mongoose.model('Coupon' , CouponSchema) ;
\ No newline at end of file
+module.exports = mongoose.model("Coupon", CouponSchema);
diff --git a/models/User.js b/models/User.js
index d454439..116ec6d 100644
--- a/models/User.js
+++ b/models/User.js
@@ -1,40 +1,43 @@
-const mongoose = require('mongoose') ;
-
-const Schema = mongoose.Schema ;
+const mongoose = require("mongoose");
+const crypto = require("crypto");
+const Schema = mongoose.Schema;
const userSchema = new Schema({
- firstName : {
- type :String ,
- required : true
- } ,
- lastName : {
- type:String ,
- required: true
- } ,
- email : {
- type:String ,
- required: true
- } ,
- password : {
- type : String
- } ,
- googleId : {
- type : String
- } ,
- student : {
- type : mongoose.Types.ObjectId ,
- ref: 'Student'
- } ,
- isAdmin : {
- type : Boolean
- } ,
- numLoggedIn : {
- type : Number
- } ,
- clicked : {
- type : Object
- }
- //need to add isAdmin
-}) ;
+ firstName: {
+ type: String,
+ required: true,
+ },
+ lastName: {
+ type: String,
+ required: true,
+ },
+ email: {
+ type: String,
+ required: true,
+ },
+ password: {
+ type: String,
+ },
+ googleId: {
+ type: String,
+ },
+ student: {
+ type: mongoose.Types.ObjectId,
+ ref: "Student",
+ },
+ isAdmin: {
+ type: Boolean,
+ },
+ email_otp: {
+ type: String,
+ },
+ isVerified: {
+ type: Boolean,
+ default: false,
+ },
+ passwordResetToken: String,
+ passwordResetExpires: Date,
+ //need to add isAdmin
+});
-module.exports = mongoose.model("User" , userSchema) ;
\ No newline at end of file
+module.exports = mongoose.model("User", userSchema);
diff --git a/models/query.js b/models/query.js
index 03cceaa..1da09ba 100644
--- a/models/query.js
+++ b/models/query.js
@@ -3,13 +3,13 @@ const mongoose = require('mongoose') ;
const Schema = mongoose.Schema ;
const querySchema = new Schema({
- firstName : {
+ fullName : {
type :String ,
required : true
} ,
- lastName : {
- type:String ,
- required: true
+ phoneNumber : {
+ type : String ,
+ required : true
} ,
email : {
type:String ,
@@ -26,6 +26,10 @@ const querySchema = new Schema({
other : {
type : Boolean ,
require : true
+ } ,
+ graduationYear : {
+ type : Number ,
+ required :true
}
}) ;
diff --git a/nodemon.json b/nodemon.json
index 4a040aa..3eff58c 100644
--- a/nodemon.json
+++ b/nodemon.json
@@ -2,6 +2,11 @@
"env" : {
"MONGO_USER":"Cantilever",
"MONGO_PASSWORD" :"Cantilever" ,
- "MONGO_DEFAULT_DATABASE" :"myFirstDatabase"
+ "MONGO_DEFAULT_DATABASE" :"myFirstDatabase" ,
+ "KEY_ID" : "rzp_live_aD9j5WLBGtdQxt" ,
+ "KEY_SECRET" : "o9BDCwYcpNcHyFL5yjiY7OWG" ,
+ "EMAIL" : "AKIA2G7743RRTZMVXE3X" ,
+ "HOST" : "email-smtp.us-east-1.amazonaws.com" ,
+ "PASS" : "BJSjV3jArJfsnk1LhFc/hUmisEyEtbLNGgrRbv0noh8c"
}
}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index e4d84ad..91418b9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,2689 +1,362 @@
{
"name": "cantilever-labs",
"version": "1.0.0",
- "lockfileVersion": 2,
+ "lockfileVersion": 1,
"requires": true,
- "packages": {
- "": {
- "name": "cantilever-labs",
- "version": "1.0.0",
- "license": "ISC",
- "dependencies": {
- "bcryptjs": "^2.4.3",
- "body-parser": "^1.19.0",
- "cookie-session": "^1.4.0",
- "cors": "^2.8.5",
- "crypto": "^1.0.1",
- "express": "^4.17.1",
- "jsonwebtoken": "^8.5.1",
- "mongoose": "^5.12.2",
- "passport": "^0.4.1",
- "passport-google-oauth": "^2.0.0",
- "razorpay": "^2.0.6",
- "shortid": "^2.2.16"
- },
- "devDependencies": {
- "nodemon": "^2.0.7"
- }
- },
- "node_modules/@sindresorhus/is": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
- "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@szmarczak/http-timer": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
- "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
- "dev": true,
- "dependencies": {
- "defer-to-connect": "^1.0.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@types/bson": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz",
- "integrity": "sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/mongodb": {
- "version": "3.6.10",
- "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.10.tgz",
- "integrity": "sha512-BkwAHFiZSSWdTIqbUVGmgvIsiXXjqAketeK7Izy7oSs6G3N8Bn993tK9eq6QEovQDx6OQ2FGP2KWDDxBzdlJ6Q==",
- "dependencies": {
- "@types/bson": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/node": {
- "version": "14.14.35",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz",
- "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag=="
- },
- "node_modules/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
- },
- "node_modules/accepts": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
- "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
- "dependencies": {
- "mime-types": "~2.1.24",
- "negotiator": "0.6.2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "node_modules/ansi-align": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
- "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==",
- "dev": true,
- "dependencies": {
- "string-width": "^3.0.0"
- }
- },
- "node_modules/ansi-align/node_modules/string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
- "dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
- },
- "node_modules/asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
- },
- "node_modules/asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "dependencies": {
- "safer-buffer": "~2.1.0"
- }
- },
- "node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
- "node_modules/aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/aws4": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
- "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
- },
- "node_modules/balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "node_modules/base64url": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz",
- "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "dependencies": {
- "tweetnacl": "^0.14.3"
- }
- },
- "node_modules/bcryptjs": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
- "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
- },
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/bl": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz",
- "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==",
- "dependencies": {
- "readable-stream": "^2.3.5",
- "safe-buffer": "^5.1.1"
- }
- },
- "node_modules/bluebird": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
- "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
- },
- "node_modules/body-parser": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
- "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
- "dependencies": {
- "bytes": "3.1.0",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.7.0",
- "raw-body": "2.4.0",
- "type-is": "~1.6.17"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/boxen": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
- "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==",
- "dev": true,
- "dependencies": {
- "ansi-align": "^3.0.0",
- "camelcase": "^5.3.1",
- "chalk": "^3.0.0",
- "cli-boxes": "^2.2.0",
- "string-width": "^4.1.0",
- "term-size": "^2.1.0",
- "type-fest": "^0.8.1",
- "widest-line": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/bson": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz",
- "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==",
- "engines": {
- "node": ">=0.6.19"
- }
- },
- "node_modules/buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
- },
- "node_modules/bytes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/cacheable-request": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
- "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
- "dev": true,
- "dependencies": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^3.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^4.1.0",
- "responselike": "^1.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cacheable-request/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cacheable-request/node_modules/lowercase-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
- "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
- },
- "node_modules/chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/chalk/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/chalk/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/chokidar": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
- "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
- "dev": true,
- "dependencies": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.5.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.1"
- }
- },
- "node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
- },
- "node_modules/cli-boxes": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
- "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/clone-response": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
- "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
- "dev": true,
- "dependencies": {
- "mimic-response": "^1.0.0"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "node_modules/configstore": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
- "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
- "dev": true,
- "dependencies": {
- "dot-prop": "^5.2.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^3.0.0",
- "unique-string": "^2.0.0",
- "write-file-atomic": "^3.0.0",
- "xdg-basedir": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/content-disposition": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
- "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
- "dependencies": {
- "safe-buffer": "5.1.2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
- "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-session": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/cookie-session/-/cookie-session-1.4.0.tgz",
- "integrity": "sha512-0hhwD+BUIwMXQraiZP/J7VP2YFzqo6g4WqZlWHtEHQ22t0MeZZrNBSCxC1zcaLAs8ApT3BzAKizx9gW/AP9vNA==",
- "dependencies": {
- "cookies": "0.8.0",
- "debug": "2.6.9",
- "on-headers": "~1.0.2"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
- },
- "node_modules/cookies": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz",
- "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==",
- "dependencies": {
- "depd": "~2.0.0",
- "keygrip": "~1.1.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/cookies/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/core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "node_modules/cors": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
- "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
- "dependencies": {
- "object-assign": "^4",
- "vary": "^1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/crypto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
- "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig=="
- },
- "node_modules/crypto-random-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
- "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dependencies": {
- "assert-plus": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/decompress-response": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
- "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
- "dev": true,
- "dependencies": {
- "mimic-response": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "dev": true,
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/defer-to-connect": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
- "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
- "dev": true
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/denque": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
- "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
- },
- "node_modules/dot-prop": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
- "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
- "dev": true,
- "dependencies": {
- "is-obj": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/duplexer3": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
- "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
- "dev": true
- },
- "node_modules/ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "dependencies": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "node_modules/ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
- },
- "node_modules/emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/escape-goat": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
- "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express": {
- "version": "4.17.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
- "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
- "dependencies": {
- "accepts": "~1.3.7",
- "array-flatten": "1.1.1",
- "body-parser": "1.19.0",
- "content-disposition": "0.5.3",
- "content-type": "~1.0.4",
- "cookie": "0.4.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "~1.1.2",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.5",
- "qs": "6.7.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.1.2",
- "send": "0.17.1",
- "serve-static": "1.14.1",
- "setprototypeof": "1.1.1",
- "statuses": "~1.5.0",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "node_modules/extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "engines": [
- "node >=0.6.0"
- ]
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 0.12"
- }
- },
- "node_modules/forwarded": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
- "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dependencies": {
- "assert-plus": "^1.0.0"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/global-dirs": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz",
- "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==",
- "dev": true,
- "dependencies": {
- "ini": "1.3.7"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/got": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
- "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
- "dev": true,
- "dependencies": {
- "@sindresorhus/is": "^0.14.0",
- "@szmarczak/http-timer": "^1.1.2",
- "cacheable-request": "^6.0.0",
- "decompress-response": "^3.3.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^4.1.0",
- "lowercase-keys": "^1.0.1",
- "mimic-response": "^1.0.1",
- "p-cancelable": "^1.0.0",
- "to-readable-stream": "^1.0.0",
- "url-parse-lax": "^3.0.0"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
- "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
- "dev": true
- },
- "node_modules/har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "dependencies": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has-yarn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
- "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/http-cache-semantics": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
- "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
- "dev": true
- },
- "node_modules/http-errors": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dependencies": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- },
- "engines": {
- "node": ">=0.8",
- "npm": ">=1.3.7"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ignore-by-default": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
- "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
- "dev": true
- },
- "node_modules/import-lazy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
- "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "node_modules/ini": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
- "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
- "dev": true
- },
- "node_modules/ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dev": true,
- "dependencies": {
- "ci-info": "^2.0.0"
- },
- "bin": {
- "is-ci": "bin.js"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-installed-globally": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
- "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==",
- "dev": true,
- "dependencies": {
- "global-dirs": "^2.0.1",
- "is-path-inside": "^3.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-npm": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz",
- "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
- "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
- },
- "node_modules/is-yarn-global": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
- "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
- "dev": true
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "node_modules/isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
- "node_modules/jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
- },
- "node_modules/json-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
- "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
- "dev": true
- },
- "node_modules/json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
- },
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
- "node_modules/jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "dependencies": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=4",
- "npm": ">=1.4.28"
- }
- },
- "node_modules/jsonwebtoken/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/jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "engines": [
- "node >=0.6.0"
- ],
- "dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "node_modules/jwa": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
- "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
- "dependencies": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/jws": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
- "dependencies": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/kareem": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz",
- "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ=="
- },
- "node_modules/keygrip": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
- "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
- "dependencies": {
- "tsscmp": "1.0.6"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/keyv": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
- "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
- "dev": true,
- "dependencies": {
- "json-buffer": "3.0.0"
- }
- },
- "node_modules/latest-version": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
- "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
- "dev": true,
- "dependencies": {
- "package-json": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "node_modules/lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
- },
- "node_modules/lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
- },
- "node_modules/lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
- },
- "node_modules/lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
- },
- "node_modules/lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
- },
- "node_modules/lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
- },
- "node_modules/lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
- },
- "node_modules/lowercase-keys": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
- "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "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==",
- "dev": true,
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "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==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/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
- },
- "node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.46.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
- "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.29",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
- "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
- "dependencies": {
- "mime-db": "1.46.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-response": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
- "dev": true
- },
- "node_modules/mongodb": {
- "version": "3.6.5",
- "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.5.tgz",
- "integrity": "sha512-mQlYKw1iGbvJJejcPuyTaytq0xxlYbIoVDm2FODR+OHxyEiMR021vc32bTvamgBjCswsD54XIRwhg3yBaWqJjg==",
- "dependencies": {
- "bl": "^2.2.1",
- "bson": "^1.1.4",
- "denque": "^1.4.1",
- "require_optional": "^1.0.1",
- "safe-buffer": "^5.1.2"
- },
- "engines": {
- "node": ">=4"
- },
- "optionalDependencies": {
- "saslprep": "^1.0.0"
- }
- },
- "node_modules/mongoose": {
- "version": "5.12.2",
- "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.12.2.tgz",
- "integrity": "sha512-kT9t6Nvu9WPsfssn7Gzke446Il8UdMilY7Sa5vALtwoOoNOGtZEVjekZBFwsBFzTWtBA/x5gBmJoYFP+1LeDlg==",
- "dependencies": {
- "@types/mongodb": "^3.5.27",
- "bson": "^1.1.4",
- "kareem": "2.3.2",
- "mongodb": "3.6.5",
- "mongoose-legacy-pluralize": "1.0.2",
- "mpath": "0.8.3",
- "mquery": "3.2.4",
- "ms": "2.1.2",
- "regexp-clone": "1.0.0",
- "safe-buffer": "5.2.1",
- "sift": "7.0.1",
- "sliced": "1.0.1"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/mongoose-legacy-pluralize": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
- "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
- },
- "node_modules/mongoose/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/mongoose/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=="
- },
- "node_modules/mpath": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.3.tgz",
- "integrity": "sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA==",
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/mquery": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.4.tgz",
- "integrity": "sha512-uOLpp7iRX0BV1Uu6YpsqJ5b42LwYnmu0WeF/f8qgD/On3g0XDaQM6pfn0m6UxO6SM8DioZ9Bk6xxbWIGHm2zHg==",
- "dependencies": {
- "bluebird": "3.5.1",
- "debug": "3.1.0",
- "regexp-clone": "^1.0.0",
- "safe-buffer": "5.1.2",
- "sliced": "1.0.1"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/mquery/node_modules/debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/nanoid": {
- "version": "2.1.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
- "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA=="
- },
- "node_modules/negotiator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
- "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/nodemon": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.7.tgz",
- "integrity": "sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==",
- "dev": true,
- "hasInstallScript": true,
- "dependencies": {
- "chokidar": "^3.2.2",
- "debug": "^3.2.6",
- "ignore-by-default": "^1.0.1",
- "minimatch": "^3.0.4",
- "pstree.remy": "^1.1.7",
- "semver": "^5.7.1",
- "supports-color": "^5.5.0",
- "touch": "^3.1.0",
- "undefsafe": "^2.0.3",
- "update-notifier": "^4.1.0"
- },
- "bin": {
- "nodemon": "bin/nodemon.js"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/nodemon/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/nodemon/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/nopt": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
- "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
- "dev": true,
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/normalize-url": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
- "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/oauth": {
- "version": "0.9.15",
- "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz",
- "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE="
- },
- "node_modules/oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/p-cancelable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
- "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/package-json": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
- "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
- "dev": true,
- "dependencies": {
- "got": "^9.6.0",
- "registry-auth-token": "^4.0.0",
- "registry-url": "^5.0.0",
- "semver": "^6.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/package-json/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "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/passport": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/passport/-/passport-0.4.1.tgz",
- "integrity": "sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg==",
- "dependencies": {
- "passport-strategy": "1.x.x",
- "pause": "0.0.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-google-oauth": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/passport-google-oauth/-/passport-google-oauth-2.0.0.tgz",
- "integrity": "sha512-JKxZpBx6wBQXX1/a1s7VmdBgwOugohH+IxCy84aPTZNq/iIPX6u7Mqov1zY7MKRz3niFPol0KJz8zPLBoHKtYA==",
- "dependencies": {
- "passport-google-oauth1": "1.x.x",
- "passport-google-oauth20": "2.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-google-oauth1": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/passport-google-oauth1/-/passport-google-oauth1-1.0.0.tgz",
- "integrity": "sha1-r3SoA99R7GRvZqRNgigr5vEI4Mw=",
- "dependencies": {
- "passport-oauth1": "1.x.x"
- }
- },
- "node_modules/passport-google-oauth20": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz",
- "integrity": "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==",
- "dependencies": {
- "passport-oauth2": "1.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-oauth1": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/passport-oauth1/-/passport-oauth1-1.1.0.tgz",
- "integrity": "sha1-p96YiiEfnPRoc3cTDqdN8ycwyRg=",
- "dependencies": {
- "oauth": "0.9.x",
- "passport-strategy": "1.x.x",
- "utils-merge": "1.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-oauth2": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.5.0.tgz",
- "integrity": "sha512-kqBt6vR/5VlCK8iCx1/KpY42kQ+NEHZwsSyt4Y6STiNjU+wWICG1i8ucc1FapXDGO15C5O5VZz7+7vRzrDPXXQ==",
- "dependencies": {
- "base64url": "3.x.x",
- "oauth": "0.9.x",
- "passport-strategy": "1.x.x",
- "uid2": "0.0.x",
- "utils-merge": "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": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=",
- "engines": {
- "node": ">= 0.4.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": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
- },
- "node_modules/pause": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
- "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
- },
- "node_modules/performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
- },
- "node_modules/picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/prepend-http": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
- "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "node_modules/promise": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz",
- "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==",
- "dependencies": {
- "asap": "~2.0.6"
- }
- },
- "node_modules/proxy-addr": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
- "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
- "dependencies": {
- "forwarded": "~0.1.2",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
- },
- "node_modules/pstree.remy": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
- "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
- "dev": true
- },
- "node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pupa": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
- "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
- "dev": true,
- "dependencies": {
- "escape-goat": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/qs": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/raw-body": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
- "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
- "dependencies": {
- "bytes": "3.1.0",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/razorpay": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/razorpay/-/razorpay-2.0.6.tgz",
- "integrity": "sha512-tWdV+WfRuuQSGQcGtUXmsPx5WO3QPrEKegy+AbGWT1STD5kxIYW0KHjdspu7YnTTP3q7ekwHDUYYjG8zSR5IiQ==",
- "dependencies": {
- "promise": "^8.0.1",
- "request": "^2.88.0",
- "request-promise": "^4.2.2"
- }
- },
- "node_modules/rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dev": true,
- "dependencies": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "bin": {
- "rc": "cli.js"
- }
- },
- "node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/readdirp": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
- "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
- "dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/regexp-clone": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
- "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
- },
- "node_modules/registry-auth-token": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
- "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
- "dev": true,
- "dependencies": {
- "rc": "^1.2.8"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/registry-url": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
- "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
- "dev": true,
- "dependencies": {
- "rc": "^1.2.8"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "dependencies": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/request-promise": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz",
- "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==",
- "dependencies": {
- "bluebird": "^3.5.0",
- "request-promise-core": "1.1.4",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/request-promise-core": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
- "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
- "dependencies": {
- "lodash": "^4.17.19"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/request/node_modules/qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/require_optional": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
- "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
- "dependencies": {
- "resolve-from": "^2.0.0",
- "semver": "^5.1.0"
- }
- },
- "node_modules/resolve-from": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
- "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/responselike": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
- "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
- "dev": true,
- "dependencies": {
- "lowercase-keys": "^1.0.0"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/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": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/semver-diff": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
- "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
- "dev": true,
- "dependencies": {
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
+ "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
+ "requires": {
+ "@babel/highlight": "^7.12.13"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz",
+ "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q=="
+ },
+ "@babel/core": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.2.tgz",
+ "integrity": "sha512-OgC1mON+l4U4B4wiohJlQNUU3H73mpTyYY3j/c8U9dr9UagGGSm+WFpzjy/YLdoyjiG++c1kIDgxCo/mLwQJeQ==",
+ "requires": {
+ "@babel/code-frame": "^7.12.13",
+ "@babel/generator": "^7.14.2",
+ "@babel/helper-compilation-targets": "^7.13.16",
+ "@babel/helper-module-transforms": "^7.14.2",
+ "@babel/helpers": "^7.14.0",
+ "@babel/parser": "^7.14.2",
+ "@babel/template": "^7.12.13",
+ "@babel/traverse": "^7.14.2",
+ "@babel/types": "^7.14.2",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.1.2",
+ "semver": "^6.3.0",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.2.tgz",
+ "integrity": "sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ==",
+ "requires": {
+ "@babel/types": "^7.14.2",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz",
+ "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==",
+ "requires": {
+ "@babel/types": "^7.12.13"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.13.16",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz",
+ "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==",
+ "requires": {
+ "@babel/compat-data": "^7.13.15",
+ "@babel/helper-validator-option": "^7.12.17",
+ "browserslist": "^4.14.5",
"semver": "^6.3.0"
},
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/semver-diff/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/send": {
- "version": "0.17.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
- "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
"dependencies": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.7.2",
- "mime": "1.6.0",
- "ms": "2.1.1",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ }
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz",
+ "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==",
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.12.13",
+ "@babel/template": "^7.12.13",
+ "@babel/types": "^7.14.2"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz",
+ "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==",
+ "requires": {
+ "@babel/types": "^7.12.13"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.13.12",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz",
+ "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==",
+ "requires": {
+ "@babel/types": "^7.13.12"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.13.12",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz",
+ "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==",
+ "requires": {
+ "@babel/types": "^7.13.12"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz",
+ "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.13.12",
+ "@babel/helper-replace-supers": "^7.13.12",
+ "@babel/helper-simple-access": "^7.13.12",
+ "@babel/helper-split-export-declaration": "^7.12.13",
+ "@babel/helper-validator-identifier": "^7.14.0",
+ "@babel/template": "^7.12.13",
+ "@babel/traverse": "^7.14.2",
+ "@babel/types": "^7.14.2"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz",
+ "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==",
+ "requires": {
+ "@babel/types": "^7.12.13"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz",
+ "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ=="
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.13.12",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz",
+ "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==",
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.13.12",
+ "@babel/helper-optimise-call-expression": "^7.12.13",
+ "@babel/traverse": "^7.13.0",
+ "@babel/types": "^7.13.12"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.13.12",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz",
+ "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==",
+ "requires": {
+ "@babel/types": "^7.13.12"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz",
+ "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==",
+ "requires": {
+ "@babel/types": "^7.12.13"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
+ "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.12.17",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz",
+ "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw=="
+ },
+ "@babel/helpers": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz",
+ "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==",
+ "requires": {
+ "@babel/template": "^7.12.13",
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.14.0"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz",
+ "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.14.0",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
},
- "engines": {
- "node": ">= 0.8.0"
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ }
}
},
- "node_modules/send/node_modules/ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ "@babel/parser": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz",
+ "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ=="
},
- "node_modules/serve-static": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
- "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.1"
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz",
+ "integrity": "sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw==",
+ "requires": {
+ "@babel/compat-data": "^7.14.0",
+ "@babel/helper-compilation-targets": "^7.13.16",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.14.2"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz",
+ "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.13.17",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz",
+ "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.13.0"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz",
+ "integrity": "sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.13.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx": {
+ "version": "7.13.12",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz",
+ "integrity": "sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.12.13",
+ "@babel/helper-module-imports": "^7.13.12",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/plugin-syntax-jsx": "^7.12.13",
+ "@babel/types": "^7.13.12"
+ }
+ },
+ "@babel/template": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz",
+ "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==",
+ "requires": {
+ "@babel/code-frame": "^7.12.13",
+ "@babel/parser": "^7.12.13",
+ "@babel/types": "^7.12.13"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz",
+ "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==",
+ "requires": {
+ "@babel/code-frame": "^7.12.13",
+ "@babel/generator": "^7.14.2",
+ "@babel/helper-function-name": "^7.14.2",
+ "@babel/helper-split-export-declaration": "^7.12.13",
+ "@babel/parser": "^7.14.2",
+ "@babel/types": "^7.14.2",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
},
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
- "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
- },
- "node_modules/shortid": {
- "version": "2.2.16",
- "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz",
- "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==",
"dependencies": {
- "nanoid": "^2.1.0"
+ "debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "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/sift": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
- "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g=="
- },
- "node_modules/signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
- "dev": true
- },
- "node_modules/sliced": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
- "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
- },
- "node_modules/sparse-bitfield": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
- "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
- "optional": true,
- "dependencies": {
- "memory-pager": "^1.0.2"
+ "@babel/types": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz",
+ "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.14.0",
+ "to-fast-properties": "^2.0.0"
}
},
- "node_modules/sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "dependencies": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/stealthy-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
- "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width/node_modules/ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width/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==",
- "dev": true
- },
- "node_modules/string-width/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==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width/node_modules/strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/term-size": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
- "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/to-readable-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
- "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/touch": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
- "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
- "dev": true,
- "dependencies": {
- "nopt": "~1.0.10"
- },
- "bin": {
- "nodetouch": "bin/nodetouch.js"
- }
- },
- "node_modules/tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dependencies": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/tsscmp": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
- "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==",
- "engines": {
- "node": ">=0.6.x"
- }
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
- },
- "node_modules/type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/typedarray-to-buffer": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
- "dev": true,
- "dependencies": {
- "is-typedarray": "^1.0.0"
- }
- },
- "node_modules/uid2": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz",
- "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I="
- },
- "node_modules/undefsafe": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz",
- "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==",
- "dev": true,
- "dependencies": {
- "debug": "^2.2.0"
- }
- },
- "node_modules/unique-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
- "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
- "dev": true,
- "dependencies": {
- "crypto-random-string": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/update-notifier": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz",
- "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==",
- "dev": true,
- "dependencies": {
- "boxen": "^4.2.0",
- "chalk": "^3.0.0",
- "configstore": "^5.0.1",
- "has-yarn": "^2.1.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^2.0.0",
- "is-installed-globally": "^0.3.1",
- "is-npm": "^4.0.0",
- "is-yarn-global": "^0.3.0",
- "latest-version": "^5.0.0",
- "pupa": "^2.0.1",
- "semver-diff": "^3.1.1",
- "xdg-basedir": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/url-parse-lax": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
- "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
- "dev": true,
- "dependencies": {
- "prepend-http": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "engines": [
- "node >=0.6.0"
- ],
- "dependencies": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "node_modules/widest-line": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
- "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "node_modules/write-file-atomic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
- "dev": true,
- "dependencies": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
- }
- },
- "node_modules/xdg-basedir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
- "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- }
- },
- "dependencies": {
"@sindresorhus/is": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
@@ -2707,6 +380,11 @@
"@types/node": "*"
}
},
+ "@types/cors": {
+ "version": "2.8.10",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz",
+ "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ=="
+ },
"@types/mongodb": {
"version": "3.6.10",
"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.10.tgz",
@@ -2716,16 +394,39 @@
"@types/node": "*"
}
},
+ "@types/multiparty": {
+ "version": "0.0.32",
+ "resolved": "https://registry.npmjs.org/@types/multiparty/-/multiparty-0.0.32.tgz",
+ "integrity": "sha512-zuQEcL9pHiW3u1fgkOWE6T/RwskrFZ3W63aKQPDs7EokIjtbsGL7aVlI4tI86qjL4B3hcFxDRtIGxwRwMTS2Dw==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/node": {
"version": "14.14.35",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz",
"integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag=="
},
+ "@types/type-is": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/@types/type-is/-/type-is-1.6.3.tgz",
+ "integrity": "sha512-PNs5wHaNcBgCQG5nAeeZ7OvosrEsI9O4W2jAOO9BCCg4ux9ZZvH2+0iSCOIDBiKuQsiNS8CBlmfX9f5YBQ22cA==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
+ "abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "requires": {
+ "event-target-shim": "^5.0.0"
+ }
},
"accepts": {
"version": "1.3.7",
@@ -2736,6 +437,29 @@
"negotiator": "0.6.2"
}
},
+ "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==",
+ "requires": {
+ "debug": "4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -2747,6 +471,11 @@
"uri-js": "^4.2.2"
}
},
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
+ },
"ansi-align": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
@@ -2772,8 +501,7 @@
"ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
},
"ansi-styles": {
"version": "4.3.0",
@@ -2794,11 +522,40 @@
"picomatch": "^2.0.4"
}
},
+ "append-field": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
+ "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY="
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
+ },
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
+ "arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
+ },
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -2817,11 +574,44 @@
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
+ "async": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
+ "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
+ },
+ "async-foreach": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+ "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI="
+ },
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
+ "aws-sdk": {
+ "version": "2.907.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.907.0.tgz",
+ "integrity": "sha512-P1gth8sVqXCIjKN78kyD3OosEzqUSYxDG04Cpp2wVGx/djsd5OSv4NkayOhKZ5OMXwk6IdA82oXV/HQR8EjbwQ==",
+ "requires": {
+ "buffer": "4.9.2",
+ "events": "1.1.1",
+ "ieee754": "1.1.13",
+ "jmespath": "0.15.0",
+ "querystring": "0.2.0",
+ "sax": "1.2.1",
+ "url": "0.10.3",
+ "uuid": "3.3.2",
+ "xml2js": "0.4.19"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
+ }
+ }
+ },
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -2835,8 +625,12 @@
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
},
"base64url": {
"version": "3.0.1",
@@ -2856,6 +650,11 @@
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
"integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
},
+ "bignumber.js": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz",
+ "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA=="
+ },
"binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -2871,6 +670,14 @@
"safe-buffer": "^5.1.1"
}
},
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "requires": {
+ "inherits": "~2.0.0"
+ }
+ },
"bluebird": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
@@ -2893,6 +700,25 @@
"type-is": "~1.6.17"
}
},
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+ },
+ "bootstrap-email": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/bootstrap-email/-/bootstrap-email-1.1.1.tgz",
+ "integrity": "sha512-8O2OMPKR6nz0m1q3P7XXgMuKb6IMfi6RBmWWa9zG7T+e8h9+hMP22WLmqApmwusNkakRVov/cvBFXUmrLe5WHg==",
+ "requires": {
+ "bunyan": "^1.8.12",
+ "cheerio": "^1.0.0-rc.3",
+ "ejs": "^2.6.1",
+ "juice": "^5.2.0",
+ "node-sass": "^4.14.1",
+ "postcss": "^7.0.25",
+ "sass-extract": "^2.1.0"
+ }
+ },
"boxen": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
@@ -2913,7 +739,6 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -2928,16 +753,86 @@
"fill-range": "^7.0.1"
}
},
+ "browserslist": {
+ "version": "4.16.6",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
+ "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
+ "requires": {
+ "caniuse-lite": "^1.0.30001219",
+ "colorette": "^1.2.2",
+ "electron-to-chromium": "^1.3.723",
+ "escalade": "^3.1.1",
+ "node-releases": "^1.1.71"
+ }
+ },
"bson": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz",
"integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg=="
},
+ "buffer": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
+ "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
"buffer-equal-constant-time": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
},
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ },
+ "bunyan": {
+ "version": "1.8.15",
+ "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz",
+ "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==",
+ "requires": {
+ "dtrace-provider": "~0.8",
+ "moment": "^2.19.3",
+ "mv": "~2",
+ "safe-json-stringify": "~1"
+ }
+ },
+ "busboy": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
+ "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
+ "requires": {
+ "dicer": "0.2.5",
+ "readable-stream": "1.1.x"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ },
"bytes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@@ -2975,11 +870,61 @@
}
}
},
+ "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"
+ }
+ },
+ "caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+ "requires": {
+ "callsites": "^2.0.0"
+ }
+ },
+ "caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+ "requires": {
+ "caller-callsite": "^2.0.0"
+ }
+ },
+ "callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA="
+ },
"camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
+ }
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001228",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz",
+ "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A=="
},
"caseless": {
"version": "0.12.0",
@@ -3013,6 +958,32 @@
}
}
},
+ "cheerio": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.9.tgz",
+ "integrity": "sha512-QF6XVdrLONO6DXRF5iaolY+odmhj2CLj+xzNod7INPWMi/x9X4SOylH0S/vaPpX+AUU6t04s34SQNh7DbkuCng==",
+ "requires": {
+ "cheerio-select": "^1.4.0",
+ "dom-serializer": "^1.3.1",
+ "domhandler": "^4.2.0",
+ "htmlparser2": "^6.1.0",
+ "parse5": "^6.0.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.1",
+ "tslib": "^2.2.0"
+ }
+ },
+ "cheerio-select": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.4.0.tgz",
+ "integrity": "sha512-sobR3Yqz27L553Qa7cK6rtJlMDbiKPdNywtR95Sj/YgfpLfy0u6CGJuaBKe5YE/vTc23SCRKxWSdlon/w6I/Ew==",
+ "requires": {
+ "css-select": "^4.1.2",
+ "css-what": "^5.0.0",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.6.0"
+ }
+ },
"chokidar": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
@@ -3041,6 +1012,28 @@
"integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
"dev": true
},
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ }
+ }
+ },
"clone-response": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
@@ -3050,6 +1043,11 @@
"mimic-response": "^1.0.0"
}
},
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ },
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -3065,6 +1063,11 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "colorette": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
+ "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w=="
+ },
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -3073,11 +1076,31 @@
"delayed-stream": "~1.0.0"
}
},
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
+ },
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
},
"configstore": {
"version": "5.0.1",
@@ -3093,6 +1116,11 @@
"xdg-basedir": "^4.0.0"
}
},
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+ },
"content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
@@ -3106,6 +1134,14 @@
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
},
+ "convert-source-map": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+ "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
"cookie": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
@@ -3156,6 +1192,18 @@
"vary": "^1"
}
},
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
"crypto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
@@ -3167,6 +1215,31 @@
"integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
"dev": true
},
+ "css-select": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.2.tgz",
+ "integrity": "sha512-nu5ye2Hg/4ISq4XqdLY2bEatAcLIdt3OYGFc9Tm9n7VSlFBcfRv0gBNksHRgSdUDQGtN3XrZ94ztW+NfzkFSUw==",
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^5.0.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.6.0",
+ "nth-check": "^2.0.0"
+ }
+ },
+ "css-what": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.0.tgz",
+ "integrity": "sha512-qxyKHQvgKwzwDWC/rGbT821eJalfupxYW2qbSJSAtdSTimsr/MlaGONoNLllaUPZWf8QnbcKM/kPVYUQuEKAFA=="
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -3175,6 +1248,15 @@
"assert-plus": "^1.0.0"
}
},
+ "datauri": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/datauri/-/datauri-2.0.0.tgz",
+ "integrity": "sha512-zS2HSf9pI5XPlNZgIqJg/wCJpecgU/HA6E/uv2EfaWnW1EiTGLfy/EexTIsC9c99yoCOTXlqeeWk4FkCSuO3/g==",
+ "requires": {
+ "image-size": "^0.7.3",
+ "mimer": "^1.0.0"
+ }
+ },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -3183,6 +1265,11 @@
"ms": "2.0.0"
}
},
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
"decompress-response": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
@@ -3195,8 +1282,7 @@
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "dev": true
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
},
"defer-to-connect": {
"version": "1.1.3",
@@ -3209,6 +1295,11 @@
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+ },
"denque": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
@@ -3224,6 +1315,71 @@
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
+ "dicer": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
+ "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
+ "requires": {
+ "readable-stream": "1.1.x",
+ "streamsearch": "0.1.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ },
+ "dom-serializer": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.1.tgz",
+ "integrity": "sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q==",
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
+ },
+ "domhandler": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
+ "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
+ "requires": {
+ "domelementtype": "^2.2.0"
+ }
+ },
+ "domutils": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz",
+ "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==",
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
"dot-prop": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
@@ -3233,6 +1389,20 @@
"is-obj": "^2.0.0"
}
},
+ "dotenv": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.1.tgz",
+ "integrity": "sha512-W8FNeNnnvJoYfgkFRKzp8kTgz0T2YY4TJ9xy1Ma0hSebPTK8iquRtpG12TUrSTX5zIN9D/wSLEEuI+Ad35tlyw=="
+ },
+ "dtrace-provider": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz",
+ "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==",
+ "optional": true,
+ "requires": {
+ "nan": "^2.14.0"
+ }
+ },
"duplexer3": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
@@ -3261,11 +1431,20 @@
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
+ "ejs": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz",
+ "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA=="
+ },
+ "electron-to-chromium": {
+ "version": "1.3.727",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz",
+ "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg=="
+ },
"emoji-regex": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
},
"encodeurl": {
"version": "1.0.2",
@@ -3276,11 +1455,28 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
"requires": {
"once": "^1.4.0"
}
},
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
+ },
"escape-goat": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
@@ -3292,11 +1488,26 @@
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ },
"etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
+ "event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
+ },
"express": {
"version": "4.17.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
@@ -3354,6 +1565,16 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
+ "fast-text-encoding": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz",
+ "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig=="
+ },
+ "file-type": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
+ "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek="
+ },
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -3377,6 +1598,30 @@
"unpipe": "~1.0.0"
}
},
+ "find-cache-dir": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
+ "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "flushwritable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz",
+ "integrity": "sha1-PjKNj95BKtR+c44751C00pAENJg="
+ },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -3402,6 +1647,11 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
"fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
@@ -3409,6 +1659,134 @@
"dev": true,
"optional": true
},
+ "fstream": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+ "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "gaxios": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.2.1.tgz",
+ "integrity": "sha512-s+rTywpw6CmfB8r9TXYkpix7YFeuRjnR/AqhaJrQqsNhsAqej+IAiCc3hadzQH3gHyWth30tvYjxH8EVjQt/8Q==",
+ "requires": {
+ "abort-controller": "^3.0.0",
+ "extend": "^3.0.2",
+ "https-proxy-agent": "^5.0.0",
+ "is-stream": "^2.0.0",
+ "node-fetch": "^2.3.0"
+ }
+ },
+ "gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "requires": {
+ "globule": "^1.0.0"
+ }
+ },
+ "gcp-metadata": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz",
+ "integrity": "sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==",
+ "requires": {
+ "gaxios": "^4.0.0",
+ "json-bigint": "^1.0.0"
+ }
+ },
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+ },
+ "get-intrinsic": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+ "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
+ },
"get-stream": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
@@ -3426,6 +1804,19 @@
"assert-plus": "^1.0.0"
}
},
+ "glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
"glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -3444,6 +1835,87 @@
"ini": "1.3.7"
}
},
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
+ },
+ "globule": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz",
+ "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==",
+ "requires": {
+ "glob": "~7.1.1",
+ "lodash": "~4.17.10",
+ "minimatch": "~3.0.2"
+ }
+ },
+ "gonzales-pe": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz",
+ "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==",
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "google-auth-library": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.0.4.tgz",
+ "integrity": "sha512-o8irYyeijEiecTXeoEe8UKNEzV1X+uhR4b2oNdapDMZixypp0J+eHimGOyx5Joa3UAeokGngdtDLXtq9vDqG2Q==",
+ "requires": {
+ "arrify": "^2.0.0",
+ "base64-js": "^1.3.0",
+ "ecdsa-sig-formatter": "^1.0.11",
+ "fast-text-encoding": "^1.0.0",
+ "gaxios": "^4.0.0",
+ "gcp-metadata": "^4.2.0",
+ "gtoken": "^5.0.4",
+ "jws": "^4.0.0",
+ "lru-cache": "^6.0.0"
+ },
+ "dependencies": {
+ "jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "requires": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "requires": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ }
+ }
+ },
+ "google-p12-pem": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz",
+ "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==",
+ "requires": {
+ "node-forge": "^0.10.0"
+ }
+ },
"got": {
"version": "9.6.0",
"resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
@@ -3466,8 +1938,102 @@
"graceful-fs": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
- "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
- "dev": true
+ "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
+ },
+ "grandjs": {
+ "version": "2.2.30",
+ "resolved": "https://registry.npmjs.org/grandjs/-/grandjs-2.2.30.tgz",
+ "integrity": "sha512-exiKrEI/67XiYn1hsp5DquCpy0KabnbLjTXUWxO1yHimmW0KgMlPrDN4cenLCPOEMs800jjnhvQK+TuLw7nb2A==",
+ "requires": {
+ "@types/cors": "*",
+ "@types/multiparty": "*",
+ "@types/type-is": "^1.6.3",
+ "accepts": "^1.3.7",
+ "content-type": "^1.0.4",
+ "cors": "^2.8.5",
+ "import-jsx": "^4.0.0",
+ "multiparty": "^4.2.1",
+ "proxy-addr": "^2.0.6",
+ "qs": "^6.9.3",
+ "range-parser": "^1.2.1",
+ "send": "^0.17.1",
+ "setprototypeof": "^1.2.0",
+ "type-is": "^1.6.18",
+ "url-pattern": "^1.0.3"
+ },
+ "dependencies": {
+ "qs": {
+ "version": "6.10.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
+ "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ }
+ }
+ },
+ "gridfs-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/gridfs-stream/-/gridfs-stream-1.1.1.tgz",
+ "integrity": "sha1-PdOhAOwgIaGBKC9utGcJY2B034k=",
+ "requires": {
+ "flushwritable": "^1.0.0"
+ }
+ },
+ "gtoken": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.2.1.tgz",
+ "integrity": "sha512-OY0BfPKe3QnMsY9MzTHTSKn+Vl2l1CcLe6BwDEQj00mbbkl5nyQ/7EUREstg4fQNZ8iYE7br4JJ7TdKeDOPWmw==",
+ "requires": {
+ "gaxios": "^4.0.0",
+ "google-p12-pem": "^3.0.3",
+ "jws": "^4.0.0"
+ },
+ "dependencies": {
+ "jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "requires": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "requires": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ }
+ }
+ },
+ "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": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.0",
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4",
+ "wordwrap": "^1.0.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
},
"har-schema": {
"version": "2.0.0",
@@ -3483,11 +2049,48 @@
"har-schema": "^2.0.0"
}
},
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ }
+ }
+ },
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+ },
+ "has-own-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
+ "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ=="
+ },
+ "has-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
},
"has-yarn": {
"version": "2.1.0",
@@ -3495,6 +2098,27 @@
"integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
"dev": true
},
+ "hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
+ },
+ "html-comment-regex": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
+ "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ=="
+ },
+ "htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
"http-cache-semantics": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
@@ -3523,6 +2147,44 @@
"sshpk": "^1.7.0"
}
},
+ "httpntlm": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz",
+ "integrity": "sha1-rQFScUOi6Hc8+uapb1hla7UqNLI=",
+ "requires": {
+ "httpreq": ">=0.4.22",
+ "underscore": "~1.7.0"
+ }
+ },
+ "httpreq": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.4.24.tgz",
+ "integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8="
+ },
+ "https-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+ "requires": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -3531,12 +2193,45 @@
"safer-buffer": ">= 2.1.2 < 3"
}
},
+ "ieee754": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
+ },
"ignore-by-default": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
"integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
"dev": true
},
+ "image-size": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.7.5.tgz",
+ "integrity": "sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g=="
+ },
+ "import-jsx": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-jsx/-/import-jsx-4.0.0.tgz",
+ "integrity": "sha512-CnjJ2BZFJzbFDmYG5S47xPQjMlSbZLyLJuG4znzL4TdPtJBxHtFP1xVmR+EYX4synFSldiY3B6m00XkPM3zVnA==",
+ "requires": {
+ "@babel/core": "^7.5.5",
+ "@babel/plugin-proposal-object-rest-spread": "^7.5.5",
+ "@babel/plugin-transform-destructuring": "^7.5.0",
+ "@babel/plugin-transform-react-jsx": "^7.3.0",
+ "caller-path": "^2.0.0",
+ "find-cache-dir": "^3.2.0",
+ "make-dir": "^3.0.2",
+ "resolve-from": "^3.0.0",
+ "rimraf": "^3.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g="
+ }
+ }
+ },
"import-lazy": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
@@ -3549,6 +2244,28 @@
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
+ "in-publish": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
+ "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ=="
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
@@ -3560,11 +2277,24 @@
"integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
"dev": true
},
+ "invariant": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
+ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
"ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
},
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+ },
"is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -3583,17 +2313,34 @@
"ci-info": "^2.0.0"
}
},
+ "is-core-module": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
+ "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
"dev": true
},
+ "is-finite": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+ "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w=="
+ },
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "is-generator": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-generator/-/is-generator-1.0.3.tgz",
+ "integrity": "sha1-wUwhBX7TbjKNuANHlmxpP4hjifM="
},
"is-glob": {
"version": "4.0.1",
@@ -3638,11 +2385,34 @@
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true
},
+ "is-promise": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
+ },
+ "is-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
+ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
+ },
+ "is-svg": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
+ "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
+ "requires": {
+ "html-comment-regex": "^1.1.0"
+ }
+ },
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
+ },
"is-yarn-global": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
@@ -3654,16 +2424,49 @@
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
+ "jmespath": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz",
+ "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc="
+ },
+ "js-base64": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+ "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+ },
+ "json-bigint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
+ "requires": {
+ "bignumber.js": "^9.0.0"
+ }
+ },
"json-buffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
@@ -3685,6 +2488,14 @@
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
+ "json5": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
+ "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
"jsonwebtoken": {
"version": "8.5.1",
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
@@ -3720,6 +2531,128 @@
"verror": "1.10.0"
}
},
+ "juice": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/juice/-/juice-5.2.0.tgz",
+ "integrity": "sha512-0l6GZmT3efexyaaay3SchKT5kG311N59TEFP5lfvEy0nz9SNqjx311plJ3b4jze7arsmDsiHQLh/xnAuk0HFTQ==",
+ "requires": {
+ "cheerio": "^0.22.0",
+ "commander": "^2.15.1",
+ "cross-spawn": "^6.0.5",
+ "deep-extend": "^0.6.0",
+ "mensch": "^0.3.3",
+ "slick": "^1.12.2",
+ "web-resource-inliner": "^4.3.1"
+ },
+ "dependencies": {
+ "cheerio": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
+ "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
+ "requires": {
+ "css-select": "~1.2.0",
+ "dom-serializer": "~0.1.0",
+ "entities": "~1.1.1",
+ "htmlparser2": "^3.9.1",
+ "lodash.assignin": "^4.0.9",
+ "lodash.bind": "^4.1.4",
+ "lodash.defaults": "^4.0.1",
+ "lodash.filter": "^4.4.0",
+ "lodash.flatten": "^4.2.0",
+ "lodash.foreach": "^4.3.0",
+ "lodash.map": "^4.4.0",
+ "lodash.merge": "^4.4.0",
+ "lodash.pick": "^4.2.1",
+ "lodash.reduce": "^4.4.0",
+ "lodash.reject": "^4.4.0",
+ "lodash.some": "^4.4.0"
+ }
+ },
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "requires": {
+ "boolbase": "~1.0.0",
+ "css-what": "2.1",
+ "domutils": "1.5.1",
+ "nth-check": "~1.0.1"
+ }
+ },
+ "css-what": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
+ "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg=="
+ },
+ "dom-serializer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
+ "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==",
+ "requires": {
+ "domelementtype": "^1.3.0",
+ "entities": "^1.1.1"
+ }
+ },
+ "domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
+ },
+ "domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
+ },
+ "htmlparser2": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
+ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+ "requires": {
+ "domelementtype": "^1.3.1",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^3.1.1"
+ }
+ },
+ "nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+ "requires": {
+ "boolbase": "~1.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ },
"jwa": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
@@ -3770,11 +2703,61 @@
"package-json": "^6.3.0"
}
},
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
+ "lodash.assignin": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
+ "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI="
+ },
+ "lodash.bind": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
+ "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU="
+ },
+ "lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw="
+ },
+ "lodash.filter": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
+ "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4="
+ },
+ "lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8="
+ },
+ "lodash.foreach": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+ "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM="
+ },
"lodash.includes": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
@@ -3805,22 +2788,82 @@
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
"integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
},
+ "lodash.map": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
+ "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM="
+ },
+ "lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+ },
"lodash.once": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
"integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
},
+ "lodash.pick": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
+ "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM="
+ },
+ "lodash.reduce": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
+ "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs="
+ },
+ "lodash.reject": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
+ "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU="
+ },
+ "lodash.some": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
+ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0="
+ },
+ "lodash.unescape": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz",
+ "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw="
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
"lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
"dev": true
},
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
"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==",
- "dev": true,
"requires": {
"semver": "^6.0.0"
},
@@ -3828,11 +2871,15 @@
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
}
}
},
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
+ },
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -3844,11 +2891,49 @@
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
"optional": true
},
+ "mensch": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/mensch/-/mensch-0.3.4.tgz",
+ "integrity": "sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g=="
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
"merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
},
+ "messagebird": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/messagebird/-/messagebird-3.6.1.tgz",
+ "integrity": "sha512-HcbHxNp53MblcDReOo+sLvlr/aX1pGH/Liyegphpz+CXVKmEl2WUOKyPQCy69pTW8uRM8QlGbmYJP+BzZh/sRQ==",
+ "requires": {
+ "safe-buffer": "^5.2.1",
+ "scmp": "^2.1.0"
+ },
+ "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=="
+ }
+ }
+ },
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -3872,6 +2957,11 @@
"mime-db": "1.46.0"
}
},
+ "mimer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mimer/-/mimer-1.1.0.tgz",
+ "integrity": "sha512-y9dVfy2uiycQvDNiAYW6zp49ZhFlXDMr5wfdOiMbdzGM/0N5LNR6HTUn3un+WUQcM0koaw8FMTG1bt5EnHJdvQ=="
+ },
"mimic-response": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
@@ -3882,7 +2972,6 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -3890,8 +2979,21 @@
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
- "dev": true
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+ },
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "moment": {
+ "version": "2.29.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
+ "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
+ "optional": true
},
"mongodb": {
"version": "3.6.5",
@@ -3906,6 +3008,11 @@
"saslprep": "^1.0.0"
}
},
+ "mongodb-uri": {
+ "version": "0.9.7",
+ "resolved": "https://registry.npmjs.org/mongodb-uri/-/mongodb-uri-0.9.7.tgz",
+ "integrity": "sha1-D3ca0W9IOuZfQoeWlCjp+8SqYYE="
+ },
"mongoose": {
"version": "5.12.2",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.12.2.tgz",
@@ -3974,16 +3081,310 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
+ "multer": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz",
+ "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==",
+ "requires": {
+ "append-field": "^1.0.0",
+ "busboy": "^0.2.11",
+ "concat-stream": "^1.5.2",
+ "mkdirp": "^0.5.1",
+ "object-assign": "^4.1.1",
+ "on-finished": "^2.3.0",
+ "type-is": "^1.6.4",
+ "xtend": "^4.0.0"
+ }
+ },
+ "multer-gridfs-storage": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/multer-gridfs-storage/-/multer-gridfs-storage-4.2.0.tgz",
+ "integrity": "sha512-N2/QlZVsHUGSNmHx367+j2u8MpuZHxb0AEu9wsqNH0ROusSlcl7ERBt6en+IuHv4kAnrLNE4CTNo1yYHoUb7YA==",
+ "requires": {
+ "has-own-prop": "^2.0.0",
+ "is-generator": "^1.0.3",
+ "is-promise": "^4.0.0",
+ "lodash.isplainobject": ">=0.8.0",
+ "mongodb": ">=2",
+ "mongodb-uri": "^0.9.7",
+ "pump": "^3.0.0"
+ }
+ },
+ "multer-s3": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/multer-s3/-/multer-s3-2.9.0.tgz",
+ "integrity": "sha512-qLF8pCD5HhXLLd954q49B63x3bk6Fe0jqD3eM0FVcGtqhiSVuTrchEDAo0mnO5pc34cMuX/CVCCbPkGTjX2xUA==",
+ "requires": {
+ "file-type": "^3.3.0",
+ "is-svg": "^2.1.0",
+ "run-parallel": "^1.1.6"
+ }
+ },
+ "multiparty": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.2.tgz",
+ "integrity": "sha512-NtZLjlvsjcoGrzojtwQwn/Tm90aWJ6XXtPppYF4WmOk/6ncdwMMKggFY2NlRRN9yiCEIVxpOfPWahVEG2HAG8Q==",
+ "requires": {
+ "http-errors": "~1.8.0",
+ "safe-buffer": "5.2.1",
+ "uid-safe": "2.1.5"
+ },
+ "dependencies": {
+ "http-errors": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz",
+ "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "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=="
+ }
+ }
+ },
+ "mv": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
+ "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
+ "optional": true,
+ "requires": {
+ "mkdirp": "~0.5.1",
+ "ncp": "~2.0.0",
+ "rimraf": "~2.4.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "optional": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "rimraf": {
+ "version": "2.4.5",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
+ "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
+ "optional": true,
+ "requires": {
+ "glob": "^6.0.1"
+ }
+ }
+ }
+ },
+ "nan": {
+ "version": "2.14.2",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
+ "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ=="
+ },
"nanoid": {
"version": "2.1.11",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
"integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA=="
},
+ "ncp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
+ "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
+ "optional": true
+ },
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
+ "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=="
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ },
+ "node-fetch": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
+ },
+ "node-forge": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
+ "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA=="
+ },
+ "node-gyp": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
+ "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
+ "requires": {
+ "fstream": "^1.0.0",
+ "glob": "^7.0.3",
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.0",
+ "nopt": "2 || 3",
+ "npmlog": "0 || 1 || 2 || 3 || 4",
+ "osenv": "0",
+ "request": "^2.87.0",
+ "rimraf": "2",
+ "semver": "~5.3.0",
+ "tar": "^2.0.0",
+ "which": "1"
+ },
+ "dependencies": {
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
+ }
+ }
+ },
+ "node-releases": {
+ "version": "1.1.71",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
+ "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg=="
+ },
+ "node-sass": {
+ "version": "4.14.1",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
+ "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
+ "requires": {
+ "async-foreach": "^0.1.3",
+ "chalk": "^1.1.1",
+ "cross-spawn": "^3.0.0",
+ "gaze": "^1.0.0",
+ "get-stdin": "^4.0.1",
+ "glob": "^7.0.3",
+ "in-publish": "^2.0.0",
+ "lodash": "^4.17.15",
+ "meow": "^3.7.0",
+ "mkdirp": "^0.5.1",
+ "nan": "^2.13.2",
+ "node-gyp": "^3.8.0",
+ "npmlog": "^4.0.0",
+ "request": "^2.88.0",
+ "sass-graph": "2.2.5",
+ "stdout-stream": "^1.4.0",
+ "true-case-path": "^1.0.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
+ "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "nodemailer": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.0.tgz",
+ "integrity": "sha512-ikSMDU1nZqpo2WUPE0wTTw/NGGImTkwpJKDIFPZT+YvvR9Sj+ze5wzu95JHkBMglQLoG2ITxU21WukCC/XsFkg=="
+ },
+ "nodemailer-fetch": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz",
+ "integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q="
+ },
+ "nodemailer-shared": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz",
+ "integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=",
+ "requires": {
+ "nodemailer-fetch": "1.6.0"
+ }
+ },
+ "nodemailer-smtp-transport": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.4.tgz",
+ "integrity": "sha1-DYmvAZoUSkgP2OzJmZfZ+DjxNoU=",
+ "requires": {
+ "nodemailer-shared": "1.1.0",
+ "nodemailer-wellknown": "0.1.10",
+ "smtp-connection": "2.12.0"
+ }
+ },
+ "nodemailer-wellknown": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz",
+ "integrity": "sha1-WG24EB2zDLRDjrVGc3pBqtDPE9U="
+ },
"nodemon": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.7.tgz",
@@ -4028,6 +3429,17 @@
"abbrev": "1"
}
},
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
"normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -4040,6 +3452,30 @@
"integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
"dev": true
},
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "nth-check": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz",
+ "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
+ "requires": {
+ "boolbase": "^1.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ },
"oauth": {
"version": "0.9.15",
"resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz",
@@ -4055,6 +3491,11 @@
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
+ "object-inspect": {
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz",
+ "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw=="
+ },
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -4072,17 +3513,56 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
"requires": {
"wrappy": "1"
}
},
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
"p-cancelable": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
"integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
"dev": true
},
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
"package-json": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
@@ -4103,6 +3583,42 @@
}
}
},
+ "parse-color": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz",
+ "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=",
+ "requires": {
+ "color-convert": "~0.5.0"
+ },
+ "dependencies": {
+ "color-convert": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
+ "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0="
+ }
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
+ },
+ "parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "requires": {
+ "parse5": "^6.0.1"
+ }
+ },
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -4169,11 +3685,41 @@
"resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz",
"integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ="
},
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+ },
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
"pause": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
@@ -4190,6 +3736,98 @@
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
"dev": true
},
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ },
+ "postcss": {
+ "version": "7.0.35",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
+ "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
"prepend-http": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
@@ -4218,6 +3856,11 @@
"ipaddr.js": "1.9.1"
}
},
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+ },
"psl": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
@@ -4233,7 +3876,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -4258,6 +3900,30 @@
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
},
+ "query-ast": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/query-ast/-/query-ast-1.0.3.tgz",
+ "integrity": "sha512-k7z4jilpZCujhiJ+QeKSwYXHc9HxqiVKlVE7/em0zBfPpcqnXKUP8F7ld7XaAkO6oXeAD7yonqcNJWqOF2pSGA==",
+ "requires": {
+ "invariant": "2.2.2",
+ "lodash": "^4.17.15"
+ }
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+ },
+ "random-bytes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
+ "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
+ },
"range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -4296,6 +3962,44 @@
"strip-json-comments": "~2.0.1"
}
},
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ }
+ }
+ },
"readable-stream": {
"version": "2.3.7",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
@@ -4319,6 +4023,15 @@
"picomatch": "^2.2.1"
}
},
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ }
+ },
"regexp-clone": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
@@ -4342,6 +4055,14 @@
"rc": "^1.2.8"
}
},
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
"request": {
"version": "2.88.2",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
@@ -4395,6 +4116,16 @@
"lodash": "^4.17.19"
}
},
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
"require_optional": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
@@ -4404,6 +4135,15 @@
"semver": "^5.1.0"
}
},
+ "resolve": {
+ "version": "1.20.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
+ "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+ "requires": {
+ "is-core-module": "^2.2.0",
+ "path-parse": "^1.0.6"
+ }
+ },
"resolve-from": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
@@ -4418,11 +4158,33 @@
"lowercase-keys": "^1.0.0"
}
},
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
+ "safe-json-stringify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz",
+ "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==",
+ "optional": true
+ },
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -4437,6 +4199,57 @@
"sparse-bitfield": "^3.0.3"
}
},
+ "sass-extract": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sass-extract/-/sass-extract-2.1.0.tgz",
+ "integrity": "sha1-xl5soxA8vPL8oNzYGwfk5JpsxYM=",
+ "requires": {
+ "bluebird": "^3.4.7",
+ "gonzales-pe": "^4.2.2",
+ "parse-color": "^1.0.0",
+ "query-ast": "^1.0.1"
+ }
+ },
+ "sass-graph": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
+ "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
+ "requires": {
+ "glob": "^7.0.0",
+ "lodash": "^4.0.0",
+ "scss-tokenizer": "^0.2.3",
+ "yargs": "^13.3.2"
+ }
+ },
+ "sax": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
+ "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o="
+ },
+ "scmp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz",
+ "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q=="
+ },
+ "scss-tokenizer": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+ "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+ "requires": {
+ "js-base64": "^2.1.8",
+ "source-map": "^0.4.2"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -4497,11 +4310,29 @@
"send": "0.17.1"
}
},
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ },
"setprototypeof": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+ },
"shortid": {
"version": "2.2.16",
"resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz",
@@ -4510,6 +4341,16 @@
"nanoid": "^2.1.0"
}
},
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
"sift": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
@@ -4518,14 +4359,32 @@
"signal-exit": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
- "dev": true
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
},
"sliced": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
},
+ "slick": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/slick/-/slick-1.12.2.tgz",
+ "integrity": "sha1-vQSN23TefRymkV+qSldXCzVQwtc="
+ },
+ "smtp-connection": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.12.0.tgz",
+ "integrity": "sha1-1275EnyyPCJZ7bHoNJwujV4tdME=",
+ "requires": {
+ "httpntlm": "1.6.1",
+ "nodemailer-shared": "1.1.0"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ },
"sparse-bitfield": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
@@ -4535,6 +4394,34 @@
"memory-pager": "^1.0.2"
}
},
+ "spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz",
+ "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ=="
+ },
"sshpk": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
@@ -4556,18 +4443,23 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
+ "stdout-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+ "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
+ "requires": {
+ "readable-stream": "^2.0.1"
+ }
+ },
"stealthy-require": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
"integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
},
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
+ "streamsearch": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
+ "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
},
"string-width": {
"version": "4.2.2",
@@ -4609,15 +4501,38 @@
}
}
},
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
"requires": {
"ansi-regex": "^4.1.0"
}
},
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ },
"strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -4628,17 +4543,31 @@
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
"requires": {
"has-flag": "^3.0.0"
}
},
+ "tar": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
+ "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
+ "requires": {
+ "block-stream": "*",
+ "fstream": "^1.0.12",
+ "inherits": "2"
+ }
+ },
"term-size": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
"integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
"dev": true
},
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
+ },
"to-readable-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
@@ -4677,6 +4606,24 @@
"punycode": "^2.1.1"
}
},
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
+ },
+ "true-case-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
+ "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
+ "requires": {
+ "glob": "^7.1.2"
+ }
+ },
+ "tslib": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
+ },
"tsscmp": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
@@ -4710,6 +4657,11 @@
"mime-types": "~2.1.24"
}
},
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+ },
"typedarray-to-buffer": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
@@ -4719,6 +4671,20 @@
"is-typedarray": "^1.0.0"
}
},
+ "uglify-js": {
+ "version": "3.13.6",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.6.tgz",
+ "integrity": "sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA==",
+ "optional": true
+ },
+ "uid-safe": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
+ "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
+ "requires": {
+ "random-bytes": "~1.0.0"
+ }
+ },
"uid2": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz",
@@ -4733,6 +4699,11 @@
"debug": "^2.2.0"
}
},
+ "underscore": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
+ "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk="
+ },
"unique-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
@@ -4776,6 +4747,22 @@
"punycode": "^2.1.0"
}
},
+ "url": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
+ "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=",
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
+ }
+ }
+ },
"url-parse-lax": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
@@ -4785,6 +4772,11 @@
"prepend-http": "^2.0.0"
}
},
+ "url-pattern": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/url-pattern/-/url-pattern-1.0.3.tgz",
+ "integrity": "sha1-BAkpJHGyTyPFDWWkeTF5PStaz8E="
+ },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -4800,6 +4792,20 @@
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
},
+ "valid-data-url": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-2.0.0.tgz",
+ "integrity": "sha512-dyCZnv3aCey7yfTgIqdZanKl7xWAEEKCbgmR7SKqyK6QT/Z07ROactrgD1eA37C69ODRj7rNOjzKWVPh0EUjBA=="
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -4815,6 +4821,119 @@
"extsprintf": "^1.2.0"
}
},
+ "web-resource-inliner": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/web-resource-inliner/-/web-resource-inliner-4.3.4.tgz",
+ "integrity": "sha512-agVAgRhOOi4GVlvKK34oM23tDgH8390HfLnZY2HZl8OFBwKNvUJkH7t89AT2iluQP8w9VHAAKX6Z8EN7/9tqKA==",
+ "requires": {
+ "async": "^3.1.0",
+ "chalk": "^2.4.2",
+ "datauri": "^2.0.0",
+ "htmlparser2": "^4.0.0",
+ "lodash.unescape": "^4.0.1",
+ "request": "^2.88.0",
+ "safer-buffer": "^2.1.2",
+ "valid-data-url": "^2.0.0",
+ "xtend": "^4.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "domhandler": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz",
+ "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==",
+ "requires": {
+ "domelementtype": "^2.0.1"
+ }
+ },
+ "htmlparser2": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz",
+ "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==",
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^3.0.0",
+ "domutils": "^2.0.0",
+ "entities": "^2.0.0"
+ }
+ }
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
"widest-line": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
@@ -4824,11 +4943,58 @@
"string-width": "^4.0.0"
}
},
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ }
+ }
+ },
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"write-file-atomic": {
"version": "3.0.3",
@@ -4847,6 +5013,103 @@
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
"integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
"dev": true
+ },
+ "xml2js": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
+ "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~9.0.1"
+ }
+ },
+ "xmlbuilder": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ },
+ "y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ },
+ "yargs": {
+ "version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
}
}
}
diff --git a/package.json b/package.json
index d13724d..21c65ea 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "cantilever-labs",
"version": "1.0.0",
"description": "",
- "main": "index.js",
+ "main": "app.js",
"scripts": {
"start:dev": "nodemon app.js",
"start": "node app.js"
@@ -10,14 +10,27 @@
"author": "",
"license": "ISC",
"dependencies": {
+ "aws-sdk": "^2.907.0",
"bcryptjs": "^2.4.3",
"body-parser": "^1.19.0",
+ "bootstrap-email": "^1.1.1",
"cookie-session": "^1.4.0",
"cors": "^2.8.5",
"crypto": "^1.0.1",
+ "dotenv": "^9.0.1",
"express": "^4.17.1",
+ "google-auth-library": "^7.0.4",
+ "grandjs": "^2.2.30",
+ "gridfs-stream": "^1.1.1",
+ "handlebars": "^4.7.7",
"jsonwebtoken": "^8.5.1",
+ "messagebird": "^3.6.1",
"mongoose": "^5.12.2",
+ "multer": "^1.4.2",
+ "multer-gridfs-storage": "^4.2.0",
+ "multer-s3": "^2.9.0",
+ "nodemailer": "^6.6.0",
+ "nodemailer-smtp-transport": "^2.7.4",
"passport": "^0.4.1",
"passport-google-oauth": "^2.0.0",
"razorpay": "^2.0.6",
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..e511ade
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,309 @@
+# Cantileverlabs Nodejs Backend API Documentation.
+## Project Structure :
+ ```
+ /root
+ |- controllers
+ | |-- admin.js
+ | |-- auth.js
+ | |-- blog.js
+ | |-- coupon.js
+ | |-- course.js
+ | |-- payment.js
+ | |-- profile.js
+ | |-- query.js
+ |
+ |- middlewares
+ | |-- isAdmin.js
+ | |-- requireLogin.js
+ |
+ |- models
+ | |-- Blog.js
+ | |-- Coupon.js
+ | |-- Course.js
+ | |-- CourseType.js
+ | |-- Order.js
+ | |-- query.js
+ | |-- Student.js
+ | |-- User.js
+ |
+ |- routes
+ | |-- admin.js
+ | |-- auth.js
+ | |-- blog.js
+ | |-- Coupon.js
+ | |-- course.js
+ | |-- payment.js
+ | |-- profile.js
+ | |-- query.js
+ |
+ |- app.js
+ ```
+ ### App will listen on the port `http://localhost:5000`
+
+ # Routes Functions and Body Parameters.
+
+ ## File :- Admin.js
+
+ ```
+ Route : /addSchedule
+ Method: POST
+ Requirements : |-- isAuth
+ |-- isAdmin
+
+ Route : /editSchedule
+ Method: POST
+ Requirements : |-- isAuth
+ |-- isAdmin
+
+ Route : /deleteSchedule
+ Method: POST
+ Requirements : |-- isAuth
+ |-- isAdmin
+
+```
+
+ ## File :- Auth.js
+ ### Note: `All the Body Params are as it is`
+
+ ```
+ Route : /protected
+ Method: GET
+ Requirements : |-- isAuth
+
+
+ Route : /signup
+ Method: POST
+ Body Params :- firstName
+ - lastName
+ - email *must*
+ - password *must*
+ ---------- for sending the Verification Emial to user.
+ - sending_company_email
+ - subject
+ Response : {
+ message:"You are Registered, Please Login"
+ }
+ Response if email verification: {
+ message:"Email sent with 6 Digit OTP , Check your Email"
+ }
+
+ Route : /verifyemail
+ Method: POST
+ Body Params: - otp
+
+ Route : /signin
+ Method: POST
+ Body Params : - email
+ - password
+
+ Route : /sendotp
+ Method: POST
+ Body Params : phoneNumber
+ Respone : {id:id} id of the transaction.
+
+ Route : /getotp
+ Method: POST
+ Body Params : id , otp
+ Response : {message:"Code Verified"}
+
+ Route : /forgotpassword
+ Method: POST
+ Body Params : email,link,sending_company_email,subject.
+
+ { - email of the user. }
+ { - link is where to send the user for resetting a password. }
+ { - sending_company_email is email address of the comapny to send the email to the user. }
+ { - subject is email subject }
+
+ Route : /resetpassword/:_id/:token
+ Method: POST
+ Headers Params : _id, token
+ Body Params : password
+ Response : {message:"Password Updated!"}
+
+```
+
+ ## File :- BLog.js
+
+ ```
+ Route : /addBlog
+ Method: POST
+ Body Params : _id , title , body , author , image
+
+ String : { _id : Database _id of a person who is adding up a blog}
+ String : { title : title of the blog}
+ String: { body : body of the blog}
+ String: image of the blog to be added}
+ String : Author of the blog}
+
+
+ Route : /getAllBlogs
+ Method: GET
+ Body Params : none
+
+ Route : /deleteBlog
+ Method: POST
+ Body Params : _id * must *
+
+ { _id : _id is a id of the blog to delete.}
+
+ Route : /editBlog
+ Method: POST
+ Body Params : _id * must * , body , title , image.
+
+ String : { _id : Database _id of a person who is adding up a blog}
+ String : { title : title of the blog}
+ String: { body : body of the blog}
+ String: image of the blog to be added}
+
+```
+
+ ## File :- Coupon.js
+
+ ```
+ Route : /set-coupon
+ Method: POST
+ Body Params : percentage , coupon_code , remainingTimes
+
+ String : { couponCode : Coupon code of the coupon}
+ String: { percentage: Discount percentage of the coupon}
+ String: { numAllowed : No of times the coupon is allwoed}
+
+ Route : /getAllCoupons
+ Method: GET
+ Body Params : none
+
+ Route : /deleteCoupon
+ Method: POST
+ Requirements : isAdmin, isAuth
+ Body Params : couponCode * must *
+
+ { couponCode : coupon code of the coupon }
+
+ Route : /addCoupon
+ Method: POST
+ Requirements : isAdmin, isAuth
+ Body Params : couponCode * must * , percentage , numAllowed
+
+ String : { couponCode : Coupon code of the coupon}
+ String: { percentage: Discount percentage of the coupon}
+ String: { numAllowed : No of times the coupon is allwoed}
+
+```
+
+## File Course.js
+
+```
+ Route : /addCourse
+ Method : POST
+ Requirements : isAdmin , isAuth
+ Body Params : name , mentor , totalLectures , route
+
+ Route : /getAllCourse
+ Method : GET
+ Requirements : None
+ Body Params : None
+
+
+ Route : /getSingleParCourse
+ Method : POST
+ Body Params : parCourseId
+
+
+ Route : /getMeetSchedule
+ Method : POST
+ Requiremnents : isAuth
+ Body Params : courseId
+
+
+ Route : /getFromRoute
+ Method : GET
+ Requirements : None
+ Query Params : route
+
+
+ Route : /addClick
+ Method : POST
+ Requiremnts : isAuth
+ Body Params : route , userId
+
+ ```
+
+ ## File Payments.js
+
+ ```
+
+ Route : /verification
+ Method : POST
+ Requirements : None
+ Body Params :
+
+
+ Route : /razorpay
+ Method : POST
+ Requirements : requireLogin
+ Body Params : courseId , couponCode
+
+ ```
+
+
+ ## File Profle.js
+
+ ```
+ Route : getProfile
+ Method : GET
+ Requirements : requireLogin
+ Body Params : _id of the User.
+
+
+ Route : postProfile
+ Method : POST
+ Requirements : requireLogin
+ Body Params : _id , interests , projects , yearofgrad , phoneNumber , institute , skills
+
+ Route : deleteUser
+ Method : POST
+ Requirements : requireLogin
+ Body Params : _id
+ {_id : _id of the User to delete the Profile}
+
+
+ Route : editUser
+ Method : POST
+ Requirements : requireLogin
+ Body Params : _id , newFirstName , newLastName ,email
+
+ {_id : _id of the user to edit the profile}
+ {newFirstName : New Name }
+ {newLastName : New last name}
+ {email : if email has to be changed}
+
+```
+
+
+
+## File Query.js
+
+```
+ Route : addQuery
+ Method : POST
+ Requirements : None
+ Body Params : fullName , phoneNumber , email , query , other , graduationYear
+
+
+ Route : getAllQueries
+ Method : GET
+ Requirements : None
+ Body Params : None
+
+
+ Route : getOtherQueries
+ Method : GET
+ Requirements : None
+ Body Params : None
+
+
+ Route : getTypeQueries
+ Method : POST
+ Requirements : None
+ Body Params : type
\ No newline at end of file
diff --git a/routes/Coupon.js b/routes/Coupon.js
index e44e90c..5c8b41f 100644
--- a/routes/Coupon.js
+++ b/routes/Coupon.js
@@ -1,15 +1,30 @@
const express = require("express");
-const couponController = require('../controllers/coupon') ;
+const couponController = require("../controllers/coupon");
-const isAuth = require('../middleware/requirelogin') ;
-const isAdmin = require('../middleware/isAdmin') ;
+const isAuth = require("../middleware/requirelogin");
+const isAdmin = require("../middleware/isAdmin");
const router = express.Router();
-router.get("/getAllCoupons",isAuth , isAdmin , couponController.getAllCoupons);
+router.post("/set-coupon", (req, res) => {
+ const { percentage, coupon_code, remainingTimes } = req.body;
+ if (!coupon_code || !percentage || !remainingTimes) {
+ return res.status(422).json({ error: "Add all fields" });
+ } else {
+ const coupon = new Coupon({
+ coupon_code,
+ percentage,
+ remainingTimes,
+ });
+ coupon.save().then((result) => {
+ res.status(200).json({ message: "Coupon set Successfully" });
+ });
+ }
+});
+router.get("/getAllCoupons", couponController.getAllCoupons);
-router.post("/addCoupon", isAuth , isAdmin ,couponController.addCoupon);
+router.post("/addCoupon", isAuth, isAdmin, couponController.addCoupon);
-router.post("/deleteCoupon", isAuth , isAdmin ,couponController.deleteCoupon);
+router.post("/deleteCoupon", isAuth, isAdmin, couponController.deleteCoupon);
module.exports = router;
diff --git a/routes/auth.js b/routes/auth.js
index 0eeb700..ecaaff0 100644
--- a/routes/auth.js
+++ b/routes/auth.js
@@ -1,12 +1,24 @@
-const express = require('express') ;
-const authController = require('../controllers/auth') ;
-const isAuth = require('../middleware/requirelogin') ;
-const router = express.Router() ;
+const express = require("express");
+const authController = require("../controllers/auth");
+const isAuth = require("../middleware/requirelogin");
+const router = express.Router();
-router.get('/protected' ,isAuth,authController.checkProtected) ;
+router.get("/protected", isAuth, authController.checkProtected);
-router.post('/signup' , authController.postSignup) ;
+router.post("/signup", authController.postSignup);
-router.post('/signin' , authController.postSignin) ;
+router.post("/signin", authController.postSignin);
-module.exports = router ;
\ No newline at end of file
+router.post("/sendotp", authController.sendOTP);
+
+router.post("/getotp", authController.getOTP);
+
+router.post("/forgotpassword", authController.forgotpassword);
+
+router.post("/resetpassword/:_id/:token", authController.resetpassword);
+
+// router.post("/googleSignIn/:tokenId", authController.googleSignIn);
+
+// router.post("/verifyemail", authController.verfiyemail);
+
+module.exports = router;
diff --git a/routes/blog.js b/routes/blog.js
new file mode 100644
index 0000000..847327c
--- /dev/null
+++ b/routes/blog.js
@@ -0,0 +1,42 @@
+const express = require("express");
+const router = express.Router();
+const BlogController = require("../controllers/blog");
+const isAuth = require("../middleware/requirelogin");
+const multer = require("multer");
+const multerS3 = require("multer-s3");
+const aws = require("aws-sdk");
+
+aws.config.update({
+ secretAccessKey: `${process.env.AWS_SEC}`,
+ accessKeyId: `${process.env.AWS_KEY}`,
+ region: "ap-south-1",
+});
+
+const s3 = new aws.S3();
+
+const upload = multer({
+ storage: multerS3({
+ s3: s3,
+ acl: "public-read",
+ bucket: "cantilever-blog-images",
+ metadata: function (req, file, cb) {
+ cb(null, { fieldName: file.originalname });
+ },
+
+ key: function (req, file, cb) {
+ cb(null, file.originalname);
+ },
+ }),
+});
+
+router.post("/addBlog", upload.single("blog_image"), BlogController.addBlog);
+
+router.get("/getAllBlogs", BlogController.getAllBlogs);
+
+router.get("/blog/:id", BlogController.getSingleBlog);
+
+router.post("/deleteBlog/", BlogController.deleteBlog);
+
+router.post("/editBlog/", BlogController.editBlog);
+
+module.exports = router;
diff --git a/routes/profile.js b/routes/profile.js
index d28c137..adc3a2c 100644
--- a/routes/profile.js
+++ b/routes/profile.js
@@ -1,13 +1,15 @@
-const express = require('express') ;
-const profileRoute = require('../controllers/profile') ;
-const authMiddleware = require('../middleware/requirelogin') ;
+const express = require("express");
+const profileRoute = require("../controllers/profile");
+const authMiddleware = require("../middleware/requirelogin");
-const router = express.Router() ;
+const router = express.Router();
-router.get('/getProfile' , authMiddleware , profileRoute.getProfile) ;
+router.get("/getProfile", authMiddleware, profileRoute.getProfile);
-router.post('/postProfile' , authMiddleware , profileRoute.postProfile) ;
+router.post("/postProfile", authMiddleware, profileRoute.postProfile);
-router.post('/deleteUser' , authMiddleware , profileRoute.deleteUser) ;
+router.post("/deleteUser", authMiddleware, profileRoute.deleteUser);
-module.exports = router ;
\ No newline at end of file
+router.post("/editUser", authMiddleware, profileRoute.editProfile);
+
+module.exports = router;
diff --git a/views/images/Icon feather-lock.png b/views/images/Icon feather-lock.png
new file mode 100644
index 0000000..190e530
Binary files /dev/null and b/views/images/Icon feather-lock.png differ
diff --git a/views/images/Icon material-copyright.png b/views/images/Icon material-copyright.png
new file mode 100644
index 0000000..ca3aacd
Binary files /dev/null and b/views/images/Icon material-copyright.png differ
diff --git a/views/images/Rectangle 1048.png b/views/images/Rectangle 1048.png
new file mode 100644
index 0000000..c410052
Binary files /dev/null and b/views/images/Rectangle 1048.png differ
diff --git a/views/images/certificate design-11.png b/views/images/certificate design-11.png
new file mode 100644
index 0000000..1abff59
Binary files /dev/null and b/views/images/certificate design-11.png differ
diff --git a/views/reset.css b/views/reset.css
new file mode 100644
index 0000000..38a531d
--- /dev/null
+++ b/views/reset.css
@@ -0,0 +1,66 @@
+body {
+ font-size: 16px;
+ font-family: Poppins;
+ letter-spacing: 0.02em;
+}
+
+.gray-reset-J {
+ background-color: #f2f7fb;
+}
+
+.reset-J h2 {
+ font-weight: 600;
+}
+.reset-J p {
+ font-weight: lighter;
+ font-size: 20px;
+}
+
+.reset-J button {
+ background-color: #ffc600;
+ color: white;
+ font-weight: 600;
+ font-size: 19px;
+ width: 340px;
+ border-radius: 10px 10px 10px 10px;
+}
+
+.reset-logo-J img {
+ width: 79px;
+ height: 79px;
+}
+
+.reset-logo1-J img {
+ width: 200px;
+ height: 50px;
+}
+
+.reset-logo2-J img {
+ width: 17px;
+ height: 17px;
+}
+
+.reset-light-J p {
+ font-size: 15px;
+}
+
+.light-copyright-J {
+ font-weight: lighter;
+ color: #6d6d6d;
+}
+
+.bold-copyright-J {
+ font-weight: 700;
+ color: #6d6d6d;
+}
+
+@media (max-width: 410px) {
+ .reset-J button {
+ width: 240px;
+ background-color: #ffc600;
+ color: white;
+ font-weight: 600;
+ font-size: 19px;
+ border-radius: 10px 10px 10px 10px;
+ }
+}
diff --git a/views/reset.html b/views/reset.html
new file mode 100644
index 0000000..ce15bd3
--- /dev/null
+++ b/views/reset.html
@@ -0,0 +1,147 @@
+
+
+
+
+
+ Forgot password
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hello
+
+
+ We got a request to reset your Password. No need to worry you can
+ reset your Password by clicking the Reset Button.
+
+
Reset Password
+
+
+
+
+
+
+
+
Privacy Policy | Terms of Use | Contact us
+
+
+
+
+
copyright
+ 2018 Cantilever Labs
+
+
+
+
+
+
+
+
+