qiwi payment and fixes

This commit is contained in:
Sergey Yarkov 2020-01-06 13:29:42 +03:00
parent f1ead2ff26
commit 29cf8cc3e4
19 changed files with 983 additions and 86 deletions

View File

@ -1,4 +1,4 @@
module.exports = { module.exports = {
url: 'mongodb://localhost:27017/', url: 'local',
name: 'digital_store' name: 'digital_store'
} }

View File

@ -7,8 +7,7 @@ function checkAuthenticated(req, res, next) {
res.redirect('/admin'); res.redirect('/admin');
} }
module.exports = function (server, db) { module.exports = function (server, db) {
// роуты
server.get('/control-panel', checkAuthenticated, async (req, res) => { server.get('/control-panel', checkAuthenticated, async (req, res) => {
try { try {
const store = await db.collection('content').findOne({}); const store = await db.collection('content').findOne({});
@ -20,7 +19,6 @@ module.exports = function (server, db) {
host: req.headers.host, host: req.headers.host,
pageName: ['Главная', 'main'], pageName: ['Главная', 'main'],
}); });
console.log(req.user);
} catch (error) { } catch (error) {
res.render('main/404'); res.render('main/404');
} }
@ -108,21 +106,6 @@ module.exports = function (server, db) {
res.render('main/404'); res.render('main/404');
} }
}); });
server.get('/control-panel/database', checkAuthenticated, async (req, res) => {
try {
const store = await db.collection('content').findOne({});
res.render('admin/database', {
name: req.user.name,
email: req.user.email,
title: `${store.title} | Настройка Базы Данных`,
host: req.headers.host,
pageName: ['База данных', 'database'],
});
} catch (error) {
res.render('main/404');
}
});
// редактирование категорий // редактирование категорий
server.post('/control-panel/categories/create', checkAuthenticated, (req, res) => { server.post('/control-panel/categories/create', checkAuthenticated, (req, res) => {

View File

@ -0,0 +1,21 @@
const QiwiBillPaymentsAPI = require('@qiwi/bill-payments-node-js-sdk');
const SECRET_KEY = '';
const qiwiApi = new QiwiBillPaymentsAPI(SECRET_KEY);
module.exports = function(server, db) {
server.put('/payment', (req, res) => {
const billId = qiwiApi.generateId();
const fields = {
amount: req.body.totalPrice,
currency: 'RUB',
comment: `Оплата товара "${req.body.items[0].title}" Счёт: ${billId}`,
expirationDateTime: qiwiApi.getLifetimeByDay(),
customFields: {themeCode: 'Sergei-YaS7mIY0CQe'},
email: req.body.email,
successUrl: `http://test.ru/`
}
qiwiApi.createBill(billId, fields).then((data) => {
res.send(data);
});
});
}

View File

@ -11,6 +11,7 @@ const path = require('path');
const passport = require('passport'); const passport = require('passport');
const flash = require('express-flash'); const flash = require('express-flash');
const session = require('express-session'); const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const methodOverride = require('method-override'); const methodOverride = require('method-override');
const multer = require('multer'); const multer = require('multer');
@ -31,7 +32,12 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
server.use(express.urlencoded({ extended: false })); server.use(express.urlencoded({ extended: false }));
server.use(express.json()); server.use(express.json());
server.use(flash()); server.use(flash());
server.use(session({secret: process.env.SESSION_SECRET,resave: false,saveUninitialized: false})); server.use(session({secret: process.env.SESSION_SECRET,resave: false,saveUninitialized: false, store:
new MongoStore({
url: db_config.url,
touchAfter: 24 * 3600 // time period in seconds
})
}));
server.use(passport.initialize()); server.use(passport.initialize());
server.use(passport.session()); server.use(passport.session());
server.use(methodOverride('_method')); server.use(methodOverride('_method'));
@ -43,6 +49,9 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
require('./routes/admin')(server, db); // маршрут с формой авторизации админа require('./routes/admin')(server, db); // маршрут с формой авторизации админа
require('./routes/control-panel')(server, db); // маршруты с панелью управления require('./routes/control-panel')(server, db); // маршруты с панелью управления
require('./routes/api')(server, db); // отдача данных клиенту require('./routes/api')(server, db); // отдача данных клиенту
// Payments
require('./routes/payments/qiwi.payment')(server, db);
// 404 Redirect // 404 Redirect
server.use((req, res) => res.status(404).render('main/404')); server.use((req, res) => res.status(404).render('main/404'));
@ -50,10 +59,12 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
.catch((error) => { .catch((error) => {
server.get('*', (req, res) => { server.get('*', (req, res) => {
res.send('Ошибка соединения с БД.'); res.send('Ошибка соединения с БД.');
console.log(error);
}); });
}) })
.finally(() => { .finally(() => {
server.listen(3000, () => { const port = process.env.PORT || 3000;
server.listen(port, () => {
console.log('Listen port 3000...'); console.log('Listen port 3000...');
}); });
}); });

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -24,10 +24,10 @@ body.has-fixed-sidenav
input(id="email" type="text" name="email" value=email required) input(id="email" type="text" name="email" value=email required)
label(for="email") Почта label(for="email") Почта
.input-field.col.s12 .input-field.col.s12
input(id="oldPass" type="password" name="oldPass" required) input(id="oldPass" type="password" name="oldPass" autocomplete="on" required)
label(for="oldPass") Старый пароль label(for="oldPass") Старый пароль
.input-field.col.s12 .input-field.col.s12
input(id="newPass" type="password" name="newPass" required) input(id="newPass" type="password" name="newPass" autocomplete="on" required)
label(for="newPass") Новый пароль label(for="newPass") Новый пароль
.edit_success.col.s12 .edit_success.col.s12
button(type="submit" class="btn waves-effect") Сохранить button(type="submit" class="btn waves-effect") Сохранить

View File

@ -3,6 +3,7 @@ html(lang='ru')
head head
meta(charset='utf-8') meta(charset='utf-8')
meta(http-equiv='Cоntent-Type' cоntent='text/html;' charset='utf-8') meta(http-equiv='Cоntent-Type' cоntent='text/html;' charset='utf-8')
meta(name="viewport" content="width=device-width")
title #{title} title #{title}
// Materialize CSS // Materialize CSS
link(rel="stylesheet", href="/css/materialize.min.css") link(rel="stylesheet", href="/css/materialize.min.css")

View File

@ -66,10 +66,6 @@ header.admin-header
a(href='http://'+host+'/control-panel/administrators') a(href='http://'+host+'/control-panel/administrators')
i.material-icons supervisor_account i.material-icons supervisor_account
| Администратор | Администратор
li(data-page="database")
a(href='http://'+host+'/control-panel/database')
i.material-icons storage
| База данных
//- Модальные окна //- Модальные окна
include ./modals/help.pug include ./modals/help.pug
include ./modals/news.pug include ./modals/news.pug

View File

@ -18,18 +18,18 @@
input.originalTitle(style="color: gray;" type="text" name="originalTitle" required readonly) input.originalTitle(style="color: gray;" type="text" name="originalTitle" required readonly)
label Старое название категории label Старое название категории
.input-field .input-field
input.title(type="text" name="title" required) input.title(placeholder="Введите новое название категории" type="text" name="title" required)
label Новое название категории label Новое название категории
.input-field .input-field
textarea.type(class="materialize-textarea" type="text" name="type" required) textarea.type(placeholder="Введите тип аккаунтов" class="materialize-textarea" type="text" name="type" required)
label Тип аккаунтов label Тип аккаунтов
.input-field .input-field
select.img(name="img" required) select.img(name="img" required)
option(value="" disabled selected) option(value="" disabled selected)
| Выберите иконку | Выберите иконку
label(for="img") Иконка label Иконка
.input-field .input-field
input.format(type="text" name="format" required) input.format(placeholder="Введите формат аккаунтов" type="text" name="format" required)
label Формат аккаунтов label Формат аккаунтов
.edit_success .edit_success
button(type="submit" class="btn orange waves-effect" style="width: 100%;height:50px") Редактировать button(type="submit" class="btn orange waves-effect" style="width: 100%;height:50px") Редактировать

View File

@ -15,20 +15,20 @@
input.id(style="color: gray;" type="text" name="id" required readonly) input.id(style="color: gray;" type="text" name="id" required readonly)
label ID товара label ID товара
.input-field .input-field
input.title(id="title" type="text" name="title" required) input.title(placeholder="Введите новое название товара" type="text" name="title" required)
label(for="title") Новое название товара label Новое название товара
.input-field .input-field
input.price(id="price" type="text" name="price" required) input.price(placeholder="Введите цену товара ₽" type="text" name="price" pattern="([0-9\.]+)" required)
label(for="price") Цена товара ₽ label Цена товара ₽
.input-field .input-field
textarea.description(id="description" class="materialize-textarea" type="text" name="description" required) textarea.description(placeholder="Введите описание товара" class="materialize-textarea" type="text" name="description" required)
label(for="description") Описание товара label Описание товара
.input-field .input-field
select.category(name="category") select.category(name="category")
label Категория label Категория
.input-field .input-field
textarea.data(id="data" class="materialize-textarea" type="text" name="data" placeholder="Перечислите аккаунты через запятую." required) textarea.data(class="materialize-textarea" type="text" name="data" placeholder="Перечислите аккаунты через запятую." required)
label(for="data") Данные товара label Данные товара
.edit_success .edit_success
button(type="submit" class="btn orange waves-effect" style="width: 100%;height:50px") Редактировать button(type="submit" class="btn orange waves-effect" style="width: 100%;height:50px") Редактировать
// Edit Category END // Edit Category END

View File

@ -21,18 +21,18 @@ body.has-fixed-sidenav
.row .row
form(id="addCategory" action="/control-panel/categories/create" method="POST" enctype="multipart/form-data") form(id="addCategory" action="/control-panel/categories/create" method="POST" enctype="multipart/form-data")
.input-field.col.l6.s12 .input-field.col.l6.s12
input(name="title" type="text" required) input(id="title" name="title" type="text" required)
label(for="title") Название категории label(for="title") Название категории
.input-field.col.l6.s12 .input-field.col.l6.s12
select#icons_select(name="img" required) select#icons_select(name="img" required)
option(value="" disabled selected) option(value="" disabled selected)
| Выберите иконку | Выберите иконку
label(for="img") Иконка label Иконка
.input-field.col.l6.s12 .input-field.col.l6.s12
textarea(class="materialize-textarea" type="text" name="type" required) textarea(id="type" class="materialize-textarea" type="text" name="type" required)
label(for="type") Тип аккаунтов label(for="type") Тип аккаунтов
.input-field.col.l6.s12 .input-field.col.l6.s12
input(type="text" name="format" required) input(id="format" type="text" name="format" required)
label(for="format") Формат аккаунтов label(for="format") Формат аккаунтов
.col.s12 .col.s12
button(type="submit" class="btn") Добавить категорию button(type="submit" class="btn") Добавить категорию

View File

@ -1,11 +0,0 @@
include ./assets/head.pug
body.has-fixed-sidenav
include ./assets/templates/header.pug
main.admin-main
.container
.row
.col.s12
h2 Настройка БД
include ./assets/templates/footer.pug
include ./assets/scripts.pug

View File

@ -3,6 +3,7 @@ html(lang='ru')
head head
meta(charset='utf-8') meta(charset='utf-8')
meta(http-equiv='Cоntent-Type' cоntent='text/html;' charset='utf-8') meta(http-equiv='Cоntent-Type' cоntent='text/html;' charset='utf-8')
meta(name="viewport" content="width=device-width")
title #{title} title #{title}
// Materialize CSS // Materialize CSS
link(rel="stylesheet", href="/css/materialize.min.css") link(rel="stylesheet", href="/css/materialize.min.css")

View File

@ -9,7 +9,7 @@
h4.small-title Оплатить товар h4.small-title Оплатить товар
span#payClose.modal-close span#payClose.modal-close
i.material-icons close i.material-icons close
form(action='#') form
.modal-content__fields .modal-content__fields
.title-field .title-field
label(for='title') Наименование label(for='title') Наименование
@ -17,12 +17,9 @@
.email-field .email-field
label(for='email') Ваш E-mail label(for='email') Ваш E-mail
input(required='' type='text' name='email') input(required='' type='text' name='email')
.phone-field
label(for="phone") Номер QIWI
input(required='' type='text' name='phone')
.payment-field .payment-field
label(for='payment') Способ оплаты label(for='payment') Способ оплаты
select(name='payment') select
option(value='qiwi' data-icon='../img/payments-icons/qiwi.svg') QIWI option(value='qiwi' data-icon='../img/payments-icons/qiwi.svg') QIWI
.modal-content__purchase .modal-content__purchase
button.purchase-btn.waves-effect.btn(type='submit' href='#') Перейти к оплате button.purchase-btn.waves-effect.btn(type='submit' href='#') Перейти к оплате

330
package-lock.json generated
View File

@ -839,6 +839,16 @@
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
} }
}, },
"@qiwi/bill-payments-node-js-sdk": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/@qiwi/bill-payments-node-js-sdk/-/bill-payments-node-js-sdk-3.1.3.tgz",
"integrity": "sha512-GLqkeQl0ypVeNh+vMztZLRbiMwVihPwYzbnYE93pMDXxpZQf+m9NaMYPAhZNoJmu0wWUb/68SXN13iWBcAydXw==",
"requires": {
"request": "^2.87.0",
"request-promise": "^4.2.2",
"uuid": "^3.2.1"
}
},
"@types/babel-types": { "@types/babel-types": {
"version": "7.0.7", "version": "7.0.7",
"resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz", "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz",
@ -1108,7 +1118,6 @@
"version": "6.10.2", "version": "6.10.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
"integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
"dev": true,
"requires": { "requires": {
"fast-deep-equal": "^2.0.1", "fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0", "fast-json-stable-stringify": "^2.0.0",
@ -1265,6 +1274,14 @@
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
}, },
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"requires": {
"safer-buffer": "~2.1.0"
}
},
"asn1.js": { "asn1.js": {
"version": "4.10.1", "version": "4.10.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
@ -1303,6 +1320,11 @@
} }
} }
}, },
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
"assign-symbols": { "assign-symbols": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
@ -1330,12 +1352,27 @@
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
"dev": true "dev": true
}, },
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"atob": { "atob": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true "dev": true
}, },
"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="
},
"aws4": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz",
"integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A=="
},
"axios": { "axios": {
"version": "0.19.0", "version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
@ -1485,6 +1522,14 @@
"integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
"dev": true "dev": true
}, },
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"requires": {
"tweetnacl": "^0.14.3"
}
},
"bcryptjs": { "bcryptjs": {
"version": "2.4.3", "version": "2.4.3",
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
@ -1505,8 +1550,7 @@
"bluebird": { "bluebird": {
"version": "3.7.2", "version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
"dev": true
}, },
"bn.js": { "bn.js": {
"version": "4.11.8", "version": "4.11.8",
@ -1852,6 +1896,11 @@
"integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
"dev": true "dev": true
}, },
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"center-align": { "center-align": {
"version": "0.1.3", "version": "0.1.3",
"resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
@ -2065,6 +2114,14 @@
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true "dev": true
}, },
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"commander": { "commander": {
"version": "2.20.3", "version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@ -2189,6 +2246,14 @@
"integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
"dev": true "dev": true
}, },
"connect-mongo": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/connect-mongo/-/connect-mongo-3.2.0.tgz",
"integrity": "sha512-0Mx88079Z20CG909wCFlR3UxhMYGg6Ibn1hkIje1hwsqOLWtL9HJV+XD0DAjUvQScK6WqY/FA8tSVQM9rR64Rw==",
"requires": {
"mongodb": "^3.1.0"
}
},
"console-browserify": { "console-browserify": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
@ -2399,6 +2464,14 @@
"integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
"dev": true "dev": true
}, },
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"date-format": { "date-format": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz",
@ -2518,6 +2591,11 @@
"rimraf": "^2.6.3" "rimraf": "^2.6.3"
} }
}, },
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"depd": { "depd": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@ -2662,6 +2740,15 @@
"stream-shift": "^1.0.0" "stream-shift": "^1.0.0"
} }
}, },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@ -2981,6 +3068,11 @@
} }
} }
}, },
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extend-shallow": { "extend-shallow": {
"version": "3.0.2", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
@ -3067,17 +3159,20 @@
} }
} }
}, },
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
},
"fast-deep-equal": { "fast-deep-equal": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
"dev": true
}, },
"fast-json-stable-stringify": { "fast-json-stable-stringify": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
"dev": true
}, },
"faye-websocket": { "faye-websocket": {
"version": "0.10.0", "version": "0.10.0",
@ -3276,6 +3371,21 @@
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
"dev": true "dev": true
}, },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
},
"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==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"forwarded": { "forwarded": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
@ -3913,6 +4023,14 @@
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
"dev": true "dev": true
}, },
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": { "glob": {
"version": "7.1.6", "version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
@ -4045,6 +4163,20 @@
"integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==",
"dev": true "dev": true
}, },
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
},
"har-validator": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"requires": {
"ajv": "^6.5.5",
"har-schema": "^2.0.0"
}
},
"has": { "has": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@ -4209,6 +4341,16 @@
"micromatch": "^3.1.10" "micromatch": "^3.1.10"
} }
}, },
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"https-browserify": { "https-browserify": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
@ -4652,6 +4794,11 @@
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true "dev": true
}, },
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
"is-windows": { "is-windows": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@ -4681,6 +4828,11 @@
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true "dev": true
}, },
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
"js-levenshtein": { "js-levenshtein": {
"version": "1.1.6", "version": "1.1.6",
"resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
@ -4698,6 +4850,11 @@
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true "dev": true
}, },
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"jsesc": { "jsesc": {
"version": "2.5.2", "version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@ -4710,11 +4867,20 @@
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true "dev": true
}, },
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
},
"json-schema-traverse": { "json-schema-traverse": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
"dev": true },
"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="
}, },
"json3": { "json3": {
"version": "3.3.3", "version": "3.3.3",
@ -4747,6 +4913,17 @@
"graceful-fs": "^4.1.6" "graceful-fs": "^4.1.6"
} }
}, },
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
}
},
"jstransformer": { "jstransformer": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
@ -5446,6 +5623,11 @@
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true "dev": true
}, },
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
},
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@ -5790,6 +5972,11 @@
"sha.js": "^2.4.8" "sha.js": "^2.4.8"
} }
}, },
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"picomatch": { "picomatch": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz",
@ -5903,6 +6090,11 @@
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true "dev": true
}, },
"psl": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
"integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ=="
},
"pstree.remy": { "pstree.remy": {
"version": "1.1.7", "version": "1.1.7",
"resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz",
@ -6073,8 +6265,7 @@
"punycode": { "punycode": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
"dev": true
}, },
"qs": { "qs": {
"version": "6.7.0", "version": "6.7.0",
@ -6305,6 +6496,59 @@
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
}, },
"request": {
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"requires": {
"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.0",
"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.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
},
"dependencies": {
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
}
}
},
"request-promise": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.5.tgz",
"integrity": "sha512-ZgnepCykFdmpq86fKGwqntyTiUrHycALuGggpyCZwMvGaZWgxW6yagT0FHkgo5LzYvOaCNvxYwWYIjevSH1EDg==",
"requires": {
"bluebird": "^3.5.0",
"request-promise-core": "1.1.3",
"stealthy-require": "^1.1.1",
"tough-cookie": "^2.3.3"
}
},
"request-promise-core": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz",
"integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==",
"requires": {
"lodash": "^4.17.15"
}
},
"require-directory": { "require-directory": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@ -6975,6 +7219,22 @@
"extend-shallow": "^3.0.0" "extend-shallow": "^3.0.0"
} }
}, },
"sshpk": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
"requires": {
"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"
}
},
"ssri": { "ssri": {
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
@ -7010,6 +7270,11 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
}, },
"stealthy-require": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
"integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
},
"stream-browserify": { "stream-browserify": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
@ -7355,6 +7620,22 @@
"nopt": "~1.0.10" "nopt": "~1.0.10"
} }
}, },
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
},
"dependencies": {
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
}
}
},
"tslib": { "tslib": {
"version": "1.10.0", "version": "1.10.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
@ -7367,6 +7648,19 @@
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
"dev": true "dev": true
}, },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"requires": {
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
},
"type-is": { "type-is": {
"version": "1.6.18", "version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@ -7610,7 +7904,6 @@
"version": "4.2.2", "version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"dev": true,
"requires": { "requires": {
"punycode": "^2.1.0" "punycode": "^2.1.0"
} }
@ -7694,14 +7987,23 @@
"uuid": { "uuid": {
"version": "3.3.3", "version": "3.3.3",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
"integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
"dev": true
}, },
"vary": { "vary": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
}, },
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"vm-browserify": { "vm-browserify": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",

View File

@ -19,8 +19,10 @@
"homepage": "https://github.com/sergeyyarkov/digital-store#readme", "homepage": "https://github.com/sergeyyarkov/digital-store#readme",
"dependencies": { "dependencies": {
"@babel/polyfill": "^7.7.0", "@babel/polyfill": "^7.7.0",
"@qiwi/bill-payments-node-js-sdk": "^3.1.3",
"axios": "^0.19.0", "axios": "^0.19.0",
"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
"connect-mongo": "^3.2.0",
"cors": "^2.8.5", "cors": "^2.8.5",
"express": "^4.17.1", "express": "^4.17.1",
"express-flash": "0.0.2", "express-flash": "0.0.2",

View File

@ -30,7 +30,7 @@ export class CategoryEditModal extends Modal {
const data = JSON.parse(e.target.value), const data = JSON.parse(e.target.value),
icons = await apiService.getIcons(); icons = await apiService.getIcons();
this.$img.innerHTML = '<option value="" disabled selected>Выберите иконку</option>'; this.$img.innerHTML = `<option value='${data.img}' selected>Оставить прежнюю</option>`;
this.$id.value = data.id; this.$id.value = data.id;
this.$originalTitle.value = data.title[0].toUpperCase() + data.title.slice(1); this.$originalTitle.value = data.title[0].toUpperCase() + data.title.slice(1);
this.$title.value = data.title[0].toUpperCase() + data.title.slice(1); this.$title.value = data.title[0].toUpperCase() + data.title.slice(1);

View File

@ -1,4 +1,5 @@
import { Modal } from "../core/modal"; import { Modal } from "../core/modal";
import axios from "axios";
export class PayModal extends Modal { export class PayModal extends Modal {
constructor (id, open, close) { constructor (id, open, close) {
@ -27,7 +28,7 @@ export class PayModal extends Modal {
} }
} }
makePay(e, info) { async makePay(e, info) {
e.preventDefault(); e.preventDefault();
const payInfo = { const payInfo = {
@ -38,10 +39,9 @@ export class PayModal extends Modal {
totalPrice: parseFloat(info.price) totalPrice: parseFloat(info.price)
} }
payInfo.payMethod = this.$el.querySelector('.payment-field input').value; payInfo.payMethod = this.$el.querySelector('.payment-field input').value;
payInfo.phone = this.$el.querySelector('.phone-field input').value;
payInfo.email = this.$el.querySelector('.email-field input').value; payInfo.email = this.$el.querySelector('.email-field input').value;
const response = await axios.put('/payment', payInfo);
console.log('Pay info: ', payInfo); //console.log(response.data);
document.location.href = response.data.payUrl;
} }
} }