From 58f47c7480068dbdeaa76de669fcf9fc5ee50546 Mon Sep 17 00:00:00 2001
From: divlo
Date: Mon, 3 Aug 2020 12:04:07 +0200
Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Configure=20standardJS?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 7 +-
api/.gitignore | 1 +
api/app.js | 116 +-
api/assets/config/config.js | 48 +-
api/assets/config/emails.js | 8 +-
api/assets/config/errors.js | 28 +-
api/assets/config/transporter.js | 8 +-
api/assets/functions/functionObject.js | 80 +-
api/assets/functions/main/armstrongNumber.js | 68 +-
api/assets/functions/main/calculateAge.js | 86 +-
api/assets/functions/main/convertCurrency.js | 66 +-
api/assets/functions/main/convertDistance.js | 68 +-
api/assets/functions/main/convertEncoding.js | 309 +-
.../main/convertRomanArabicNumbers.js | 173 +-
.../functions/main/convertTemperature.js | 76 +-
api/assets/functions/main/fibonacci.js | 74 +-
api/assets/functions/main/findLongestWord.js | 54 +-
api/assets/functions/main/heapAlgorithm.js | 78 +-
api/assets/functions/main/isPalindrome.js | 54 +-
api/assets/functions/main/linkShortener.js | 92 +-
api/assets/functions/main/randomNumber.js | 56 +-
api/assets/functions/main/randomQuote.js | 50 +-
api/assets/functions/main/rightPrice.js | 100 +-
api/assets/functions/main/sortArray.js | 90 +-
api/assets/functions/main/weatherRequest.js | 68 +-
api/assets/functions/secondary/capitalize.js | 14 +-
.../functions/secondary/dateTimeManagement.js | 78 +-
.../functions/secondary/formatNumberResult.js | 16 +-
api/assets/utils/database.js | 12 +-
api/assets/utils/deleteFilesNameStartWith.js | 30 +-
api/assets/utils/errorHandling.js | 10 +-
api/assets/utils/getPagesHelper.js | 46 +-
api/assets/utils/helperQueryNumber.js | 8 +-
api/controllers/admin.js | 531 +-
api/controllers/categories.js | 24 +-
api/controllers/comments.js | 116 +-
api/controllers/favorites.js | 126 +-
api/controllers/functions.js | 120 +-
api/controllers/quotes.js | 64 +-
api/controllers/tasks.js | 108 +-
api/controllers/users.js | 516 +-
api/middlewares/isAdmin.js | 42 +-
api/middlewares/isAuth.js | 38 +-
api/models/categories.js | 22 +-
api/models/comments.js | 14 +-
api/models/favorites.js | 5 +-
api/models/functions.js | 74 +-
api/models/quotes.js | 32 +-
api/models/short_links.js | 22 +-
api/models/tasks.js | 24 +-
api/models/users.js | 86 +-
api/package-lock.json | 2446 ++++-
api/package.json | 11 +-
api/routes/admin.js | 346 +-
api/routes/categories.js | 12 +-
api/routes/comments.js | 26 +-
api/routes/favorites.js | 22 +-
api/routes/functions.js | 20 +-
api/routes/quotes.js | 18 +-
api/routes/tasks.js | 26 +-
api/routes/users.js | 242 +-
website/.env.example | 1 +
website/.gitignore | 2 +-
website/components/CodeBlock.js | 18 +-
website/components/Footer/Footer.js | 30 +-
.../FunctionAdmin/AddEditFunction.js | 231 +-
.../FunctionAdmin/EditArticleFunction.js | 69 +-
.../FunctionAdmin/EditFormFunction.js | 266 +-
.../components/FunctionCard/FunctionCard.js | 96 +-
.../FunctionPage/CommentCard/CommentCard.js | 195 +-
.../FunctionPage/FunctionArticle.js | 14 +-
.../FunctionComments/FunctionComments.js | 211 +-
.../FunctionPage/FunctionComponentTop.js | 114 +-
.../components/FunctionPage/FunctionForm.js | 299 +-
.../components/FunctionPage/FunctionPage.js | 35 +-
.../components/FunctionPage/FunctionTabs.js | 20 +-
.../FunctionPage/FunctionTabsTop.js | 42 +-
.../components/FunctionsList/FunctionsList.js | 183 +-
website/components/HeadTag.js | 66 +-
website/components/Header/Header.js | 130 +-
website/components/Header/NavigationLink.js | 31 +-
website/components/Loader.js | 20 +-
website/components/Modal.js | 12 +-
website/contexts/UserContext.js | 115 +-
website/hoc/withoutAuth.js | 26 +-
website/hooks/useAPI.js | 47 +-
website/next.config.js | 6 +-
website/package-lock.json | 9005 +++++++++--------
website/package.json | 11 +-
website/pages/404.js | 37 +-
website/pages/_app.js | 44 +-
website/pages/_document.js | 46 +-
website/pages/about.js | 81 +-
website/pages/admin/[slug].js | 153 +-
website/pages/admin/index.js | 130 +-
website/pages/admin/manageCategories.js | 332 +-
website/pages/admin/manageQuotes.js | 217 +-
website/pages/functions/[slug].js | 90 +-
website/pages/functions/chronometerTimer.js | 199 +-
website/pages/functions/index.js | 32 +-
website/pages/functions/randomQuote.js | 466 +-
website/pages/functions/rightPrice.js | 274 +-
website/pages/functions/toDoList.js | 250 +-
website/pages/index.js | 121 +-
website/pages/users/[name].js | 455 +-
website/pages/users/forgotPassword.js | 129 +-
website/pages/users/index.js | 187 +-
website/pages/users/login.js | 130 +-
website/pages/users/newPassword.js | 140 +-
website/pages/users/register.js | 150 +-
website/public/js/extraHeightCSS.js | 9 +-
website/public/js/preloader.js | 6 +-
website/server.js | 40 +-
website/utils/api.js | 16 +-
website/utils/config/config.dev.js | 1 -
website/utils/config/config.js | 2 +-
website/utils/config/config.prod.js | 1 -
website/utils/copyToClipboard.js | 16 +-
website/utils/redirect.js | 16 +-
website/utils/sunEditorConfig.js | 26 +-
120 files changed, 12271 insertions(+), 10025 deletions(-)
create mode 100644 website/.env.example
delete mode 100644 website/utils/config/config.dev.js
delete mode 100644 website/utils/config/config.prod.js
diff --git a/README.md b/README.md
index e7eea7a..06c9b07 100644
--- a/README.md
+++ b/README.md
@@ -5,10 +5,9 @@
- La citation que vous avez proposée a été ${(isValid) ? "validée" : "supprimée"}.
+ La citation que vous avez proposée a été ${(isValid) ? 'validée' : 'supprimée'}.
Lien vers la fonction randomQuote de FunctionProject.
@@ -35,7 +35,7 @@ exports.emailQuoteTemplate = (isValid, quote, frontendLink) => `
Si votre citation a été supprimée et vous pensez que c'est une erreur, contactez-moi à cette adresse email : contact@divlo.fr .
- ` : ""}
+ ` : ''}
La citation en question :
@@ -57,7 +57,7 @@ exports.emailQuoteTemplate = (isValid, quote, frontendLink) => `
-`;
+`
exports.emailUserTemplate = (subtitle, buttonText, url, footerText) => `
@@ -107,4 +107,4 @@ exports.emailUserTemplate = (subtitle, buttonText, url, footerText) => `
-`;
\ No newline at end of file
+`
diff --git a/api/assets/config/errors.js b/api/assets/config/errors.js
index b2514e6..3c62e8f 100644
--- a/api/assets/config/errors.js
+++ b/api/assets/config/errors.js
@@ -1,18 +1,18 @@
const errors = {
- generalError: {
- message: "Vous n'avez pas rentré de valeur valide.",
- statusCode: 400
- },
+ generalError: {
+ message: "Vous n'avez pas rentré de valeur valide.",
+ statusCode: 400
+ },
- serverError: {
- message: "Le serveur n'a pas pu traiter votre requête.",
- statusCode: 500
- },
+ serverError: {
+ message: "Le serveur n'a pas pu traiter votre requête.",
+ statusCode: 500
+ },
- requiredFields: {
- message: "Vous devez remplir tous les champs...",
- statusCode: 400
- }
-};
+ requiredFields: {
+ message: 'Vous devez remplir tous les champs...',
+ statusCode: 400
+ }
+}
-module.exports = errors;
\ No newline at end of file
+module.exports = errors
diff --git a/api/assets/config/transporter.js b/api/assets/config/transporter.js
index 6f32737..09ef01f 100644
--- a/api/assets/config/transporter.js
+++ b/api/assets/config/transporter.js
@@ -1,6 +1,6 @@
-const nodemailer = require('nodemailer');
-const { EMAIL_INFO } = require('./config');
+const nodemailer = require('nodemailer')
+const { EMAIL_INFO } = require('./config')
-const transporter = nodemailer.createTransport(EMAIL_INFO);
+const transporter = nodemailer.createTransport(EMAIL_INFO)
-module.exports = transporter;
\ No newline at end of file
+module.exports = transporter
diff --git a/api/assets/functions/functionObject.js b/api/assets/functions/functionObject.js
index 0ae03e2..69a4bef 100644
--- a/api/assets/functions/functionObject.js
+++ b/api/assets/functions/functionObject.js
@@ -1,44 +1,44 @@
-const { randomNumberOutput } = require('./main/randomNumber');
-const convertRomanArabicNumbersOutput = require('./main/convertRomanArabicNumbers');
-const convertDistanceOutput = require('./main/convertDistance');
-const convertTemperatureOutput = require('./main/convertTemperature');
-const armstrongNumberOutput = require('./main/armstrongNumber');
-const weatherRequestOutput = require('./main/weatherRequest');
-const convertCurrencyOutput = require('./main/convertCurrency');
-const calculateAgeOutput = require('./main/calculateAge');
-const heapAlgorithmOutput = require('./main/heapAlgorithm');
-const convertEncodingOutput = require('./main/convertEncoding');
-const randomQuote = require('./main/randomQuote');
-const linkShortener = require('./main/linkShortener');
-const rightPriceOutput = require('./main/rightPrice');
-const isPalindromeOutput = require('./main/isPalindrome');
-const findLongestWordOutput = require('./main/findLongestWord');
-const fibonacciOutput = require('./main/fibonacci');
-const sortArrayOutput = require('./main/sortArray');
+const { randomNumberOutput } = require('./main/randomNumber')
+const convertRomanArabicNumbersOutput = require('./main/convertRomanArabicNumbers')
+const convertDistanceOutput = require('./main/convertDistance')
+const convertTemperatureOutput = require('./main/convertTemperature')
+const armstrongNumberOutput = require('./main/armstrongNumber')
+const weatherRequestOutput = require('./main/weatherRequest')
+const convertCurrencyOutput = require('./main/convertCurrency')
+const calculateAgeOutput = require('./main/calculateAge')
+const heapAlgorithmOutput = require('./main/heapAlgorithm')
+const convertEncodingOutput = require('./main/convertEncoding')
+const randomQuote = require('./main/randomQuote')
+const linkShortener = require('./main/linkShortener')
+const rightPriceOutput = require('./main/rightPrice')
+const isPalindromeOutput = require('./main/isPalindrome')
+const findLongestWordOutput = require('./main/findLongestWord')
+const fibonacciOutput = require('./main/fibonacci')
+const sortArrayOutput = require('./main/sortArray')
const functionObject = {
- randomNumber : randomNumberOutput,
- convertRomanArabicNumbers: convertRomanArabicNumbersOutput,
- convertDistance : convertDistanceOutput,
- convertTemperature : convertTemperatureOutput,
- armstrongNumber : armstrongNumberOutput,
- weatherRequest : weatherRequestOutput,
- convertCurrency : convertCurrencyOutput,
- calculateAge : calculateAgeOutput,
- heapAlgorithm : heapAlgorithmOutput,
- convertEncoding : convertEncodingOutput,
- randomQuote : randomQuote,
- linkShortener : linkShortener,
- rightPrice : rightPriceOutput,
- isPalindrome : isPalindromeOutput,
- findLongestWord : findLongestWordOutput,
- fibonacci : fibonacciOutput,
- sortArray : sortArrayOutput,
-};
-
-// Choisi la fonction à exécuter
-function functionToExecute(option) {
- return functionObject[option];
+ randomNumber: randomNumberOutput,
+ convertRomanArabicNumbers: convertRomanArabicNumbersOutput,
+ convertDistance: convertDistanceOutput,
+ convertTemperature: convertTemperatureOutput,
+ armstrongNumber: armstrongNumberOutput,
+ weatherRequest: weatherRequestOutput,
+ convertCurrency: convertCurrencyOutput,
+ calculateAge: calculateAgeOutput,
+ heapAlgorithm: heapAlgorithmOutput,
+ convertEncoding: convertEncodingOutput,
+ randomQuote: randomQuote,
+ linkShortener: linkShortener,
+ rightPrice: rightPriceOutput,
+ isPalindrome: isPalindromeOutput,
+ findLongestWord: findLongestWordOutput,
+ fibonacci: fibonacciOutput,
+ sortArray: sortArrayOutput
}
-module.exports = functionToExecute;
\ No newline at end of file
+// Choisi la fonction à exécuter
+function functionToExecute (option) {
+ return functionObject[option]
+}
+
+module.exports = functionToExecute
diff --git a/api/assets/functions/main/armstrongNumber.js b/api/assets/functions/main/armstrongNumber.js
index 2c5d704..971a555 100644
--- a/api/assets/functions/main/armstrongNumber.js
+++ b/api/assets/functions/main/armstrongNumber.js
@@ -1,46 +1,46 @@
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields } = require('../../config/errors');
-const formatNumberResult = require('../secondary/formatNumberResult');
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields } = require('../../config/errors')
+const formatNumberResult = require('../secondary/formatNumberResult')
-/**
+/**
* @description Vérifie si un nombre fait partie des nombres d'Armstrong.
* @param {Number} number - Le nombre à tester
* @returns {Object} Un objet contenant l'explication en html et le booléen si oui ou non c'est un nombre d'armstrong
* @examples armstrongNumber(153) → 153 est un nombre d'Armstrong, car 1
3 + 5
3 + 3
3 = 153.
- */
-function armstrongNumber(number) {
- let numberString = number.toString();
- let numberStringLength = numberString.length;
+ */
+function armstrongNumber (number) {
+ const numberString = number.toString()
+ const numberStringLength = numberString.length
- let result = 0;
- let resultString = "";
- for (let index = 0; index < numberStringLength; index++) {
- result = result + parseInt(numberString[index]) ** numberStringLength;
- resultString = resultString + " + " + numberString[index] + "
" + numberStringLength + " ";
- }
+ let result = 0
+ let resultString = ''
+ for (let index = 0; index < numberStringLength; index++) {
+ result = result + parseInt(numberString[index]) ** numberStringLength
+ resultString = resultString + ' + ' + numberString[index] + '
' + numberStringLength + ' '
+ }
- const formattedNumber = formatNumberResult(number);
- const isArmstrongNumber = (result === number);
- return {
- isArmstrongNumber,
- resultHTML: `
${formattedNumber} ${isArmstrongNumber ? "est" : "n'est pas"} un nombre d'Armstrong, car ${resultString.slice(2)} = ${formatNumberResult(result)}.
`
- }
+ const formattedNumber = formatNumberResult(number)
+ const isArmstrongNumber = (result === number)
+ return {
+ isArmstrongNumber,
+ resultHTML: `
${formattedNumber} ${isArmstrongNumber ? 'est' : "n'est pas"} un nombre d'Armstrong, car ${resultString.slice(2)} = ${formatNumberResult(result)}.
`
+ }
}
/* OUTPUTS */
-module.exports = armstrongNumberOutput = ({ res, next }, argsObject) => {
- let { number } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(number)) {
- return errorHandling(next, requiredFields);
- }
+module.exports = ({ res, next }, argsObject) => {
+ let { number } = argsObject
- // Si ce n'est pas un nombre
- number = parseInt(number);
- if (isNaN(number) || number <= 0) {
- return errorHandling(next, { message: "Veuillez rentré un nombre valide.", statusCode: 400 });
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(number)) {
+ return errorHandling(next, requiredFields)
+ }
- return res.status(200).json(armstrongNumber(number));
-}
\ No newline at end of file
+ // Si ce n'est pas un nombre
+ number = parseInt(number)
+ if (isNaN(number) || number <= 0) {
+ return errorHandling(next, { message: 'Veuillez rentré un nombre valide.', statusCode: 400 })
+ }
+
+ return res.status(200).json(armstrongNumber(number))
+}
diff --git a/api/assets/functions/main/calculateAge.js b/api/assets/functions/main/calculateAge.js
index 7cfd736..410110d 100644
--- a/api/assets/functions/main/calculateAge.js
+++ b/api/assets/functions/main/calculateAge.js
@@ -1,50 +1,50 @@
-const errorHandling = require('../../utils/errorHandling');
-const moment = require('moment');
-const { requiredFields } = require('../../config/errors');
+const errorHandling = require('../../utils/errorHandling')
+const moment = require('moment')
+const { requiredFields } = require('../../config/errors')
-function calculateAge(currentDate, { birthDateDay, birthDateMonth, birthDateYear }) {
- const day = currentDate.getDate();
- const month = currentDate.getMonth();
- const currentDateMoment = moment([currentDate.getFullYear(), month, day]);
- const birthDateMoment = moment([birthDateYear, birthDateMonth, birthDateDay]);
+function calculateAge (currentDate, { birthDateDay, birthDateMonth, birthDateYear }) {
+ const day = currentDate.getDate()
+ const month = currentDate.getMonth()
+ const currentDateMoment = moment([currentDate.getFullYear(), month, day])
+ const birthDateMoment = moment([birthDateYear, birthDateMonth, birthDateDay])
- // Calcule l'âge - Moment.js
- const ageYears = currentDateMoment.diff(birthDateMoment, 'year');
- birthDateMoment.add(ageYears, 'years');
- const ageMonths = currentDateMoment.diff(birthDateMoment, 'months');
- birthDateMoment.add(ageMonths, 'months');
- const ageDays = currentDateMoment.diff(birthDateMoment, 'days');
+ // Calcule l'âge - Moment.js
+ const ageYears = currentDateMoment.diff(birthDateMoment, 'year')
+ birthDateMoment.add(ageYears, 'years')
+ const ageMonths = currentDateMoment.diff(birthDateMoment, 'months')
+ birthDateMoment.add(ageMonths, 'months')
+ const ageDays = currentDateMoment.diff(birthDateMoment, 'days')
- const isBirthday = (birthDateDay === day && birthDateMonth === month);
- return { ageYears, ageMonths, ageDays, isBirthday };
+ const isBirthday = (birthDateDay === day && birthDateMonth === month)
+ return { ageYears, ageMonths, ageDays, isBirthday }
}
/* OUTPUTS */
-module.exports = calculateAgeOutput = ({ res, next }, argsObject) => {
- let { birthDate } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(birthDate)) {
- return errorHandling(next, requiredFields);
- }
+module.exports = ({ res, next }, argsObject) => {
+ const { birthDate } = argsObject
- const birthDateDay = parseInt(birthDate.substring(0, 2));
- const birthDateMonth = parseInt((birthDate.substring(3, 5)) - 1);
- const birthDateYear = parseInt(birthDate.substring(6, 10));
-
- // Si ce n'est pas une date valide
- const currentDate = new Date();
- const birthDateObject = new Date(birthDateYear, birthDateMonth, birthDateDay);
- const result = calculateAge(currentDate, { birthDateYear, birthDateMonth, birthDateDay });
- if ((currentDate < birthDateObject) || isNaN(result.ageYears)) {
- return errorHandling(next, { message: "Veuillez rentré une date valide...", statusCode: 400 });
- }
-
- let resultHTML;
- if (result.isBirthday) {
- resultHTML = `
Vous avez ${result.ageYears} ans. Joyeux Anniversaire! 🥳
`;
- } else {
- resultHTML = `
Vous avez ${result.ageYears} ans, ${result.ageMonths} mois et ${result.ageDays} jour(s).
`;
- }
- return res.status(200).json({ ...result, resultHTML });
-}
\ No newline at end of file
+ // S'il n'y a pas les champs obligatoire
+ if (!(birthDate)) {
+ return errorHandling(next, requiredFields)
+ }
+
+ const birthDateDay = parseInt(birthDate.substring(0, 2))
+ const birthDateMonth = parseInt((birthDate.substring(3, 5)) - 1)
+ const birthDateYear = parseInt(birthDate.substring(6, 10))
+
+ // Si ce n'est pas une date valide
+ const currentDate = new Date()
+ const birthDateObject = new Date(birthDateYear, birthDateMonth, birthDateDay)
+ const result = calculateAge(currentDate, { birthDateYear, birthDateMonth, birthDateDay })
+ if ((currentDate < birthDateObject) || isNaN(result.ageYears)) {
+ return errorHandling(next, { message: 'Veuillez rentré une date valide...', statusCode: 400 })
+ }
+
+ let resultHTML
+ if (result.isBirthday) {
+ resultHTML = `
Vous avez ${result.ageYears} ans. Joyeux Anniversaire! 🥳
`
+ } else {
+ resultHTML = `
Vous avez ${result.ageYears} ans, ${result.ageMonths} mois et ${result.ageDays} jour(s).
`
+ }
+ return res.status(200).json({ ...result, resultHTML })
+}
diff --git a/api/assets/functions/main/convertCurrency.js b/api/assets/functions/main/convertCurrency.js
index 92bdb29..5a9309a 100644
--- a/api/assets/functions/main/convertCurrency.js
+++ b/api/assets/functions/main/convertCurrency.js
@@ -1,37 +1,37 @@
-const axios = require('axios');
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields } = require('../../config/errors');
-const formatNumberResult = require('../secondary/formatNumberResult');
+const axios = require('axios')
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields } = require('../../config/errors')
+const formatNumberResult = require('../secondary/formatNumberResult')
/* OUTPUTS */
-module.exports = convertCurrencyOutput = ({ res, next }, argsObject) => {
- let { number, baseCurrency, finalCurrency } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(number && baseCurrency && finalCurrency)) {
- return errorHandling(next, requiredFields);
- }
+module.exports = ({ res, next }, argsObject) => {
+ let { number, baseCurrency, finalCurrency } = argsObject
- // Si ce n'est pas un nombre
- number = parseFloat(number);
- if (isNaN(number)) {
- return errorHandling(next, { message: "Veuillez rentré un nombre valide.", statusCode: 400 });
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(number && baseCurrency && finalCurrency)) {
+ return errorHandling(next, requiredFields)
+ }
- axios.get(`https://api.exchangeratesapi.io/latest?base=${baseCurrency}`)
- .then((response) => {
- const rate = response.data.rates[finalCurrency];
- if (!rate) {
- return errorHandling(next, { message: "La devise n'existe pas.", statusCode: 404 });
- }
- const result = rate * number;
- const dateObject = new Date(response.data.date);
- const year = dateObject.getFullYear();
- const day = ('0'+(dateObject.getDate())).slice(-2);
- const month = ('0'+(dateObject.getMonth()+1)).slice(-2);
- const date = `${day}/${month}/${year}`;
- const resultHTML = `
${formatNumberResult(number)} ${response.data.base} = ${formatNumberResult(result.toFixed(2))} ${finalCurrency}
Dernier rafraîchissement du taux d'échange : ${date}
`;
- return res.status(200).json({ date, result, resultHTML });
- })
- .catch(() => errorHandling(next, { message: "La devise n'existe pas.", statusCode: 404 }));
-}
\ No newline at end of file
+ // Si ce n'est pas un nombre
+ number = parseFloat(number)
+ if (isNaN(number)) {
+ return errorHandling(next, { message: 'Veuillez rentré un nombre valide.', statusCode: 400 })
+ }
+
+ axios.get(`https://api.exchangeratesapi.io/latest?base=${baseCurrency}`)
+ .then((response) => {
+ const rate = response.data.rates[finalCurrency]
+ if (!rate) {
+ return errorHandling(next, { message: "La devise n'existe pas.", statusCode: 404 })
+ }
+ const result = rate * number
+ const dateObject = new Date(response.data.date)
+ const year = dateObject.getFullYear()
+ const day = ('0' + (dateObject.getDate())).slice(-2)
+ const month = ('0' + (dateObject.getMonth() + 1)).slice(-2)
+ const date = `${day}/${month}/${year}`
+ const resultHTML = `
${formatNumberResult(number)} ${response.data.base} = ${formatNumberResult(result.toFixed(2))} ${finalCurrency}
Dernier rafraîchissement du taux d'échange : ${date}
`
+ return res.status(200).json({ date, result, resultHTML })
+ })
+ .catch(() => errorHandling(next, { message: "La devise n'existe pas.", statusCode: 404 }))
+}
diff --git a/api/assets/functions/main/convertDistance.js b/api/assets/functions/main/convertDistance.js
index 9c5acbe..46e00e1 100644
--- a/api/assets/functions/main/convertDistance.js
+++ b/api/assets/functions/main/convertDistance.js
@@ -1,10 +1,10 @@
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields, generalError } = require('../../config/errors');
-const formatNumberResult = require('../secondary/formatNumberResult');
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields, generalError } = require('../../config/errors')
+const formatNumberResult = require('../secondary/formatNumberResult')
-const correspondancesDistance = ["pm", null, null, "nm", null, null, "µm", null, null, "mm", "cm", "dm", "m", "dam", "hm", "km", null, null, "Mm", null, null, "Gm", null, null, "Tm"];
+const correspondancesDistance = ['pm', null, null, 'nm', null, null, 'µm', null, null, 'mm', 'cm', 'dm', 'm', 'dam', 'hm', 'km', null, null, 'Mm', null, null, 'Gm', null, null, 'Tm']
-/**
+/**
* @description Convertis la longueur (distance) avec les unités allant de picomètre au Téramètre.
* @requires {@link correspondancesDistance}
* @param {Number} firstValue - Le nombre que vous voulez convertir
@@ -13,39 +13,39 @@ const correspondancesDistance = ["pm", null, null, "nm", null, null, "µm", null
* @returns {Object|Boolean} → false si arguments non valides et sinon un objet contenant la string et le nombre résultat
* @examples convertDistance(500, 'cm', 'm') → { resultNumber: 5, resultString: "5 m" }
*/
-function convertDistance(firstValue, unitFirstValue, unitFinalValue) {
- const index1 = correspondancesDistance.indexOf(unitFirstValue);
- const index2 = correspondancesDistance.indexOf(unitFinalValue);
- if (index1 !== -1 && index2 !== -1) {
- const difference = index1 - index2;
- const result = firstValue * Math.pow(10, difference);
- return {
- result,
- resultHTML: `
${formatNumberResult(firstValue)} ${unitFirstValue} = ${formatNumberResult(result)} ${unitFinalValue}
`
- };
+function convertDistance (firstValue, unitFirstValue, unitFinalValue) {
+ const index1 = correspondancesDistance.indexOf(unitFirstValue)
+ const index2 = correspondancesDistance.indexOf(unitFinalValue)
+ if (index1 !== -1 && index2 !== -1) {
+ const difference = index1 - index2
+ const result = firstValue * Math.pow(10, difference)
+ return {
+ result,
+ resultHTML: `
${formatNumberResult(firstValue)} ${unitFirstValue} = ${formatNumberResult(result)} ${unitFinalValue}
`
}
- return false;
+ }
+ return false
}
/* OUTPUTS */
-module.exports = convertDistanceOutput = ({ res, next }, argsObject) => {
- let { number, numberUnit, finalUnit } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(number && numberUnit && finalUnit)) {
- return errorHandling(next, requiredFields);
- }
+module.exports = ({ res, next }, argsObject) => {
+ let { number, numberUnit, finalUnit } = argsObject
- // Si ce n'est pas un nombre
- number = parseFloat(number);
- if (isNaN(number)) {
- return errorHandling(next, { message: "Veuillez rentré un nombre valide.", statusCode: 400 });
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(number && numberUnit && finalUnit)) {
+ return errorHandling(next, requiredFields)
+ }
- const result = convertDistance(number, numberUnit, finalUnit);
- if (!result) {
- return errorHandling(next, generalError);
- }
+ // Si ce n'est pas un nombre
+ number = parseFloat(number)
+ if (isNaN(number)) {
+ return errorHandling(next, { message: 'Veuillez rentré un nombre valide.', statusCode: 400 })
+ }
- return res.status(200).json(result);
-}
\ No newline at end of file
+ const result = convertDistance(number, numberUnit, finalUnit)
+ if (!result) {
+ return errorHandling(next, generalError)
+ }
+
+ return res.status(200).json(result)
+}
diff --git a/api/assets/functions/main/convertEncoding.js b/api/assets/functions/main/convertEncoding.js
index 8db3b26..9159378 100644
--- a/api/assets/functions/main/convertEncoding.js
+++ b/api/assets/functions/main/convertEncoding.js
@@ -1,242 +1,239 @@
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields, generalError } = require('../../config/errors');
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields, generalError } = require('../../config/errors')
-/**
+/**
* @description Convertis un nombre décimal en binaire.
* @param {String} value - Le nombre à convertir en string
* @returns {String} - Le nombre en binaire
* @examples decimalToBinary('2') → '10'
*/
-function decimalToBinary(value) {
- value = Number(value);
- if (isNaN(value)) {
- return false;
- } else {
- return value.toString(2);
- }
-}
+function decimalToBinary (value) {
+ value = Number(value)
+ if (isNaN(value)) {
+ return false
+ } else {
+ return value.toString(2)
+ }
+}
-/**
+/**
* @description Convertis un nombre binaire en décimal.
* @param {String} value - Le nombre à convertir
* @returns {(Number|String)} - Le nombre en décimal soit en nombre ou soit en string si supérieur à 1000 car pour 1000 par exemple formatNumberResult renvoie '1 000'
* @examples binaryToDecimal('10') → 2
*/
-function binaryToDecimal(value) {
- const result = parseInt(Number(value), 2);
- if (isNaN(result)) {
- return false;
- } else {
- return result;
- }
-}
+function binaryToDecimal (value) {
+ const result = parseInt(Number(value), 2)
+ if (isNaN(result)) {
+ return false
+ } else {
+ return result
+ }
+}
-/**
+/**
* @description Convertis un nombre décimal en hexadécimal.
- * @param {String} value - Le nombre à convertir
+ * @param {String} value - Le nombre à convertir
* @returns {String} - Le nombre en hexadécimal
* @examples decimalToHexadecimal('15') → 'F'
*/
-function decimalToHexadecimal(value) {
- value = Number(value);
- if (isNaN(value)) {
- return false;
- } else {
- return value.toString(16).toUpperCase();
- }
-}
+function decimalToHexadecimal (value) {
+ value = Number(value)
+ if (isNaN(value)) {
+ return false
+ } else {
+ return value.toString(16).toUpperCase()
+ }
+}
-/**
+/**
* @description Convertis un nombre hexadécimal en décimal.
* @param {String} value - Le nombre à convertir
* @returns {(Number|String)} - Le nombre en décimal soit en nombre ou soit en string si supérieur à 1000 car pour 1000 par exemple formatNumberResult renvoie '1 000'
* @examples hexadecimalToDecimal('F') → 15
*/
-function hexadecimalToDecimal(value) {
- const result = parseInt(value, 16);
- if (isNaN(result)) {
- return false;
- } else {
- return result;
- }
-}
+function hexadecimalToDecimal (value) {
+ const result = parseInt(value, 16)
+ if (isNaN(result)) {
+ return false
+ } else {
+ return result
+ }
+}
-/**
- * @description Convertis un nombre binaire en hexadécimal.
+/**
+ * @description Convertis un nombre binaire en hexadécimal.
* @param {String} value - Le nombre à convertir
* @returns {String} - Le nombre en hexadécimal
* @examples binaryToHexadecimal('1111') → 'F'
- */
-function binaryToHexadecimal(value) {
- value = Number(value);
- value = parseInt(value, 2);
- if (isNaN(value)) {
- return false;
- } else {
- return parseInt(value).toString(16).toUpperCase();
- }
+ */
+function binaryToHexadecimal (value) {
+ value = Number(value)
+ value = parseInt(value, 2)
+ if (isNaN(value)) {
+ return false
+ } else {
+ return parseInt(value).toString(16).toUpperCase()
+ }
}
-/**
- * @description Convertis un nombre hexadécimal en binaire.
+/**
+ * @description Convertis un nombre hexadécimal en binaire.
* @param {String} value - Le nombre à convertir
* @returns {String} - Le nombre en binaire
* @examples hexadecimalToBinary('F') → '1111'
- */
-function hexadecimalToBinary(value) {
- value = parseInt(value, 16);
- if (isNaN(value)) {
- return false;
- } else {
- return parseInt(value).toString(2);
- }
-}
+ */
+function hexadecimalToBinary (value) {
+ value = parseInt(value, 16)
+ if (isNaN(value)) {
+ return false
+ } else {
+ return parseInt(value).toString(2)
+ }
+}
// Convertis des nombres de différentes bases et convertis en UTF-8. (source : http://jsfiddle.net/47zwb41o)
-/**
- * @description Convertis chaque caractère d'une string en codePoint Unicode.
+/**
+ * @description Convertis chaque caractère d'une string en codePoint Unicode.
* @param {String} value - La chaîne de caractère à convertir
* @returns {String}
* @examples textToNumberUnicode('abc') → '97 98 99'
- */
-function textToNumberUnicode(string) {
- try {
- let resultat = "";
- for (let index in string) {
- resultat = resultat + string.codePointAt(index) + " ";
- }
- return resultat;
- }
- catch(error) {
- return false;
+ */
+function textToNumberUnicode (string) {
+ try {
+ let resultat = ''
+ for (const index in string) {
+ resultat = resultat + string.codePointAt(index) + ' '
}
+ return resultat
+ } catch (error) {
+ return false
+ }
}
-/**
- * @description Convertis chaque codePoint Unicode en caractère.
+/**
+ * @description Convertis chaque codePoint Unicode en caractère.
* @param {String} string - Nombre Unicode à convertir espacé par un espace à chaque fois
* @returns {String}
* @examples numberUnicodeToText('97 98 99') → 'abc'
- */
-function numberUnicodeToText(string) {
- try {
- const array = string.split(" ");
- let resultat = "";
- for (let index in array) {
- resultat += String.fromCodePoint(parseInt(array[index]).toString());
- }
- return resultat;
- }
- catch(error) {
- return false;
+ */
+function numberUnicodeToText (string) {
+ try {
+ const array = string.split(' ')
+ let resultat = ''
+ for (const index in array) {
+ resultat += String.fromCodePoint(parseInt(array[index]).toString())
}
+ return resultat
+ } catch (error) {
+ return false
+ }
}
-/**
+/**
* @description Convertis un Texte en Binaire (UTF-8).
* @param {String} s - La chaîne de caractère à convertir
* @returns {String}
* @examples textToBinary('abc') → '01100001 01100010 01100011'
*/
-function textToBinary(s) {
- try {
- s = unescape( encodeURIComponent(s));
- let chr, i = 0, l = s.length, out = '';
- for( ; i < l; i ++ ){
- chr = s.charCodeAt( i ).toString(2);
- while(chr.length % 8 != 0 ){ chr = '0' + chr; }
- out += chr;
- }
- return out.replace(/(\d{8})/g, '$1 ').replace(/(^\s+|\s+$)/,'');
- } catch (error) {
- return false;
+function textToBinary (s) {
+ try {
+ s = unescape(encodeURIComponent(s))
+ let chr; let i = 0; const l = s.length; let out = ''
+ for (; i < l; i++) {
+ chr = s.charCodeAt(i).toString(2)
+ while (chr.length % 8 !== 0) { chr = '0' + chr }
+ out += chr
}
+ return out.replace(/(\d{8})/g, '$1 ').replace(/(^\s+|\s+$)/, '')
+ } catch (error) {
+ return false
+ }
}
-/**
+/**
* @description Convertis du Binaire (UTF-8) en Texte.
* @param {String} s - La chaîne de caractère contenant tous les octets à convertir
* @returns {String}
* @examples binaryToText('01100001 01100010 01100011') → 'abc'
*/
-function binaryToText(s){
- try {
- s = s.replace(/\s/g,'')
- let i = 0, l = s.length, chr, out = '';
- for( ; i < l; i += 8){
- chr = parseInt( s.substr(i, 8 ), 2).toString(16);
- out += '%' + ((chr.length % 2 == 0) ? chr : '0' + chr);
- }
- return decodeURIComponent(out);
- } catch (error) {
- return false;
+function binaryToText (s) {
+ try {
+ s = s.replace(/\s/g, '')
+ let i = 0; const l = s.length; let chr; let out = ''
+ for (; i < l; i += 8) {
+ chr = parseInt(s.substr(i, 8), 2).toString(16)
+ out += '%' + ((chr.length % 2 === 0) ? chr : '0' + chr)
}
-}
+ return decodeURIComponent(out)
+ } catch (error) {
+ return false
+ }
+}
-/**
+/**
* @description Convertis un Texte en Hexadécimal (UTF-8).
* @param {String} s - La chaîne de caractère à convertir
* @returns {String}
* @examples textToHexadecimal('abc') → '61 62 63'
*/
function textToHexadecimal (s) {
- try {
- s = unescape( encodeURIComponent( s ) );
- let chr, i = 0, l = s.length, out = '';
- for( ; i < l; i++ ){
- chr = s.charCodeAt( i ).toString( 16 );
- out += ( chr.length % 2 == 0 ) ? chr : '0' + chr;
- out += " ";
- }
- return out.toUpperCase();
- }
- catch (error) {
- return false;
+ try {
+ s = unescape(encodeURIComponent(s))
+ let chr; let i = 0; const l = s.length; let out = ''
+ for (; i < l; i++) {
+ chr = s.charCodeAt(i).toString(16)
+ out += (chr.length % 2 === 0) ? chr : '0' + chr
+ out += ' '
}
+ return out.toUpperCase()
+ } catch (error) {
+ return false
+ }
}
-/**
+/**
* @description Convertis de l'Hexadécimal (UTF-8) en Texte.
* @param {String} s - La chaîne de caractère contenant tous les nombres Hexadécimal à convertir
* @returns {String}
* @examples hexadecimalToText('61 62 63') → 'abc'
*/
function hexadecimalToText (s) {
- try {
- s = s.replace(/\s/g,'');
- return decodeURIComponent( s.replace( /../g, '%$&' ) );
- }
- catch (error) {
- return false;
- }
+ try {
+ s = s.replace(/\s/g, '')
+ return decodeURIComponent(s.replace(/../g, '%$&'))
+ } catch (error) {
+ return false
+ }
}
/* OUTPUTS */
-const convertEncoding = { decimalToBinary, binaryToDecimal, decimalToHexadecimal, hexadecimalToDecimal, binaryToHexadecimal, hexadecimalToBinary, textToNumberUnicode, numberUnicodeToText, textToBinary, binaryToText, textToHexadecimal, hexadecimalToText };
-function executeFunction(option, value) {
- return convertEncoding[option](value);
+const convertEncoding = { decimalToBinary, binaryToDecimal, decimalToHexadecimal, hexadecimalToDecimal, binaryToHexadecimal, hexadecimalToBinary, textToNumberUnicode, numberUnicodeToText, textToBinary, binaryToText, textToHexadecimal, hexadecimalToText }
+function executeFunction (option, value) {
+ return convertEncoding[option](value)
}
-module.exports = convertEncodingOutput = ({ res, next }, argsObject) => {
- let { value, functionName } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(value && functionName)) {
- return errorHandling(next, requiredFields);
- }
+module.exports = ({ res, next }, argsObject) => {
+ const { value, functionName } = argsObject
- // Si la fonction n'existe pas
- if (!convertEncoding.hasOwnProperty(functionName)) {
- return errorHandling(next, { message: "Cette conversion n'existe pas.", statusCode: 400 });
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(value && functionName)) {
+ return errorHandling(next, requiredFields)
+ }
- const result = executeFunction(functionName, value);
+ // Si la fonction n'existe pas
+ // eslint-disable-next-line
+ if (!convertEncoding.hasOwnProperty(functionName)) {
+ return errorHandling(next, { message: "Cette conversion n'existe pas.", statusCode: 400 })
+ }
- // Mauvaise valeur entrée
- if (!result) {
- return errorHandling(next, generalError);
- }
+ const result = executeFunction(functionName, value)
- return res.status(200).json({ result, resultHTML: `
${result}
` });
-}
\ No newline at end of file
+ // Mauvaise valeur entrée
+ if (!result) {
+ return errorHandling(next, generalError)
+ }
+
+ return res.status(200).json({ result, resultHTML: `
${result}
` })
+}
diff --git a/api/assets/functions/main/convertRomanArabicNumbers.js b/api/assets/functions/main/convertRomanArabicNumbers.js
index ef020a9..8c7c86d 100644
--- a/api/assets/functions/main/convertRomanArabicNumbers.js
+++ b/api/assets/functions/main/convertRomanArabicNumbers.js
@@ -1,123 +1,122 @@
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields, generalError } = require('../../config/errors');
-const formatNumberResult = require('../secondary/formatNumberResult');
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields, generalError } = require('../../config/errors')
+const formatNumberResult = require('../secondary/formatNumberResult')
/* Variable pour convertRomanArabicNumbers */
const correspondancesRomainArabe = [
- [1000, "M"],
- [900, "CM"],
- [500, "D"],
- [400, "CD"],
- [100, "C"],
- [90, "XC"],
- [50, "L"],
- [40, "XL"],
- [10, "X"],
- [9, "IX"],
- [5, "V"],
- [4, "IV"],
- [1, "I"],
-];
+ [1000, 'M'],
+ [900, 'CM'],
+ [500, 'D'],
+ [400, 'CD'],
+ [100, 'C'],
+ [90, 'XC'],
+ [50, 'L'],
+ [40, 'XL'],
+ [10, 'X'],
+ [9, 'IX'],
+ [5, 'V'],
+ [4, 'IV'],
+ [1, 'I']
+]
-/**
+/**
* @description Convertis un nombre arabe en nombre romain.
* @param {number} nombre - Le nombre arabe à convertir
* @returns {string}
* @examples convertArabicToRoman(24) → 'XXIV'
*/
-function convertArabicToRoman(nombre) {
- // Initialisation de la variable qui va contenir le résultat de la conversion
- let chiffresRomains = "";
+function convertArabicToRoman (nombre) {
+ // Initialisation de la variable qui va contenir le résultat de la conversion
+ let chiffresRomains = ''
- function extraireChiffreRomain(valeurLettre, lettres) {
- while (nombre >= valeurLettre) {
- chiffresRomains = chiffresRomains + lettres;
- nombre = nombre - valeurLettre;
- }
+ function extraireChiffreRomain (valeurLettre, lettres) {
+ while (nombre >= valeurLettre) {
+ chiffresRomains = chiffresRomains + lettres
+ nombre = nombre - valeurLettre
}
+ }
- correspondancesRomainArabe.forEach(correspondance => {
- extraireChiffreRomain(correspondance[0], correspondance[1]);
- });
+ correspondancesRomainArabe.forEach(correspondance => {
+ extraireChiffreRomain(correspondance[0], correspondance[1])
+ })
- return chiffresRomains;
-}
+ return chiffresRomains
+}
-/**
+/**
* @description Convertis un nombre romain en nombre arabe.
* @param {string} string - Le nombre romain à convertir
* @return {number}
* @example convertRomanToArabic('XXIV') → 24
*/
-function convertRomanToArabic(string) {
- let result = 0;
- correspondancesRomainArabe.forEach((correspondance) => {
- while (string.indexOf(correspondance[1]) === 0) {
- // Ajout de la valeur décimale au résultat
- result += correspondance[0];
- // Supprimer la lettre romaine correspondante du début
- string = string.replace(correspondance[1], '');
- }
- });
- if (string != '') {
- result = 0;
+function convertRomanToArabic (string) {
+ let result = 0
+ correspondancesRomainArabe.forEach((correspondance) => {
+ while (string.indexOf(correspondance[1]) === 0) {
+ // Ajout de la valeur décimale au résultat
+ result += correspondance[0]
+ // Supprimer la lettre romaine correspondante du début
+ string = string.replace(correspondance[1], '')
}
- return result;
-}
+ })
+ if (string !== '') {
+ result = 0
+ }
+ return result
+}
/* OUTPUTS */
const convertRomanToArabicOutput = ({ res, next }, number) => {
-
- // S'il n'y a pas les champs obligatoire
- if (!(number)) {
- return errorHandling(next, requiredFields);
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(number)) {
+ return errorHandling(next, requiredFields)
+ }
- // Formate le paramètre
- number = number.toUpperCase();
+ // Formate le paramètre
+ number = number.toUpperCase()
- const result = convertRomanToArabic(number);
- if (result === 0) {
- return errorHandling(next, generalError);
- }
-
- return res.status(200).json({ result, resultHTML: `
${number} s'écrit ${result} en chiffres arabes.
` });
+ const result = convertRomanToArabic(number)
+ if (result === 0) {
+ return errorHandling(next, generalError)
+ }
+
+ return res.status(200).json({ result, resultHTML: `
${number} s'écrit ${result} en chiffres arabes.
` })
}
const convertArabicToRomanOutput = ({ res, next }, number) => {
-
- // S'il n'y a pas les champs obligatoire
- if (!(number)) {
- return errorHandling(next, requiredFields);
- }
-
- // Si ce n'est pas un nombre
- number = parseInt(number);
- if (isNaN(number)) {
- return errorHandling(next, { message: "Veuillez rentré un nombre valide.", statusCode: 400 });
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(number)) {
+ return errorHandling(next, requiredFields)
+ }
- const result = convertArabicToRoman(number);
- return res.status(200).json({ result, resultHTML: `
${formatNumberResult(number)} s'écrit ${result} en chiffres romains.
` });
+ // Si ce n'est pas un nombre
+ number = parseInt(number)
+ if (isNaN(number)) {
+ return errorHandling(next, { message: 'Veuillez rentré un nombre valide.', statusCode: 400 })
+ }
+
+ const result = convertArabicToRoman(number)
+ return res.status(200).json({ result, resultHTML: `
${formatNumberResult(number)} s'écrit ${result} en chiffres romains.
` })
}
-const convertRomanArabicObject = { convertRomanToArabicOutput, convertArabicToRomanOutput };
-function executeFunction(option, value, { res, next }) {
- return convertRomanArabicObject[option]({ res, next}, value);
+const convertRomanArabicObject = { convertRomanToArabicOutput, convertArabicToRomanOutput }
+function executeFunction (option, value, { res, next }) {
+ return convertRomanArabicObject[option]({ res, next }, value)
}
-module.exports = convertRomanArabicNumbersOutput = ({ res, next }, argsObject) => {
- let { value, functionName } = argsObject;
+module.exports = ({ res, next }, argsObject) => {
+ const { value, functionName } = argsObject
- // S'il n'y a pas les champs obligatoire
- if (!(value && functionName)) {
- return errorHandling(next, requiredFields);
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(value && functionName)) {
+ return errorHandling(next, requiredFields)
+ }
- // Si la fonction n'existe pas
- if (!convertRomanArabicObject.hasOwnProperty(functionName)) {
- return errorHandling(next, { message: "Cette conversion n'existe pas.", statusCode: 400 });
- }
+ // Si la fonction n'existe pas
+ // eslint-disable-next-line
+ if (!convertRomanArabicObject.hasOwnProperty(functionName)) {
+ return errorHandling(next, { message: "Cette conversion n'existe pas.", statusCode: 400 })
+ }
- executeFunction(functionName, value, { res, next });
-}
\ No newline at end of file
+ executeFunction(functionName, value, { res, next })
+}
diff --git a/api/assets/functions/main/convertTemperature.js b/api/assets/functions/main/convertTemperature.js
index 2940dbb..614eaee 100644
--- a/api/assets/functions/main/convertTemperature.js
+++ b/api/assets/functions/main/convertTemperature.js
@@ -1,50 +1,48 @@
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields, generalError } = require('../../config/errors');
-const formatNumberResult = require('../secondary/formatNumberResult');
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields, generalError } = require('../../config/errors')
+const formatNumberResult = require('../secondary/formatNumberResult')
-/**
+/**
* @description Convertis des °C en °F et l'inverse aussi.
* @param {Number} degree - Nombre de degrès
* @param {String} unit - Unité du nombre (°C ou °F) après conversion
* @returns {Object} false si arguments non valides et sinon un objet contenant la string et le nombre résultat
* @examples convertTemperature(23, '°F') → { result: 73.4, resultHTML: "73.4 °F" }
*/
-function convertTemperature(degree, unit) {
- let temperatureValue = 0;
- if (unit === "°C") {
- temperatureValue = (degree - 32) * 5/9;
- }
- else if (unit === "°F") {
- temperatureValue = ((degree * 9/5) + 32);
- }
- else {
- return false;
- }
- return {
- result: temperatureValue,
- resultHTML: `
${formatNumberResult(degree)} ${(unit === '°C') ? "°F" : "°C"} = ${formatNumberResult(temperatureValue)} ${unit}
`
- };
-}
+function convertTemperature (degree, unit) {
+ let temperatureValue = 0
+ if (unit === '°C') {
+ temperatureValue = (degree - 32) * 5 / 9
+ } else if (unit === '°F') {
+ temperatureValue = ((degree * 9 / 5) + 32)
+ } else {
+ return false
+ }
+ return {
+ result: temperatureValue,
+ resultHTML: `
${formatNumberResult(degree)} ${(unit === '°C') ? '°F' : '°C'} = ${formatNumberResult(temperatureValue)} ${unit}
`
+ }
+}
/* OUTPUTS */
-module.exports = convertTemperatureOutput = ({ res, next }, argsObject) => {
- let { degree, unitToConvert } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(degree && unitToConvert)) {
- return errorHandling(next, requiredFields);
- }
-
- // Si ce n'est pas un nombre
- degree = parseFloat(degree);
- if (isNaN(degree)) {
- return errorHandling(next, { message: "Veuillez rentré un nombre valide.", statusCode: 400 });
- }
+module.exports = ({ res, next }, argsObject) => {
+ let { degree, unitToConvert } = argsObject
- const result = convertTemperature(degree, unitToConvert);
- if (!result) {
- return errorHandling(next, generalError);
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(degree && unitToConvert)) {
+ return errorHandling(next, requiredFields)
+ }
- return res.status(200).json(result);
-}
\ No newline at end of file
+ // Si ce n'est pas un nombre
+ degree = parseFloat(degree)
+ if (isNaN(degree)) {
+ return errorHandling(next, { message: 'Veuillez rentré un nombre valide.', statusCode: 400 })
+ }
+
+ const result = convertTemperature(degree, unitToConvert)
+ if (!result) {
+ return errorHandling(next, generalError)
+ }
+
+ return res.status(200).json(result)
+}
diff --git a/api/assets/functions/main/fibonacci.js b/api/assets/functions/main/fibonacci.js
index 2b0b317..60cae59 100644
--- a/api/assets/functions/main/fibonacci.js
+++ b/api/assets/functions/main/fibonacci.js
@@ -1,46 +1,46 @@
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields } = require('../../config/errors');
-const formatNumberResult = require('../secondary/formatNumberResult');
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields } = require('../../config/errors')
+const formatNumberResult = require('../secondary/formatNumberResult')
/**
* @description Calcule les counter premiers nombres de la suite de fibonacci.
- * @param {number} counter
+ * @param {number} counter
*/
-function fibonacci(counter, result = [], a = 0, b = 1) {
- if (counter === 0) {
- return result;
- }
- counter--;
- result.push(a);
- return fibonacci(counter, result, b, a + b);
+function fibonacci (counter, result = [], a = 0, b = 1) {
+ if (counter === 0) {
+ return result
+ }
+ counter--
+ result.push(a)
+ return fibonacci(counter, result, b, a + b)
}
/* OUTPUTS */
-module.exports = fibonacciOutput = ({ res, next }, argsObject) => {
- let { counter } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(counter)) {
- return errorHandling(next, requiredFields);
- }
-
- // Si ce n'est pas un nombre
- counter = parseInt(counter);
- if (isNaN(counter)) {
- return errorHandling(next, { message: "Veuillez rentré un nombre valide.", statusCode: 400 });
- }
+module.exports = ({ res, next }, argsObject) => {
+ let { counter } = argsObject
- // Si le nombre dépasse LIMIT_COUNTER
- const LIMIT_COUNTER = 51;
- if (counter >= LIMIT_COUNTER) {
- return errorHandling(next, { message: `Par souci de performance, vous ne pouvez pas exécuter cette fonction avec un compteur dépassant ${LIMIT_COUNTER - 1}.`, statusCode: 400 });
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(counter)) {
+ return errorHandling(next, requiredFields)
+ }
- const result = fibonacci(counter);
- const resultFormatted = result.map((number) => formatNumberResult(number));
- return res.status(200).json({
- result,
- resultFormatted,
- resultHTML: `
Les ${counter} premiers nombres de la suite de fibonacci : ${resultFormatted.join(', ')}
`
- });
-}
\ No newline at end of file
+ // Si ce n'est pas un nombre
+ counter = parseInt(counter)
+ if (isNaN(counter)) {
+ return errorHandling(next, { message: 'Veuillez rentré un nombre valide.', statusCode: 400 })
+ }
+
+ // Si le nombre dépasse LIMIT_COUNTER
+ const LIMIT_COUNTER = 51
+ if (counter >= LIMIT_COUNTER) {
+ return errorHandling(next, { message: `Par souci de performance, vous ne pouvez pas exécuter cette fonction avec un compteur dépassant ${LIMIT_COUNTER - 1}.`, statusCode: 400 })
+ }
+
+ const result = fibonacci(counter)
+ const resultFormatted = result.map((number) => formatNumberResult(number))
+ return res.status(200).json({
+ result,
+ resultFormatted,
+ resultHTML: `
Les ${counter} premiers nombres de la suite de fibonacci : ${resultFormatted.join(', ')}
`
+ })
+}
diff --git a/api/assets/functions/main/findLongestWord.js b/api/assets/functions/main/findLongestWord.js
index 13dba3e..085b0b9 100644
--- a/api/assets/functions/main/findLongestWord.js
+++ b/api/assets/functions/main/findLongestWord.js
@@ -1,39 +1,39 @@
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields } = require('../../config/errors');
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields } = require('../../config/errors')
/**
* @description Renvoie le mot le plus long d'une chaîne de caractères
- * @param {string} string
+ * @param {string} string
* @returns {string}
* @example findLongestWord('Chaîne de caractères') → 'caractères'
*/
-function findLongestWord(string) {
- const arrayString = string.split(" ");
- let stringLength = 0;
- let result = "";
+function findLongestWord (string) {
+ const arrayString = string.split(' ')
+ let stringLength = 0
+ let result = ''
- arrayString.forEach((element) => {
- if (element.length > stringLength) {
- result = element;
- stringLength = element.length;
- }
- });
+ arrayString.forEach((element) => {
+ if (element.length > stringLength) {
+ result = element
+ stringLength = element.length
+ }
+ })
- return result;
+ return result
}
/* OUTPUTS */
-module.exports = findLongestWordOutput = ({ res, next }, argsObject) => {
- const { string } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(string)) {
- return errorHandling(next, requiredFields);
- }
+module.exports = ({ res, next }, argsObject) => {
+ const { string } = argsObject
- const result = findLongestWord(string);
- return res.status(200).json({
- result,
- resultHTML: `
Le mot le plus long est : "${result}"
`
- });
-}
\ No newline at end of file
+ // S'il n'y a pas les champs obligatoire
+ if (!(string)) {
+ return errorHandling(next, requiredFields)
+ }
+
+ const result = findLongestWord(string)
+ return res.status(200).json({
+ result,
+ resultHTML: `
Le mot le plus long est : "${result}"
`
+ })
+}
diff --git a/api/assets/functions/main/heapAlgorithm.js b/api/assets/functions/main/heapAlgorithm.js
index 976630e..7f150cc 100644
--- a/api/assets/functions/main/heapAlgorithm.js
+++ b/api/assets/functions/main/heapAlgorithm.js
@@ -1,52 +1,52 @@
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields } = require('../../config/errors');
-const formatNumberResult = require('../secondary/formatNumberResult');
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields } = require('../../config/errors')
+const formatNumberResult = require('../secondary/formatNumberResult')
-/**
+/**
* @description Retourne un tableau contenant toutes les possibilités d'anagramme d'un mot.
* @param {String} string - La chaîne de caractère à permuter
* @returns {Array}
* @examples heapAlgorithm('abc') → ["abc", "acb", "bac", "bca", "cab", "cba"]
*/
-function heapAlgorithm(string) {
- let results = [];
+function heapAlgorithm (string) {
+ const results = []
- if (string.length === 1) {
- results.push(string);
- return results;
- }
+ if (string.length === 1) {
+ results.push(string)
+ return results
+ }
- for (let indexString = 0; indexString < string.length; indexString++) {
- const firstChar = string[indexString];
- const charsLeft = string.substring(0, indexString) + string.substring(indexString + 1);
- const innerPermutations = heapAlgorithm(charsLeft);
- for (let indexPermutation = 0; indexPermutation < innerPermutations.length; indexPermutation++) {
- results.push(firstChar + innerPermutations[indexPermutation]);
- }
+ for (let indexString = 0; indexString < string.length; indexString++) {
+ const firstChar = string[indexString]
+ const charsLeft = string.substring(0, indexString) + string.substring(indexString + 1)
+ const innerPermutations = heapAlgorithm(charsLeft)
+ for (let indexPermutation = 0; indexPermutation < innerPermutations.length; indexPermutation++) {
+ results.push(firstChar + innerPermutations[indexPermutation])
}
- return results;
-}
+ }
+ return results
+}
/* OUTPUTS */
-module.exports = heapAlgorithmOutput = ({ res, next }, argsObject) => {
- let { string } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(string)) {
- return errorHandling(next, requiredFields);
- }
+module.exports = ({ res, next }, argsObject) => {
+ const { string } = argsObject
- // Si la chaîne de caractère dépasse LIMIT_CHARACTERS caractères
- const LIMIT_CHARACTERS = 7;
- if (string.length > LIMIT_CHARACTERS) {
- return errorHandling(next, { message: `Par souci de performance, vous ne pouvez pas exécuter cette fonction avec un mot dépassant ${LIMIT_CHARACTERS} caractères.`, statusCode: 400 });
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(string)) {
+ return errorHandling(next, requiredFields)
+ }
- const result = heapAlgorithm(string);
- let resultHTML = `
Il y a ${formatNumberResult(result.length)} possibilités d'anagramme pour le mot "${string}" qui contient ${string.length} caractères, la liste : `;
- result.forEach((string) => {
- resultHTML += string + " ";
- });
- resultHTML += "
";
- return res.status(200).json({ result, resultHTML });
-}
\ No newline at end of file
+ // Si la chaîne de caractère dépasse LIMIT_CHARACTERS caractères
+ const LIMIT_CHARACTERS = 7
+ if (string.length > LIMIT_CHARACTERS) {
+ return errorHandling(next, { message: `Par souci de performance, vous ne pouvez pas exécuter cette fonction avec un mot dépassant ${LIMIT_CHARACTERS} caractères.`, statusCode: 400 })
+ }
+
+ const result = heapAlgorithm(string)
+ let resultHTML = `
Il y a ${formatNumberResult(result.length)} possibilités d'anagramme pour le mot "${string}" qui contient ${string.length} caractères, la liste : `
+ result.forEach((string) => {
+ resultHTML += string + ' '
+ })
+ resultHTML += '
'
+ return res.status(200).json({ result, resultHTML })
+}
diff --git a/api/assets/functions/main/isPalindrome.js b/api/assets/functions/main/isPalindrome.js
index f6fbfd7..151eee3 100644
--- a/api/assets/functions/main/isPalindrome.js
+++ b/api/assets/functions/main/isPalindrome.js
@@ -1,48 +1,48 @@
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields } = require('../../config/errors');
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields } = require('../../config/errors')
/**
* @description Inverse la chaîne de caractère
- * @param {string} string
+ * @param {string} string
* @returns {string}
* @example reverseString('Hello') → 'olleH'
*/
-function reverseString(string) {
- return string.split("").reverse().join('');
+function reverseString (string) {
+ return string.split('').reverse().join('')
}
/**
* @description Vérifie si un mot est un palindrome (un mot qui peut s'écrire dans les deux sens)
* @requires reverseString
- * @param {string} string
+ * @param {string} string
* @param {string} reverseStringResult La chaîne de caractères inversée
* @returns {boolean}
* @example isPalindrome('kayak') → true
*/
-function isPalindrome(string, reverseStringResult) {
- return string === reverseStringResult;
+function isPalindrome (string, reverseStringResult) {
+ return string === reverseStringResult
}
/* OUTPUTS */
-module.exports = isPalindromeOutput = ({ res, next }, argsObject) => {
- let { string } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(string)) {
- return errorHandling(next, requiredFields);
- }
+module.exports = ({ res, next }, argsObject) => {
+ let { string } = argsObject
- if (typeof string !== 'string') {
- return errorHandling(next, { message: "Vous devez rentré une chaîne de caractère valide.", statusCode: 400 });
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(string)) {
+ return errorHandling(next, requiredFields)
+ }
- string = string.toLowerCase();
+ if (typeof string !== 'string') {
+ return errorHandling(next, { message: 'Vous devez rentré une chaîne de caractère valide.', statusCode: 400 })
+ }
- const reverseStringResult = reverseString(string);
- const isPalindromeResult = isPalindrome(string, reverseStringResult);
- return res.status(200).json({
- isPalindrome: isPalindromeResult,
- reverseString: reverseStringResult,
- resultHTML: `
"${string}" ${(isPalindromeResult) ? "est" : "n'est pas"} un palindrome car "${string}" ${(isPalindromeResult) ? "===" : "!=="} "${reverseStringResult}"
`
- });
-}
\ No newline at end of file
+ string = string.toLowerCase()
+
+ const reverseStringResult = reverseString(string)
+ const isPalindromeResult = isPalindrome(string, reverseStringResult)
+ return res.status(200).json({
+ isPalindrome: isPalindromeResult,
+ reverseString: reverseStringResult,
+ resultHTML: `
"${string}" ${(isPalindromeResult) ? 'est' : "n'est pas"} un palindrome car "${string}" ${(isPalindromeResult) ? '===' : '!=='} "${reverseStringResult}"
`
+ })
+}
diff --git a/api/assets/functions/main/linkShortener.js b/api/assets/functions/main/linkShortener.js
index 8bdc058..14a5eba 100644
--- a/api/assets/functions/main/linkShortener.js
+++ b/api/assets/functions/main/linkShortener.js
@@ -1,52 +1,52 @@
-const validator = require('validator');
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields, serverError } = require('../../config/errors');
-const Short_links = require('../../../models/short_links');
+const validator = require('validator')
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields, serverError } = require('../../config/errors')
+const shortLinks = require('../../../models/short_links')
-module.exports = linkShortener = async ({ res, next }, argsObject) => {
- let { url, shortcutName } = argsObject;
+module.exports = async ({ res, next }, argsObject) => {
+ let { url, shortcutName } = argsObject
- // S'il n'y a pas les champs obligatoire
- if (!(url && shortcutName)) {
- return errorHandling(next, requiredFields);
+ // S'il n'y a pas les champs obligatoire
+ if (!(url && shortcutName)) {
+ return errorHandling(next, requiredFields)
+ }
+
+ // Si ce n'est pas une url
+ if (!validator.isURL(url)) {
+ return errorHandling(next, { message: 'Veuillez entré une URL valide.', statusCode: 400 })
+ }
+
+ // Si ce n'est pas de type slug
+ if (!validator.isSlug(shortcutName)) {
+ return errorHandling(next, { message: "Le nom de votre raccourci doit être de type slug (ne pas contenir d'espaces, ni de caractères spéciaux).", statusCode: 400 })
+ }
+
+ // Sanitize shortcutName
+ shortcutName = validator.escape(shortcutName)
+ shortcutName = validator.trim(shortcutName)
+ shortcutName = validator.blacklist(shortcutName, ' ')
+
+ try {
+ // Si l'url a déjà été raccourcie
+ const urlInDatabase = await shortLinks.findOne({ where: { url } })
+ if (urlInDatabase) {
+ const urlShort = `https://short-links.divlo.fr/?q=${urlInDatabase.shortcut}`
+ return errorHandling(next, { message: `L'url a déjà été raccourcie...
${urlShort} `, statusCode: 400 })
}
- // Si ce n'est pas une url
- if (!validator.isURL(url)) {
- return errorHandling(next, { message: "Veuillez entré une URL valide.", statusCode: 400 });
+ // Si le nom du raccourci existe déjà
+ const shortcutInDatabase = await shortLinks.findOne({ where: { shortcut: shortcutName } })
+ if (shortcutInDatabase) {
+ const urlShort = `https://short-links.divlo.fr/?q=${shortcutInDatabase.shortcut}`
+ return errorHandling(next, { message: `Le nom du raccourci a déjà été utilisé...
${urlShort} `, statusCode: 400 })
}
- // Si ce n'est pas de type slug
- if (!validator.isSlug(shortcutName)) {
- return errorHandling(next, { message: "Le nom de votre raccourci doit être de type slug (ne pas contenir d'espaces, ni de caractères spéciaux).", statusCode: 400 });
- }
-
- // Sanitize shortcutName
- shortcutName = validator.escape(shortcutName);
- shortcutName = validator.trim(shortcutName);
- shortcutName = validator.blacklist(shortcutName, ' ');
-
- try {
- // Si l'url a déjà été raccourcie
- const urlInDatabase = await Short_links.findOne({ where: { url } });
- if (urlInDatabase) {
- const urlShort = `https://short-links.divlo.fr/?q=${urlInDatabase.shortcut}`;
- return errorHandling(next, { message: `L'url a déjà été raccourcie...
${urlShort} `, statusCode: 400 });
- }
-
- // Si le nom du raccourci existe déjà
- const shortcutInDatabase = await Short_links.findOne({ where: { shortcut: shortcutName } });
- if (shortcutInDatabase) {
- const urlShort = `https://short-links.divlo.fr/?q=${shortcutInDatabase.shortcut}`;
- return errorHandling(next, { message: `Le nom du raccourci a déjà été utilisé...
${urlShort} `, statusCode: 400 });
- }
-
- // Ajout du lien raccourci
- const result = await Short_links.create({ url, shortcut: shortcutName });
- const shortcutLinkResult = `https://short-links.divlo.fr/?q=${result.shortcut}`;
- return res.status(200).json({ resultHTML: `URL Raccourcie :
${shortcutLinkResult} `, result: shortcutLinkResult });
- } catch {
- console.log(error);
- return errorHandling(next, serverError);
- }
-}
\ No newline at end of file
+ // Ajout du lien raccourci
+ const result = await shortLinks.create({ url, shortcut: shortcutName })
+ const shortcutLinkResult = `https://short-links.divlo.fr/?q=${result.shortcut}`
+ return res.status(200).json({ resultHTML: `URL Raccourcie :
${shortcutLinkResult} `, result: shortcutLinkResult })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
+}
diff --git a/api/assets/functions/main/randomNumber.js b/api/assets/functions/main/randomNumber.js
index 28e931d..d47f1a2 100644
--- a/api/assets/functions/main/randomNumber.js
+++ b/api/assets/functions/main/randomNumber.js
@@ -1,37 +1,37 @@
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields } = require('../../config/errors');
-const formatNumberResult = require('../secondary/formatNumberResult');
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields } = require('../../config/errors')
+const formatNumberResult = require('../secondary/formatNumberResult')
-/**
- * @description Génère un nombre aléatoire entre un minimum inclus et un maximum inclus.
- * @param {Number} min Nombre Minimum
- * @param {Number} max Nombre Maximum
- * @returns {Number} Nombre aléatoire
+/**
+ * @description Génère un nombre aléatoire entre un minimum inclus et un maximum inclus.
+ * @param {Number} min Nombre Minimum
+ * @param {Number} max Nombre Maximum
+ * @returns {Number} Nombre aléatoire
* @examples randomNumber(1, 2) → retourne soit 1 ou 2
- */
-function randomNumber(min, max) {
- return Math.floor(Math.random() * (max - min +1)) + min;
+ */
+function randomNumber (min, max) {
+ return Math.floor(Math.random() * (max - min + 1)) + min
}
/* OUTPUTS */
const randomNumberOutput = ({ res, next }, argsObject) => {
- let { min, max } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(min && max)) {
- return errorHandling(next, requiredFields);
- }
-
- // Si ce ne sont pas des nombres
- min = parseInt(min);
- max = parseInt(max);
- if (isNaN(min) || isNaN(max)) {
- return errorHandling(next, { message: "Les paramètres min et max doivent être des nombres...", statusCode: 400 });
- }
+ let { min, max } = argsObject
- const result = randomNumber(min, max);
- return res.status(200).json({ result, resultHTML: `
Nombre aléatoire compris entre ${min} inclus et ${max} inclus : ${formatNumberResult(result)}
` });
+ // S'il n'y a pas les champs obligatoire
+ if (!(min && max)) {
+ return errorHandling(next, requiredFields)
+ }
+
+ // Si ce ne sont pas des nombres
+ min = parseInt(min)
+ max = parseInt(max)
+ if (isNaN(min) || isNaN(max)) {
+ return errorHandling(next, { message: 'Les paramètres min et max doivent être des nombres...', statusCode: 400 })
+ }
+
+ const result = randomNumber(min, max)
+ return res.status(200).json({ result, resultHTML: `
Nombre aléatoire compris entre ${min} inclus et ${max} inclus : ${formatNumberResult(result)}
` })
}
-exports.randomNumber = randomNumber;
-exports.randomNumberOutput = randomNumberOutput;
\ No newline at end of file
+exports.randomNumber = randomNumber
+exports.randomNumberOutput = randomNumberOutput
diff --git a/api/assets/functions/main/randomQuote.js b/api/assets/functions/main/randomQuote.js
index 789c3b0..f1f724a 100644
--- a/api/assets/functions/main/randomQuote.js
+++ b/api/assets/functions/main/randomQuote.js
@@ -1,26 +1,26 @@
-const errorHandling = require('../../utils/errorHandling');
-const { serverError } = require('../../config/errors');
-const Quotes = require('../../../models/quotes');
-const Users = require('../../../models/users');
-const sequelize = require('../../utils/database');
+const errorHandling = require('../../utils/errorHandling')
+const { serverError } = require('../../config/errors')
+const Quotes = require('../../../models/quotes')
+const Users = require('../../../models/users')
+const sequelize = require('../../utils/database')
-module.exports = randomQuote = async ({ res, next }, _argsObject) => {
- try {
- const quote = await Quotes.findOne({
- order: sequelize.random(),
- include: [
- { model: Users, attributes: ["name", "logo"] }
- ],
- attributes: {
- exclude: ["isValidated"]
- },
- where: {
- isValidated: 1,
- }
- });
- return res.status(200).json(quote);
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
- }
-}
\ No newline at end of file
+module.exports = async ({ res, next }, _argsObject) => {
+ try {
+ const quote = await Quotes.findOne({
+ order: sequelize.random(),
+ include: [
+ { model: Users, attributes: ['name', 'logo'] }
+ ],
+ attributes: {
+ exclude: ['isValidated']
+ },
+ where: {
+ isValidated: 1
+ }
+ })
+ return res.status(200).json(quote)
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
+}
diff --git a/api/assets/functions/main/rightPrice.js b/api/assets/functions/main/rightPrice.js
index fabe06e..a3e3b8a 100644
--- a/api/assets/functions/main/rightPrice.js
+++ b/api/assets/functions/main/rightPrice.js
@@ -1,57 +1,57 @@
-const { randomNumber } = require('./randomNumber');
-const errorHandling = require('../../utils/errorHandling');
-const { serverError } = require('../../config/errors');
-const { SCRAPER_API_KEY } = require('../../config/config');
-const axios = require('axios');
-const { JSDOM } = require("jsdom");
+const { randomNumber } = require('./randomNumber')
+const errorHandling = require('../../utils/errorHandling')
+const { serverError } = require('../../config/errors')
+const { SCRAPER_API_KEY } = require('../../config/config')
+const axios = require('axios')
+const { JSDOM } = require('jsdom')
const subjectList = [
- "smartphone",
- "pc+gamer",
- "pc+portable",
- "TV",
- "casque",
- "clavier",
- "souris",
- "ecran",
- "jeux+vidéos"
-];
+ 'smartphone',
+ 'pc+gamer',
+ 'pc+portable',
+ 'TV',
+ 'casque',
+ 'clavier',
+ 'souris',
+ 'ecran',
+ 'jeux+vidéos'
+]
-function getRandomArrayElement(array) {
- return array[randomNumber(0, array.length - 1)];
+function getRandomArrayElement (array) {
+ return array[randomNumber(0, array.length - 1)]
}
-async function getAmazonProductList(subject) {
- const url = `https://www.amazon.fr/s?k=${subject}`;
- const { data } = await axios.get(`http://api.scraperapi.com/?api_key=${SCRAPER_API_KEY}&url=${url}`);
- const { document } = (new JSDOM(data)).window;
- const amazonProductList = document.querySelectorAll('.s-result-item');
- const productsList = [];
- for (let indexProduct in amazonProductList) {
- try {
- const elementProduct = amazonProductList[indexProduct];
- const productImage = elementProduct.querySelector('.s-image');
- const originalPrice = elementProduct.querySelector(".a-price-whole").innerHTML;
- productsList.push({
- name: productImage["alt"],
- image: productImage["src"],
- price: Number(originalPrice.replace(",", ".").replace(" ", ""))
- });
- } catch (_error) {
- continue;
- }
- }
- return productsList;
-}
-
-module.exports = rightPriceOutput = async ({ res, next }, _argsObject) => {
- const subject = getRandomArrayElement(subjectList);
+async function getAmazonProductList (subject) {
+ const url = `https://www.amazon.fr/s?k=${subject}`
+ const { data } = await axios.get(`http://api.scraperapi.com/?api_key=${SCRAPER_API_KEY}&url=${url}`)
+ const { document } = (new JSDOM(data)).window
+ const amazonProductList = document.querySelectorAll('.s-result-item')
+ const productsList = []
+ for (const indexProduct in amazonProductList) {
try {
- const productsList = await getAmazonProductList(subject);
- const randomProduct = getRandomArrayElement(productsList);
- return res.status(200).json({ subject, ...randomProduct });
- } catch (error) {
- console.error(error);
- return errorHandling(next, serverError);
+ const elementProduct = amazonProductList[indexProduct]
+ const productImage = elementProduct.querySelector('.s-image')
+ const originalPrice = elementProduct.querySelector('.a-price-whole').innerHTML
+ productsList.push({
+ name: productImage.alt,
+ image: productImage.src,
+ price: Number(originalPrice.replace(',', '.').replace(' ', ''))
+ })
+ } catch (_error) {
+ continue
}
-}
\ No newline at end of file
+ }
+ return productsList
+}
+
+module.exports = async ({ res, next }, _argsObject) => {
+ const subject = getRandomArrayElement(subjectList)
+ try {
+ const productsList = await getAmazonProductList(subject)
+ const randomProduct = getRandomArrayElement(productsList)
+ return res.status(200).json({ subject, ...randomProduct })
+ } catch (error) {
+ console.error(error)
+ return errorHandling(next, serverError)
+ }
+}
diff --git a/api/assets/functions/main/sortArray.js b/api/assets/functions/main/sortArray.js
index 87ce520..f2317c9 100644
--- a/api/assets/functions/main/sortArray.js
+++ b/api/assets/functions/main/sortArray.js
@@ -1,56 +1,56 @@
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields } = require('../../config/errors');
-const formatNumberResult = require('../secondary/formatNumberResult');
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields } = require('../../config/errors')
+const formatNumberResult = require('../secondary/formatNumberResult')
-function minNumber(array) {
- let minNumber = { index: 0, value: array[0] }
- for (let index = 1; index < array.length; index++) {
- const number = array[index];
- if (number < minNumber.value) {
- minNumber = { index: index, value: array[index] }
- }
+function minNumber (array) {
+ let minNumber = { index: 0, value: array[0] }
+ for (let index = 1; index < array.length; index++) {
+ const number = array[index]
+ if (number < minNumber.value) {
+ minNumber = { index: index, value: array[index] }
}
- return minNumber;
+ }
+ return minNumber
}
-function sortArray(array) {
- const arrayDuplicated = [...array];
- const resultArray = [];
- while (array.length !== resultArray.length) {
- const min = minNumber(arrayDuplicated);
- resultArray.push(min.value);
- arrayDuplicated.splice(min.index, 1);
- }
- return resultArray;
+function sortArray (array) {
+ const arrayDuplicated = [...array]
+ const resultArray = []
+ while (array.length !== resultArray.length) {
+ const min = minNumber(arrayDuplicated)
+ resultArray.push(min.value)
+ arrayDuplicated.splice(min.index, 1)
+ }
+ return resultArray
}
/* OUTPUTS */
-module.exports = sortArrayOutput = ({ res, next }, argsObject) => {
- let { numbersList } = argsObject;
-
- // S'il n'y a pas les champs obligatoire
- if (!(numbersList)) {
- return errorHandling(next, requiredFields);
- }
+module.exports = ({ res, next }, argsObject) => {
+ const { numbersList } = argsObject
- const numbersListArray = numbersList.split(',').map((number) => number.trim().replace(' ', '')).map(Number);
+ // S'il n'y a pas les champs obligatoire
+ if (!(numbersList)) {
+ return errorHandling(next, requiredFields)
+ }
- // Si ce n'est pas une liste de nombres
- if (numbersListArray.includes(NaN)) {
- return errorHandling(next, { message: "Vous devez rentrer une liste de nombres séparée par des virgules valide.", statusCode: 400 });
- }
+ const numbersListArray = numbersList.split(',').map((number) => number.trim().replace(' ', '')).map(Number)
- // Si la taille du tableau dépasse LIMIT_ARRAY_LENGTH
- const LIMIT_ARRAY_LENGTH = 31;
- if (numbersListArray.length >= LIMIT_ARRAY_LENGTH) {
- return errorHandling(next, { message: `Par souci de performance, vous ne pouvez pas exécuter cette fonction avec une liste de nombres dépassant ${LIMIT_ARRAY_LENGTH - 1} nombres.`, statusCode: 400 });
- }
+ // Si ce n'est pas une liste de nombres
+ if (numbersListArray.includes(NaN)) {
+ return errorHandling(next, { message: 'Vous devez rentrer une liste de nombres séparée par des virgules valide.', statusCode: 400 })
+ }
- const result = sortArray(numbersListArray);
- const resultFormatted = result.map((number) => formatNumberResult(number));
- return res.status(200).json({
- result,
- resultFormatted,
- resultHTML: `
La liste de nombres dans l'ordre croissant : ${resultFormatted.join(', ')}
`
- });
-}
\ No newline at end of file
+ // Si la taille du tableau dépasse LIMIT_ARRAY_LENGTH
+ const LIMIT_ARRAY_LENGTH = 31
+ if (numbersListArray.length >= LIMIT_ARRAY_LENGTH) {
+ return errorHandling(next, { message: `Par souci de performance, vous ne pouvez pas exécuter cette fonction avec une liste de nombres dépassant ${LIMIT_ARRAY_LENGTH - 1} nombres.`, statusCode: 400 })
+ }
+
+ const result = sortArray(numbersListArray)
+ const resultFormatted = result.map((number) => formatNumberResult(number))
+ return res.status(200).json({
+ result,
+ resultFormatted,
+ resultHTML: `
La liste de nombres dans l'ordre croissant : ${resultFormatted.join(', ')}
`
+ })
+}
diff --git a/api/assets/functions/main/weatherRequest.js b/api/assets/functions/main/weatherRequest.js
index 0c92d78..c334b77 100644
--- a/api/assets/functions/main/weatherRequest.js
+++ b/api/assets/functions/main/weatherRequest.js
@@ -1,46 +1,46 @@
-const axios = require('axios');
-const Queue = require('smart-request-balancer');
-const errorHandling = require('../../utils/errorHandling');
-const { requiredFields } = require('../../config/errors');
-const { WEATHER_API_KEY } = require('../../config/config');
-const dateTimeUTC = require('../secondary/dateTimeManagement');
-const capitalize = require('../secondary/capitalize');
+const axios = require('axios')
+const Queue = require('smart-request-balancer')
+const errorHandling = require('../../utils/errorHandling')
+const { requiredFields } = require('../../config/errors')
+const { WEATHER_API_KEY } = require('../../config/config')
+const dateTimeUTC = require('../secondary/dateTimeManagement')
+const capitalize = require('../secondary/capitalize')
const queue = new Queue({
- /*
+ /*
rate: number of requests
per
limit: number of seconds
*/
- rules: {
- weatherRequest: {
- rate: 50,
- limit: 60,
- priority: 1
- },
+ rules: {
+ weatherRequest: {
+ rate: 50,
+ limit: 60,
+ priority: 1
}
-});
+ }
+})
/* OUTPUTS */
-module.exports = weatherRequestOutput = ({ res, next }, argsObject) => {
- let { cityName } = argsObject;
+module.exports = ({ res, next }, argsObject) => {
+ let { cityName } = argsObject
- // S'il n'y a pas les champs obligatoire
- if (!(cityName)) {
- return errorHandling(next, requiredFields);
- }
+ // S'il n'y a pas les champs obligatoire
+ if (!(cityName)) {
+ return errorHandling(next, requiredFields)
+ }
- cityName = cityName.split(' ').join('+');
+ cityName = cityName.split(' ').join('+')
- // Récupère les données météo grâce à l'API : openweathermap.org. (→ avec limite de 50 requêtes par minute)
- queue.request(() => {
- axios.get(`https://api.openweathermap.org/data/2.5/weather?q=${cityName}&lang=fr&units=metric&appid=${WEATHER_API_KEY}`)
- .then((response) =>{
- const json = response.data;
- const showDateTimeValue = dateTimeUTC((json.timezone / 60 / 60).toString()).showDateTimeValue;
- const resultHTML = `
🌎 Position : ${json.name}, ${json.sys.country} ⏰ Date et heure : ${showDateTimeValue} ☁️ Météo : ${capitalize(json.weather[0].description)} 🌡️ Température : ${json.main.temp} °C 💧 Humidité : ${json.main.humidity}%
`;
- return res.status(200).json({ result: json, resultHTML });
- })
- .catch(() => errorHandling(next, { message: "La ville n'existe pas (dans l'API de openweathermap.org).", statusCode: 404 }));
- }, 'everyone', 'weatherRequest');
-}
\ No newline at end of file
+ // Récupère les données météo grâce à l'API : openweathermap.org. (→ avec limite de 50 requêtes par minute)
+ queue.request(() => {
+ axios.get(`https://api.openweathermap.org/data/2.5/weather?q=${cityName}&lang=fr&units=metric&appid=${WEATHER_API_KEY}`)
+ .then((response) => {
+ const json = response.data
+ const showDateTimeValue = dateTimeUTC((json.timezone / 60 / 60).toString()).showDateTimeValue
+ const resultHTML = `
🌎 Position : ${json.name}, ${json.sys.country} ⏰ Date et heure : ${showDateTimeValue} ☁️ Météo : ${capitalize(json.weather[0].description)} 🌡️ Température : ${json.main.temp} °C 💧 Humidité : ${json.main.humidity}%
`
+ return res.status(200).json({ result: json, resultHTML })
+ })
+ .catch(() => errorHandling(next, { message: "La ville n'existe pas (dans l'API de openweathermap.org).", statusCode: 404 }))
+ }, 'everyone', 'weatherRequest')
+}
diff --git a/api/assets/functions/secondary/capitalize.js b/api/assets/functions/secondary/capitalize.js
index 858e2d4..135c412 100644
--- a/api/assets/functions/secondary/capitalize.js
+++ b/api/assets/functions/secondary/capitalize.js
@@ -1,12 +1,12 @@
-/**
+/**
* @description Majuscule à la 1ère lettre d'une string.
- * @param {String} s
- * @returns {String}
+ * @param {String} s
+ * @returns {String}
* @examples capitalize('hello world!') → 'Hello world!'
*/
-function capitalize(s) {
- if (typeof s !== 'string') return ''
- return s.charAt(0).toUpperCase() + s.slice(1)
+function capitalize (s) {
+ if (typeof s !== 'string') return ''
+ return s.charAt(0).toUpperCase() + s.slice(1)
}
-module.exports = capitalize;
\ No newline at end of file
+module.exports = capitalize
diff --git a/api/assets/functions/secondary/dateTimeManagement.js b/api/assets/functions/secondary/dateTimeManagement.js
index 8473d49..5ef5627 100644
--- a/api/assets/functions/secondary/dateTimeManagement.js
+++ b/api/assets/functions/secondary/dateTimeManagement.js
@@ -1,43 +1,43 @@
-/**
+/**
* @description Donne la date et l'heure selon l'UTC (Universal Time Coordinated).
- * @param {String} utc Heure de décalage par rapport à l'UTC
+ * @param {String} utc Heure de décalage par rapport à l'UTC
* @returns {Function} → showDateTime(enteredOffset) → Retourne l'exécution de la fonction showDateTime
- * @examples dateTimeUTC('0')
- */
-function dateTimeUTC(utc) {
- const timeNow = new Date();
- const utcOffset = timeNow.getTimezoneOffset();
- timeNow.setMinutes(timeNow.getMinutes() + utcOffset);
- const enteredOffset = parseFloat(utc)*60;
- timeNow.setMinutes(timeNow.getMinutes() + enteredOffset);
- return showDateTime(timeNow);
-}
-
-/**
- * @description Affiche la date et l'heure (format : dd/mm/yyyy - 00:00:00).
- * @requires {@link fonctions_annexes.js: showDateTime}
- * @param {String} utc Heure de décalage par rapport à l'UTC
- * @returns {Object} Retourne un objet contenant l'année, le mois, le jour, l'heure, les minutes, les secondes et la date formaté
- * @examples dateTimeUTC('0') → dateTimeUTC vous renvoie l'exécution de showDateTime
- */
-function showDateTime(timeNow) {
- const year = timeNow.getFullYear();
- const month = ('0'+(timeNow.getMonth()+1)).slice(-2);
- const day = ('0'+timeNow.getDate()).slice(-2);
- const hour = ('0'+timeNow.getHours()).slice(-2);
- const minute = ('0'+timeNow.getMinutes()).slice(-2);
- const second = ('0'+timeNow.getSeconds()).slice(-2);
- const showDateTimeValue = day + "/" + month + "/" + year + " - " + hour + ":" + minute + ":" + second;
- const objectDateTime = {
- year: year,
- month: month,
- day: day,
- hour: hour,
- minute: minute,
- second: second,
- showDateTimeValue: showDateTimeValue
- };
- return objectDateTime;
+ * @examples dateTimeUTC('0')
+ */
+function dateTimeUTC (utc) {
+ const timeNow = new Date()
+ const utcOffset = timeNow.getTimezoneOffset()
+ timeNow.setMinutes(timeNow.getMinutes() + utcOffset)
+ const enteredOffset = parseFloat(utc) * 60
+ timeNow.setMinutes(timeNow.getMinutes() + enteredOffset)
+ return showDateTime(timeNow)
}
-module.exports = dateTimeUTC;
\ No newline at end of file
+/**
+ * @description Affiche la date et l'heure (format : dd/mm/yyyy - 00:00:00).
+ * @requires {@link fonctions_annexes.js: showDateTime}
+ * @param {String} utc Heure de décalage par rapport à l'UTC
+ * @returns {Object} Retourne un objet contenant l'année, le mois, le jour, l'heure, les minutes, les secondes et la date formaté
+ * @examples dateTimeUTC('0') → dateTimeUTC vous renvoie l'exécution de showDateTime
+ */
+function showDateTime (timeNow) {
+ const year = timeNow.getFullYear()
+ const month = ('0' + (timeNow.getMonth() + 1)).slice(-2)
+ const day = ('0' + timeNow.getDate()).slice(-2)
+ const hour = ('0' + timeNow.getHours()).slice(-2)
+ const minute = ('0' + timeNow.getMinutes()).slice(-2)
+ const second = ('0' + timeNow.getSeconds()).slice(-2)
+ const showDateTimeValue = day + '/' + month + '/' + year + ' - ' + hour + ':' + minute + ':' + second
+ const objectDateTime = {
+ year: year,
+ month: month,
+ day: day,
+ hour: hour,
+ minute: minute,
+ second: second,
+ showDateTimeValue: showDateTimeValue
+ }
+ return objectDateTime
+}
+
+module.exports = dateTimeUTC
diff --git a/api/assets/functions/secondary/formatNumberResult.js b/api/assets/functions/secondary/formatNumberResult.js
index 8308cbb..3348e0e 100644
--- a/api/assets/functions/secondary/formatNumberResult.js
+++ b/api/assets/functions/secondary/formatNumberResult.js
@@ -1,14 +1,14 @@
-/**
+/**
* @description Formate un nombre avec des espaces.
* @param {Number} number
* @param {String} separator Le séparateur utilisé pour la virgule (exemple: "." ou ",")
- * @returns {String} - Le nombre formaté
+ * @returns {String} - Le nombre formaté
* @examples formatNumberResult(76120) → '76 120'
- */
-function formatNumberResult(number, separator = ".") {
- let parts = number.toString().split(separator);
- parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, " ");
- return parts.join(separator);
+ */
+function formatNumberResult (number, separator = '.') {
+ const parts = number.toString().split(separator)
+ parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ' ')
+ return parts.join(separator)
}
-module.exports = formatNumberResult;
\ No newline at end of file
+module.exports = formatNumberResult
diff --git a/api/assets/utils/database.js b/api/assets/utils/database.js
index e2b857d..c055dbe 100644
--- a/api/assets/utils/database.js
+++ b/api/assets/utils/database.js
@@ -1,9 +1,9 @@
-const Sequelize = require('sequelize');
-const { DATABASE } = require('../config/config');
+const Sequelize = require('sequelize')
+const { DATABASE } = require('../config/config')
const sequelize = new Sequelize(DATABASE.name, DATABASE.user, DATABASE.password, {
- dialect: 'mysql',
- host: DATABASE.host
-});
+ dialect: 'mysql',
+ host: DATABASE.host
+})
-module.exports = sequelize;
\ No newline at end of file
+module.exports = sequelize
diff --git a/api/assets/utils/deleteFilesNameStartWith.js b/api/assets/utils/deleteFilesNameStartWith.js
index 153d1d5..1a62b5d 100644
--- a/api/assets/utils/deleteFilesNameStartWith.js
+++ b/api/assets/utils/deleteFilesNameStartWith.js
@@ -1,19 +1,19 @@
-const fs = require("fs");
-const path = require("path");
+const fs = require('fs')
+const path = require('path')
-function deleteFilesNameStartWith(pattern, dirPath, callback) {
- fs.readdir(path.resolve(dirPath), (_error, fileNames) => {
- for (const name of fileNames) {
- const splitedName = name.split('.');
- if (splitedName.length === 2) {
- const fileName = splitedName[0];
- if (fileName === pattern && name !== 'default.png') {
- return fs.unlink(path.join(dirPath, name), callback);
- }
- }
+function deleteFilesNameStartWith (pattern, dirPath, callback) {
+ fs.readdir(path.resolve(dirPath), (_error, fileNames) => {
+ for (const name of fileNames) {
+ const splitedName = name.split('.')
+ if (splitedName.length === 2) {
+ const fileName = splitedName[0]
+ if (fileName === pattern && name !== 'default.png') {
+ return fs.unlink(path.join(dirPath, name), callback)
}
- return callback();
- });
+ }
+ }
+ return callback()
+ })
}
-module.exports = deleteFilesNameStartWith;
\ No newline at end of file
+module.exports = deleteFilesNameStartWith
diff --git a/api/assets/utils/errorHandling.js b/api/assets/utils/errorHandling.js
index fde2917..1b77725 100644
--- a/api/assets/utils/errorHandling.js
+++ b/api/assets/utils/errorHandling.js
@@ -1,7 +1,7 @@
-function errorHandling(next, { statusCode, message }) {
- const error = new Error(message);
- error.statusCode = statusCode;
- next(error);
+function errorHandling (next, { statusCode, message }) {
+ const error = new Error(message)
+ error.statusCode = statusCode
+ next(error)
}
-module.exports = errorHandling;
\ No newline at end of file
+module.exports = errorHandling
diff --git a/api/assets/utils/getPagesHelper.js b/api/assets/utils/getPagesHelper.js
index ac6b27b..99d8597 100644
--- a/api/assets/utils/getPagesHelper.js
+++ b/api/assets/utils/getPagesHelper.js
@@ -1,10 +1,10 @@
-const errorHandling = require('../utils/errorHandling');
-const { serverError } = require('../config/errors');
-const helperQueryNumber = require('../utils/helperQueryNumber');
+const errorHandling = require('../utils/errorHandling')
+const { serverError } = require('../config/errors')
+const helperQueryNumber = require('../utils/helperQueryNumber')
const DEFAULT_OPTIONS = {
- order: [['createdAt', 'DESC']]
-};
+ order: [['createdAt', 'DESC']]
+}
/**
* @description Permet de faire un système de pagination sur un model Sequelize
@@ -12,23 +12,23 @@ const DEFAULT_OPTIONS = {
* @param {*} Model Model Sequelize
* @param {Object} options Options avec clause where etc.
*/
-async function getPagesHelper({ req, res, next }, Model, options = DEFAULT_OPTIONS) {
- const page = helperQueryNumber(req.query.page, 1);
- const limit = helperQueryNumber(req.query.limit, 10);
- const offset = (page - 1) * limit;
- try {
- const result = await Model.findAndCountAll({
- limit,
- offset,
- ...options
- });
- const { count, rows } = result;
- const hasMore = (page * limit) < count;
- return res.status(200).json({ totalItems: count, hasMore, rows });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
- }
+async function getPagesHelper ({ req, res, next }, Model, options = DEFAULT_OPTIONS) {
+ const page = helperQueryNumber(req.query.page, 1)
+ const limit = helperQueryNumber(req.query.limit, 10)
+ const offset = (page - 1) * limit
+ try {
+ const result = await Model.findAndCountAll({
+ limit,
+ offset,
+ ...options
+ })
+ const { count, rows } = result
+ const hasMore = (page * limit) < count
+ return res.status(200).json({ totalItems: count, hasMore, rows })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
-module.exports = getPagesHelper;
\ No newline at end of file
+module.exports = getPagesHelper
diff --git a/api/assets/utils/helperQueryNumber.js b/api/assets/utils/helperQueryNumber.js
index f61d5d7..0e2e45c 100644
--- a/api/assets/utils/helperQueryNumber.js
+++ b/api/assets/utils/helperQueryNumber.js
@@ -1,6 +1,6 @@
-function helperQueryNumber(value, defaultValue) {
- if (value && !isNaN(value)) return parseInt(value);
- return defaultValue;
+function helperQueryNumber (value, defaultValue) {
+ if (value && !isNaN(value)) return parseInt(value)
+ return defaultValue
}
-module.exports = helperQueryNumber;
\ No newline at end of file
+module.exports = helperQueryNumber
diff --git a/api/controllers/admin.js b/api/controllers/admin.js
index a6a5bdc..2484dab 100644
--- a/api/controllers/admin.js
+++ b/api/controllers/admin.js
@@ -1,320 +1,319 @@
-const path = require('path');
-const fs = require('fs');
-const { validationResult } = require('express-validator');
-const errorHandling = require('../assets/utils/errorHandling');
-const { serverError } = require('../assets/config/errors');
-const Functions = require('../models/functions');
-const Categories = require('../models/categories');
-const Quotes = require('../models/quotes');
-const Users = require('../models/users');
-const helperQueryNumber = require('../assets/utils/helperQueryNumber');
-const getPagesHelper = require('../assets/utils/getPagesHelper');
-const Sequelize = require('sequelize');
-const deleteFilesNameStartWith = require('../assets/utils/deleteFilesNameStartWith');
-const { EMAIL_INFO, FRONT_END_HOST } = require('../assets/config/config');
-const transporter = require('../assets/config/transporter');
-const { emailQuoteTemplate } = require('../assets/config/emails');
+const path = require('path')
+const fs = require('fs')
+const { validationResult } = require('express-validator')
+const errorHandling = require('../assets/utils/errorHandling')
+const { serverError } = require('../assets/config/errors')
+const Functions = require('../models/functions')
+const Categories = require('../models/categories')
+const Quotes = require('../models/quotes')
+const Users = require('../models/users')
+const helperQueryNumber = require('../assets/utils/helperQueryNumber')
+const getPagesHelper = require('../assets/utils/getPagesHelper')
+const Sequelize = require('sequelize')
+const deleteFilesNameStartWith = require('../assets/utils/deleteFilesNameStartWith')
+const { EMAIL_INFO, FRONT_END_HOST } = require('../assets/config/config')
+const transporter = require('../assets/config/transporter')
+const { emailQuoteTemplate } = require('../assets/config/emails')
const handleEditFunction = async (res, resultFunction, { title, slug, description, type, categorieId, isOnline }, imageName = false) => {
- resultFunction.title = title;
- resultFunction.slug = slug;
- resultFunction.description = description;
- resultFunction.type = type;
- resultFunction.categorieId = categorieId;
- resultFunction.isOnline = isOnline;
- if (imageName) {
- resultFunction.image = `/images/functions/${imageName}`;
- }
- const result = await resultFunction.save();
- res.status(200).json({ message: "La fonction a bien été modifié!", result });
+ resultFunction.title = title
+ resultFunction.slug = slug
+ resultFunction.description = description
+ resultFunction.type = type
+ resultFunction.categorieId = categorieId
+ resultFunction.isOnline = isOnline
+ if (imageName) {
+ resultFunction.image = `/images/functions/${imageName}`
+ }
+ const result = await resultFunction.save()
+ res.status(200).json({ message: 'La fonction a bien été modifié!', result })
}
exports.getFunctions = async (req, res, next) => {
- const categoryId = helperQueryNumber(req.query.categoryId, 0);
- let search = req.query.search;
- try { search = search.toLowerCase(); } catch {};
- const options = {
- where: {
- // Trie par catégorie
- ... (categoryId !== 0) && { categorieId: categoryId },
- // Recherche
- ... (search != undefined) && {
- [Sequelize.Op.or]: [
- { title: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('title')), 'LIKE', `%${search}%`) },
- { slug: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('slug')), 'LIKE', `%${search}%`) },
- { description: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('description')), 'LIKE', `%${search}%`) }
- ]
- }
- },
- include: [
- { model: Categories, attributes: ["name", "color"] }
- ],
- attributes: {
- exclude: ["updatedAt", "utilizationForm", "article", "isOnline"]
- },
- order: [['createdAt', 'DESC']]
- };
- return await getPagesHelper({ req, res, next }, Functions, options);
+ const categoryId = helperQueryNumber(req.query.categoryId, 0)
+ let search = req.query.search
+ try { search = search.toLowerCase() } catch {};
+ const options = {
+ where: {
+ // Trie par catégorie
+ ...(categoryId !== 0) && { categorieId: categoryId },
+ // Recherche
+ ...(search != null) && {
+ [Sequelize.Op.or]: [
+ { title: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('title')), 'LIKE', `%${search}%`) },
+ { slug: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('slug')), 'LIKE', `%${search}%`) },
+ { description: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('description')), 'LIKE', `%${search}%`) }
+ ]
+ }
+ },
+ include: [
+ { model: Categories, attributes: ['name', 'color'] }
+ ],
+ attributes: {
+ exclude: ['updatedAt', 'utilizationForm', 'article', 'isOnline']
+ },
+ order: [['createdAt', 'DESC']]
+ }
+ return await getPagesHelper({ req, res, next }, Functions, options)
}
exports.getFunctionBySlug = (req, res, next) => {
- const { slug } = req.params;
- Functions.findOne({
- where: { slug },
- include: [
- { model: Categories, attributes: ["name", "color"] }
- ]
+ const { slug } = req.params
+ Functions.findOne({
+ where: { slug },
+ include: [
+ { model: Categories, attributes: ['name', 'color'] }
+ ]
+ })
+ .then((result) => {
+ if (!result) {
+ return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 })
+ }
+ try { result.utilizationForm = JSON.parse(result.utilizationForm) } catch {}
+ return res.status(200).json(result)
+ })
+ .catch((error) => {
+ console.log(error)
+ return errorHandling(next, serverError)
})
- .then((result) => {
- if (!result) {
- return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 });
- }
- try { result.utilizationForm = JSON.parse(result.utilizationForm); } catch {}
- return res.status(200).json(result);
- })
- .catch((error) => {
- console.log(error);
- return errorHandling(next, serverError);
- });
}
exports.postFunction = (req, res, next) => {
- const { title, slug, description, type, categorieId } = req.body;
- const image = req.files.image;
- const errors = validationResult(req);
- if (!errors.isEmpty()) {
- return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 });
- }
- if (!image || image.truncated && (
- image.mimetype !== 'image/png' ||
- image.mimetype !== 'image/jpg' ||
+ const { title, slug, description, type, categorieId } = req.body
+ const image = req.files.image
+ const errors = validationResult(req)
+ if (!errors.isEmpty()) {
+ return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 })
+ }
+ if ((!image || image.truncated) && (
+ image.mimetype !== 'image/png' ||
+ image.mimetype !== 'image/jpg' ||
image.mimetype !== 'image/jpeg'
- )) {
- return errorHandling(next, { message:"La fonction doit avoir une image valide.", statusCode: 400 });
+ )) {
+ return errorHandling(next, { message: 'La fonction doit avoir une image valide.', statusCode: 400 })
+ }
+ const splitedImageName = image.name.split('.')
+ if (splitedImageName.length !== 2) return errorHandling(next, serverError)
+ const imageName = slug + '.' + splitedImageName[1]
+ image.mv(path.join(__dirname, '..', 'assets', 'images', 'functions') + '/' + imageName, async (error) => {
+ if (error) return errorHandling(next, serverError)
+ try {
+ const result = await Functions.create({ title, slug, description, type, categorieId, image: `/images/functions/${imageName}` })
+ return res.status(201).json({ message: 'La fonction a été correctement ajouté!', result })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
}
- const splitedImageName = image.name.split('.');
- if (splitedImageName.length !== 2) return errorHandling(next, serverError);
- const imageName = slug + '.' + splitedImageName[1];
- image.mv(path.join(__dirname, '..', 'assets', 'images', 'functions') + '/' + imageName, async (error) => {
- if (error) return errorHandling(next, serverError);
- try {
- const result = await Functions.create({ title, slug, description, type, categorieId, image: `/images/functions/${imageName}` });
- return res.status(201).json({ message: "La fonction a été correctement ajouté!", result });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
- }
- });
+ })
}
exports.putFunction = async (req, res, next) => {
- const { id } = req.params;
- const { title, slug, description, type, categorieId, isOnline } = req.body;
- const image = req.files.image;
- const errors = validationResult(req);
- if (!errors.isEmpty()) {
- return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 });
+ const { id } = req.params
+ const { title, slug, description, type, categorieId, isOnline } = req.body
+ const image = req.files.image
+ const errors = validationResult(req)
+ if (!errors.isEmpty()) {
+ return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 })
+ }
+ try {
+ // Vérifie si la fonction existe
+ const resultFunction = await Functions.findOne({ where: { id } })
+ if (!resultFunction) {
+ return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 })
}
- try {
- // Vérifie si la fonction existe
- const resultFunction = await Functions.findOne({ where: { id } });
- if (!resultFunction) {
- return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 });
- }
- // Vérifie si le slug existe déjà
- const FunctionSlug = await Functions.findOne({ where: { slug } });
- if (!FunctionSlug && FunctionSlug.id != resultFunction.id) {
- return errorHandling(next, { message: "Le slug existe déjà...", statusCode: 404 });
- }
+ // Vérifie si le slug existe déjà
+ const FunctionSlug = await Functions.findOne({ where: { slug } })
+ if (!FunctionSlug && FunctionSlug.id !== resultFunction.id) {
+ return errorHandling(next, { message: 'Le slug existe déjà...', statusCode: 404 })
+ }
- // Sauvegarde de la fonction
- if (image != undefined) {
- if (image.truncated && (
- image.mimetype !== 'image/png' ||
- image.mimetype !== 'image/jpg' ||
+ // Sauvegarde de la fonction
+ if (image != null) {
+ if (image.truncated && (
+ image.mimetype !== 'image/png' ||
+ image.mimetype !== 'image/jpg' ||
image.mimetype !== 'image/jpeg'
- )) {
- return errorHandling(next, { message:"La fonction doit avoir une image valide.", statusCode: 400 });
- }
- const splitedImageName = image.name.split('.');
- if (splitedImageName.length !== 2) return errorHandling(next, serverError);
- const imageName = slug + '.' + splitedImageName[1];
- // Supprime les anciennes images
- const functionPath = path.join(__dirname, '..', 'assets', 'images', 'functions');
- deleteFilesNameStartWith(slug, functionPath, () => {
- image.mv(path.join(functionPath, imageName), async (error) => {
- if (error) return errorHandling(next, serverError);
- return await handleEditFunction(res, resultFunction, { title, slug, description, type, categorieId, isOnline }, imageName);
- });
- });
- } else {
- return await handleEditFunction(res, resultFunction, { title, slug, description, type, categorieId, isOnline });
- }
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ )) {
+ return errorHandling(next, { message: 'La fonction doit avoir une image valide.', statusCode: 400 })
+ }
+ const splitedImageName = image.name.split('.')
+ if (splitedImageName.length !== 2) return errorHandling(next, serverError)
+ const imageName = slug + '.' + splitedImageName[1]
+ // Supprime les anciennes images
+ const functionPath = path.join(__dirname, '..', 'assets', 'images', 'functions')
+ deleteFilesNameStartWith(slug, functionPath, () => {
+ image.mv(path.join(functionPath, imageName), async (error) => {
+ if (error) return errorHandling(next, serverError)
+ return await handleEditFunction(res, resultFunction, { title, slug, description, type, categorieId, isOnline }, imageName)
+ })
+ })
+ } else {
+ return await handleEditFunction(res, resultFunction, { title, slug, description, type, categorieId, isOnline })
}
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.putFunctionArticle = async (req, res, next) => {
- const { id } = req.params;
- const { article } = req.body;
+ const { id } = req.params
+ const { article } = req.body
- try {
- // Vérifie si la fonction existe
- const resultFunction = await Functions.findOne({ where: { id } });
- if (!resultFunction) {
- return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 });
- }
- resultFunction.article = article;
- const result = await resultFunction.save();
- return res.status(200).json(result);
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ try {
+ // Vérifie si la fonction existe
+ const resultFunction = await Functions.findOne({ where: { id } })
+ if (!resultFunction) {
+ return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 })
}
+ resultFunction.article = article
+ const result = await resultFunction.save()
+ return res.status(200).json(result)
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.putFunctionForm = async (req, res, next) => {
- const { id } = req.params;
- const { form } = req.body;
+ const { id } = req.params
+ const { form } = req.body
- try {
- // Vérifie si la fonction existe
- const resultFunction = await Functions.findOne({ where: { id } });
- if (!resultFunction) {
- return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 });
- }
- resultFunction.utilizationForm = JSON.stringify(form);
- const result = await resultFunction.save();
- return res.status(200).json(result);
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ try {
+ // Vérifie si la fonction existe
+ const resultFunction = await Functions.findOne({ where: { id } })
+ if (!resultFunction) {
+ return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 })
}
+ resultFunction.utilizationForm = JSON.stringify(form)
+ const result = await resultFunction.save()
+ return res.status(200).json(result)
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.deleteFunction = async (req, res, next) => {
- const { id } = req.params;
- try {
- const result = await Functions.findOne({ where: { id } });
- if (!result) {
- return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 });
- }
- if (result.image !== "/images/functions/default.png") {
- const filePath = path.join(__dirname, '..', 'assets', result.image);
- fs.unlinkSync(filePath); // supprime le fichier
- }
- await result.destroy();
- res.status(200).json({ message: "La fonction a été correctement supprimé!"});
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { id } = req.params
+ try {
+ const result = await Functions.findOne({ where: { id } })
+ if (!result) {
+ return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 })
}
+ if (result.image !== '/images/functions/default.png') {
+ const filePath = path.join(__dirname, '..', 'assets', result.image)
+ fs.unlinkSync(filePath) // supprime le fichier
+ }
+ await result.destroy()
+ res.status(200).json({ message: 'La fonction a été correctement supprimé!' })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.postCategory = async (req, res, next) => {
- const { name, color } = req.body;
- if (!(name && color)) {
- return errorHandling(next, { message: "La catégorie doit avoir un nom et une couleur." });
- }
- try {
- const result = await Categories.create({ name, color });
- return res.status(201).json({ message: "La catégorie a bien été crée!", result });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
- }
+ const { name, color } = req.body
+ if (!(name && color)) {
+ return errorHandling(next, { message: 'La catégorie doit avoir un nom et une couleur.' })
+ }
+ try {
+ const result = await Categories.create({ name, color })
+ return res.status(201).json({ message: 'La catégorie a bien été crée!', result })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.putCategory = async (req, res, next) => {
- const { name, color } = req.body;
- const { id } = req.params;
- if (!(name && color && id)) {
- return errorHandling(next, { message: "La catégorie doit avoir un nom, une couleur et un id." });
- }
- try {
- const category = await Categories.findOne({ where: { id } });
- if (!category) {
- return errorHandling(next, { message: "La catégorie n'existe pas." });
- }
- category.name = name;
- category.color = color;
- const result = await category.save();
- return res.status(200).json({ message: "La catégorie a bien été modifiée!", result });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { name, color } = req.body
+ const { id } = req.params
+ if (!(name && color && id)) {
+ return errorHandling(next, { message: 'La catégorie doit avoir un nom, une couleur et un id.' })
+ }
+ try {
+ const category = await Categories.findOne({ where: { id } })
+ if (!category) {
+ return errorHandling(next, { message: "La catégorie n'existe pas." })
}
+ category.name = name
+ category.color = color
+ const result = await category.save()
+ return res.status(200).json({ message: 'La catégorie a bien été modifiée!', result })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.deleteCategory = async (req, res, next) => {
- const { id } = req.params;
- try {
- const category = await Categories.findOne({ where: { id } });
- if (!category) {
- return errorHandling(next, { message: "La catégorie n'existe pas." });
- }
- await category.destroy();
- return res.status(200).json({ message: "La catégorie a bien été supprimée!" });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { id } = req.params
+ try {
+ const category = await Categories.findOne({ where: { id } })
+ if (!category) {
+ return errorHandling(next, { message: "La catégorie n'existe pas." })
}
+ await category.destroy()
+ return res.status(200).json({ message: 'La catégorie a bien été supprimée!' })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.getQuotes = async (req, res, next) => {
- const options = {
- where: {
- isValidated: 0,
- },
- include: [
- { model: Users, attributes: ["name", "logo"] }
- ],
- order: [['createdAt', 'DESC']]
- };
- return await getPagesHelper({ req, res, next }, Quotes, options);
+ const options = {
+ where: {
+ isValidated: 0
+ },
+ include: [
+ { model: Users, attributes: ['name', 'logo'] }
+ ],
+ order: [['createdAt', 'DESC']]
+ }
+ return await getPagesHelper({ req, res, next }, Quotes, options)
}
exports.putQuote = async (req, res, next) => {
- const { id } = req.params;
- const { isValid } = req.body;
- try {
- if (typeof isValid !== 'boolean') {
- return errorHandling(next, { message: "isValid doit être un booléen.", statusCode: 400 });
- }
- const quote = await Quotes.findOne({
- where: {
- id,
- isValidated: 0
- },
- include: [
- { model: Users, attributes: ["name", "email"] }
- ]
- });
- if (!quote) {
- return errorHandling(next, { message: "La citation n'existe pas (ou est déjà validé).", statusCode: 404 });
- }
-
- await transporter.sendMail({
- from: `"FunctionProject" <${EMAIL_INFO.auth.user}>`,
- to: quote.user.email,
- subject: "FunctionProject - Citation proposée",
- html: emailQuoteTemplate(isValid, quote, FRONT_END_HOST)
- });
-
- if (isValid) {
- quote.isValidated = true;
- await quote.save();
- return res.status(200).json({ message: "La citation a bien été validée!" });
- } else {
- await quote.destroy();
- return res.status(200).json({ imessage: "La citation a bien été supprimée!" });
- }
-
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { id } = req.params
+ const { isValid } = req.body
+ try {
+ if (typeof isValid !== 'boolean') {
+ return errorHandling(next, { message: 'isValid doit être un booléen.', statusCode: 400 })
}
-}
\ No newline at end of file
+ const quote = await Quotes.findOne({
+ where: {
+ id,
+ isValidated: 0
+ },
+ include: [
+ { model: Users, attributes: ['name', 'email'] }
+ ]
+ })
+ if (!quote) {
+ return errorHandling(next, { message: "La citation n'existe pas (ou est déjà validé).", statusCode: 404 })
+ }
+
+ await transporter.sendMail({
+ from: `"FunctionProject" <${EMAIL_INFO.auth.user}>`,
+ to: quote.user.email,
+ subject: 'FunctionProject - Citation proposée',
+ html: emailQuoteTemplate(isValid, quote, FRONT_END_HOST)
+ })
+
+ if (isValid) {
+ quote.isValidated = true
+ await quote.save()
+ return res.status(200).json({ message: 'La citation a bien été validée!' })
+ } else {
+ await quote.destroy()
+ return res.status(200).json({ imessage: 'La citation a bien été supprimée!' })
+ }
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
+}
diff --git a/api/controllers/categories.js b/api/controllers/categories.js
index ba24954..7795e04 100644
--- a/api/controllers/categories.js
+++ b/api/controllers/categories.js
@@ -1,14 +1,14 @@
-const errorHandling = require('../assets/utils/errorHandling');
-const Categories = require('../models/categories');
-const { serverError } = require('../assets/config/errors');
+const errorHandling = require('../assets/utils/errorHandling')
+const Categories = require('../models/categories')
+const { serverError } = require('../assets/config/errors')
exports.getCategories = (_req, res, next) => {
- Categories.findAll()
- .then((result) => {
- res.status(200).json(result);
- })
- .catch((error) => {
- console.log(error);
- return errorHandling(next, serverError);
- });
-}
\ No newline at end of file
+ Categories.findAll()
+ .then((result) => {
+ res.status(200).json(result)
+ })
+ .catch((error) => {
+ console.log(error)
+ return errorHandling(next, serverError)
+ })
+}
diff --git a/api/controllers/comments.js b/api/controllers/comments.js
index 1750d2e..767a118 100644
--- a/api/controllers/comments.js
+++ b/api/controllers/comments.js
@@ -1,72 +1,72 @@
-const errorHandling = require('../assets/utils/errorHandling');
-const Comments = require('../models/comments');
-const Users = require('../models/users');
-const Functions = require('../models/functions');
-const getPagesHelper = require('../assets/utils/getPagesHelper');
-const { serverError } = require('../assets/config/errors');
+const errorHandling = require('../assets/utils/errorHandling')
+const Comments = require('../models/comments')
+const Users = require('../models/users')
+const Functions = require('../models/functions')
+const getPagesHelper = require('../assets/utils/getPagesHelper')
+const { serverError } = require('../assets/config/errors')
exports.getCommentsByFunctionId = async (req, res, next) => {
- const { functionId } = req.params;
- const options = {
- where: { functionId },
- include: [
- { model: Users, attributes: ["name", "logo"] }
- ],
- order: [['createdAt', 'DESC']]
- };
- return await getPagesHelper({ req, res, next }, Comments, options);
+ const { functionId } = req.params
+ const options = {
+ where: { functionId },
+ include: [
+ { model: Users, attributes: ['name', 'logo'] }
+ ],
+ order: [['createdAt', 'DESC']]
+ }
+ return await getPagesHelper({ req, res, next }, Comments, options)
}
exports.postCommentsByFunctionId = async (req, res, next) => {
- const { functionId } = req.params;
- const { message } = req.body;
- try {
- const resultFunction = await Functions.findOne({ where: { id: functionId } });
- if (!resultFunction) {
- return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 });
- }
- if (!message) {
- return errorHandling(next, { message: "Vous ne pouvez pas poster de commentaire vide.", statusCode: 400 });
- }
- const comment = await Comments.create({ message, userId: req.userId, functionId });
- return res.status(201).json(comment);
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { functionId } = req.params
+ const { message } = req.body
+ try {
+ const resultFunction = await Functions.findOne({ where: { id: functionId } })
+ if (!resultFunction) {
+ return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 })
}
+ if (!message) {
+ return errorHandling(next, { message: 'Vous ne pouvez pas poster de commentaire vide.', statusCode: 400 })
+ }
+ const comment = await Comments.create({ message, userId: req.userId, functionId })
+ return res.status(201).json(comment)
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.deleteCommentById = async (req, res, next) => {
- const { commentId } = req.params;
- try {
- const comment = await Comments.findOne({ where: { userId: req.userId, id: parseInt(commentId) } });
- if (!comment) {
- return errorHandling(next, { message: "Le commentaire n'existe pas.", statusCode: 404 });
- }
- await comment.destroy();
- return res.status(200).json({ message: "Le commentaire a bien été supprimé." });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { commentId } = req.params
+ try {
+ const comment = await Comments.findOne({ where: { userId: req.userId, id: parseInt(commentId) } })
+ if (!comment) {
+ return errorHandling(next, { message: "Le commentaire n'existe pas.", statusCode: 404 })
}
+ await comment.destroy()
+ return res.status(200).json({ message: 'Le commentaire a bien été supprimé.' })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.putCommentsById = async (req, res, next) => {
- const { commentId } = req.params;
- const { message } = req.body;
- if (!message) {
- return errorHandling(next, { message: "Vous ne pouvez pas poster de commentaire vide.", statusCode: 400 });
+ const { commentId } = req.params
+ const { message } = req.body
+ if (!message) {
+ return errorHandling(next, { message: 'Vous ne pouvez pas poster de commentaire vide.', statusCode: 400 })
+ }
+ try {
+ const comment = await Comments.findOne({ where: { userId: req.userId, id: parseInt(commentId) } })
+ if (!comment) {
+ return errorHandling(next, { message: "Le commentaire n'existe pas.", statusCode: 404 })
}
- try {
- const comment = await Comments.findOne({ where: { userId: req.userId, id: parseInt(commentId) } });
- if (!comment) {
- return errorHandling(next, { message: "Le commentaire n'existe pas.", statusCode: 404 });
- }
- comment.message = message;
- await comment.save();
- return res.status(200).json({ message: "Le commentaire a bien été modifié." });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
- }
-}
\ No newline at end of file
+ comment.message = message
+ await comment.save()
+ return res.status(200).json({ message: 'Le commentaire a bien été modifié.' })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
+}
diff --git a/api/controllers/favorites.js b/api/controllers/favorites.js
index 3e29619..0e1e652 100644
--- a/api/controllers/favorites.js
+++ b/api/controllers/favorites.js
@@ -1,74 +1,74 @@
-const errorHandling = require('../assets/utils/errorHandling');
-const { serverError } = require('../assets/config/errors');
-const Favorites = require('../models/favorites');
-const Functions = require('../models/functions');
+const errorHandling = require('../assets/utils/errorHandling')
+const { serverError } = require('../assets/config/errors')
+const Favorites = require('../models/favorites')
+const Functions = require('../models/functions')
exports.getFavoriteByFunctionId = async (req, res, next) => {
- const { functionId } = req.params;
- const { userId } = req;
- try {
- const favorite = await Favorites.findOne({
- where: {
- userId,
- functionId
- }
- });
- if (!favorite) {
- return res.status(200).json({ isFavorite: false });
- }
- return res.status(200).json({ isFavorite: true });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { functionId } = req.params
+ const { userId } = req
+ try {
+ const favorite = await Favorites.findOne({
+ where: {
+ userId,
+ functionId
+ }
+ })
+ if (!favorite) {
+ return res.status(200).json({ isFavorite: false })
}
+ return res.status(200).json({ isFavorite: true })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.postFavoriteByFunctionId = async (req, res, next) => {
- const { functionId } = req.params;
- const { userId } = req;
- try {
- const resultFunction = await Functions.findOne({ where: { id: functionId } });
- if (!resultFunction) {
- return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 });
- }
- const favorite = await Favorites.findOne({
- where: {
- userId,
- functionId
- }
- });
- if (!favorite) {
- await Favorites.create({ userId, functionId });
- return res.status(201).json({ result: "Le favoris a bien été ajouté!" });
- }
- return errorHandling(next, { message: "La fonction est déjà en favoris.", statusCode: 400 });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { functionId } = req.params
+ const { userId } = req
+ try {
+ const resultFunction = await Functions.findOne({ where: { id: functionId } })
+ if (!resultFunction) {
+ return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 })
}
+ const favorite = await Favorites.findOne({
+ where: {
+ userId,
+ functionId
+ }
+ })
+ if (!favorite) {
+ await Favorites.create({ userId, functionId })
+ return res.status(201).json({ result: 'Le favoris a bien été ajouté!' })
+ }
+ return errorHandling(next, { message: 'La fonction est déjà en favoris.', statusCode: 400 })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.deleteFavoriteByFunctionId = async (req, res, next) => {
- const { functionId } = req.params;
- const { userId } = req;
- try {
- const resultFunction = await Functions.findOne({ where: { id: functionId } });
- if (!resultFunction) {
- return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 });
- }
- const favorite = await Favorites.findOne({
- where: {
- userId,
- functionId
- }
- });
- if (!favorite) {
- return errorHandling(next, { message: "Le fonction n'est pas en favoris.", statusCode: 400 });
- }
- await favorite.destroy();
- return res.status(200).json({ message: "Le fonction a bien été supprimé des favoris." });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { functionId } = req.params
+ const { userId } = req
+ try {
+ const resultFunction = await Functions.findOne({ where: { id: functionId } })
+ if (!resultFunction) {
+ return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 })
}
-}
\ No newline at end of file
+ const favorite = await Favorites.findOne({
+ where: {
+ userId,
+ functionId
+ }
+ })
+ if (!favorite) {
+ return errorHandling(next, { message: "Le fonction n'est pas en favoris.", statusCode: 400 })
+ }
+ await favorite.destroy()
+ return res.status(200).json({ message: 'Le fonction a bien été supprimé des favoris.' })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
+}
diff --git a/api/controllers/functions.js b/api/controllers/functions.js
index b8fd46a..7620b17 100644
--- a/api/controllers/functions.js
+++ b/api/controllers/functions.js
@@ -1,69 +1,69 @@
-const errorHandling = require('../assets/utils/errorHandling');
-const { serverError } = require('../assets/config/errors');
-const Functions = require('../models/functions');
-const Categories = require('../models/categories');
-const functionToExecute = require('../assets/functions/functionObject');
-const helperQueryNumber = require('../assets/utils/helperQueryNumber');
-const getPagesHelper = require('../assets/utils/getPagesHelper');
-const Sequelize = require('sequelize');
+const errorHandling = require('../assets/utils/errorHandling')
+const { serverError } = require('../assets/config/errors')
+const Functions = require('../models/functions')
+const Categories = require('../models/categories')
+const functionToExecute = require('../assets/functions/functionObject')
+const helperQueryNumber = require('../assets/utils/helperQueryNumber')
+const getPagesHelper = require('../assets/utils/getPagesHelper')
+const Sequelize = require('sequelize')
exports.getFunctions = async (req, res, next) => {
- const categoryId = helperQueryNumber(req.query.categoryId, 0);
- let { search } = req.query;
- try { search = search.toLowerCase(); } catch {};
- const options = {
- where: {
- isOnline: 1,
- // Trie par catégorie
- ... (categoryId !== 0) && { categorieId: categoryId },
- // Recherche
- ... (search != undefined) && {
- [Sequelize.Op.or]: [
- { title: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('title')), 'LIKE', `%${search}%`) },
- { slug: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('slug')), 'LIKE', `%${search}%`) },
- { description: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('description')), 'LIKE', `%${search}%`) }
- ]
- }
- },
- include: [
- { model: Categories, attributes: ["name", "color"] }
- ],
- attributes: {
- exclude: ["updatedAt", "utilizationForm", "article", "isOnline"]
- },
- order: [['createdAt', 'DESC']]
- };
- return await getPagesHelper({ req, res, next }, Functions, options);
+ const categoryId = helperQueryNumber(req.query.categoryId, 0)
+ let { search } = req.query
+ try { search = search.toLowerCase() } catch {};
+ const options = {
+ where: {
+ isOnline: 1,
+ // Trie par catégorie
+ ...(categoryId !== 0) && { categorieId: categoryId },
+ // Recherche
+ ...(search != null) && {
+ [Sequelize.Op.or]: [
+ { title: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('title')), 'LIKE', `%${search}%`) },
+ { slug: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('slug')), 'LIKE', `%${search}%`) },
+ { description: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('description')), 'LIKE', `%${search}%`) }
+ ]
+ }
+ },
+ include: [
+ { model: Categories, attributes: ['name', 'color'] }
+ ],
+ attributes: {
+ exclude: ['updatedAt', 'utilizationForm', 'article', 'isOnline']
+ },
+ order: [['createdAt', 'DESC']]
+ }
+ return await getPagesHelper({ req, res, next }, Functions, options)
}
exports.getFunctionBySlug = (req, res, next) => {
- const { slug } = req.params;
- Functions.findOne({
- where: { slug, isOnline: 1 },
- attributes: {
- exclude: ["updatedAt", "isOnline"]
- },
- include: [
- { model: Categories, attributes: ["name", "color"] }
- ]
+ const { slug } = req.params
+ Functions.findOne({
+ where: { slug, isOnline: 1 },
+ attributes: {
+ exclude: ['updatedAt', 'isOnline']
+ },
+ include: [
+ { model: Categories, attributes: ['name', 'color'] }
+ ]
+ })
+ .then((result) => {
+ if (!result) {
+ return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 })
+ }
+ try { result.utilizationForm = JSON.parse(result.utilizationForm) } catch {}
+ return res.status(200).json(result)
+ })
+ .catch((error) => {
+ console.log(error)
+ return errorHandling(next, serverError)
})
- .then((result) => {
- if (!result) {
- return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 });
- }
- try { result.utilizationForm = JSON.parse(result.utilizationForm); } catch {}
- return res.status(200).json(result);
- })
- .catch((error) => {
- console.log(error);
- return errorHandling(next, serverError);
- });
}
exports.executeFunctionBySlug = (req, res, next) => {
- const functionOutput = functionToExecute(req.params.slug);
- if (functionOutput !== undefined) {
- return functionOutput({ res, next }, req.body);
- }
- return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 });
-}
\ No newline at end of file
+ const functionOutput = functionToExecute(req.params.slug)
+ if (functionOutput !== undefined) {
+ return functionOutput({ res, next }, req.body)
+ }
+ return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 })
+}
diff --git a/api/controllers/quotes.js b/api/controllers/quotes.js
index f67dff6..c2f93cb 100644
--- a/api/controllers/quotes.js
+++ b/api/controllers/quotes.js
@@ -1,37 +1,37 @@
-const errorHandling = require('../assets/utils/errorHandling');
-const { serverError, requiredFields } = require('../assets/config/errors');
-const Quotes = require('../models/quotes');
-const Users = require('../models/users');
-const getPagesHelper = require('../assets/utils/getPagesHelper');
+const errorHandling = require('../assets/utils/errorHandling')
+const { serverError, requiredFields } = require('../assets/config/errors')
+const Quotes = require('../models/quotes')
+const Users = require('../models/users')
+const getPagesHelper = require('../assets/utils/getPagesHelper')
exports.getQuotes = async (req, res, next) => {
- const options = {
- where: {
- isValidated: 1,
- },
- include: [
- { model: Users, attributes: ["name", "logo"] }
- ],
- attributes: {
- exclude: ["isValidated"]
- },
- order: [['createdAt', 'DESC']]
- };
- return await getPagesHelper({ req, res, next }, Quotes, options);
+ const options = {
+ where: {
+ isValidated: 1
+ },
+ include: [
+ { model: Users, attributes: ['name', 'logo'] }
+ ],
+ attributes: {
+ exclude: ['isValidated']
+ },
+ order: [['createdAt', 'DESC']]
+ }
+ return await getPagesHelper({ req, res, next }, Quotes, options)
}
exports.postQuote = (req, res, next) => {
- const { quote, author } = req.body;
- // S'il n'y a pas les champs obligatoire
- if (!(quote && author)) {
- return errorHandling(next, requiredFields);
- }
- Quotes.create({ quote, author, userId: req.userId })
- .then((_result) => {
- return res.status(200).json({ message: "La citation a bien été ajoutée, elle est en attente de confirmation d'un administrateur." });
- })
- .catch((error) => {
- console.log(error);
- return errorHandling(next, serverError);
- });
-}
\ No newline at end of file
+ const { quote, author } = req.body
+ // S'il n'y a pas les champs obligatoire
+ if (!(quote && author)) {
+ return errorHandling(next, requiredFields)
+ }
+ Quotes.create({ quote, author, userId: req.userId })
+ .then((_result) => {
+ return res.status(200).json({ message: "La citation a bien été ajoutée, elle est en attente de confirmation d'un administrateur." })
+ })
+ .catch((error) => {
+ console.log(error)
+ return errorHandling(next, serverError)
+ })
+}
diff --git a/api/controllers/tasks.js b/api/controllers/tasks.js
index e747ec2..2a8dc17 100644
--- a/api/controllers/tasks.js
+++ b/api/controllers/tasks.js
@@ -1,68 +1,68 @@
-const errorHandling = require('../assets/utils/errorHandling');
-const { serverError, requiredFields } = require('../assets/config/errors');
-const Tasks = require('../models/tasks');
+const errorHandling = require('../assets/utils/errorHandling')
+const { serverError, requiredFields } = require('../assets/config/errors')
+const Tasks = require('../models/tasks')
exports.getTasks = async (req, res, next) => {
- try {
- const tasks = await Tasks.findAll({
- where: {
- userId: req.userId
- },
- order: [['createdAt', 'DESC']]
- });
- return res.status(200).json(tasks);
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
- }
+ try {
+ const tasks = await Tasks.findAll({
+ where: {
+ userId: req.userId
+ },
+ order: [['createdAt', 'DESC']]
+ })
+ return res.status(200).json(tasks)
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.postTask = async (req, res, next) => {
- const { task } = req.body;
- try {
- if (!task) {
- return errorHandling(next, requiredFields);
- }
- const taskResult = await Tasks.create({ task, userId: req.userId });
- return res.status(201).json(taskResult);
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { task } = req.body
+ try {
+ if (!task) {
+ return errorHandling(next, requiredFields)
}
+ const taskResult = await Tasks.create({ task, userId: req.userId })
+ return res.status(201).json(taskResult)
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.putTask = async (req, res, next) => {
- const { id } = req.params;
- const { isCompleted } = req.body;
- try {
- if (typeof isCompleted !== 'boolean') {
- return errorHandling(next, { message: "isCompleted doit être un booléen.", statusCode: 400 });
- }
-
- const taskResult = await Tasks.findOne({ where: { id, userId: req.userId } });
- if (!taskResult) {
- return errorHandling(next, { message: `La "tâche à faire" n'existe pas.`, statusCode: 404 });
- }
- taskResult.isCompleted = isCompleted;
- const taskSaved = await taskResult.save();
- return res.status(200).json(taskSaved);
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { id } = req.params
+ const { isCompleted } = req.body
+ try {
+ if (typeof isCompleted !== 'boolean') {
+ return errorHandling(next, { message: 'isCompleted doit être un booléen.', statusCode: 400 })
}
+
+ const taskResult = await Tasks.findOne({ where: { id, userId: req.userId } })
+ if (!taskResult) {
+ return errorHandling(next, { message: 'La "tâche à faire" n\'existe pas.', statusCode: 404 })
+ }
+ taskResult.isCompleted = isCompleted
+ const taskSaved = await taskResult.save()
+ return res.status(200).json(taskSaved)
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.deleteTask = async (req, res, next) => {
- const { id } = req.params;
- try {
- const taskResult = await Tasks.findOne({ where: { id, userId: req.userId } });
- if (!taskResult) {
- return errorHandling(next, { message: `La "tâche à faire" n'existe pas.`, statusCode: 404 });
- }
- await taskResult.destroy();
- return res.status(200).json({ message: `La "tâche à faire" a bien été supprimée!` });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { id } = req.params
+ try {
+ const taskResult = await Tasks.findOne({ where: { id, userId: req.userId } })
+ if (!taskResult) {
+ return errorHandling(next, { message: 'La "tâche à faire" n\'existe pas.', statusCode: 404 })
}
-}
\ No newline at end of file
+ await taskResult.destroy()
+ return res.status(200).json({ message: 'La "tâche à faire" a bien été supprimée!' })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
+}
diff --git a/api/controllers/users.js b/api/controllers/users.js
index 3629958..d6c45ac 100644
--- a/api/controllers/users.js
+++ b/api/controllers/users.js
@@ -1,292 +1,292 @@
-const path = require('path');
-const { validationResult } = require('express-validator');
-const bcrypt = require('bcryptjs');
-const jwt = require('jsonwebtoken');
-const ms = require('ms');
-const uuid = require('uuid');
-const Sequelize = require('sequelize');
-const errorHandling = require('../assets/utils/errorHandling');
-const { serverError, generalError } = require('../assets/config/errors');
-const { JWT_SECRET, FRONT_END_HOST, EMAIL_INFO, HOST, TOKEN_LIFE } = require('../assets/config/config');
-const transporter = require('../assets/config/transporter');
-const { emailUserTemplate } = require('../assets/config/emails');
-const Users = require('../models/users');
-const Favorites = require('../models/favorites');
-const Functions = require('../models/functions');
-const Categories = require('../models/categories');
-const Comments = require('../models/comments');
-const Quotes = require('../models/quotes');
-const deleteFilesNameStartWith = require('../assets/utils/deleteFilesNameStartWith');
-const getPagesHelper = require('../assets/utils/getPagesHelper');
+const path = require('path')
+const { validationResult } = require('express-validator')
+const bcrypt = require('bcryptjs')
+const jwt = require('jsonwebtoken')
+const ms = require('ms')
+const uuid = require('uuid')
+const Sequelize = require('sequelize')
+const errorHandling = require('../assets/utils/errorHandling')
+const { serverError, generalError } = require('../assets/config/errors')
+const { JWT_SECRET, FRONT_END_HOST, EMAIL_INFO, HOST, TOKEN_LIFE } = require('../assets/config/config')
+const transporter = require('../assets/config/transporter')
+const { emailUserTemplate } = require('../assets/config/emails')
+const Users = require('../models/users')
+const Favorites = require('../models/favorites')
+const Functions = require('../models/functions')
+const Categories = require('../models/categories')
+const Comments = require('../models/comments')
+const Quotes = require('../models/quotes')
+const deleteFilesNameStartWith = require('../assets/utils/deleteFilesNameStartWith')
+const getPagesHelper = require('../assets/utils/getPagesHelper')
-async function handleEditUser(res, { name, email, biography, isPublicEmail }, userId, logoName) {
- const user = await Users.findOne({ where: { id: userId } });
- user.name = name;
- if (user.email !== email) {
- const tempToken = uuid.v4();
- user.email = email;
- user.isConfirmed = false;
- user.tempToken = tempToken;
- await transporter.sendMail({
- from: `"FunctionProject" <${EMAIL_INFO.auth.user}>`,
- to: email,
- subject: "FunctionProject - Confirmer l'email",
- html: emailUserTemplate("Veuillez confirmer l'email", "Oui, je confirme.", `${HOST}/users/confirm-email/${tempToken}`, "Si vous avez reçu ce message par erreur, il suffit de le supprimer. Votre email ne serez pas confirmé si vous ne cliquez pas sur le lien de confirmation ci-dessus.")
- });
- }
- if (biography != undefined) {
- user.biography = biography;
- }
- user.isPublicEmail = isPublicEmail;
- if (logoName != undefined && `/images/users/${logoName}` !== user.logo) {
- user.logo = `/images/users/${logoName}`;
- }
- await user.save();
- return res.status(200).json({ id: user.id, name: user.name, email: user.email, biography: user.biography, logo: user.logo, isPublicEmail: user.isPublicEmail, isAdmin: user.isAdmin, createdAt: user.createdAt });
+async function handleEditUser (res, { name, email, biography, isPublicEmail }, userId, logoName) {
+ const user = await Users.findOne({ where: { id: userId } })
+ user.name = name
+ if (user.email !== email) {
+ const tempToken = uuid.v4()
+ user.email = email
+ user.isConfirmed = false
+ user.tempToken = tempToken
+ await transporter.sendMail({
+ from: `"FunctionProject" <${EMAIL_INFO.auth.user}>`,
+ to: email,
+ subject: "FunctionProject - Confirmer l'email",
+ html: emailUserTemplate("Veuillez confirmer l'email", 'Oui, je confirme.', `${HOST}/users/confirm-email/${tempToken}`, 'Si vous avez reçu ce message par erreur, il suffit de le supprimer. Votre email ne serez pas confirmé si vous ne cliquez pas sur le lien de confirmation ci-dessus.')
+ })
+ }
+ if (biography != null) {
+ user.biography = biography
+ }
+ user.isPublicEmail = isPublicEmail
+ if (logoName != null && `/images/users/${logoName}` !== user.logo) {
+ user.logo = `/images/users/${logoName}`
+ }
+ await user.save()
+ return res.status(200).json({ id: user.id, name: user.name, email: user.email, biography: user.biography, logo: user.logo, isPublicEmail: user.isPublicEmail, isAdmin: user.isAdmin, createdAt: user.createdAt })
}
exports.getUsers = async (req, res, next) => {
- let { search } = req.query;
- try { search = search.toLowerCase(); } catch {};
- const options = {
- where: {
- isConfirmed: true,
- // Recherche
- ...(search != undefined) && {
- name: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('name')), 'LIKE', `%${search}%`)
- }
- },
- attributes: {
- exclude: ["updatedAt", "isAdmin", "isConfirmed", "password", "tempToken", "tempExpirationToken", "isPublicEmail", "email"]
- },
- order: [['createdAt', 'DESC']]
- };
- return await getPagesHelper({ req, res, next }, Users, options);
+ let { search } = req.query
+ try { search = search.toLowerCase() } catch {};
+ const options = {
+ where: {
+ isConfirmed: true,
+ // Recherche
+ ...(search != null) && {
+ name: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('name')), 'LIKE', `%${search}%`)
+ }
+ },
+ attributes: {
+ exclude: ['updatedAt', 'isAdmin', 'isConfirmed', 'password', 'tempToken', 'tempExpirationToken', 'isPublicEmail', 'email']
+ },
+ order: [['createdAt', 'DESC']]
+ }
+ return await getPagesHelper({ req, res, next }, Users, options)
}
exports.putUser = async (req, res, next) => {
- const { name, email, biography, isPublicEmail } = req.body;
- const logo = req.files.logo;
- const errors = validationResult(req);
- if (!errors.isEmpty()) {
- return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 });
- }
- if (logo != undefined) {
- if (!logo || logo.truncated && (
- logo.mimetype !== 'image/png' ||
- logo.mimetype !== 'image/jpg' ||
+ const { name, email, biography, isPublicEmail } = req.body
+ const logo = req.files.logo
+ const errors = validationResult(req)
+ if (!errors.isEmpty()) {
+ return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 })
+ }
+ if (logo != null) {
+ if ((!logo || logo.truncated) && (
+ logo.mimetype !== 'image/png' ||
+ logo.mimetype !== 'image/jpg' ||
logo.mimetype !== 'image/jpeg' ||
logo.mimetype !== 'image/gif'
- )) {
- return errorHandling(next, { message:"Le profil doit avoir une image valide (PNG, JPG, GIF) et moins de 5mo.", statusCode: 400 });
- }
- const splitedLogoName = logo.name.split('.');
- if (splitedLogoName.length !== 2) return errorHandling(next, serverError);
- const logoName = name + req.userId + '.' + splitedLogoName[1];
- // Supprime les anciens logo
- try {
- deleteFilesNameStartWith(`${name + req.userId}`, path.join(__dirname, '..', 'assets', 'images', 'users'), async () => {
- logo.mv(path.join(__dirname, '..', 'assets', 'images', 'users', logoName), async (error) => {
- if (error) return errorHandling(next, serverError);
- return await handleEditUser(res, { name, email, biography, isPublicEmail }, req.userId, logoName);
- });
- });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
- }
- } else {
- try {
- return await handleEditUser(res, { name, email, biography, isPublicEmail }, req.userId, null);
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
- }
+ )) {
+ return errorHandling(next, { message: 'Le profil doit avoir une image valide (PNG, JPG, GIF) et moins de 5mo.', statusCode: 400 })
}
+ const splitedLogoName = logo.name.split('.')
+ if (splitedLogoName.length !== 2) return errorHandling(next, serverError)
+ const logoName = name + req.userId + '.' + splitedLogoName[1]
+ // Supprime les anciens logo
+ try {
+ deleteFilesNameStartWith(`${name + req.userId}`, path.join(__dirname, '..', 'assets', 'images', 'users'), async () => {
+ logo.mv(path.join(__dirname, '..', 'assets', 'images', 'users', logoName), async (error) => {
+ if (error) return errorHandling(next, serverError)
+ return await handleEditUser(res, { name, email, biography, isPublicEmail }, req.userId, logoName)
+ })
+ })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
+ } else {
+ try {
+ return await handleEditUser(res, { name, email, biography, isPublicEmail }, req.userId, null)
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
+ }
}
exports.register = async (req, res, next) => {
- const { name, email, password } = req.body;
- const errors = validationResult(req);
- if (!errors.isEmpty()) {
- return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 });
- }
- try {
- const hashedPassword = await bcrypt.hash(password, 12);
- const tempToken = uuid.v4();
- await Users.create({ email, name, password: hashedPassword, tempToken });
- await transporter.sendMail({
- from: `"FunctionProject" <${EMAIL_INFO.auth.user}>`,
- to: email,
- subject: "FunctionProject - Confirmer l'inscription",
- html: emailUserTemplate("Veuillez confirmer l'inscription", "Oui, je m'inscris.", `${HOST}/users/confirm-email/${tempToken}`, "Si vous avez reçu ce message par erreur, il suffit de le supprimer. Vous ne serez pas inscrit si vous ne cliquez pas sur le lien de confirmation ci-dessus.")
- });
- return res.status(201).json({ result: "Vous y êtes presque, veuillez vérifier vos emails pour confirmer l'inscription." });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
- }
+ const { name, email, password } = req.body
+ const errors = validationResult(req)
+ if (!errors.isEmpty()) {
+ return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 })
+ }
+ try {
+ const hashedPassword = await bcrypt.hash(password, 12)
+ const tempToken = uuid.v4()
+ await Users.create({ email, name, password: hashedPassword, tempToken })
+ await transporter.sendMail({
+ from: `"FunctionProject" <${EMAIL_INFO.auth.user}>`,
+ to: email,
+ subject: "FunctionProject - Confirmer l'inscription",
+ html: emailUserTemplate("Veuillez confirmer l'inscription", "Oui, je m'inscris.", `${HOST}/users/confirm-email/${tempToken}`, 'Si vous avez reçu ce message par erreur, il suffit de le supprimer. Vous ne serez pas inscrit si vous ne cliquez pas sur le lien de confirmation ci-dessus.')
+ })
+ return res.status(201).json({ result: "Vous y êtes presque, veuillez vérifier vos emails pour confirmer l'inscription." })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.login = async (req, res, next) => {
- const { email, password } = req.body;
- const errors = validationResult(req);
- if (!errors.isEmpty()) {
- return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 });
+ const { email, password } = req.body
+ const errors = validationResult(req)
+ if (!errors.isEmpty()) {
+ return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 })
+ }
+ try {
+ const user = await Users.findOne({ where: { email } })
+ if (!user) {
+ return errorHandling(next, { message: "Le mot de passe ou l'adresse email n'est pas valide.", statusCode: 400 })
}
- try {
- const user = await Users.findOne({ where: { email } });
- if (!user) {
- return errorHandling(next, { message: "Le mot de passe ou l'adresse email n'est pas valide.", statusCode: 400 });
- }
- const isEqual = await bcrypt.compare(password, user.password);
- if (!isEqual) {
- return errorHandling(next, { message: "Le mot de passe ou l'adresse email n'est pas valide.", statusCode: 400 });
- }
- if (!user.isConfirmed) {
- return errorHandling(next, { message: "Vous devez valider votre adresse email pour votre première connexion.", statusCode: 400 });
- }
- const token = jwt.sign({
- email: user.email, userId: user.id
- }, JWT_SECRET, { expiresIn: TOKEN_LIFE });
- return res.status(200).json({ token, id: user.id, name: user.name, email: user.email, biography: user.biography, logo: user.logo, isPublicEmail: user.isPublicEmail, isAdmin: user.isAdmin, createdAt: user.createdAt, expiresIn: Math.round(ms(TOKEN_LIFE) / 1000) });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const isEqual = await bcrypt.compare(password, user.password)
+ if (!isEqual) {
+ return errorHandling(next, { message: "Le mot de passe ou l'adresse email n'est pas valide.", statusCode: 400 })
}
+ if (!user.isConfirmed) {
+ return errorHandling(next, { message: 'Vous devez valider votre adresse email pour votre première connexion.', statusCode: 400 })
+ }
+ const token = jwt.sign({
+ email: user.email, userId: user.id
+ }, JWT_SECRET, { expiresIn: TOKEN_LIFE })
+ return res.status(200).json({ token, id: user.id, name: user.name, email: user.email, biography: user.biography, logo: user.logo, isPublicEmail: user.isPublicEmail, isAdmin: user.isAdmin, createdAt: user.createdAt, expiresIn: Math.round(ms(TOKEN_LIFE) / 1000) })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.confirmEmail = async (req, res, next) => {
- const { tempToken } = req.params;
- if (!tempToken) {
- return errorHandling(next, generalError);
- }
- try {
- const user = await Users.findOne({ where: { tempToken, isConfirmed: false } });
- if (!user) {
- return errorHandling(next, { message: "Le token n'est pas valide.", statusCode: 400 });
- }
- user.tempToken = null;
- user.isConfirmed = true;
- await user.save();
- return res.redirect(`${FRONT_END_HOST}/users/login?isConfirmed=true`);
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { tempToken } = req.params
+ if (!tempToken) {
+ return errorHandling(next, generalError)
+ }
+ try {
+ const user = await Users.findOne({ where: { tempToken, isConfirmed: false } })
+ if (!user) {
+ return errorHandling(next, { message: "Le token n'est pas valide.", statusCode: 400 })
}
+ user.tempToken = null
+ user.isConfirmed = true
+ await user.save()
+ return res.redirect(`${FRONT_END_HOST}/users/login?isConfirmed=true`)
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.resetPassword = async (req, res, next) => {
- const { email } = req.body;
- const errors = validationResult(req);
- if (!errors.isEmpty()) {
- return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 });
- }
- try {
- const user = await Users.findOne({ where: { email, tempToken: null } });
- if (!user) {
- return errorHandling(next, { message: "L'adresse email n'existe pas ou une demande est déjà en cours.", statusCode: 400 });
- }
- const tempToken = uuid.v4();
- user.tempExpirationToken = Date.now() + 3600000; // 1 heure
- user.tempToken = tempToken;
- await user.save();
- await transporter.sendMail({
- from: `"FunctionProject" <${EMAIL_INFO.auth.user}>`,
- to: email,
- subject: "FunctionProject - Réinitialisation du mot de passe",
- html: emailUserTemplate("Veuillez confirmer la réinitialisation du mot de passe", "Oui, je change mon mot de passe.", `${FRONT_END_HOST}/users/newPassword?token=${tempToken}`, "Si vous avez reçu ce message par erreur, il suffit de le supprimer. Votre mot de passe ne sera pas réinitialiser si vous ne cliquez pas sur le lien ci-dessus. Par ailleurs, pour la sécurité de votre compte, la réinitialisation du mot de passe est disponible pendant un délai de 1 heure, passez ce temps, la réinitialisation ne sera plus valide.")
- });
- return res.status(200).json({ result: "Demande de réinitialisation du mot de passe réussi, veuillez vérifier vos emails!" });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { email } = req.body
+ const errors = validationResult(req)
+ if (!errors.isEmpty()) {
+ return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 })
+ }
+ try {
+ const user = await Users.findOne({ where: { email, tempToken: null } })
+ if (!user) {
+ return errorHandling(next, { message: "L'adresse email n'existe pas ou une demande est déjà en cours.", statusCode: 400 })
}
+ const tempToken = uuid.v4()
+ user.tempExpirationToken = Date.now() + 3600000 // 1 heure
+ user.tempToken = tempToken
+ await user.save()
+ await transporter.sendMail({
+ from: `"FunctionProject" <${EMAIL_INFO.auth.user}>`,
+ to: email,
+ subject: 'FunctionProject - Réinitialisation du mot de passe',
+ html: emailUserTemplate('Veuillez confirmer la réinitialisation du mot de passe', 'Oui, je change mon mot de passe.', `${FRONT_END_HOST}/users/newPassword?token=${tempToken}`, 'Si vous avez reçu ce message par erreur, il suffit de le supprimer. Votre mot de passe ne sera pas réinitialiser si vous ne cliquez pas sur le lien ci-dessus. Par ailleurs, pour la sécurité de votre compte, la réinitialisation du mot de passe est disponible pendant un délai de 1 heure, passez ce temps, la réinitialisation ne sera plus valide.')
+ })
+ return res.status(200).json({ result: 'Demande de réinitialisation du mot de passe réussi, veuillez vérifier vos emails!' })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.newPassword = async (req, res, next) => {
- const { tempToken, password } = req.body;
- const errors = validationResult(req);
- if (!errors.isEmpty()) {
- return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 });
- }
- try {
- const user = await Users.findOne({ where: { tempToken } });
- if (!user && parseInt(tempExpirationToken) < Date.now()) {
- return errorHandling(next, { message: "Le token n'est pas valide.", statusCode: 400 });
- }
- const hashedPassword = await bcrypt.hash(password, 12);
- user.password = hashedPassword;
- user.tempToken = null;
- user.tempExpirationToken = null;
- await user.save();
- return res.status(200).json({ result: "Le mot de passe a bien été modifié!" });
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { tempToken, password } = req.body
+ const errors = validationResult(req)
+ if (!errors.isEmpty()) {
+ return errorHandling(next, { message: errors.array()[0].msg, statusCode: 400 })
+ }
+ try {
+ const user = await Users.findOne({ where: { tempToken } })
+ if (!user && parseInt(user.tempExpirationToken) < Date.now()) {
+ return errorHandling(next, { message: "Le token n'est pas valide.", statusCode: 400 })
}
+ const hashedPassword = await bcrypt.hash(password, 12)
+ user.password = hashedPassword
+ user.tempToken = null
+ user.tempExpirationToken = null
+ await user.save()
+ return res.status(200).json({ result: 'Le mot de passe a bien été modifié!' })
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
}
exports.getUserInfo = async (req, res, next) => {
- const { name } = req.params;
- try {
- const user = await Users.findOne({
- where: { name, isConfirmed: true },
- attributes: {
- exclude: ["updatedAt", "isAdmin", "isConfirmed", "password", "tempToken", "tempExpirationToken"]
- },
- });
- if (!user) {
- return errorHandling(next, { message: "L'utilisateur n'existe pas.", statusCode: 404 });
- }
- const favorites = await Favorites.findAll({
- where: { userId: user.id },
- include: [
- { model: Functions, attributes: { exclude: ["updatedAt", "utilizationForm", "article", "isOnline"] }, include: { model: Categories, attributes: ["name", "color"] } }
- ],
- order: [['createdAt', 'DESC']],
- limit: 5
- });
- const favoritesArray = favorites.map((favorite) => favorite.function);
- const comments = await Comments.findAll({
- where: { userId: user.id },
- include: [
- { model: Functions, attributes: { exclude: ["updatedAt", "utilizationForm", "article", "isOnline"] } }
- ],
- order: [['createdAt', 'DESC']],
- limit: 5
- });
- const commentsArray = comments.map((commentObject) => {
- return {
- id: commentObject.id,
- message: commentObject.message,
- createdAt: commentObject.createdAt,
- function: commentObject.function.dataValues
- };
- });
- const quotesArray = await Quotes.findAll({
- where: { userId: user.id },
- attributes: {
- exclude: ["updatedAt", "createdAt", "isValidated", "userId", "id"]
- },
- order: [['createdAt', 'DESC']],
- limit: 5,
- });
- const userObject = {
- // Si Public Email
- ... (user.isPublicEmail) && { email: user.email },
- isPublicEmail: user.isPublicEmail,
- name: user.name,
- biography: user.biography,
- logo: user.logo,
- createdAt: user.createdAt,
- favoritesArray,
- commentsArray,
- quotesArray
- };
- return res.status(200).json(userObject);
- } catch (error) {
- console.log(error);
- return errorHandling(next, serverError);
+ const { name } = req.params
+ try {
+ const user = await Users.findOne({
+ where: { name, isConfirmed: true },
+ attributes: {
+ exclude: ['updatedAt', 'isAdmin', 'isConfirmed', 'password', 'tempToken', 'tempExpirationToken']
+ }
+ })
+ if (!user) {
+ return errorHandling(next, { message: "L'utilisateur n'existe pas.", statusCode: 404 })
}
-}
\ No newline at end of file
+ const favorites = await Favorites.findAll({
+ where: { userId: user.id },
+ include: [
+ { model: Functions, attributes: { exclude: ['updatedAt', 'utilizationForm', 'article', 'isOnline'] }, include: { model: Categories, attributes: ['name', 'color'] } }
+ ],
+ order: [['createdAt', 'DESC']],
+ limit: 5
+ })
+ const favoritesArray = favorites.map((favorite) => favorite.function)
+ const comments = await Comments.findAll({
+ where: { userId: user.id },
+ include: [
+ { model: Functions, attributes: { exclude: ['updatedAt', 'utilizationForm', 'article', 'isOnline'] } }
+ ],
+ order: [['createdAt', 'DESC']],
+ limit: 5
+ })
+ const commentsArray = comments.map((commentObject) => {
+ return {
+ id: commentObject.id,
+ message: commentObject.message,
+ createdAt: commentObject.createdAt,
+ function: commentObject.function.dataValues
+ }
+ })
+ const quotesArray = await Quotes.findAll({
+ where: { userId: user.id },
+ attributes: {
+ exclude: ['updatedAt', 'createdAt', 'isValidated', 'userId', 'id']
+ },
+ order: [['createdAt', 'DESC']],
+ limit: 5
+ })
+ const userObject = {
+ // Si Public Email
+ ...(user.isPublicEmail) && { email: user.email },
+ isPublicEmail: user.isPublicEmail,
+ name: user.name,
+ biography: user.biography,
+ logo: user.logo,
+ createdAt: user.createdAt,
+ favoritesArray,
+ commentsArray,
+ quotesArray
+ }
+ return res.status(200).json(userObject)
+ } catch (error) {
+ console.log(error)
+ return errorHandling(next, serverError)
+ }
+}
diff --git a/api/middlewares/isAdmin.js b/api/middlewares/isAdmin.js
index f0ac9e0..c2f6993 100644
--- a/api/middlewares/isAdmin.js
+++ b/api/middlewares/isAdmin.js
@@ -1,23 +1,23 @@
-const errorHandling = require('../assets/utils/errorHandling');
-const { serverError } = require('../assets/config/errors');
-const Users = require('../models/users');
+const errorHandling = require('../assets/utils/errorHandling')
+const { serverError } = require('../assets/config/errors')
+const Users = require('../models/users')
module.exports = (req, _res, next) => {
- if (!req.userId) {
- return errorHandling(next, { message: "Vous n'êtes pas connecté.", statusCode: 403 });
- }
- Users.findOne({ where: { id: req.userId } })
- .then((user) => {
- if (!user) {
- return errorHandling(next, { message: "Le mot de passe ou l'adresse email n'est pas valide.", statusCode: 403 });
- }
- if (!user.isAdmin) {
- return errorHandling(next, { message: "Vous n'êtes pas administrateur.", statusCode: 403 });
- }
- next();
- })
- .catch((error) => {
- console.log(error);
- return errorHandling(next, serverError);
- });
-}
\ No newline at end of file
+ if (!req.userId) {
+ return errorHandling(next, { message: "Vous n'êtes pas connecté.", statusCode: 403 })
+ }
+ Users.findOne({ where: { id: req.userId } })
+ .then((user) => {
+ if (!user) {
+ return errorHandling(next, { message: "Le mot de passe ou l'adresse email n'est pas valide.", statusCode: 403 })
+ }
+ if (!user.isAdmin) {
+ return errorHandling(next, { message: "Vous n'êtes pas administrateur.", statusCode: 403 })
+ }
+ next()
+ })
+ .catch((error) => {
+ console.log(error)
+ return errorHandling(next, serverError)
+ })
+}
diff --git a/api/middlewares/isAuth.js b/api/middlewares/isAuth.js
index c8979fc..a3afeb7 100644
--- a/api/middlewares/isAuth.js
+++ b/api/middlewares/isAuth.js
@@ -1,24 +1,24 @@
-const jwt = require('jsonwebtoken');
-const errorHandling = require('../assets/utils/errorHandling');
-const { JWT_SECRET } = require('../assets/config/config');
+const jwt = require('jsonwebtoken')
+const errorHandling = require('../assets/utils/errorHandling')
+const { JWT_SECRET } = require('../assets/config/config')
module.exports = (req, _res, next) => {
- const token = req.get('Authorization');
- if (!token) {
- return errorHandling(next, { message: "Vous devez être connecter pour effectuer cette opération.", statusCode: 403 });
- }
+ const token = req.get('Authorization')
+ if (!token) {
+ return errorHandling(next, { message: 'Vous devez être connecter pour effectuer cette opération.', statusCode: 403 })
+ }
- let decodedToken;
- try {
- decodedToken = jwt.verify(token, JWT_SECRET);
- } catch (error) {
- return errorHandling(next, { message: "Vous devez être connecter pour effectuer cette opération.", statusCode: 403 });
- }
+ let decodedToken
+ try {
+ decodedToken = jwt.verify(token, JWT_SECRET)
+ } catch (error) {
+ return errorHandling(next, { message: 'Vous devez être connecter pour effectuer cette opération.', statusCode: 403 })
+ }
- if (!decodedToken) {
- return errorHandling(next, { message: "Vous devez être connecter pour effectuer cette opération.", statusCode: 403 });
- }
+ if (!decodedToken) {
+ return errorHandling(next, { message: 'Vous devez être connecter pour effectuer cette opération.', statusCode: 403 })
+ }
- req.userId = decodedToken.userId;
- next();
-}
\ No newline at end of file
+ req.userId = decodedToken.userId
+ next()
+}
diff --git a/api/models/categories.js b/api/models/categories.js
index 118373f..f48c087 100644
--- a/api/models/categories.js
+++ b/api/models/categories.js
@@ -1,13 +1,13 @@
-const Sequelize = require('sequelize');
-const sequelize = require('../assets/utils/database');
+const Sequelize = require('sequelize')
+const sequelize = require('../assets/utils/database')
module.exports = sequelize.define('categorie', {
- name: {
- type: Sequelize.STRING,
- allowNull: false,
- },
- color: {
- type: Sequelize.STRING,
- allowNull: false,
- }
-});
\ No newline at end of file
+ name: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ color: {
+ type: Sequelize.STRING,
+ allowNull: false
+ }
+})
diff --git a/api/models/comments.js b/api/models/comments.js
index 5655e07..32d5d97 100644
--- a/api/models/comments.js
+++ b/api/models/comments.js
@@ -1,9 +1,9 @@
-const Sequelize = require('sequelize');
-const sequelize = require('../assets/utils/database');
+const Sequelize = require('sequelize')
+const sequelize = require('../assets/utils/database')
module.exports = sequelize.define('comment', {
- message: {
- type: Sequelize.TEXT,
- allowNull: false
- }
-});
\ No newline at end of file
+ message: {
+ type: Sequelize.TEXT,
+ allowNull: false
+ }
+})
diff --git a/api/models/favorites.js b/api/models/favorites.js
index d560f57..4e90284 100644
--- a/api/models/favorites.js
+++ b/api/models/favorites.js
@@ -1,4 +1,3 @@
-const Sequelize = require('sequelize');
-const sequelize = require('../assets/utils/database');
+const sequelize = require('../assets/utils/database')
-module.exports = sequelize.define('favorite', {});
\ No newline at end of file
+module.exports = sequelize.define('favorite', {})
diff --git a/api/models/functions.js b/api/models/functions.js
index da86d5a..5d0a96b 100644
--- a/api/models/functions.js
+++ b/api/models/functions.js
@@ -1,39 +1,39 @@
-const Sequelize = require('sequelize');
-const sequelize = require('../assets/utils/database');
+const Sequelize = require('sequelize')
+const sequelize = require('../assets/utils/database')
module.exports = sequelize.define('function', {
- title: {
- type: Sequelize.STRING,
- allowNull: false,
- },
- slug: {
- type: Sequelize.STRING,
- allowNull: false,
- },
- description: {
- type: Sequelize.STRING,
- allowNull: false
- },
- image: {
- type: Sequelize.STRING,
- allowNull: false,
- defaultValue: "/images/functions/default.png"
- },
- type: {
- type: Sequelize.STRING,
- allowNull: false
- },
- article: {
- type: Sequelize.TEXT,
- allowNull: true
- },
- utilizationForm: {
- type: Sequelize.TEXT,
- allowNull: true
- },
- isOnline: {
- type: Sequelize.BOOLEAN,
- allowNull: false,
- defaultValue: 0
- }
-});
\ No newline at end of file
+ title: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ slug: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ description: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ image: {
+ type: Sequelize.STRING,
+ allowNull: false,
+ defaultValue: '/images/functions/default.png'
+ },
+ type: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ article: {
+ type: Sequelize.TEXT,
+ allowNull: true
+ },
+ utilizationForm: {
+ type: Sequelize.TEXT,
+ allowNull: true
+ },
+ isOnline: {
+ type: Sequelize.BOOLEAN,
+ allowNull: false,
+ defaultValue: 0
+ }
+})
diff --git a/api/models/quotes.js b/api/models/quotes.js
index dcb7f8e..181e1e2 100644
--- a/api/models/quotes.js
+++ b/api/models/quotes.js
@@ -1,18 +1,18 @@
-const Sequelize = require('sequelize');
-const sequelize = require('../assets/utils/database');
+const Sequelize = require('sequelize')
+const sequelize = require('../assets/utils/database')
module.exports = sequelize.define('quote', {
- quote: {
- type: Sequelize.STRING,
- allowNull: false,
- },
- author: {
- type: Sequelize.STRING,
- allowNull: false,
- },
- isValidated: {
- type: Sequelize.BOOLEAN,
- allowNull: false,
- defaultValue: 0
- }
-});
\ No newline at end of file
+ quote: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ author: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ isValidated: {
+ type: Sequelize.BOOLEAN,
+ allowNull: false,
+ defaultValue: 0
+ }
+})
diff --git a/api/models/short_links.js b/api/models/short_links.js
index a6317a8..b994d1c 100644
--- a/api/models/short_links.js
+++ b/api/models/short_links.js
@@ -1,13 +1,13 @@
-const Sequelize = require('sequelize');
-const sequelize = require('../assets/utils/database');
+const Sequelize = require('sequelize')
+const sequelize = require('../assets/utils/database')
module.exports = sequelize.define('short_link', {
- url: {
- type: Sequelize.TEXT,
- allowNull: false,
- },
- shortcut: {
- type: Sequelize.TEXT,
- allowNull: false,
- }
-});
\ No newline at end of file
+ url: {
+ type: Sequelize.TEXT,
+ allowNull: false
+ },
+ shortcut: {
+ type: Sequelize.TEXT,
+ allowNull: false
+ }
+})
diff --git a/api/models/tasks.js b/api/models/tasks.js
index a80b24c..13e8442 100644
--- a/api/models/tasks.js
+++ b/api/models/tasks.js
@@ -1,14 +1,14 @@
-const Sequelize = require('sequelize');
-const sequelize = require('../assets/utils/database');
+const Sequelize = require('sequelize')
+const sequelize = require('../assets/utils/database')
module.exports = sequelize.define('task', {
- task: {
- type: Sequelize.STRING,
- allowNull: false,
- },
- isCompleted: {
- type: Sequelize.BOOLEAN,
- allowNull: false,
- defaultValue: 0
- }
-});
\ No newline at end of file
+ task: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ isCompleted: {
+ type: Sequelize.BOOLEAN,
+ allowNull: false,
+ defaultValue: 0
+ }
+})
diff --git a/api/models/users.js b/api/models/users.js
index 383a421..ef319e9 100644
--- a/api/models/users.js
+++ b/api/models/users.js
@@ -1,45 +1,45 @@
-const Sequelize = require('sequelize');
-const sequelize = require('../assets/utils/database');
+const Sequelize = require('sequelize')
+const sequelize = require('../assets/utils/database')
module.exports = sequelize.define('user', {
- name: {
- type: Sequelize.STRING,
- allowNull: false,
- },
- email: {
- type: Sequelize.STRING,
- allowNull: false,
- },
- password: {
- type: Sequelize.STRING,
- allowNull: false,
- },
- biography: {
- type: Sequelize.TEXT,
- defaultValue: ""
- },
- logo: {
- type: Sequelize.STRING,
- defaultValue: "/images/users/default.png"
- },
- isConfirmed: {
- type: Sequelize.BOOLEAN,
- defaultValue: false
- },
- isPublicEmail: {
- type: Sequelize.BOOLEAN,
- defaultValue: false
- },
- isAdmin: {
- type: Sequelize.BOOLEAN,
- defaultValue: false
- },
- tempToken: {
- type: Sequelize.TEXT,
- allowNull: true
- },
- tempExpirationToken: {
- type: Sequelize.DATE,
- allowNull: true
- }
-});
\ No newline at end of file
+ name: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ email: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ password: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ biography: {
+ type: Sequelize.TEXT,
+ defaultValue: ''
+ },
+ logo: {
+ type: Sequelize.STRING,
+ defaultValue: '/images/users/default.png'
+ },
+ isConfirmed: {
+ type: Sequelize.BOOLEAN,
+ defaultValue: false
+ },
+ isPublicEmail: {
+ type: Sequelize.BOOLEAN,
+ defaultValue: false
+ },
+ isAdmin: {
+ type: Sequelize.BOOLEAN,
+ defaultValue: false
+ },
+ tempToken: {
+ type: Sequelize.TEXT,
+ allowNull: true
+ },
+ tempExpirationToken: {
+ type: Sequelize.DATE,
+ allowNull: true
+ }
+})
diff --git a/api/package-lock.json b/api/package-lock.json
index 871b6bd..2e7beff 100644
--- a/api/package-lock.json
+++ b/api/package-lock.json
@@ -4,6 +4,90 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
+ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
+ "dev": true
+ },
+ "@babel/highlight": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
+ "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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=",
+ "dev": true
+ }
+ }
+ },
+ "@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
+ },
+ "@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,
+ "requires": {
+ "defer-to-connect": "^1.0.1"
+ }
+ },
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
+ "dev": true
+ },
"@types/node": {
"version": "13.9.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.2.tgz",
@@ -43,6 +127,12 @@
"acorn-walk": "^7.1.1"
}
},
+ "acorn-jsx": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz",
+ "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==",
+ "dev": true
+ },
"acorn-walk": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz",
@@ -60,27 +150,58 @@
}
},
"ansi-align": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
- "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
+ "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==",
"dev": true,
"requires": {
- "string-width": "^2.0.0"
+ "string-width": "^3.0.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==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ }
+ }
+ },
+ "ansi-escapes": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
+ "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.11.0"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
+ "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
+ "dev": true
+ }
}
},
"ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"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==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"dev": true,
"requires": {
- "color-convert": "^1.9.0"
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
}
},
"ansicolors": {
@@ -103,11 +224,31 @@
"picomatch": "^2.0.4"
}
},
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
+ "array-includes": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz",
+ "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0",
+ "is-string": "^1.0.5"
+ }
+ },
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
@@ -121,6 +262,12 @@
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -173,9 +320,9 @@
"integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
},
"binary-extensions": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
- "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
+ "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
"dev": true
},
"bluebird": {
@@ -206,18 +353,19 @@
"integrity": "sha512-2ld76tuLBNFekRgmJfT2+3j5MIrP6bFict8WAIT3beq+srz1gcKNAdNKMqHqauQt63NmAa88HfP1/Ypa9Er3HA=="
},
"boxen": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
- "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
+ "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==",
"dev": true,
"requires": {
- "ansi-align": "^2.0.0",
- "camelcase": "^4.0.0",
- "chalk": "^2.0.1",
- "cli-boxes": "^1.0.0",
- "string-width": "^2.0.0",
- "term-size": "^1.2.0",
- "widest-line": "^2.0.0"
+ "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"
}
},
"brace-expansion": {
@@ -249,6 +397,12 @@
"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==",
+ "dev": true
+ },
"busboy": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz",
@@ -262,10 +416,48 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
},
+ "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,
+ "requires": {
+ "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"
+ },
+ "dependencies": {
+ "get-stream": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
+ "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true
+ }
+ }
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
"camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true
},
"camelize": {
@@ -273,12 +465,6 @@
"resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz",
"integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs="
},
- "capture-stack-trace": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
- "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
- "dev": true
- },
"cardinal": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz",
@@ -294,20 +480,42 @@
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "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
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+ "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
}
},
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
"chokidar": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz",
- "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz",
+ "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==",
"dev": true,
"requires": {
"anymatch": "~3.1.1",
@@ -317,21 +525,45 @@
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
- "readdirp": "~3.3.0"
+ "readdirp": "~3.4.0"
}
},
"ci-info": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
- "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
"dev": true
},
"cli-boxes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
- "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz",
+ "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==",
"dev": true
},
+ "cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^3.1.0"
+ }
+ },
+ "cli-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
+ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
"cls-bluebird": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cls-bluebird/-/cls-bluebird-2.1.0.tgz",
@@ -342,18 +574,18 @@
}
},
"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==",
+ "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,
"requires": {
- "color-name": "1.1.3"
+ "color-name": "~1.1.4"
}
},
"color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "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
},
"combined-stream": {
@@ -370,20 +602,38 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
- "configstore": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
- "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
+ "concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
"dev": true,
"requires": {
- "dot-prop": "^4.1.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^1.0.0",
- "unique-string": "^1.0.0",
- "write-file-atomic": "^2.0.0",
- "xdg-basedir": "^3.0.0"
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
}
},
+ "configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "dev": true,
+ "requires": {
+ "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"
+ }
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
"content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
@@ -426,30 +676,23 @@
"vary": "^1"
}
},
- "create-error-class": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
- "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
- "dev": true,
- "requires": {
- "capture-stack-trace": "^1.0.0"
- }
- },
"cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
"requires": {
- "lru-cache": "^4.0.1",
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"crypto-random-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
- "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "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
},
"cssom": {
@@ -510,11 +753,26 @@
}
}
},
+ "debug-log": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
+ "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=",
+ "dev": true
+ },
"decimal.js": {
"version": "10.2.0",
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz",
"integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw=="
},
+ "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,
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
@@ -526,6 +784,43 @@
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
},
+ "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
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "deglob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/deglob/-/deglob-4.0.1.tgz",
+ "integrity": "sha512-/g+RDZ7yf2HvoW+E5Cy+K94YhgcFgr6C8LuHZD1O5HoNPkf3KY6RfXJ0DBGlB/NkLi5gml+G9zqRzk9S0mHZCg==",
+ "dev": true,
+ "requires": {
+ "find-root": "^1.0.0",
+ "glob": "^7.0.5",
+ "ignore": "^5.0.0",
+ "pkg-config": "^1.1.0",
+ "run-parallel": "^1.1.2",
+ "uniq": "^1.0.1"
+ },
+ "dependencies": {
+ "ignore": {
+ "version": "5.1.8",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
+ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+ "dev": true
+ }
+ }
+ },
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -559,6 +854,15 @@
"resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.2.0.tgz",
"integrity": "sha512-hvSnros73+qyZXhHFjx2CMLwoj3Fe7eR9EJsFsqmcI1bB2OBWL/+0YzaEaKssCHnj/6crawNnUyw74Gm2EKe+Q=="
},
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
"domexception": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
@@ -580,12 +884,12 @@
"integrity": "sha512-ZjI4zqTaxveH2/tTlzS1wFp+7ncxNZaIEWYg3lzZRHkKf5zPT/MnEG6WL0BhHMJUabkh8GeU5NL5j+rEUCb7Ug=="
},
"dot-prop": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
- "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz",
+ "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==",
"dev": true,
"requires": {
- "is-obj": "^1.0.0"
+ "is-obj": "^2.0.0"
}
},
"dotenv": {
@@ -627,11 +931,71 @@
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
+ "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
+ },
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.17.6",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
+ "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.2.0",
+ "is-regex": "^1.1.0",
+ "object-inspect": "^1.7.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.0",
+ "string.prototype.trimend": "^1.0.1",
+ "string.prototype.trimstart": "^1.0.1"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "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
+ },
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -655,11 +1019,325 @@
"source-map": "~0.6.1"
}
},
+ "eslint": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
+ "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.3",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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=",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-config-standard": {
+ "version": "14.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz",
+ "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==",
+ "dev": true
+ },
+ "eslint-config-standard-jsx": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.1.0.tgz",
+ "integrity": "sha512-ULVC8qH8qCqbU792ZOO6DaiaZyHNS/5CZt3hKqHkEhVlhPEPN3nfBqqxJCyp59XrjIBZPu1chMYe9T2DXZ7TMw==",
+ "dev": true
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz",
+ "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "resolve": "^1.13.1"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
+ "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "pkg-dir": "^2.0.0"
+ }
+ },
+ "eslint-plugin-es": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz",
+ "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==",
+ "dev": true,
+ "requires": {
+ "eslint-utils": "^1.4.2",
+ "regexpp": "^3.0.0"
+ },
+ "dependencies": {
+ "regexpp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.18.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz",
+ "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "contains-path": "^0.1.0",
+ "debug": "^2.6.9",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.3.2",
+ "eslint-module-utils": "^2.4.0",
+ "has": "^1.0.3",
+ "minimatch": "^3.0.4",
+ "object.values": "^1.1.0",
+ "read-pkg-up": "^2.0.0",
+ "resolve": "^1.11.0"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-node": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz",
+ "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-es": "^2.0.0",
+ "eslint-utils": "^1.4.2",
+ "ignore": "^5.1.1",
+ "minimatch": "^3.0.4",
+ "resolve": "^1.10.1",
+ "semver": "^6.1.0"
+ },
+ "dependencies": {
+ "ignore": {
+ "version": "5.1.8",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
+ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz",
+ "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==",
+ "dev": true
+ },
+ "eslint-plugin-react": {
+ "version": "7.14.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz",
+ "integrity": "sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "doctrine": "^2.1.0",
+ "has": "^1.0.3",
+ "jsx-ast-utils": "^2.1.0",
+ "object.entries": "^1.1.0",
+ "object.fromentries": "^2.0.0",
+ "object.values": "^1.1.0",
+ "prop-types": "^15.7.2",
+ "resolve": "^1.10.1"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ }
+ }
+ },
+ "eslint-plugin-standard": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz",
+ "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz",
+ "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
+ "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
+ "esquery": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz",
+ "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz",
+ "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==",
+ "dev": true
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
"estraverse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
@@ -675,21 +1353,6 @@
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
- "execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
- "dev": true,
- "requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- },
"expect-ct": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.2.0.tgz",
@@ -769,6 +1432,17 @@
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ }
+ },
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
@@ -794,6 +1468,24 @@
"resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.3.0.tgz",
"integrity": "sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ=="
},
+ "figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -817,6 +1509,38 @@
"unpipe": "~1.0.0"
}
},
+ "find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ }
+ },
+ "flatted": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
+ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+ "dev": true
+ },
"follow-redirects": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
@@ -872,13 +1596,31 @@
"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=",
+ "dev": true
+ },
"fsevents": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
- "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
+ "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
"dev": true,
"optional": true
},
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
"generate-function": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
@@ -887,12 +1629,21 @@
"is-property": "^1.0.2"
}
},
- "get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "get-stdin": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz",
+ "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==",
"dev": true
},
+ "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,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -901,47 +1652,70 @@
"assert-plus": "^1.0.0"
}
},
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "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.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
- "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+ "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
"dev": true,
"requires": {
"is-glob": "^4.0.1"
}
},
"global-dirs": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
- "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz",
+ "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==",
"dev": true,
"requires": {
- "ini": "^1.3.4"
+ "ini": "^1.3.5"
+ }
+ },
+ "globals": {
+ "version": "12.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
+ "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.8.1"
}
},
"got": {
- "version": "6.7.1",
- "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
- "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+ "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
"dev": true,
"requires": {
- "create-error-class": "^3.0.0",
+ "@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": "^3.0.0",
- "is-redirect": "^1.0.0",
- "is-retry-allowed": "^1.0.0",
- "is-stream": "^1.0.0",
- "lowercase-keys": "^1.0.0",
- "safe-buffer": "^5.0.1",
- "timed-out": "^4.0.0",
- "unzip-response": "^2.0.1",
- "url-parse-lax": "^1.0.0"
+ "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"
}
},
"graceful-fs": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
- "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
},
"har-schema": {
@@ -958,12 +1732,33 @@
"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==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
+ "has-symbols": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
+ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+ "dev": true
+ },
+ "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
+ },
"helmet": {
"version": "3.21.3",
"resolved": "https://registry.npmjs.org/helmet/-/helmet-3.21.3.tgz",
@@ -1014,6 +1809,12 @@
"resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.1.0.tgz",
"integrity": "sha512-Io1zA2yOA1YJslkr+AJlWSf2yWFkKjvkcL9Ni1XSUqnGLr/qRQe2UI3Cn/J9MsJht7yEVCe0SscY1HgVMujbgg=="
},
+ "hosted-git-info": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
+ "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
+ "dev": true
+ },
"hpkp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz",
@@ -1042,6 +1843,12 @@
"whatwg-encoding": "^1.0.5"
}
},
+ "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
+ },
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
@@ -1077,12 +1884,28 @@
"resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.1.0.tgz",
"integrity": "sha512-MFs36e/ca6ohEKtinTJ5VvAJ6oDRAYFdYXweUnGY9L9vcoqFOU4n2ZhmJ0C4z/cwGZ3YIQRSB3XZ1+ghZkY5NQ=="
},
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
"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
},
+ "import-fresh": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
+ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
"import-lazy": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
@@ -1100,6 +1923,16 @@
"resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz",
"integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY="
},
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
@@ -1111,6 +1944,69 @@
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
"dev": true
},
+ "inquirer": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
+ "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^3.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.19",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.4.0",
+ "rxjs": "^6.6.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "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
+ },
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "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
+ },
+ "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,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+ "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
"ip-regex": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
@@ -1121,6 +2017,12 @@
"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=",
+ "dev": true
+ },
"is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -1135,15 +2037,27 @@
"resolved": "https://registry.npmjs.org/is-bluebird/-/is-bluebird-1.0.2.tgz",
"integrity": "sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI="
},
+ "is-callable": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
+ "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
+ "dev": true
+ },
"is-ci": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
- "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
"dev": true,
"requires": {
- "ci-info": "^1.5.0"
+ "ci-info": "^2.0.0"
}
},
+ "is-date-object": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
+ "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
+ "dev": true
+ },
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -1166,19 +2080,19 @@
}
},
"is-installed-globally": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
- "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "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,
"requires": {
- "global-dirs": "^0.1.0",
- "is-path-inside": "^1.0.0"
+ "global-dirs": "^2.0.1",
+ "is-path-inside": "^3.0.1"
}
},
"is-npm": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
- "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz",
+ "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==",
"dev": true
},
"is-number": {
@@ -1188,19 +2102,16 @@
"dev": true
},
"is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
"dev": true
},
"is-path-inside": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
- "dev": true,
- "requires": {
- "path-is-inside": "^1.0.1"
- }
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz",
+ "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==",
+ "dev": true
},
"is-potential-custom-element-name": {
"version": "1.0.0",
@@ -1212,29 +2123,47 @@
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
"integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
},
- "is-redirect": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
- "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
- "dev": true
- },
- "is-retry-allowed": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
- "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
- "dev": true
- },
- "is-stream": {
+ "is-regex": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
+ "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "is-string": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
+ "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
"dev": true
},
+ "is-symbol": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
+ "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
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -1246,6 +2175,22 @@
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
+ "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
@@ -1284,6 +2229,18 @@
"xml-name-validator": "^3.0.0"
}
},
+ "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
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
@@ -1294,6 +2251,12 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
@@ -1334,6 +2297,16 @@
"verror": "1.10.0"
}
},
+ "jsx-ast-utils": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz",
+ "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.1.1",
+ "object.assign": "^4.1.0"
+ }
+ },
"jwa": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
@@ -1353,13 +2326,22 @@
"safe-buffer": "^5.0.1"
}
},
- "latest-version": {
+ "keyv": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
- "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+ "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
"dev": true,
"requires": {
- "package-json": "^4.0.0"
+ "json-buffer": "3.0.0"
+ }
+ },
+ "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,
+ "requires": {
+ "package-json": "^6.3.0"
}
},
"levn": {
@@ -1371,6 +2353,28 @@
"type-check": "~0.3.2"
}
},
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
"lodash": {
"version": "4.17.19",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
@@ -1421,6 +2425,15 @@
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
+ "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==",
+ "dev": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
"lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
@@ -1437,12 +2450,20 @@
}
},
"make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "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": {
- "pify": "^3.0.0"
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
}
},
"media-typer": {
@@ -1478,6 +2499,18 @@
"mime-db": "1.43.0"
}
},
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "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
+ },
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -1493,6 +2526,15 @@
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
"moment": {
"version": "2.24.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
@@ -1524,6 +2566,12 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
"mysql2": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.1.0.tgz",
@@ -1571,11 +2619,23 @@
"lru-cache": "^4.1.3"
}
},
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
"nocache": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz",
@@ -1587,9 +2647,9 @@
"integrity": "sha512-/kJ+FYVEm2HuUlw87hjSqTss+GU35D4giOpdSfGp7DO+5h6RlJj7R94YaYHOkoxu1CSaM0d3WRBtCzwXrY6MKA=="
},
"nodemon": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.2.tgz",
- "integrity": "sha512-GWhYPMfde2+M0FsHnggIHXTqPDHXia32HRhh6H0d75Mt9FKUoCBvumNHr7LdrpPBTKxsWmIEOjoN+P4IU6Hcaw==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.4.tgz",
+ "integrity": "sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ==",
"dev": true,
"requires": {
"chokidar": "^3.2.2",
@@ -1601,7 +2661,7 @@
"supports-color": "^5.5.0",
"touch": "^3.1.0",
"undefsafe": "^2.0.2",
- "update-notifier": "^2.5.0"
+ "update-notifier": "^4.0.0"
},
"dependencies": {
"debug": {
@@ -1612,12 +2672,6 @@
"requires": {
"ms": "^2.1.1"
}
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
}
}
},
@@ -1630,20 +2684,29 @@
"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==",
+ "dev": true,
+ "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",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true
},
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
+ "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
},
"nwsapi": {
"version": "2.2.0",
@@ -1660,6 +2723,65 @@
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
+ "object-inspect": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
+ "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
+ }
+ },
+ "object.entries": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz",
+ "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5",
+ "has": "^1.0.3"
+ }
+ },
+ "object.fromentries": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz",
+ "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ }
+ },
+ "object.values": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
+ "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ }
+ },
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -1674,6 +2796,24 @@
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
"dev": true
},
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
+ "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
"optionator": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
@@ -1687,22 +2827,78 @@
"word-wrap": "~1.2.3"
}
},
- "p-finally": {
+ "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=",
+ "dev": true
+ },
+ "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": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
"dev": true
},
"package-json": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
- "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
+ "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
"dev": true,
"requires": {
- "got": "^6.7.1",
- "registry-auth-token": "^3.0.1",
- "registry-url": "^3.0.3",
- "semver": "^5.1.0"
+ "got": "^9.6.0",
+ "registry-auth-token": "^4.0.0",
+ "registry-url": "^5.0.0",
+ "semver": "^6.2.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
}
},
"parse5": {
@@ -1715,10 +2911,16 @@
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
},
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "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=",
"dev": true
},
"path-key": {
@@ -1727,39 +2929,181 @@
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true
},
+ "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==",
+ "dev": true
+ },
"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": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"picomatch": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz",
- "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
+ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
"dev": true
},
"pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
+ "pkg-conf": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz",
+ "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0",
+ "load-json-file": "^5.2.0"
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz",
+ "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.15",
+ "parse-json": "^4.0.0",
+ "pify": "^4.0.1",
+ "strip-bom": "^3.0.0",
+ "type-fest": "^0.3.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.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==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.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==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+ "dev": true
+ }
+ }
+ },
+ "pkg-config": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz",
+ "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=",
+ "dev": true,
+ "requires": {
+ "debug-log": "^1.0.0",
+ "find-root": "^1.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.1.0"
+ }
+ },
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
},
"prepend-http": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
- "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
"dev": true
},
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "prop-types": {
+ "version": "15.7.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
+ "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.8.1"
+ }
+ },
"proxy-addr": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
@@ -1780,16 +3124,35 @@
"integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
},
"pstree.remy": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz",
- "integrity": "sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A==",
+ "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
},
+ "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,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
+ "pupa": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz",
+ "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==",
+ "dev": true,
+ "requires": {
+ "escape-goat": "^2.0.0"
+ }
+ },
"qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
@@ -1823,13 +3186,51 @@
"strip-json-comments": "~2.0.1"
}
},
- "readdirp": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz",
- "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==",
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
"dev": true,
"requires": {
- "picomatch": "^2.0.7"
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.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==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
+ "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
+ "dev": true,
+ "requires": {
+ "picomatch": "^2.2.1"
}
},
"redeyed": {
@@ -1845,23 +3246,28 @@
"resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.2.0.tgz",
"integrity": "sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA=="
},
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true
+ },
"registry-auth-token": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz",
- "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz",
+ "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==",
"dev": true,
"requires": {
- "rc": "^1.1.6",
- "safe-buffer": "^5.0.1"
+ "rc": "^1.2.8"
}
},
"registry-url": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
- "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
+ "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,
"requires": {
- "rc": "^1.0.1"
+ "rc": "^1.2.8"
}
},
"request": {
@@ -1941,6 +3347,40 @@
}
}
},
+ "resolve": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
+ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "responselike": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+ "dev": true,
+ "requires": {
+ "lowercase-keys": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "requires": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
"retry-as-promised": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz",
@@ -1949,6 +3389,36 @@
"any-promise": "^1.3.0"
}
},
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "run-async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "dev": true
+ },
+ "run-parallel": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
+ "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
+ "dev": true
+ },
+ "rxjs": {
+ "version": "6.6.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
+ "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -1973,12 +3443,20 @@
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
},
"semver-diff": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
- "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+ "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,
"requires": {
- "semver": "^5.0.3"
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
}
},
"send": {
@@ -2107,11 +3585,48 @@
"integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="
},
"signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
"dev": true
},
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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=",
+ "dev": true
+ }
+ }
+ },
"smart-request-balancer": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/smart-request-balancer/-/smart-request-balancer-2.1.1.tgz",
@@ -2141,12 +3656,117 @@
}
}
},
+ "snazzy": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/snazzy/-/snazzy-8.0.0.tgz",
+ "integrity": "sha512-59GS69hQD8FvJoNGeDz8aZtbYhkCFxCPQB1BFzAWiVVwPmS/J6Vjaku0k6tGNsdSxQ0kAlButdkn8bPR2hLcBw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.3.0",
+ "inherits": "^2.0.1",
+ "minimist": "^1.1.1",
+ "readable-stream": "^3.0.2",
+ "standard-json": "^1.0.0",
+ "strip-ansi": "^4.0.0",
+ "text-table": "^0.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"optional": true
},
+ "spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "dev": true,
+ "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==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+ "dev": true
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
"sqlstring": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
@@ -2168,6 +3788,44 @@
"tweetnacl": "~0.14.0"
}
},
+ "standard": {
+ "version": "14.3.4",
+ "resolved": "https://registry.npmjs.org/standard/-/standard-14.3.4.tgz",
+ "integrity": "sha512-+lpOkFssMkljJ6eaILmqxHQ2n4csuEABmcubLTb9almFi1ElDzXb1819fjf/5ygSyePCq4kU2wMdb2fBfb9P9Q==",
+ "dev": true,
+ "requires": {
+ "eslint": "~6.8.0",
+ "eslint-config-standard": "14.1.1",
+ "eslint-config-standard-jsx": "8.1.0",
+ "eslint-plugin-import": "~2.18.0",
+ "eslint-plugin-node": "~10.0.0",
+ "eslint-plugin-promise": "~4.2.1",
+ "eslint-plugin-react": "~7.14.2",
+ "eslint-plugin-standard": "~4.0.0",
+ "standard-engine": "^12.0.0"
+ }
+ },
+ "standard-engine": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-12.1.0.tgz",
+ "integrity": "sha512-DVJnWM1CGkag4ucFLGdiYWa5/kJURPONmMmk17p8FT5NE4UnPZB1vxWnXnRo2sPSL78pWJG8xEM+1Tu19z0deg==",
+ "dev": true,
+ "requires": {
+ "deglob": "^4.0.1",
+ "get-stdin": "^7.0.0",
+ "minimist": "^1.2.5",
+ "pkg-conf": "^3.1.0"
+ }
+ },
+ "standard-json": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/standard-json/-/standard-json-1.1.0.tgz",
+ "integrity": "sha512-nkonX+n5g3pyVBvJZmvRlFtT/7JyLbNh4CtrYC3Qfxihgs8PKX52f6ONKQXORStuBWJ5PI83EUrNXme7LKfiTQ==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^2.0.0"
+ }
+ },
"statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
@@ -2184,28 +3842,95 @@
"integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
},
"string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "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
+ },
+ "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
+ },
+ "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
+ },
+ "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,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
+ }
+ },
+ "string.prototype.trimend": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
+ "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
+ "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.2.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==",
+ "dev": true
+ }
}
},
"strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "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": "^3.0.0"
+ "ansi-regex": "^4.1.0"
}
},
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
"dev": true
},
"strip-json-comments": {
@@ -2228,19 +3953,62 @@
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
},
- "term-size": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
- "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
"dev": true,
"requires": {
- "execa": "^0.7.0"
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.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==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ }
}
},
- "timed-out": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
- "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+ "term-size": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz",
+ "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==",
+ "dev": true
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "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
},
"to-regex-range": {
@@ -2289,6 +4057,12 @@
"punycode": "^2.1.1"
}
},
+ "tslib": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
+ "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
+ "dev": true
+ },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -2310,6 +4084,12 @@
"prelude-ls": "~1.1.2"
}
},
+ "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
+ },
"type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@@ -2319,6 +4099,21 @@
"mime-types": "~2.1.24"
}
},
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
"undefsafe": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz",
@@ -2328,13 +4123,19 @@
"debug": "^2.2.0"
}
},
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
+ },
"unique-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
- "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
"dev": true,
"requires": {
- "crypto-random-string": "^1.0.0"
+ "crypto-random-string": "^2.0.0"
}
},
"unpipe": {
@@ -2342,28 +4143,25 @@
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
- "unzip-response": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
- "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
- "dev": true
- },
"update-notifier": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
- "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz",
+ "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==",
"dev": true,
"requires": {
- "boxen": "^1.2.1",
- "chalk": "^2.0.1",
- "configstore": "^3.0.0",
+ "boxen": "^4.2.0",
+ "chalk": "^3.0.0",
+ "configstore": "^5.0.1",
+ "has-yarn": "^2.1.0",
"import-lazy": "^2.1.0",
- "is-ci": "^1.0.10",
- "is-installed-globally": "^0.1.0",
- "is-npm": "^1.0.0",
- "latest-version": "^3.0.0",
- "semver-diff": "^2.0.0",
- "xdg-basedir": "^3.0.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"
}
},
"uri-js": {
@@ -2375,14 +4173,20 @@
}
},
"url-parse-lax": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
- "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
+ "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,
"requires": {
- "prepend-http": "^1.0.1"
+ "prepend-http": "^2.0.0"
}
},
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -2393,6 +4197,22 @@
"resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.2.tgz",
"integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw=="
},
+ "v8-compile-cache": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
+ "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
"validator": {
"version": "13.0.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.0.0.tgz",
@@ -2474,12 +4294,12 @@
}
},
"widest-line": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
- "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
+ "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
"dev": true,
"requires": {
- "string-width": "^2.1.1"
+ "string-width": "^4.0.0"
}
},
"wkx": {
@@ -2495,15 +4315,31 @@
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
},
- "write-file-atomic": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
- "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "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,
"requires": {
- "graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
}
},
"ws": {
@@ -2517,9 +4353,9 @@
"integrity": "sha512-kpyBI9TlVipZO4diReZMAHWtS0MMa/7Kgx8hwG/EuZLiA6sg4Ah/4TRdASHhRRN3boobzcYgFRUFSgHRge6Qhg=="
},
"xdg-basedir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
- "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
"dev": true
},
"xml-name-validator": {
@@ -2532,6 +4368,12 @@
"resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
},
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true
+ },
"yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
diff --git a/api/package.json b/api/package.json
index d2312da..684353c 100644
--- a/api/package.json
+++ b/api/package.json
@@ -2,14 +2,11 @@
"name": "api",
"version": "2.0.0",
"description": "Backend REST API for FunctionProject",
- "main": "app.js",
"scripts": {
"start": "node app.js",
- "dev": "nodemon app.js"
+ "dev": "nodemon app.js",
+ "format": "standard \"./**/*.js\" --fix | snazzy || exit 0"
},
- "keywords": [],
- "author": "Divlo",
- "license": "MIT",
"dependencies": {
"axios": "^0.19.2",
"bcryptjs": "^2.4.3",
@@ -33,6 +30,8 @@
"devDependencies": {
"dotenv": "^8.2.0",
"morgan": "^1.9.1",
- "nodemon": "^2.0.2"
+ "nodemon": "^2.0.4",
+ "snazzy": "^8.0.0",
+ "standard": "^14.3.4"
}
}
diff --git a/api/routes/admin.js b/api/routes/admin.js
index 04fb536..17cb27d 100644
--- a/api/routes/admin.js
+++ b/api/routes/admin.js
@@ -1,205 +1,205 @@
-const { Router } = require('express');
-const fileUpload = require('express-fileupload');
-const { body } = require('express-validator');
-const adminController = require('../controllers/admin');
-const Functions = require('../models/functions');
-const Categories = require('../models/categories');
+const { Router } = require('express')
+const fileUpload = require('express-fileupload')
+const { body } = require('express-validator')
+const adminController = require('../controllers/admin')
+const Functions = require('../models/functions')
+const Categories = require('../models/categories')
-const AdminRouter = Router();
+const AdminRouter = Router()
AdminRouter.route('/functions')
- // Récupère les fonctions
- .get(adminController.getFunctions)
+// Récupère les fonctions
+ .get(adminController.getFunctions)
- // Permet de créé une fonction
- .post(fileUpload({
- useTempFiles: true,
- safeFileNames: true,
- preserveExtension: Number,
- limits: { fileSize: 5 * 1024 * 1024 }, // 5mb,
- parseNested: true
- }),
- [
- body('title')
- .not()
- .isEmpty()
- .withMessage("La fonction doit avoir un titre.")
- .isLength({ max: 100 })
- .withMessage("Le titre est trop long.")
- .custom(((title) => {
- if (title === 'undefined') {
- return Promise.reject("La fonction doit avoir un titre.");
- }
- return true;
- })),
- body('slug')
- .not()
- .isEmpty()
- .withMessage("La fonction doit avoir un slug.")
- .isLength({ max: 100 })
- .withMessage("Le slug est trop long.")
- .custom(((slug) => {
- if (slug === 'undefined') {
- return Promise.reject("La fonction doit avoir un slug.");
- }
- return true;
- }))
- .custom((async (slug) => {
- try {
- const FunctionSlug = await Functions.findOne({ where: { slug } });
- if (FunctionSlug) {
- return Promise.reject("Le slug existe déjà...");
- }
- } catch (error) {
- console.log(error);
- }
- return true;
- })),
- body('description')
- .not()
- .isEmpty()
- .withMessage("La fonction doit avoir une description.")
- .isLength({ max: 255, min: 1 })
- .withMessage("La description est trop longue.")
- .custom(((description) => {
- if (description === 'undefined') {
- return Promise.reject("La fonction doit avoir une description.");
- }
- return true;
- })),
- body('categorieId')
- .not()
- .isEmpty()
- .withMessage("La fonction doit avoir une catégorie.")
- .custom(async (categorieId) => {
- try {
- const categorieFound = await Categories.findOne({ where: { id: parseInt(categorieId) } });
- if (!categorieFound) {
- return Promise.reject("La catégorie n'existe pas!");
- }
- } catch (error) {
- console.log(error);
- }
- return true;
- }),
- body('type')
- .custom((type) => {
- if (!(type === 'article' || type === 'form' || type === 'page')) {
- return Promise.reject('Le type de la fonction peut être : article, form ou page.');
- }
- return true;
- })
- ], adminController.postFunction);
+// Permet de créé une fonction
+ .post(fileUpload({
+ useTempFiles: true,
+ safeFileNames: true,
+ preserveExtension: Number,
+ limits: { fileSize: 5 * 1024 * 1024 }, // 5mb,
+ parseNested: true
+ }),
+ [
+ body('title')
+ .not()
+ .isEmpty()
+ .withMessage('La fonction doit avoir un titre.')
+ .isLength({ max: 100 })
+ .withMessage('Le titre est trop long.')
+ .custom((title) => {
+ if (title === 'undefined') {
+ return Promise.reject(new Error('La fonction doit avoir un titre.'))
+ }
+ return true
+ }),
+ body('slug')
+ .not()
+ .isEmpty()
+ .withMessage('La fonction doit avoir un slug.')
+ .isLength({ max: 100 })
+ .withMessage('Le slug est trop long.')
+ .custom((slug) => {
+ if (slug === 'undefined') {
+ return Promise.reject(new Error('La fonction doit avoir un slug.'))
+ }
+ return true
+ })
+ .custom(async (slug) => {
+ try {
+ const FunctionSlug = await Functions.findOne({ where: { slug } })
+ if (FunctionSlug) {
+ return Promise.reject(new Error('Le slug existe déjà...'))
+ }
+ } catch (error) {
+ console.log(error)
+ }
+ return true
+ }),
+ body('description')
+ .not()
+ .isEmpty()
+ .withMessage('La fonction doit avoir une description.')
+ .isLength({ max: 255, min: 1 })
+ .withMessage('La description est trop longue.')
+ .custom((description) => {
+ if (description === 'undefined') {
+ return Promise.reject(new Error('La fonction doit avoir une description.'))
+ }
+ return true
+ }),
+ body('categorieId')
+ .not()
+ .isEmpty()
+ .withMessage('La fonction doit avoir une catégorie.')
+ .custom(async (categorieId) => {
+ try {
+ const categorieFound = await Categories.findOne({ where: { id: parseInt(categorieId) } })
+ if (!categorieFound) {
+ return Promise.reject(new Error("La catégorie n'existe pas!"))
+ }
+ } catch (error) {
+ console.log(error)
+ }
+ return true
+ }),
+ body('type')
+ .custom((type) => {
+ if (!(type === 'article' || type === 'form' || type === 'page')) {
+ return Promise.reject(new Error('Le type de la fonction peut être : article, form ou page.'))
+ }
+ return true
+ })
+ ], adminController.postFunction)
AdminRouter.route('/functions/:slug')
- // Récupère les informations d'une fonction
- .get(adminController.getFunctionBySlug);
+// Récupère les informations d'une fonction
+ .get(adminController.getFunctionBySlug)
AdminRouter.route('/functions/:id')
- // Modifie information basique d'une fonction
- .put(fileUpload({
- useTempFiles: true,
- safeFileNames: true,
- preserveExtension: Number,
- limits: { fileSize: 5 * 1024 * 1024 }, // 5mb,
- parseNested: true
- }),
- [
- body('title')
- .not()
- .isEmpty()
- .withMessage("La fonction doit avoir un titre.")
- .isLength({ max: 100 })
- .withMessage("Le titre est trop long.")
- .custom(((title) => {
- if (title === 'undefined') {
- return Promise.reject("La fonction doit avoir un titre.");
- }
- return true;
- })),
- body('slug')
- .not()
- .isEmpty()
- .withMessage("La fonction doit avoir un slug.")
- .isLength({ max: 100 })
- .withMessage("Le slug est trop long.")
- .custom(((slug) => {
- if (slug === 'undefined') {
- return Promise.reject("La fonction doit avoir un slug.");
- }
- return true;
- })),
- body('description')
- .not()
- .isEmpty()
- .withMessage("La fonction doit avoir une description.")
- .isLength({ max: 255, min: 1 })
- .withMessage("La description est trop longue.")
- .custom(((description) => {
- if (description === 'undefined') {
- return Promise.reject("La fonction doit avoir une description.");
- }
- return true;
- })),
- body('categorieId')
- .not()
- .isEmpty()
- .withMessage("La fonction doit avoir une catégorie.")
- .custom(async (categorieId) => {
- try {
- const categorieFound = await Categories.findOne({ where: { id: parseInt(categorieId) } });
- if (!categorieFound) {
- return Promise.reject("La catégorie n'existe pas!");
- }
- } catch (error) {
- console.log(error);
- }
- return true;
- }),
- body('type')
- .custom((type) => {
- if (!(type === 'article' || type === 'form' || type === 'page')) {
- return Promise.reject('Le type de la fonction peut être : article, form ou page.');
- }
- return true;
- })
- ], adminController.putFunction)
+// Modifie information basique d'une fonction
+ .put(fileUpload({
+ useTempFiles: true,
+ safeFileNames: true,
+ preserveExtension: Number,
+ limits: { fileSize: 5 * 1024 * 1024 }, // 5mb,
+ parseNested: true
+ }),
+ [
+ body('title')
+ .not()
+ .isEmpty()
+ .withMessage('La fonction doit avoir un titre.')
+ .isLength({ max: 100 })
+ .withMessage('Le titre est trop long.')
+ .custom((title) => {
+ if (title === 'undefined') {
+ return Promise.reject(new Error('La fonction doit avoir un titre.'))
+ }
+ return true
+ }),
+ body('slug')
+ .not()
+ .isEmpty()
+ .withMessage('La fonction doit avoir un slug.')
+ .isLength({ max: 100 })
+ .withMessage('Le slug est trop long.')
+ .custom((slug) => {
+ if (slug === 'undefined') {
+ return Promise.reject(new Error('La fonction doit avoir un slug.'))
+ }
+ return true
+ }),
+ body('description')
+ .not()
+ .isEmpty()
+ .withMessage('La fonction doit avoir une description.')
+ .isLength({ max: 255, min: 1 })
+ .withMessage('La description est trop longue.')
+ .custom((description) => {
+ if (description === 'undefined') {
+ return Promise.reject(new Error('La fonction doit avoir une description.'))
+ }
+ return true
+ }),
+ body('categorieId')
+ .not()
+ .isEmpty()
+ .withMessage('La fonction doit avoir une catégorie.')
+ .custom(async (categorieId) => {
+ try {
+ const categorieFound = await Categories.findOne({ where: { id: parseInt(categorieId) } })
+ if (!categorieFound) {
+ return Promise.reject(new Error("La catégorie n'existe pas!"))
+ }
+ } catch (error) {
+ console.log(error)
+ }
+ return true
+ }),
+ body('type')
+ .custom((type) => {
+ if (!(type === 'article' || type === 'form' || type === 'page')) {
+ return Promise.reject(new Error('Le type de la fonction peut être : article, form ou page.'))
+ }
+ return true
+ })
+ ], adminController.putFunction)
- // Supprime une fonction avec son id
- .delete(adminController.deleteFunction);
+// Supprime une fonction avec son id
+ .delete(adminController.deleteFunction)
AdminRouter.route('/functions/article/:id')
- .put(adminController.putFunctionArticle);
+ .put(adminController.putFunctionArticle)
AdminRouter.route('/functions/form/:id')
- .put(adminController.putFunctionForm);
+ .put(adminController.putFunctionForm)
AdminRouter.route('/categories')
- // Crée une catégorie
- .post(adminController.postCategory);
+// Crée une catégorie
+ .post(adminController.postCategory)
AdminRouter.route('/categories/:id')
- // Modifier une catégorie avec son id
- .put(adminController.putCategory)
+// Modifier une catégorie avec son id
+ .put(adminController.putCategory)
- // Supprime une catégorie avec son id
- .delete(adminController.deleteCategory);
+// Supprime une catégorie avec son id
+ .delete(adminController.deleteCategory)
AdminRouter.route('/quotes')
- // Récupère les citations pas encore validées
- .get(adminController.getQuotes);
+// Récupère les citations pas encore validées
+ .get(adminController.getQuotes)
AdminRouter.route('/quotes/:id')
- // Valide ou supprime une citation
- .put(adminController.putQuote);
+// Valide ou supprime une citation
+ .put(adminController.putQuote)
-module.exports = AdminRouter;
\ No newline at end of file
+module.exports = AdminRouter
diff --git a/api/routes/categories.js b/api/routes/categories.js
index dd28f0e..74ad2d3 100644
--- a/api/routes/categories.js
+++ b/api/routes/categories.js
@@ -1,11 +1,11 @@
-const { Router } = require('express');
-const categoriesController = require('../controllers/categories');
+const { Router } = require('express')
+const categoriesController = require('../controllers/categories')
-const CategoriesRouter = Router();
+const CategoriesRouter = Router()
CategoriesRouter.route('/')
- // Récupère les catégories
- .get(categoriesController.getCategories);
+// Récupère les catégories
+ .get(categoriesController.getCategories)
-module.exports = CategoriesRouter;
\ No newline at end of file
+module.exports = CategoriesRouter
diff --git a/api/routes/comments.js b/api/routes/comments.js
index dc201f2..d370db9 100644
--- a/api/routes/comments.js
+++ b/api/routes/comments.js
@@ -1,23 +1,23 @@
-const { Router } = require('express');
-const commentsController = require('../controllers/comments');
-const isAuth = require('../middlewares/isAuth');
+const { Router } = require('express')
+const commentsController = require('../controllers/comments')
+const isAuth = require('../middlewares/isAuth')
-const CommentsRouter = Router();
+const CommentsRouter = Router()
CommentsRouter.route('/:commentId')
- // Modifier un commentaire
- .put(isAuth, commentsController.putCommentsById)
+// Modifier un commentaire
+ .put(isAuth, commentsController.putCommentsById)
- // Supprime un commentaire
- .delete(isAuth, commentsController.deleteCommentById);
+// Supprime un commentaire
+ .delete(isAuth, commentsController.deleteCommentById)
CommentsRouter.route('/:functionId')
- // Récupère les commentaires
- .get(commentsController.getCommentsByFunctionId)
+// Récupère les commentaires
+ .get(commentsController.getCommentsByFunctionId)
- // Permet à un utilisateur de poster un commentaire sur une fonction
- .post(isAuth, commentsController.postCommentsByFunctionId);
+// Permet à un utilisateur de poster un commentaire sur une fonction
+ .post(isAuth, commentsController.postCommentsByFunctionId)
-module.exports = CommentsRouter;
\ No newline at end of file
+module.exports = CommentsRouter
diff --git a/api/routes/favorites.js b/api/routes/favorites.js
index af2799f..b3c287d 100644
--- a/api/routes/favorites.js
+++ b/api/routes/favorites.js
@@ -1,18 +1,18 @@
-const { Router } = require('express');
-const favoritesController = require('../controllers/favorites');
-const isAuth = require('../middlewares/isAuth');
+const { Router } = require('express')
+const favoritesController = require('../controllers/favorites')
+const isAuth = require('../middlewares/isAuth')
-const FavoritesRouter = Router();
+const FavoritesRouter = Router()
FavoritesRouter.route('/:functionId')
- // Récupère si une fonction est en favoris (d'un utilisateur)
- .get(isAuth, favoritesController.getFavoriteByFunctionId)
+// Récupère si une fonction est en favoris (d'un utilisateur)
+ .get(isAuth, favoritesController.getFavoriteByFunctionId)
- // Permet à un utilisateur d'ajouter une fonction aux favoris
- .post(isAuth, favoritesController.postFavoriteByFunctionId)
+// Permet à un utilisateur d'ajouter une fonction aux favoris
+ .post(isAuth, favoritesController.postFavoriteByFunctionId)
- // Supprime une fonction des favoris d'un utilisateur
- .delete(isAuth, favoritesController.deleteFavoriteByFunctionId);
+// Supprime une fonction des favoris d'un utilisateur
+ .delete(isAuth, favoritesController.deleteFavoriteByFunctionId)
-module.exports = FavoritesRouter;
\ No newline at end of file
+module.exports = FavoritesRouter
diff --git a/api/routes/functions.js b/api/routes/functions.js
index 2605107..c713923 100644
--- a/api/routes/functions.js
+++ b/api/routes/functions.js
@@ -1,19 +1,19 @@
-const { Router } = require('express');
-const functionsController = require('../controllers/functions');
+const { Router } = require('express')
+const functionsController = require('../controllers/functions')
-const FunctionsRouter = Router();
+const FunctionsRouter = Router()
FunctionsRouter.route('/')
- // Récupère les fonctions
- .get(functionsController.getFunctions);
+// Récupère les fonctions
+ .get(functionsController.getFunctions)
FunctionsRouter.route('/:slug')
- // Récupère les informations de la fonction par son slug
- .get(functionsController.getFunctionBySlug)
+// Récupère les informations de la fonction par son slug
+ .get(functionsController.getFunctionBySlug)
- // Exécute la fonction demandée en paramètre
- .post(functionsController.executeFunctionBySlug);
+// Exécute la fonction demandée en paramètre
+ .post(functionsController.executeFunctionBySlug)
-module.exports = FunctionsRouter;
\ No newline at end of file
+module.exports = FunctionsRouter
diff --git a/api/routes/quotes.js b/api/routes/quotes.js
index 296d96a..523b3c6 100644
--- a/api/routes/quotes.js
+++ b/api/routes/quotes.js
@@ -1,15 +1,15 @@
-const { Router } = require('express');
-const quotesController = require('../controllers/quotes');
-const isAuth = require('../middlewares/isAuth');
+const { Router } = require('express')
+const quotesController = require('../controllers/quotes')
+const isAuth = require('../middlewares/isAuth')
-const QuotesRouter = Router();
+const QuotesRouter = Router()
QuotesRouter.route('/')
- // Récupère les citations
- .get(quotesController.getQuotes)
+// Récupère les citations
+ .get(quotesController.getQuotes)
- // Proposer une citation
- .post(isAuth, quotesController.postQuote);
+// Proposer une citation
+ .post(isAuth, quotesController.postQuote)
-module.exports = QuotesRouter;
\ No newline at end of file
+module.exports = QuotesRouter
diff --git a/api/routes/tasks.js b/api/routes/tasks.js
index 0f7c721..b156fb1 100644
--- a/api/routes/tasks.js
+++ b/api/routes/tasks.js
@@ -1,23 +1,23 @@
-const { Router } = require('express');
-const tasksController = require('../controllers/tasks');
-const isAuth = require('../middlewares/isAuth');
+const { Router } = require('express')
+const tasksController = require('../controllers/tasks')
+const isAuth = require('../middlewares/isAuth')
-const TasksRouter = Router();
+const TasksRouter = Router()
TasksRouter.route('/')
- // Récupère les tâches à faire d'un user
- .get(isAuth, tasksController.getTasks)
+// Récupère les tâches à faire d'un user
+ .get(isAuth, tasksController.getTasks)
- // Poster une nouvelle tâche à faire
- .post(isAuth, tasksController.postTask);
+// Poster une nouvelle tâche à faire
+ .post(isAuth, tasksController.postTask)
TasksRouter.route('/:id')
- // Permet de mettre une tâche à faire en isCompleted ou !isCompleted
- .put(isAuth, tasksController.putTask)
+// Permet de mettre une tâche à faire en isCompleted ou !isCompleted
+ .put(isAuth, tasksController.putTask)
- // Supprimer une tâche à faire
- .delete(isAuth, tasksController.deleteTask);
+// Supprimer une tâche à faire
+ .delete(isAuth, tasksController.deleteTask)
-module.exports = TasksRouter;
\ No newline at end of file
+module.exports = TasksRouter
diff --git a/api/routes/users.js b/api/routes/users.js
index d3736a7..76112b9 100644
--- a/api/routes/users.js
+++ b/api/routes/users.js
@@ -1,145 +1,145 @@
-const { Router } = require('express');
-const { body } = require('express-validator');
-const fileUpload = require('express-fileupload');
-const usersController = require('../controllers/users');
-const { requiredFields } = require('../assets/config/errors');
-const Users = require('../models/users');
-const isAuth = require('../middlewares/isAuth');
+const { Router } = require('express')
+const { body } = require('express-validator')
+const fileUpload = require('express-fileupload')
+const usersController = require('../controllers/users')
+const { requiredFields } = require('../assets/config/errors')
+const Users = require('../models/users')
+const isAuth = require('../middlewares/isAuth')
-const UsersRouter = Router();
+const UsersRouter = Router()
UsersRouter.route('/')
- // Récupère les utilisateurs
- .get(usersController.getUsers)
+// Récupère les utilisateurs
+ .get(usersController.getUsers)
- // Permet de modifier son profil
- .put(isAuth,
- fileUpload({
- useTempFiles: true,
- safeFileNames: true,
- preserveExtension: Number,
- limits: { fileSize: 5 * 1024 * 1024 }, // 5mb,
- parseNested: true
+// Permet de modifier son profil
+ .put(isAuth,
+ fileUpload({
+ useTempFiles: true,
+ safeFileNames: true,
+ preserveExtension: Number,
+ limits: { fileSize: 5 * 1024 * 1024 }, // 5mb,
+ parseNested: true
}),
[
- body('email')
- .isEmail()
- .withMessage("Veuillez rentré une adresse mail valide.")
- .custom((async (email) => {
- try {
- const user = await Users.findOne({ where: { email } });
- if (user && user.email !== email) {
- return Promise.reject("L'adresse email existe déjà...");
- }
- } catch (error) {
- return console.log(error);
- }
- return true;
- }))
- .normalizeEmail(),
- body('name')
- .trim()
- .not()
- .isEmpty()
- .withMessage("Vous devez avoir un nom (ou pseudo).")
- .isAlphanumeric()
- .withMessage("Votre nom ne peut contenir que des lettres ou/et des nombres.")
- .isLength({ max: 30 })
- .withMessage("Votre nom est trop long")
- .custom(async (name) => {
- try {
- const user = await Users.findOne({ where: { name } });
- if (user && user.name !== name) {
- return Promise.reject("Le nom existe déjà...");
- }
- } catch (error) {
- console.log(error);
- }
- return true;
- }),
- body('isPublicEmail')
- .isBoolean()
- .withMessage("L'adresse email peut être public ou privé, rien d'autre."),
- body('biography')
- .trim()
- .escape()
- ], usersController.putUser);
-
-// Permet de se connecter
-UsersRouter.post('/login', [
- body('email')
- .not()
- .isEmpty()
- .withMessage(requiredFields.message),
- body('password')
- .not()
- .isEmpty()
- .withMessage(requiredFields.message)
-], usersController.login);
-
-// Récupère les informations public d'un profil
-UsersRouter.get('/:name', usersController.getUserInfo);
-
-// Permet de s'inscrire
-UsersRouter.post('/register', [
- body('email')
+ body('email')
.isEmail()
- .withMessage("Veuillez rentré une adresse mail valide.")
- .custom((async (email) => {
- try {
- const user = await Users.findOne({ where: { email } });
- if (user) {
- return Promise.reject("L'adresse email existe déjà...");
- }
- } catch (error) {
- return console.log(error);
+ .withMessage('Veuillez rentré une adresse mail valide.')
+ .custom(async (email) => {
+ try {
+ const user = await Users.findOne({ where: { email } })
+ if (user && user.email !== email) {
+ return Promise.reject(new Error("L'adresse email existe déjà..."))
}
- return true;
- }))
+ } catch (error) {
+ return console.log(error)
+ }
+ return true
+ })
.normalizeEmail(),
- body('password')
- .isLength({ min: 4 })
- .withMessage("Votre mot de passe est trop court!"),
- body('name')
+ body('name')
.trim()
.not()
.isEmpty()
- .withMessage("Vous devez avoir un nom (ou pseudo).")
+ .withMessage('Vous devez avoir un nom (ou pseudo).')
.isAlphanumeric()
- .withMessage("Votre nom ne peut contenir que des lettres ou/et des nombres.")
+ .withMessage('Votre nom ne peut contenir que des lettres ou/et des nombres.')
.isLength({ max: 30 })
- .withMessage("Votre nom est trop long")
+ .withMessage('Votre nom est trop long')
.custom(async (name) => {
- try {
- const user = await Users.findOne({ where: { name } });
- if (user) {
- return Promise.reject("Le nom existe déjà...");
- }
- } catch (error) {
- console.log(error);
+ try {
+ const user = await Users.findOne({ where: { name } })
+ if (user && user.name !== name) {
+ return Promise.reject(new Error('Le nom existe déjà...'))
}
- return true;
- })
-], usersController.register);
+ } catch (error) {
+ console.log(error)
+ }
+ return true
+ }),
+ body('isPublicEmail')
+ .isBoolean()
+ .withMessage("L'adresse email peut être public ou privé, rien d'autre."),
+ body('biography')
+ .trim()
+ .escape()
+ ], usersController.putUser)
+
+// Permet de se connecter
+UsersRouter.post('/login', [
+ body('email')
+ .not()
+ .isEmpty()
+ .withMessage(requiredFields.message),
+ body('password')
+ .not()
+ .isEmpty()
+ .withMessage(requiredFields.message)
+], usersController.login)
+
+// Récupère les informations public d'un profil
+UsersRouter.get('/:name', usersController.getUserInfo)
+
+// Permet de s'inscrire
+UsersRouter.post('/register', [
+ body('email')
+ .isEmail()
+ .withMessage('Veuillez rentré une adresse mail valide.')
+ .custom(async (email) => {
+ try {
+ const user = await Users.findOne({ where: { email } })
+ if (user) {
+ return Promise.reject(new Error("L'adresse email existe déjà..."))
+ }
+ } catch (error) {
+ return console.log(error)
+ }
+ return true
+ })
+ .normalizeEmail(),
+ body('password')
+ .isLength({ min: 4 })
+ .withMessage('Votre mot de passe est trop court!'),
+ body('name')
+ .trim()
+ .not()
+ .isEmpty()
+ .withMessage('Vous devez avoir un nom (ou pseudo).')
+ .isAlphanumeric()
+ .withMessage('Votre nom ne peut contenir que des lettres ou/et des nombres.')
+ .isLength({ max: 30 })
+ .withMessage('Votre nom est trop long')
+ .custom(async (name) => {
+ try {
+ const user = await Users.findOne({ where: { name } })
+ if (user) {
+ return Promise.reject(new Error('Le nom existe déjà...'))
+ }
+ } catch (error) {
+ console.log(error)
+ }
+ return true
+ })
+], usersController.register)
// Confirme l'inscription
-UsersRouter.get('/confirm-email/:tempToken', usersController.confirmEmail);
+UsersRouter.get('/confirm-email/:tempToken', usersController.confirmEmail)
UsersRouter.route('/reset-password')
- // Demande une réinitialisation du mot de passe
- .post([
- body('email')
- .isEmail()
- .withMessage("Veuillez rentré une adresse mail valide.")
- ], usersController.resetPassword)
+// Demande une réinitialisation du mot de passe
+ .post([
+ body('email')
+ .isEmail()
+ .withMessage('Veuillez rentré une adresse mail valide.')
+ ], usersController.resetPassword)
- // Nouveau mot de passe
- .put([
- body('password')
- .isLength({ min: 4 })
- .withMessage("Votre mot de passe est trop court!")
- ], usersController.newPassword);
+// Nouveau mot de passe
+ .put([
+ body('password')
+ .isLength({ min: 4 })
+ .withMessage('Votre mot de passe est trop court!')
+ ], usersController.newPassword)
-module.exports = UsersRouter;
\ No newline at end of file
+module.exports = UsersRouter
diff --git a/website/.env.example b/website/.env.example
new file mode 100644
index 0000000..403aca4
--- /dev/null
+++ b/website/.env.example
@@ -0,0 +1 @@
+NEXT_PUBLIC_API_URL = "http://localhost:8080"
\ No newline at end of file
diff --git a/website/.gitignore b/website/.gitignore
index 922d92a..cea93e8 100644
--- a/website/.gitignore
+++ b/website/.gitignore
@@ -17,7 +17,7 @@
# misc
.DS_Store
-.env*
+.env
# debug
npm-debug.log*
diff --git a/website/components/CodeBlock.js b/website/components/CodeBlock.js
index 3d29fca..31424f9 100644
--- a/website/components/CodeBlock.js
+++ b/website/components/CodeBlock.js
@@ -1,12 +1,12 @@
-import SyntaxHighlighter from "react-syntax-highlighter";
-import { atomOneDark as styles} from "react-syntax-highlighter/dist/cjs/styles/hljs";
+import SyntaxHighlighter from 'react-syntax-highlighter'
+import { atomOneDark as styles } from 'react-syntax-highlighter/dist/cjs/styles/hljs'
const CodeBlock = ({ language, value }) => {
- return (
-
- {value}
-
- );
-};
+ return (
+
+ {value}
+
+ )
+}
-export default CodeBlock;
\ No newline at end of file
+export default CodeBlock
diff --git a/website/components/Footer/Footer.js b/website/components/Footer/Footer.js
index 57b85cc..c346c87 100644
--- a/website/components/Footer/Footer.js
+++ b/website/components/Footer/Footer.js
@@ -1,16 +1,16 @@
-import Link from 'next/link';
-import './Footer.css';
+import Link from 'next/link'
+import './Footer.css'
-export default function Footer() {
- return (
-
- );
-}
\ No newline at end of file
+export default function Footer () {
+ return (
+
+ )
+}
diff --git a/website/components/FunctionAdmin/AddEditFunction.js b/website/components/FunctionAdmin/AddEditFunction.js
index cdbcbb0..3c9be52 100644
--- a/website/components/FunctionAdmin/AddEditFunction.js
+++ b/website/components/FunctionAdmin/AddEditFunction.js
@@ -1,129 +1,126 @@
-import { Fragment, useState, useEffect } from 'react';
-import htmlParser from 'html-react-parser';
-import Loader from '../../components/Loader';
-import useAPI from '../../hooks/useAPI';
-import api from '../../utils/api';
-import '../../public/css/pages/admin.css';
+import { useState, useEffect } from 'react'
+import htmlParser from 'html-react-parser'
+import Loader from '../../components/Loader'
+import useAPI from '../../hooks/useAPI'
+import api from '../../utils/api'
+import '../../public/css/pages/admin.css'
const AddEditFunction = (props) => {
+ const [, categories] = useAPI('/categories')
+ const [inputState, setInputState] = useState(props.defaultInputState)
+ const [message, setMessage] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
- const [, categories] = useAPI('/categories');
- const [inputState, setInputState] = useState(props.defaultInputState);
- const [message, setMessage] = useState("");
- const [isLoading, setIsLoading] = useState(false);
-
- useEffect(() => {
- if (categories.length > 0 && !props.isEditing) {
- handleChange({
- target: {
- name: "categorieId",
- value: categories[0].id
- }
- });
+ useEffect(() => {
+ if (categories.length > 0 && !props.isEditing) {
+ handleChange({
+ target: {
+ name: 'categorieId',
+ value: categories[0].id
}
- }, [categories]);
+ })
+ }
+ }, [categories])
- const apiCallFunction = (formData) => {
- if (props.isEditing) return api.put(`/admin/functions/${inputState.id}`, formData, { headers: { 'Authorization': props.user.token } });
- return api.post('/admin/functions', formData, { headers: { 'Authorization': props.user.token } });
+ const apiCallFunction = (formData) => {
+ if (props.isEditing) return api.put(`/admin/functions/${inputState.id}`, formData, { headers: { Authorization: props.user.token } })
+ return api.post('/admin/functions', formData, { headers: { Authorization: props.user.token } })
+ }
+
+ const handleChange = (event, isTypeCheck = false) => {
+ const inputStateNew = { ...inputState }
+ inputStateNew[event.target.name] = (event.target.files != null) ? event.target.files[0] : (isTypeCheck) ? event.target.checked : event.target.value
+ setInputState(inputStateNew)
+ }
+
+ const handleSubmit = (event) => {
+ event.preventDefault()
+ setIsLoading(true)
+ const formData = new window.FormData()
+ formData.append('type', inputState.type)
+ formData.append('categorieId', inputState.categorieId)
+ formData.append('title', inputState.title)
+ formData.append('slug', inputState.slug)
+ formData.append('description', inputState.description)
+ formData.append('image', inputState.image)
+
+ if (props.isEditing) {
+ formData.append('isOnline', inputState.isOnline)
}
- const handleChange = (event, isTypeCheck = false) => {
- const inputStateNew = { ...inputState };
- inputStateNew[event.target.name] = (event.target.files != undefined) ? event.target.files[0] : (isTypeCheck) ? event.target.checked : event.target.value;
- setInputState(inputStateNew);
- }
+ apiCallFunction(formData)
+ .then(() => {
+ setIsLoading(false)
+ window.location.reload(true)
+ })
+ .catch((error) => {
+ setMessage(`
Erreur: ${error.response.data.message}
`)
+ setIsLoading(false)
+ })
+ }
- const handleSubmit = (event) => {
- event.preventDefault();
- setIsLoading(true);
- const formData = new FormData();
- formData.append('type', inputState.type);
- formData.append('categorieId', inputState.categorieId);
- formData.append('title', inputState.title);
- formData.append('slug', inputState.slug);
- formData.append('description', inputState.description);
- formData.append('image', inputState.image);
+ return (
+ <>
+
+
+
+ {
+ (isLoading)
+ ?
+ : htmlParser(message)
}
-
- apiCallFunction(formData)
- .then(() => {
- setIsLoading(false);
- window.location.reload(true);
- })
- .catch((error) => {
- setMessage(`
Erreur: ${error.response.data.message}
`);
- setIsLoading(false);
- });
- }
-
- return (
-
-
-
- Titre :
-
-
-
-
- Slug :
-
-
-
-
- Description :
-
-
-
-
- Type :
-
- Formulaire
- Article
- Page
-
-
-
-
- Catégorie :
-
- {categories.map((category) => (
- {category.name}
- ))}
-
-
-
-
- Image (150x150 recommandé) :
-
-
-
-
- {(props.isEditing) &&
-
- handleChange(event, true)} type="checkbox" name="isOnline" checked={inputState.isOnline} className="custom-control-input" id="isOnline" />
- isOnline
-
- }
-
-
- Envoyer
-
-
-
-
- {
- (isLoading) ?
-
- :
- htmlParser(message)
- }
-
-
- );
+
+ >
+ )
}
-export default AddEditFunction;
\ No newline at end of file
+export default AddEditFunction
diff --git a/website/components/FunctionAdmin/EditArticleFunction.js b/website/components/FunctionAdmin/EditArticleFunction.js
index 66667eb..8e49ea6 100644
--- a/website/components/FunctionAdmin/EditArticleFunction.js
+++ b/website/components/FunctionAdmin/EditArticleFunction.js
@@ -1,46 +1,45 @@
-import { useState } from 'react';
-import dynamic from 'next/dynamic';
-import { complex } from '../../utils/sunEditorConfig';
-import api from '../../utils/api';
-import FunctionArticle from '../FunctionPage/FunctionArticle';
-import 'notyf/notyf.min.css';
-import '../../public/css/suneditor.min.css';
+import { useState } from 'react'
+import dynamic from 'next/dynamic'
+import { complex } from '../../utils/sunEditorConfig'
+import api from '../../utils/api'
+import FunctionArticle from '../FunctionPage/FunctionArticle'
+import 'notyf/notyf.min.css'
+import '../../public/css/suneditor.min.css'
const SunEditor = dynamic(
- () => import('suneditor-react'),
- { ssr: false }
-);
+ () => import('suneditor-react'),
+ { ssr: false }
+)
const EditArticleFunction = (props) => {
+ const [htmlContent, setHtmlContent] = useState('')
- const [htmlContent, setHtmlContent] = useState("");
+ const handleEditorChange = (content) => {
+ setHtmlContent(content)
+ }
- const handleEditorChange = (content) => {
- setHtmlContent(content);
+ const handleSave = async (content) => {
+ let Notyf
+ if (typeof window !== 'undefined') {
+ Notyf = require('notyf')
}
-
- const handleSave = async (content) => {
- let Notyf;
- if (typeof window != 'undefined') {
- Notyf = require('notyf');
- }
- const notyf = new Notyf.Notyf({
- duration: 5000
- });
- try {
- await api.put(`/admin/functions/article/${props.functionInfo.id}`, { article: content }, { headers: { 'Authorization': props.user.token } });
- notyf.success('Sauvegardé!');
- } catch {
- notyf.error('Erreur!');
- }
+ const notyf = new Notyf.Notyf({
+ duration: 5000
+ })
+ try {
+ await api.put(`/admin/functions/article/${props.functionInfo.id}`, { article: content }, { headers: { Authorization: props.user.token } })
+ notyf.success('Sauvegardé!')
+ } catch {
+ notyf.error('Erreur!')
}
+ }
- return (
-
-
-
-
- );
+ return (
+
+
+
+
+ )
}
-export default EditArticleFunction;
\ No newline at end of file
+export default EditArticleFunction
diff --git a/website/components/FunctionAdmin/EditFormFunction.js b/website/components/FunctionAdmin/EditFormFunction.js
index 74b0d63..58f5c67 100644
--- a/website/components/FunctionAdmin/EditFormFunction.js
+++ b/website/components/FunctionAdmin/EditFormFunction.js
@@ -1,158 +1,154 @@
-import { useState, Fragment } from 'react';
-import api from '../../utils/api';
-import 'notyf/notyf.min.css';
+import { useState } from 'react'
+import api from '../../utils/api'
+import 'notyf/notyf.min.css'
const EditFormFunction = (props) => {
+ const [inputsArray, setInputsArray] = useState(props.functionInfo.utilizationForm || [])
- const [inputsArray, setInputsArray] = useState(props.functionInfo.utilizationForm || []);
+ const addInput = () => {
+ const newInputsArray = [...inputsArray]
+ newInputsArray.push({ name: '', label: '', placeholder: '', type: 'text' })
+ setInputsArray(newInputsArray)
+ }
- const addInput = () => {
- const newInputsArray = [...inputsArray];
- newInputsArray.push({ name: "", label: "", placeholder: "", type: "text" });
- setInputsArray(newInputsArray);
+ const addOption = (event) => {
+ const newInputsArray = [...inputsArray]
+ const index = event.target.id.split('-')[1]
+ const inputObject = newInputsArray[index]
+ inputObject.options.push({ name: '', value: '' })
+ setInputsArray(newInputsArray)
+ }
+
+ const handleChangeOption = (inputIndex, optionIndex, event) => {
+ const newInputsArray = [...inputsArray]
+ const inputObject = newInputsArray[inputIndex]
+ const optionObject = inputObject.options[optionIndex]
+ optionObject[event.target.name] = event.target.value
+ setInputsArray(newInputsArray)
+ }
+
+ const handleChangeInput = (event) => {
+ const newInputsArray = [...inputsArray]
+ const index = event.target.id.split('-')[1]
+ const inputObject = newInputsArray[index]
+ inputObject[event.target.name] = event.target.value
+ if (event.target.value === 'select') {
+ inputObject.options = []
}
+ setInputsArray(newInputsArray)
+ }
- const addOption = (event) => {
- const newInputsArray = [...inputsArray];
- const index = event.target.id.split('-')[1];
- const inputObject = newInputsArray[index];
- inputObject.options.push({ name: "", value: "" });
- setInputsArray(newInputsArray);
+ const handleSubmit = async (event) => {
+ event.preventDefault()
+ let Notyf
+ if (typeof window !== 'undefined') {
+ Notyf = require('notyf')
}
-
- const handleChangeOption = (inputIndex, optionIndex, event) => {
- const newInputsArray = [...inputsArray];
- const inputObject = newInputsArray[inputIndex];
- const optionObject = inputObject.options[optionIndex];
- optionObject[event.target.name] = event.target.value;
- setInputsArray(newInputsArray);
+ const notyf = new Notyf.Notyf({
+ duration: 5000
+ })
+ try {
+ await api.put(`/admin/functions/form/${props.functionInfo.id}`, { form: inputsArray }, { headers: { Authorization: props.user.token } })
+ notyf.success('Sauvegardé!')
+ } catch (error) {
+ notyf.error('Erreur!')
}
+ }
- const handleChangeInput = (event) => {
- const newInputsArray = [...inputsArray];
- const index = event.target.id.split('-')[1];
- const inputObject = newInputsArray[index];
- inputObject[event.target.name] = event.target.value;
- if (event.target.value === "select") {
- inputObject.options = [];
- }
- setInputsArray(newInputsArray);
- }
+ const handleRemoveInput = (event) => {
+ const newInputsArray = [...inputsArray]
+ const index = event.target.id.split('-')[1]
+ newInputsArray.splice(index, 1)
+ setInputsArray(newInputsArray)
+ }
- const handleSubmit = async (event) => {
- event.preventDefault();
- let Notyf;
- if (typeof window != 'undefined') {
- Notyf = require('notyf');
- }
- const notyf = new Notyf.Notyf({
- duration: 5000
- });
- try {
- await api.put(`/admin/functions/form/${props.functionInfo.id}`, { form: inputsArray }, { headers: { 'Authorization': props.user.token } });
- notyf.success('Sauvegardé!');
- } catch (error) {
- notyf.error('Erreur!');
- }
- }
+ const handleRemoveOption = (inputIndex, optionIndex) => {
+ const newInputsArray = [...inputsArray]
+ const inputObject = newInputsArray[inputIndex]
+ const optionsArray = inputObject.options
+ optionsArray.splice(optionIndex, 1)
+ setInputsArray(newInputsArray)
+ }
- const handleRemoveInput = (event) => {
- const newInputsArray = [...inputsArray];
- const index = event.target.id.split('-')[1];
- newInputsArray.splice(index, 1);
- setInputsArray(newInputsArray);
- }
+ return (
+
- const handleRemoveOption = (inputIndex, optionIndex) => {
- const newInputsArray = [...inputsArray];
- const inputObject = newInputsArray[inputIndex];
- const optionsArray = inputObject.options;
- optionsArray.splice(optionIndex, 1);
- setInputsArray(newInputsArray);
- }
+
- return (
-
+ {(inputsArray.length > 0) &&
+
+ Sauvegarder
+
}
-
+ {inputsArray.map((input, index) => {
+ return (
+
- {(inputsArray.length > 0) &&
-
- Sauvegarder
-
- }
+
+ Supprimer l'input
+
- {inputsArray.map((input, index) => {
+
Nom de l'input :
+
+
+
+
Label :
+
+
+
+ {(input.type !== 'select') &&
+ <>
+
Placeholder :
+
+
+ >}
+
+
Type :
+
+ text
+ Number integer
+ Number float
+ calendar
+ select
+
+
+ {(input.type === 'select') &&
+
+
+
Options :
+
+ {input.options.map((option, optionIndex) => {
return (
-
-
-
- Supprimer l'input
-
-
-
Nom de l'input :
-
-
-
-
Label :
-
-
-
- {(input.type !== "select") &&
-
- Placeholder :
-
-
-
- }
-
-
Type :
-
- text
- Number integer
- Number float
- calendar
- select
-
-
- {(input.type === "select") &&
-
-
-
Options :
-
- {input.options.map((option, optionIndex) => {
- return (
-
-
- handleRemoveOption(index, optionIndex)} className="btn btn-dark">Supprimer l'option
-
-
-
Nom de l'option
-
handleChangeOption(index, optionIndex, event)} value={option.name} id={`optionName-${optionIndex}-${index}`} name="name" type="text"className="form-control" placeholder="Nom de l'option" />
-
-
-
Valeur de l'option
-
handleChangeOption(index, optionIndex, event)} value={option.value} id={`optionValue-${optionIndex}-${index}`} name="value" type="text"className="form-control" placeholder="Valeur de l'option" />
-
- );
- })}
-
-
- Ajouter une option
-
-
- }
+
+
+ handleRemoveOption(index, optionIndex)} className='btn btn-dark'>Supprimer l'option
- );
- })}
-
+
Nom de l'option
+
handleChangeOption(index, optionIndex, event)} value={option.name} id={`optionName-${optionIndex}-${index}`} name='name' type='text' className='form-control' placeholder="Nom de l'option" />
-
- Ajouter un input
+
+ Valeur de l'option
+ handleChangeOption(index, optionIndex, event)} value={option.value} id={`optionValue-${optionIndex}-${index}`} name='value' type='text' className='form-control' placeholder="Valeur de l'option" />
+
+ )
+ })}
+
+
+ Ajouter une option
+
+
}
-
- );
+ )
+ })}
+
+
+
+
+ Ajouter un input
+
+
+ )
}
-export default EditFormFunction;
\ No newline at end of file
+export default EditFormFunction
diff --git a/website/components/FunctionCard/FunctionCard.js b/website/components/FunctionCard/FunctionCard.js
index 8fe7bc3..cab8dca 100644
--- a/website/components/FunctionCard/FunctionCard.js
+++ b/website/components/FunctionCard/FunctionCard.js
@@ -1,58 +1,56 @@
-import Link from 'next/link';
-import { useState, forwardRef } from 'react';
-import date from 'date-and-time';
-import Loader from '../Loader';
-import { API_URL } from '../../utils/config/config';
-import './FunctionCard.css';
+import Link from 'next/link'
+import { useState, forwardRef } from 'react'
+import date from 'date-and-time'
+import Loader from '../Loader'
+import { API_URL } from '../../utils/config/config'
+import './FunctionCard.css'
const FunctionCard = forwardRef((props, ref) => {
+ const [isLoading, setIsLoading] = useState(true)
- const [isLoading, setIsLoading] = useState(true);
+ const handleLoad = () => {
+ setIsLoading(false)
+ }
- const handleLoad = () => {
- setIsLoading(false);
- }
+ const handleError = (event) => {
+ event.target.src = API_URL + '/images/functions/default.png'
+ }
- const handleError = (event) => {
- event.target.src = API_URL + "/images/functions/default.png";
- }
+ const isFormOrArticle = (props.type === 'form' || props.type === 'article')
- const isFormOrArticle = (props.type === 'form' || props.type === 'article');
+ return (
+
+ {/* FunctionCard a une hauteur pendant chargement */}
+
- return (
-
- {/* FunctionCard a une hauteur pendant chargement */}
-
+ {isLoading &&
}
- {isLoading &&
}
+
+
+
+
{props.title}
+
{props.description}
+
+
+
{props.categorie.name}
+
{date.format(new Date(props.createdAt), 'DD/MM/YYYY', true)}
+
+
+
+
+ )
+})
-
-
-
-
{props.title}
-
{props.description}
-
-
-
{props.categorie.name}
-
{date.format(new Date(props.createdAt), 'DD/MM/YYYY', true)}
-
-
-
-
- );
-});
-
-export default FunctionCard;
\ No newline at end of file
+export default FunctionCard
diff --git a/website/components/FunctionPage/CommentCard/CommentCard.js b/website/components/FunctionPage/CommentCard/CommentCard.js
index ab64825..19fe939 100644
--- a/website/components/FunctionPage/CommentCard/CommentCard.js
+++ b/website/components/FunctionPage/CommentCard/CommentCard.js
@@ -1,108 +1,109 @@
-import Link from 'next/link';
-import { useEffect, useState, forwardRef, useContext, Fragment } from 'react';
-import date from 'date-and-time';
-import htmlParser from 'html-react-parser';
-import { UserContext } from '../../../contexts/UserContext';
-import { API_URL } from '../../../utils/config/config';
-import ReactMarkdown from 'react-markdown';
-import CodeBlock from "../../CodeBlock";
-import api from '../../../utils/api';
-import './CommentCard.css';
+import Link from 'next/link'
+import { useEffect, useState, forwardRef, useContext } from 'react'
+import date from 'date-and-time'
+import htmlParser from 'html-react-parser'
+import { UserContext } from '../../../contexts/UserContext'
+import { API_URL } from '../../../utils/config/config'
+import ReactMarkdown from 'react-markdown'
+import CodeBlock from '../../CodeBlock'
+import api from '../../../utils/api'
+import './CommentCard.css'
const CommentCard = forwardRef((props, ref) => {
+ const { isAuth, user } = useContext(UserContext)
+ const [isEditing, setEditing] = useState(false)
+ const [editInput, setEditInput] = useState('')
+ const [message, setMessage] = useState('')
- const { isAuth, user } = useContext(UserContext);
- const [isEditing, setEditing] = useState(false);
- const [editInput, setEditInput] = useState("");
- const [message, setMessage] = useState("");
+ useEffect(() => {
+ setEditInput(props.message)
+ }, [])
- useEffect(() => {
- setEditInput(props.message);
- }, []);
-
- const deleteCommentById = async () => {
- props.manageComment.setLoadingComments(true);
- if (isAuth && user.token != undefined) {
- try {
- await api.delete(`/comments/${props.id}`, { headers: { 'Authorization': user.token } });
- const newCommentsData = { ...props.manageComment.commentsData };
- const commentIndex = newCommentsData.rows.findIndex((value) => value.id === props.id);
- newCommentsData.rows.splice(commentIndex, 1);
- props.manageComment.setCommentsData({ hasMore: props.manageComment.commentsData.hasMore, rows: newCommentsData.rows });
- } catch {}
- }
- props.manageComment.setLoadingComments(false);
+ const deleteCommentById = async () => {
+ props.manageComment.setLoadingComments(true)
+ if (isAuth && user.token != null) {
+ try {
+ await api.delete(`/comments/${props.id}`, { headers: { Authorization: user.token } })
+ const newCommentsData = { ...props.manageComment.commentsData }
+ const commentIndex = newCommentsData.rows.findIndex((value) => value.id === props.id)
+ newCommentsData.rows.splice(commentIndex, 1)
+ props.manageComment.setCommentsData({ hasMore: props.manageComment.commentsData.hasMore, rows: newCommentsData.rows })
+ } catch {}
}
+ props.manageComment.setLoadingComments(false)
+ }
- const handleChange = (event) => {
- setEditInput(event.target.value);
- }
+ const handleChange = (event) => {
+ setEditInput(event.target.value)
+ }
- const handleSubmit = (event) => {
- event.preventDefault();
- api.put(`/comments/${props.id}`, { message: editInput }, { headers: { 'Authorization': user.token } })
- .then((_response) => {
- setEditing(false);
- })
- .catch((error) => {
- setMessage(`Erreur: ${error.response.data.message}
`);
- });
- }
+ const handleSubmit = (event) => {
+ event.preventDefault()
+ api.put(`/comments/${props.id}`, { message: editInput }, { headers: { Authorization: user.token } })
+ .then((_response) => {
+ setEditing(false)
+ })
+ .catch((error) => {
+ setMessage(`Erreur: ${error.response.data.message}
`)
+ })
+ }
- const editComment = () => {
- setEditing(true);
- setMessage("");
- }
+ const editComment = () => {
+ setEditing(true)
+ setMessage('')
+ }
- return (
-
-
-
-
-
-
-
-
- {props.user.name}
-
- - {date.format(new Date(props.createdAt), 'DD/MM/YYYY à HH:mm', true)}
-
-
-
-
- {
- (!isEditing) ?
-
-
-
-
- {(isAuth && user.name === props.user.name) &&
-
- supprimer
- -
- modifier
-
- }
-
- :
-
-
- Modifier le commentaire :
-
-
-
- Envoyer
-
-
- {htmlParser(message)}
-
-
- }
-
-
-
+ return (
+
+
+
+
+
+
+
+
+ {props.user.name}
+
+ - {date.format(new Date(props.createdAt), 'DD/MM/YYYY à HH:mm', true)}
+
- );
-});
+
+
+ {
+ (!isEditing)
+ ? (
+ <>
+
+
+
+ {(isAuth && user.name === props.user.name) &&
+
+ supprimer
+ -
+ modifier
+
}
+ >
+ )
+ : (
+
+
+ Modifier le commentaire :
+
+
+
+ Envoyer
+
+
+ {htmlParser(message)}
+
+
+ )
+ }
+
+
+
+
+ )
+})
-export default CommentCard;
\ No newline at end of file
+export default CommentCard
diff --git a/website/components/FunctionPage/FunctionArticle.js b/website/components/FunctionPage/FunctionArticle.js
index 94b2429..a1a26d5 100644
--- a/website/components/FunctionPage/FunctionArticle.js
+++ b/website/components/FunctionPage/FunctionArticle.js
@@ -1,11 +1,11 @@
-import htmlParser from 'html-react-parser';
+import htmlParser from 'html-react-parser'
const FunctionArticle = ({ article }) => {
- return (
-
- {(article != undefined) ? htmlParser(article) :
L'article n'est pas encore disponible.
}
-
- );
+ return (
+
+ {(article != null) ? htmlParser(article) :
L'article n'est pas encore disponible.
}
+
+ )
}
-export default FunctionArticle;
\ No newline at end of file
+export default FunctionArticle
diff --git a/website/components/FunctionPage/FunctionComments/FunctionComments.js b/website/components/FunctionPage/FunctionComments/FunctionComments.js
index 46f8871..a8d3cfa 100644
--- a/website/components/FunctionPage/FunctionComments/FunctionComments.js
+++ b/website/components/FunctionPage/FunctionComments/FunctionComments.js
@@ -1,115 +1,114 @@
-import { Fragment, useState, useEffect, useContext, useRef, useCallback } from 'react';
-import Link from 'next/link';
-import { UserContext } from '../../../contexts/UserContext';
-import CommentCard from '../CommentCard/CommentCard';
-import Loader from '../../Loader';
-import api from '../../../utils/api';
-import './FunctionComments.css';
+import { useState, useEffect, useContext, useRef, useCallback } from 'react'
+import Link from 'next/link'
+import { UserContext } from '../../../contexts/UserContext'
+import CommentCard from '../CommentCard/CommentCard'
+import Loader from '../../Loader'
+import api from '../../../utils/api'
+import './FunctionComments.css'
const FunctionComments = ({ functionId }) => {
+ // State pour poster un commentaire
+ const { isAuth, user } = useContext(UserContext)
+ const [inputState, setInputState] = useState({})
- // State pour poster un commentaire
- const { isAuth, user } = useContext(UserContext);
- const [inputState, setInputState] = useState({});
+ // State pour afficher les commentaires
+ const [commentsData, setCommentsData] = useState({ hasMore: true, rows: [] })
+ const [isLoadingComments, setLoadingComments] = useState(true)
+ const [pageComments, setPageComments] = useState(1)
- // State pour afficher les commentaires
- const [commentsData, setCommentsData] = useState({ hasMore: true, rows: [] });
- const [isLoadingComments, setLoadingComments] = useState(true);
- const [pageComments, setPageComments] = useState(1);
+ // Récupère les commentaires si la page change
+ useEffect(() => {
+ getCommentsData().then((data) => setCommentsData({
+ hasMore: data.hasMore,
+ rows: [...commentsData.rows, ...data.rows]
+ }))
+ }, [pageComments])
- // Récupère les commentaires si la page change
- useEffect(() => {
- getCommentsData().then((data) => setCommentsData({
- hasMore: data.hasMore,
- rows: [...commentsData.rows, ...data.rows]
- }));
- }, [pageComments]);
+ // Permet la pagination au scroll
+ const observer = useRef()
+ const lastCommentCardRef = useCallback((node) => {
+ if (isLoadingComments) return
+ if (observer.current) observer.current.disconnect()
+ observer.current = new window.IntersectionObserver((entries) => {
+ if (entries[0].isIntersecting && commentsData.hasMore) {
+ setPageComments(pageComments + 1)
+ }
+ }, { threshold: 1 })
+ if (node) observer.current.observe(node)
+ }, [isLoadingComments, commentsData.hasMore])
- // Permet la pagination au scroll
- const observer = useRef();
- const lastCommentCardRef = useCallback((node) => {
- if (isLoadingComments) return;
- if (observer.current) observer.current.disconnect();
- observer.current = new IntersectionObserver((entries) => {
- if (entries[0].isIntersecting && commentsData.hasMore) {
- setPageComments(pageComments + 1);
+ const getCommentsData = async () => {
+ setLoadingComments(true)
+ const { data } = await api.get(`/comments/${functionId}/?page=${pageComments}&limit=10`)
+ setLoadingComments(false)
+ return data
+ }
+
+ const handleChange = (event) => {
+ const inputStateNew = { ...inputState }
+ inputStateNew[event.target.name] = event.target.value
+ setInputState(inputStateNew)
+ }
+
+ const handleSubmit = async (event) => {
+ setLoadingComments(true)
+ event.preventDefault()
+ const token = user.token
+ if (isAuth && token != null && inputState.commentPost != null) {
+ try {
+ const response = await api.post(`/comments/${functionId}`, { message: inputState.commentPost }, { headers: { Authorization: token } })
+ const comment = { ...response.data, user: { name: user.name, logo: user.logo } }
+ setCommentsData({ hasMore: commentsData.hasMore, rows: [comment, ...commentsData.rows] })
+ setInputState({ commentPost: '' })
+ } catch { }
+ }
+ setLoadingComments(false)
+ }
+
+ return (
+ <>
+
+
+
+ {
+ (isAuth)
+ ? (
+
+
+ Ajouter un commentaire :
+
+
+
+ Envoyer
+
+
+ )
+ : (
+
+ Vous devez être connecté pour poster un commentaire.
+
+ )
}
- }, { threshold: 1 });
- if (node) observer.current.observe(node);
- }, [isLoadingComments, commentsData.hasMore]);
-
- const getCommentsData = () => {
- setLoadingComments(true);
- return new Promise(async (next) => {
- const result = await api.get(`/comments/${functionId}/?page=${pageComments}&limit=10`);
- setLoadingComments(false);
- next(result.data);
- });
- }
-
- const handleChange = (event) => {
- const inputStateNew = { ...inputState };
- inputStateNew[event.target.name] = event.target.value;
- setInputState(inputStateNew);
- }
-
- const handleSubmit = async (event) => {
- setLoadingComments(true);
- event.preventDefault();
- const token = user.token;
- if (isAuth && token != undefined && inputState.commentPost != undefined) {
- try {
- const response = await api.post(`/comments/${functionId}`, { message: inputState.commentPost }, { headers: { 'Authorization': token } });
- const comment = { ...response.data, user: { name: user.name, logo: user.logo } };
- setCommentsData({ hasMore: commentsData.hasMore, rows: [comment, ...commentsData.rows] });
- setInputState({ commentPost: "" });
- } catch { }
- }
- setLoadingComments(false);
- }
-
- return (
-
-
-
-
- {
- (isAuth) ?
-
-
- Ajouter un commentaire :
-
-
-
- Envoyer
-
-
- :
-
- Vous devez être connecté pour poster un commentaire.
-
- }
-
-
-
-
- {isLoadingComments &&
-
-
-
- }
-
- {commentsData.rows.map((comment, index) => {
- // Si c'est le dernier élément
- if (commentsData.rows.length === index + 1) {
- return ;
- }
- return ;
- })}
-
-
-
- );
+
+
+
+
+ {isLoadingComments &&
+
+
+
}
+
+ {commentsData.rows.map((comment, index) => {
+ // Si c'est le dernier élément
+ if (commentsData.rows.length === index + 1) {
+ return
+ }
+ return
+ })}
+
+
+ >
+ )
}
-export default FunctionComments;
\ No newline at end of file
+export default FunctionComments
diff --git a/website/components/FunctionPage/FunctionComponentTop.js b/website/components/FunctionPage/FunctionComponentTop.js
index 2765cf3..7046372 100644
--- a/website/components/FunctionPage/FunctionComponentTop.js
+++ b/website/components/FunctionPage/FunctionComponentTop.js
@@ -1,71 +1,69 @@
-import { useState, useEffect, useContext } from 'react';
-import Link from 'next/link';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faStar } from '@fortawesome/free-solid-svg-icons';
-import { faStar as farStar } from '@fortawesome/free-regular-svg-icons';
-import date from 'date-and-time';
-import { UserContext } from '../../contexts/UserContext';
-import api from '../../utils/api';
-import { API_URL } from '../../utils/config/config';
-import '../FunctionCard/FunctionCard.css';
+import { useState, useEffect, useContext } from 'react'
+import Link from 'next/link'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { faStar } from '@fortawesome/free-solid-svg-icons'
+import { faStar as farStar } from '@fortawesome/free-regular-svg-icons'
+import date from 'date-and-time'
+import { UserContext } from '../../contexts/UserContext'
+import api from '../../utils/api'
+import { API_URL } from '../../utils/config/config'
+import '../FunctionCard/FunctionCard.css'
const FunctionComponentTop = (props) => {
+ const { isAuth, user } = useContext(UserContext)
+ const [isFavorite, setIsFavorite] = useState(false)
- const { isAuth, user } = useContext(UserContext);
- const [isFavorite, setIsFavorite] = useState(false);
+ useEffect(() => {
+ if (isAuth && user.token != null) {
+ fetchFavorite()
+ }
+ }, [isAuth])
- useEffect(() => {
- if (isAuth && user.token != undefined) {
- fetchFavorite();
+ const fetchFavorite = async () => {
+ try {
+ const favoriteResponse = await api.get(`/favorites/${props.id}`, { headers: { Authorization: user.token } })
+ setIsFavorite(favoriteResponse.data.isFavorite)
+ } catch {}
+ }
+
+ const toggleFavorite = async () => {
+ if (isAuth && user.token != null) {
+ try {
+ if (isFavorite) {
+ const response = await api.delete(`/favorites/${props.id}`, { headers: { Authorization: user.token } })
+ if (response.status === 200) return setIsFavorite(false)
}
- }, [isAuth]);
-
- const fetchFavorite = async () => {
- try {
- const favoriteResponse = await api.get(`/favorites/${props.id}`, { headers: { 'Authorization': user.token } });
- setIsFavorite(favoriteResponse.data.isFavorite);
- } catch {}
+ const response = await api.post(`/favorites/${props.id}`, {}, { headers: { Authorization: user.token } })
+ if (response.status === 201) return setIsFavorite(true)
+ } catch {}
}
+ }
- const toggleFavorite = async () => {
- if (isAuth && user.token != undefined) {
- try {
- if (isFavorite) {
- const response = await api.delete(`/favorites/${props.id}`, { headers: { 'Authorization': user.token } });
- if (response.status === 200) return setIsFavorite(false);
- }
- const response = await api.post(`/favorites/${props.id}`, {}, { headers: { 'Authorization': user.token } });
- if (response.status === 201) return setIsFavorite(true);
- } catch {}
- }
- }
+ const handleError = (event) => {
+ event.target.src = API_URL + '/images/functions/default.png'
+ }
- const handleError = (event) => {
- event.target.src = API_URL + "/images/functions/default.png";
- }
+ return (
+
+
+
- return (
-
-
-
+ {(isAuth) &&
+
}
- {(isAuth) &&
-
- }
-
-
-
{props.title}
-
{props.description}
-
-
-
+
+
{props.title}
+
{props.description}
+
- );
+
+
+ )
}
-export default FunctionComponentTop;
\ No newline at end of file
+export default FunctionComponentTop
diff --git a/website/components/FunctionPage/FunctionForm.js b/website/components/FunctionPage/FunctionForm.js
index 95fdcd2..9be4b58 100644
--- a/website/components/FunctionPage/FunctionForm.js
+++ b/website/components/FunctionPage/FunctionForm.js
@@ -1,161 +1,160 @@
-import { Fragment, useState, useEffect } from 'react';
-import Loader from '../Loader';
-import htmlParser from 'html-react-parser';
-import dynamic from 'next/dynamic';
-import api from '../../utils/api';
-import fr from 'date-fns/locale/fr';
-import { registerLocale } from "react-datepicker";
-import date from 'date-and-time';
-import "react-datepicker/dist/react-datepicker.css";
+import { useState, useEffect } from 'react'
+import Loader from '../Loader'
+import htmlParser from 'html-react-parser'
+import dynamic from 'next/dynamic'
+import api from '../../utils/api'
+import fr from 'date-fns/locale/fr'
+import { registerLocale } from 'react-datepicker'
+import date from 'date-and-time'
+import 'react-datepicker/dist/react-datepicker.css'
-registerLocale('fr', fr);
+registerLocale('fr', fr)
const FunctionForm = (props) => {
+ const [inputState, setInputState] = useState({})
+ const [message, setMessage] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
- const [inputState, setInputState] = useState({});
- const [message, setMessage] = useState("");
- const [isLoading, setIsLoading] = useState(false);
+ // inputState par défaut
+ useEffect(() => {
+ const inputStateNew = { ...inputState }
+ props.inputsArray.forEach((input) => {
+ if (input.type === 'select' && input.options.length > 0) {
+ inputStateNew[input.name] = input.options[0].value
+ }
+ })
+ setInputState(inputStateNew)
+ }, [])
- // inputState par défaut
- useEffect(() => {
- const inputStateNew = { ...inputState };
- props.inputsArray.forEach((input) => {
- if (input.type === "select" && input.options.length > 0) {
- inputStateNew[input.name] = input.options[0].value;
- }
- });
- setInputState(inputStateNew);
- }, []);
+ const handleSubmit = (event) => {
+ setIsLoading(true)
+ event.preventDefault()
+ api.post(`/functions/${props.slug}`, inputState)
+ .then((response) => {
+ setMessage(response.data.resultHTML)
+ setIsLoading(false)
+ })
+ .catch((error) => {
+ setMessage(error.response.data.message)
+ setIsLoading(false)
+ })
+ }
- const handleSubmit = (event) => {
- setIsLoading(true);
- event.preventDefault();
- api.post(`/functions/${props.slug}`, inputState)
- .then((response) => {
- setMessage(response.data.resultHTML);
- setIsLoading(false);
- })
- .catch((error) => {
- setMessage(error.response.data.message);
- setIsLoading(false);
- });
- }
+ const handleChange = (event) => {
+ const inputStateNew = { ...inputState }
+ inputStateNew[event.target.name] = event.target.value
+ setInputState(inputStateNew)
+ }
- const handleChange = (event) => {
- const inputStateNew = { ...inputState };
- inputStateNew[event.target.name] = event.target.value;
- setInputState(inputStateNew);
- }
-
- if (props.inputsArray.length <= 0) {
- return (
-
-
La fonction n'est pas encore disponible.
-
- );
- }
+ if (props.inputsArray.length <= 0) {
return (
-
-
- {props.inputsArray.map((input, index) => {
- switch (input.type) {
- case "text":
- return (
-
- {input.label}
-
-
- );
- case "integer":
- case "float":
- return (
-
- {input.label}
-
-
- );
- case "calendar":
- // Permet au datepicker de prendre la hauteur
- if (typeof window != 'undefined') {
- const newScript = document.createElement("script");
- newScript.src = "/js/extraHeightCSS.js";
- document.body.appendChild(newScript);
- }
- const DatePicker = dynamic(
- () => import('react-datepicker'),
- { ssr: false }
- );
- return (
-
- {input.label}
-
- {
- try {
- if (inputState[input.name] != undefined) {
- const dateArray = inputState[input.name].split('/');
- const year = dateArray[2];
- const month = dateArray[1];
- const day = dateArray[0];
- return new Date(year, parseInt(month) - 1, parseInt(day) + 1);
- }
- throw "Not a valid date";
- } catch {
- return new Date();
- }
- })()}
- locale="fr"
- dateFormat="dd/MM/yyyy"
- fixedHeight
- placeholderText={input.placeholder}
- onChange={(dateObject) => {
- try {
- const formattedDate = date.format(dateObject, 'DD/MM/YYYY', true);
- handleChange({
- target: {
- name: input.name,
- value: formattedDate
- }
- });
- } catch {}
- }}
- />
-
- );
- case "select":
- return (
-
- {input.label}
-
- {input.options.map((option, optionIndex) => {
- return (
- {option.name}
- );
- })}
-
-
- );
- default:
- return (
- Erreur, l'input n'est pas valide...
- );
- }
- })}
-
-
-
Envoyer
+
+
La fonction n'est pas encore disponible.
+
+ )
+ }
+ return (
+ <>
+
+ {props.inputsArray.map((input, index) => {
+ switch (input.type) {
+ case 'text':
+ return (
+
+ {input.label}
+
-
-
- {
- (isLoading) ?
-
- :
- htmlParser(message)
- }
-
-
- );
+ )
+ case 'integer':
+ case 'float':
+ return (
+
+ {input.label}
+
+
+ )
+ case 'calendar':
+ // Permet au datepicker de prendre la hauteur
+ if (typeof window !== 'undefined') {
+ const newScript = document.createElement('script')
+ newScript.src = '/js/extraHeightCSS.js'
+ document.body.appendChild(newScript)
+ }
+ // eslint-disable-next-line
+ const DatePicker = dynamic(
+ () => import('react-datepicker'),
+ { ssr: false }
+ )
+ return (
+
+ {input.label}
+
+ {
+ try {
+ if (inputState[input.name] != null) {
+ const dateArray = inputState[input.name].split('/')
+ const year = dateArray[2]
+ const month = dateArray[1]
+ const day = dateArray[0]
+ return new Date(year, parseInt(month) - 1, parseInt(day) + 1)
+ }
+ throw new Error('Not a valid date')
+ } catch {
+ return new Date()
+ }
+ })()}
+ locale='fr'
+ dateFormat='dd/MM/yyyy'
+ fixedHeight
+ placeholderText={input.placeholder}
+ onChange={(dateObject) => {
+ try {
+ const formattedDate = date.format(dateObject, 'DD/MM/YYYY', true)
+ handleChange({
+ target: {
+ name: input.name,
+ value: formattedDate
+ }
+ })
+ } catch {}
+ }}
+ />
+
+ )
+ case 'select':
+ return (
+
+ {input.label}
+
+ {input.options.map((option, optionIndex) => {
+ return (
+ {option.name}
+ )
+ })}
+
+
+ )
+ default:
+ return (
+
Erreur, l'input n'est pas valide...
+ )
+ }
+ })}
+
+
+ Envoyer
+
+
+
+ {
+ (isLoading)
+ ?
+ : htmlParser(message)
+ }
+
+ >
+ )
}
-export default FunctionForm;
\ No newline at end of file
+export default FunctionForm
diff --git a/website/components/FunctionPage/FunctionPage.js b/website/components/FunctionPage/FunctionPage.js
index 21d4a45..fd2d60a 100644
--- a/website/components/FunctionPage/FunctionPage.js
+++ b/website/components/FunctionPage/FunctionPage.js
@@ -1,24 +1,23 @@
-import { Fragment, useState } from 'react';
-import { API_URL } from '../../utils/config/config';
-import HeadTag from '../HeadTag';
-import FunctionTabsTop from './FunctionTabsTop';
-import FunctionComponentTop from './FunctionComponentTop';
+import { useState } from 'react'
+import { API_URL } from '../../utils/config/config'
+import HeadTag from '../HeadTag'
+import FunctionTabsTop from './FunctionTabsTop'
+import FunctionComponentTop from './FunctionComponentTop'
const FunctionPage = (props) => {
+ const [slideIndex, setSlideIndex] = useState(0)
- const [slideIndex, setSlideIndex] = useState(0);
+ return (
+ <>
+
- return (
-
-
-
-
-
- );
+
+ >
+ )
}
-export default FunctionPage;
\ No newline at end of file
+export default FunctionPage
diff --git a/website/components/FunctionPage/FunctionTabs.js b/website/components/FunctionPage/FunctionTabs.js
index 027a8f9..bc3734c 100644
--- a/website/components/FunctionPage/FunctionTabs.js
+++ b/website/components/FunctionPage/FunctionTabs.js
@@ -1,14 +1,14 @@
-import SwipeableViews from 'react-swipeable-views';
-import './FunctionTabs.css';
+import SwipeableViews from 'react-swipeable-views'
+import './FunctionTabs.css'
const FunctionTabs = (props) => {
- return (
-
- props.setSlideIndex(index)} index={props.slideIndex}>
- {props.children}
-
-
- );
+ return (
+
+ props.setSlideIndex(index)} index={props.slideIndex}>
+ {props.children}
+
+
+ )
}
-export default FunctionTabs;
\ No newline at end of file
+export default FunctionTabs
diff --git a/website/components/FunctionPage/FunctionTabsTop.js b/website/components/FunctionPage/FunctionTabsTop.js
index d0a9f0c..f6e6ac0 100644
--- a/website/components/FunctionPage/FunctionTabsTop.js
+++ b/website/components/FunctionPage/FunctionTabsTop.js
@@ -1,24 +1,24 @@
const FunctionTabsTop = (props) => {
- return (
-
- );
+ return (
+
+ )
}
-export default FunctionTabsTop;
\ No newline at end of file
+export default FunctionTabsTop
diff --git a/website/components/FunctionsList/FunctionsList.js b/website/components/FunctionsList/FunctionsList.js
index cf71519..17f9c87 100644
--- a/website/components/FunctionsList/FunctionsList.js
+++ b/website/components/FunctionsList/FunctionsList.js
@@ -1,104 +1,103 @@
-import { useState, useEffect, useRef, useCallback } from 'react';
-import { useRouter } from 'next/router';
-import FunctionCard from '../FunctionCard/FunctionCard';
-import Loader from '../Loader';
-import api from '../../utils/api';
-import useAPI from '../../hooks/useAPI';
-import './FunctionsList.css';
+import { useState, useEffect, useRef, useCallback } from 'react'
+import { useRouter } from 'next/router'
+import FunctionCard from '../FunctionCard/FunctionCard'
+import Loader from '../Loader'
+import api from '../../utils/api'
+import useAPI from '../../hooks/useAPI'
+import './FunctionsList.css'
-let pageFunctions = 1;
+let pageFunctions = 1
const FunctionsList = (props) => {
+ const { categoryId } = useRouter().query
- const { categoryId } = useRouter().query;
+ // State de recherche et de catégories
+ const [, categories] = useAPI('/categories')
+ const [inputSearch, setInputSearch] = useState({ search: '', selectedCategory: categoryId || '0' })
- // State de recherche et de catégories
- const [, categories] = useAPI('/categories');
- const [inputSearch, setInputSearch] = useState({ search: "", selectedCategory: categoryId || "0" });
+ // State pour afficher les fonctions
+ const [functionsData, setFunctionsData] = useState({ hasMore: true, rows: [] })
+ const [isLoadingFunctions, setLoadingFunctions] = useState(true)
- // State pour afficher les fonctions
- const [functionsData, setFunctionsData] = useState({ hasMore: true, rows: [] });
- const [isLoadingFunctions, setLoadingFunctions] = useState(true);
-
- // Récupère la catégorie avec la query categoryId
- useEffect(() => {
- if (categoryId) {
- handleChange({ target: { name: "selectedCategory", value: categoryId } });
- }
- }, [categoryId]);
-
- // Récupère les fonctions si la catégorie/recherche change
- useEffect(() => {
- pageFunctions = 1;
- getFunctionsData().then((data) => setFunctionsData(data));
- }, [inputSearch]);
-
- // Permet la pagination au scroll
- const observer = useRef();
- const lastFunctionCardRef = useCallback((node) => {
- if (isLoadingFunctions) return;
- if (observer.current) observer.current.disconnect();
- observer.current = new IntersectionObserver((entries) => {
- if (entries[0].isIntersecting && functionsData.hasMore) {
- pageFunctions += 1;
- getFunctionsData().then((data) => {
- setFunctionsData((oldData) => {
- return {
- hasMore: data.hasMore,
- rows: [...oldData.rows, ...data.rows]
- }
- });
- });
- }
- }, { threshold: 1 });
- if (node) observer.current.observe(node);
- }, [isLoadingFunctions, functionsData.hasMore]);
-
- const getFunctionsData = async () => {
- setLoadingFunctions(true);
- const URL = `${(props.isAdmin) ? "/admin/functions" : "/functions"}?page=${pageFunctions}&limit=10&categoryId=${inputSearch.selectedCategory}&search=${inputSearch.search}`;
- const { data } = await api.get(URL, {
- headers: {
- ...(props.isAdmin && props.token != undefined) && { 'Authorization': props.token }
- }
- });
- setLoadingFunctions(false);
- return data;
+ // Récupère la catégorie avec la query categoryId
+ useEffect(() => {
+ if (categoryId) {
+ handleChange({ target: { name: 'selectedCategory', value: categoryId } })
}
+ }, [categoryId])
- const handleChange = (event) => {
- const inputSearchNew = { ...inputSearch };
- inputSearchNew[event.target.name] = event.target.value;
- setInputSearch(inputSearchNew);
- }
+ // Récupère les fonctions si la catégorie/recherche change
+ useEffect(() => {
+ pageFunctions = 1
+ getFunctionsData().then((data) => setFunctionsData(data))
+ }, [inputSearch])
- return (
-
-
- {props.children}
-
+ // Permet la pagination au scroll
+ const observer = useRef()
+ const lastFunctionCardRef = useCallback((node) => {
+ if (isLoadingFunctions) return
+ if (observer.current) observer.current.disconnect()
+ observer.current = new window.IntersectionObserver((entries) => {
+ if (entries[0].isIntersecting && functionsData.hasMore) {
+ pageFunctions += 1
+ getFunctionsData().then((data) => {
+ setFunctionsData((oldData) => {
+ return {
+ hasMore: data.hasMore,
+ rows: [...oldData.rows, ...data.rows]
+ }
+ })
+ })
+ }
+ }, { threshold: 1 })
+ if (node) observer.current.observe(node)
+ }, [isLoadingFunctions, functionsData.hasMore])
-
-
- Toutes catégories
- {categories.map((category) => (
- {category.name}
- ))}
-
-
-
+ const getFunctionsData = async () => {
+ setLoadingFunctions(true)
+ const URL = `${(props.isAdmin) ? '/admin/functions' : '/functions'}?page=${pageFunctions}&limit=10&categoryId=${inputSearch.selectedCategory}&search=${inputSearch.search}`
+ const { data } = await api.get(URL, {
+ headers: {
+ ...(props.isAdmin && props.token != null) && { Authorization: props.token }
+ }
+ })
+ setLoadingFunctions(false)
+ return data
+ }
-
- {functionsData.rows.map((currentFunction, index) => {
- // Si c'est le dernier élément
- if (functionsData.rows.length === index + 1) {
- return ;
- }
- return ;
- })}
-
- {isLoadingFunctions &&
}
-
- );
+ const handleChange = (event) => {
+ const inputSearchNew = { ...inputSearch }
+ inputSearchNew[event.target.name] = event.target.value
+ setInputSearch(inputSearchNew)
+ }
+
+ return (
+
+
+ {props.children}
+
+
+
+
+ Toutes catégories
+ {categories.map((category) => (
+ {category.name}
+ ))}
+
+
+
+
+
+ {functionsData.rows.map((currentFunction, index) => {
+ // Si c'est le dernier élément
+ if (functionsData.rows.length === index + 1) {
+ return
+ }
+ return
+ })}
+
+ {isLoadingFunctions &&
}
+
+ )
}
-export default FunctionsList;
\ No newline at end of file
+export default FunctionsList
diff --git a/website/components/HeadTag.js b/website/components/HeadTag.js
index 74fd2aa..2636977 100644
--- a/website/components/HeadTag.js
+++ b/website/components/HeadTag.js
@@ -1,43 +1,43 @@
-import Head from 'next/head';
+import Head from 'next/head'
const HeadTag = ({ title, image, description }) => (
-
-
{title || ""}
-
+
+
{title || ''}
+
- {/* Meta Tag */}
-
-
-
-
-
+ {/* Meta Tag */}
+
+
+
+
+
- {/* Open Graph Metadata */}
-
-
-
-
-
-
-
+ {/* Open Graph Metadata */}
+
+
+
+
+
+
+
- {/* Twitter card Metadata */}
-
-
-
-
-
-
+ {/* Twitter card Metadata */}
+
+
+
+
+
+
- {/* Preloader script */}
-
-
-);
+ {/* Preloader script */}
+
+
+)
HeadTag.defaultProps = {
- title: "FunctionProject",
- description: "Apprenez la programmation grâce à l'apprentissage par projet alias fonction.",
- image: "/images/FunctionProject_icon_small.png"
+ title: 'FunctionProject',
+ description: "Apprenez la programmation grâce à l'apprentissage par projet alias fonction.",
+ image: '/images/FunctionProject_icon_small.png'
}
-export default HeadTag;
\ No newline at end of file
+export default HeadTag
diff --git a/website/components/Header/Header.js b/website/components/Header/Header.js
index 8dc2c3f..17ac9f0 100644
--- a/website/components/Header/Header.js
+++ b/website/components/Header/Header.js
@@ -1,71 +1,73 @@
-import { Fragment, useState, useContext } from 'react';
-import { UserContext } from '../../contexts/UserContext';
-import Link from 'next/link';
-import { useRouter } from 'next/router';
-import NavigationLink from './NavigationLink';
-import './Header.css';
+import { useState, useContext } from 'react'
+import { UserContext } from '../../contexts/UserContext'
+import Link from 'next/link'
+import { useRouter } from 'next/router'
+import NavigationLink from './NavigationLink'
+import './Header.css'
-export default function Header() {
+export default function Header () {
+ const { isAuth, logoutUser, user } = useContext(UserContext)
+ const [isActive, setIsActive] = useState(false)
+ const { pathname } = useRouter()
- const { isAuth, logoutUser, user } = useContext(UserContext);
- const [isActive, setIsActive] = useState(false);
- const { pathname } = useRouter();
+ const toggleNavbar = () => {
+ setIsActive(!isActive)
+ }
- const toggleNavbar = () => {
- setIsActive(!isActive);
- }
+ return (
+
+ )
+}
diff --git a/website/components/Header/NavigationLink.js b/website/components/Header/NavigationLink.js
index 59a51bf..4e9e8aa 100644
--- a/website/components/Header/NavigationLink.js
+++ b/website/components/Header/NavigationLink.js
@@ -1,18 +1,17 @@
-import Link from 'next/link';
-import { useRouter } from 'next/router';
-import './Header.css';
+import Link from 'next/link'
+import { useRouter } from 'next/router'
+import './Header.css'
-export default function NavigationLink(props) {
+export default function NavigationLink (props) {
+ const { pathname } = useRouter()
- const { pathname } = useRouter();
-
- return (
-
-
-
- {props.name}
-
-
-
- );
-}
\ No newline at end of file
+ return (
+
+
+
+ {props.name}
+
+
+
+ )
+}
diff --git a/website/components/Loader.js b/website/components/Loader.js
index 4838173..a67d555 100644
--- a/website/components/Loader.js
+++ b/website/components/Loader.js
@@ -1,15 +1,15 @@
const Loader = ({ width, height, speed }) => (
-
-
-
-
-
-);
+
+
+
+
+
+)
Loader.defaultProps = {
- width: "100px",
- height: "100px",
- speed: ".9s"
+ width: '100px',
+ height: '100px',
+ speed: '.9s'
}
-export default Loader;
\ No newline at end of file
+export default Loader
diff --git a/website/components/Modal.js b/website/components/Modal.js
index af29ab5..1673a3e 100644
--- a/website/components/Modal.js
+++ b/website/components/Modal.js
@@ -1,9 +1,9 @@
const Modal = (props) => (
-
-
- {props.children}
-
+
+
+ {props.children}
-);
+
+)
-export default Modal;
\ No newline at end of file
+export default Modal
diff --git a/website/contexts/UserContext.js b/website/contexts/UserContext.js
index 180f662..1206328 100644
--- a/website/contexts/UserContext.js
+++ b/website/contexts/UserContext.js
@@ -1,68 +1,63 @@
-import { createContext, useState, useEffect } from 'react';
-import Cookies from "universal-cookie";
-import api from '../utils/api';
+import { createContext, useState, useEffect } from 'react'
+import Cookies from 'universal-cookie'
+import api from '../utils/api'
-const cookies = new Cookies();
+const cookies = new Cookies()
-export const UserContext = createContext();
+export const UserContext = createContext()
-function UserContextProvider(props) {
+function UserContextProvider (props) {
+ const [user, setUser] = useState(null)
+ const [isAuth, setIsAuth] = useState(false)
+ const [loginLoading, setLoginLoading] = useState(false)
+ const [messageLogin, setMessageLogin] = useState('')
- const [user, setUser] = useState(null);
- const [isAuth, setIsAuth] = useState(false);
- const [loginLoading, setLoginLoading] = useState(false);
- const [messageLogin, setMessageLogin] = useState("");
-
- useEffect(() => {
- const newUser = cookies.get('user');
- if (newUser != undefined) {
- setIsAuth(true);
- setUser(newUser);
- }
- }, []);
-
- useEffect(() => {
- if (isAuth) {
- setMessageLogin('
Erreur: Vous devez être déconnecter avant de vous connecter.
');
- } else {
- setMessageLogin("");
- }
- }, [isAuth]);
-
- const logoutUser = () => {
- cookies.remove('user', { path: '/' });
- setUser(null);
- setIsAuth(false);
- }
-
- const loginUser = ({ email, password }) => {
- setLoginLoading(true);
- return new Promise(async (next) => {
- try {
- const response = await api.post('/users/login', { email, password });
- const newUser = response.data;
- cookies.remove('user', { path: '/' });
- cookies.set('user', newUser, { path: '/', maxAge: newUser.expiresIn });
- setUser(newUser);
- setIsAuth(true);
- setMessageLogin('
Succès: Connexion réussi!
');
- setLoginLoading(false);
- return next();
- } catch (error) {
- setMessageLogin(`
Erreur: ${error.response.data.message}
`);
- setLoginLoading(false);
- setIsAuth(false);
- setUser(null);
- return next();
- }
- });
+ useEffect(() => {
+ const newUser = cookies.get('user')
+ if (newUser != null) {
+ setIsAuth(true)
+ setUser(newUser)
}
+ }, [])
- return (
-
- {props.children}
-
- );
+ useEffect(() => {
+ if (isAuth) {
+ setMessageLogin('
Erreur: Vous devez être déconnecter avant de vous connecter.
')
+ } else {
+ setMessageLogin('')
+ }
+ }, [isAuth])
+
+ const logoutUser = () => {
+ cookies.remove('user', { path: '/' })
+ setUser(null)
+ setIsAuth(false)
+ }
+
+ const loginUser = async ({ email, password }) => {
+ setLoginLoading(true)
+ try {
+ const response = await api.post('/users/login', { email, password })
+ const newUser = response.data
+ cookies.remove('user', { path: '/' })
+ cookies.set('user', newUser, { path: '/', maxAge: newUser.expiresIn })
+ setUser(newUser)
+ setIsAuth(true)
+ setMessageLogin('
Succès: Connexion réussi!
')
+ setLoginLoading(false)
+ } catch (error) {
+ setMessageLogin(`
Erreur: ${error.response.data.message}
`)
+ setLoginLoading(false)
+ setIsAuth(false)
+ setUser(null)
+ }
+ }
+
+ return (
+
+ {props.children}
+
+ )
}
-export default UserContextProvider;
\ No newline at end of file
+export default UserContextProvider
diff --git a/website/hoc/withoutAuth.js b/website/hoc/withoutAuth.js
index c1ca0b0..0c34eab 100644
--- a/website/hoc/withoutAuth.js
+++ b/website/hoc/withoutAuth.js
@@ -1,19 +1,17 @@
-import { useContext } from 'react';
-import { UserContext } from '../contexts/UserContext';
-import redirect from '../utils/redirect';
+import { useContext } from 'react'
+import { UserContext } from '../contexts/UserContext'
+import redirect from '../utils/redirect'
const withoutAuth = (WrappedComponent) => {
-
- const Component = (props) => {
-
- const { isAuth, user } = useContext(UserContext);
-
- if (isAuth) return redirect({}, `/users/${user.name}`);
+ const Component = (props) => {
+ const { isAuth, user } = useContext(UserContext)
- return
;
- }
+ if (isAuth) return redirect({}, `/users/${user.name}`)
- return Component;
-}
+ return
+ }
-export default withoutAuth;
\ No newline at end of file
+ return Component
+}
+
+export default withoutAuth
diff --git a/website/hooks/useAPI.js b/website/hooks/useAPI.js
index 740251c..228b1a4 100644
--- a/website/hooks/useAPI.js
+++ b/website/hooks/useAPI.js
@@ -1,31 +1,30 @@
-import { useEffect, useState } from 'react';
-import api from '../utils/api';
+import { useEffect, useState } from 'react'
+import api from '../utils/api'
/**
- * @param {String} url
- * @param {*} defaultData
- * @param {String} method
- * @param {Object} options
+ * @param {String} url
+ * @param {*} defaultData
+ * @param {String} method
+ * @param {Object} options
*/
-function useAPI(url, defaultData = [], method = "get", options = {}) {
+function useAPI (url, defaultData = [], method = 'get', options = {}) {
+ const [isLoading, setIsLoading] = useState(true)
+ const [data, setData] = useState(defaultData)
+ const [hasError, setHasError] = useState(false)
- const [isLoading, setIsLoading] = useState(true);
- const [data, setData] = useState(defaultData);
- const [hasError, setHasError] = useState(false);
+ useEffect(() => {
+ api[method](url, options)
+ .then((result) => {
+ setData(result.data)
+ setIsLoading(false)
+ })
+ .catch((error) => {
+ setHasError(true)
+ console.error(error)
+ })
+ }, [])
- useEffect(() => {
- api[method](url, options)
- .then((result) => {
- setData(result.data);
- setIsLoading(false);
- })
- .catch((error) => {
- setHasError(true);
- console.error(error);
- });
- }, []);
-
- return [isLoading, data, hasError];
+ return [isLoading, data, hasError]
}
-export default useAPI;
\ No newline at end of file
+export default useAPI
diff --git a/website/next.config.js b/website/next.config.js
index c4df49d..98bce3e 100644
--- a/website/next.config.js
+++ b/website/next.config.js
@@ -1,3 +1,3 @@
-const withCSS = require('@zeit/next-css');
-const withFonts = require('next-fonts');
-module.exports = withFonts(withCSS());
\ No newline at end of file
+const withCSS = require('@zeit/next-css')
+const withFonts = require('next-fonts')
+module.exports = withFonts(withCSS())
diff --git a/website/package-lock.json b/website/package-lock.json
index df77ae9..a349e6a 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -5,30 +5,76 @@
"requires": true,
"dependencies": {
"@ampproject/toolbox-core": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@ampproject/toolbox-core/-/toolbox-core-2.0.0.tgz",
- "integrity": "sha512-xAJOmh6MPS2mdHNsK8mj1t8TLh6mlehirh0fOBsRhKCNCJXgg4Gfd2u5igy8VFq9sYnuWP/npFyjGX36qpXW5Q==",
+ "version": "2.5.4",
+ "resolved": "https://registry.npmjs.org/@ampproject/toolbox-core/-/toolbox-core-2.5.4.tgz",
+ "integrity": "sha512-KjHyR0XpQyloTu59IaatU2NCGT5zOhWJtVXQ4Uj/NUaRriN6LlJlzHBxtXmPIb0YHETdD63ITtDvqZizZPYFag==",
"requires": {
- "cross-fetch": "3.0.4"
+ "cross-fetch": "3.0.5",
+ "lru-cache": "5.1.1"
}
},
"@ampproject/toolbox-optimizer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.0.1.tgz",
- "integrity": "sha512-zroXqrV7mY77+/6hV7kaaWxp4LA85V0B/2vg7WdF+FrwiO9Wior/lIW8UbpRek6INjw0VOp1ED73MmGJkwaDhA==",
+ "version": "2.5.14",
+ "resolved": "https://registry.npmjs.org/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.5.14.tgz",
+ "integrity": "sha512-UTXKVwDKn/xsNOHYroFUtQRxnukdZuiYj7iM1rCAvRmDT9MqrtMTVG8boGjxt5aHLgCnrUZEMz+8d61iBYZeDQ==",
"requires": {
- "@ampproject/toolbox-core": "^2.0.0",
- "@ampproject/toolbox-runtime-version": "^2.0.0",
- "@ampproject/toolbox-script-csp": "^2.0.0",
- "@ampproject/toolbox-validator-rules": "^2.0.0",
- "css": "2.2.4",
+ "@ampproject/toolbox-core": "^2.5.4",
+ "@ampproject/toolbox-runtime-version": "^2.5.4",
+ "@ampproject/toolbox-script-csp": "^2.5.4",
+ "@ampproject/toolbox-validator-rules": "^2.5.4",
+ "abort-controller": "3.0.0",
+ "cross-fetch": "3.0.5",
+ "cssnano": "4.1.10",
+ "dom-serializer": "1.0.1",
"domhandler": "3.0.0",
- "domutils": "2.0.0",
+ "domutils": "2.1.0",
"htmlparser2": "4.1.0",
+ "lru-cache": "5.1.1",
+ "node-fetch": "2.6.0",
"normalize-html-whitespace": "1.0.0",
- "terser": "4.6.7"
+ "postcss": "7.0.32",
+ "postcss-safe-parser": "4.0.2",
+ "terser": "4.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"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "dom-serializer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.0.1.tgz",
+ "integrity": "sha512-1Aj1Qy3YLbdslkI75QEOfdp9TkQ3o8LRISAzxOibjBs/xWwr1WxZFOQphFkZuepHFGo+kB8e5FVJSS0faAJ4Rw==",
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^3.0.0",
+ "entities": "^2.0.0"
+ }
+ },
"domelementtype": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
@@ -43,19 +89,30 @@
}
},
"domutils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.0.0.tgz",
- "integrity": "sha512-n5SelJ1axbO636c2yUtOGia/IcJtVtlhQbFiVDBZHKV5ReJO1ViX7sFEemtuyoAnBxk5meNSYgA8V4s0271efg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.1.0.tgz",
+ "integrity": "sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg==",
"requires": {
"dom-serializer": "^0.2.1",
"domelementtype": "^2.0.1",
"domhandler": "^3.0.0"
+ },
+ "dependencies": {
+ "dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ }
+ }
}
},
"entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
- "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw=="
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
+ "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ=="
},
"htmlparser2": {
"version": "4.1.0",
@@ -68,37 +125,45 @@
"entities": "^2.0.0"
}
},
- "terser": {
- "version": "4.6.7",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.7.tgz",
- "integrity": "sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==",
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
- "commander": "^2.20.0",
- "source-map": "~0.6.1",
- "source-map-support": "~0.5.12"
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
}
}
}
},
"@ampproject/toolbox-runtime-version": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.0.0.tgz",
- "integrity": "sha512-7XDlo7l4Ozpc/XWmJeYNF0ZfXCy7Vdh07spN+xEOst8gF99yaavZRNVkdgyTxLR3BpY9RIqqhSs6OxfkOKlRZQ==",
+ "version": "2.5.4",
+ "resolved": "https://registry.npmjs.org/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.5.4.tgz",
+ "integrity": "sha512-7vi/F91Zb+h1CwR8/on/JxZhp3Hhz6xJOOHxRA025aUFEFHV5c35B4QbTdt2MObWZrysogXFOT8M95dgU/hsKw==",
"requires": {
- "@ampproject/toolbox-core": "^2.0.0"
+ "@ampproject/toolbox-core": "^2.5.4"
}
},
"@ampproject/toolbox-script-csp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@ampproject/toolbox-script-csp/-/toolbox-script-csp-2.0.0.tgz",
- "integrity": "sha512-9mW3yiKwjORi0ViuayphVZii9MwiPhneZGZWy+kN44xr3SpN7iQC52/WWWTBOZX9z1zaUh8DqGc//VFY5ILSAw=="
+ "version": "2.5.4",
+ "resolved": "https://registry.npmjs.org/@ampproject/toolbox-script-csp/-/toolbox-script-csp-2.5.4.tgz",
+ "integrity": "sha512-+knTYetI5nWllRZ9wFcj7mYxelkiiFVRAAW/hl0ad8EnKHMH82tRlk40CapEnUHhp6Er5sCYkumQ8dngs3Q4zQ=="
},
"@ampproject/toolbox-validator-rules": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.0.0.tgz",
- "integrity": "sha512-5f2IvT1m/zNtqfNXFE9V4ZtKofIttST65QL1wf4lKjBhJsbZgAAeR/u4DgOvftRVRmgn6IpUiWY1pt9xWaI5yA==",
+ "version": "2.5.4",
+ "resolved": "https://registry.npmjs.org/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.5.4.tgz",
+ "integrity": "sha512-bS7uF+h0s5aiklc/iRaujiSsiladOsZBLrJ6QImJDXvubCAQtvE7om7ShlGSXixkMAO0OVMDWyuwLlEy8V1Ing==",
"requires": {
- "cross-fetch": "3.0.4"
+ "cross-fetch": "3.0.5"
}
},
"@babel/code-frame": {
@@ -109,18 +174,28 @@
"@babel/highlight": "^7.8.3"
}
},
+ "@babel/compat-data": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz",
+ "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==",
+ "requires": {
+ "browserslist": "^4.12.0",
+ "invariant": "^2.2.4",
+ "semver": "^5.5.0"
+ }
+ },
"@babel/core": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz",
- "integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==",
+ "version": "7.7.7",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz",
+ "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==",
"requires": {
"@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.7.2",
- "@babel/helpers": "^7.7.0",
- "@babel/parser": "^7.7.2",
- "@babel/template": "^7.7.0",
- "@babel/traverse": "^7.7.2",
- "@babel/types": "^7.7.2",
+ "@babel/generator": "^7.7.7",
+ "@babel/helpers": "^7.7.4",
+ "@babel/parser": "^7.7.7",
+ "@babel/template": "^7.7.4",
+ "@babel/traverse": "^7.7.4",
+ "@babel/types": "^7.7.4",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"json5": "^2.1.0",
@@ -139,9 +214,9 @@
}
},
"json5": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz",
- "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
+ "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
"requires": {
"minimist": "^1.2.5"
}
@@ -159,23 +234,22 @@
}
},
"@babel/generator": {
- "version": "7.9.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz",
- "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz",
+ "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==",
"requires": {
- "@babel/types": "^7.9.0",
+ "@babel/types": "^7.11.0",
"jsesc": "^2.5.1",
- "lodash": "^4.17.13",
"source-map": "^0.5.0"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
},
@@ -192,460 +266,492 @@
}
},
"@babel/helper-annotate-as-pure": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz",
- "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz",
+ "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==",
"requires": {
- "@babel/types": "^7.8.3"
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz",
- "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz",
+ "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==",
"requires": {
- "@babel/helper-explode-assignable-expression": "^7.8.3",
- "@babel/types": "^7.8.3"
+ "@babel/helper-explode-assignable-expression": "^7.10.4",
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-builder-react-jsx": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz",
- "integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz",
+ "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==",
"requires": {
- "@babel/helper-annotate-as-pure": "^7.8.3",
- "@babel/types": "^7.9.0"
+ "@babel/helper-annotate-as-pure": "^7.10.4",
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-builder-react-jsx-experimental": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz",
- "integrity": "sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ==",
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz",
+ "integrity": "sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg==",
"requires": {
- "@babel/helper-annotate-as-pure": "^7.8.3",
- "@babel/helper-module-imports": "^7.8.3",
- "@babel/types": "^7.9.0"
+ "@babel/helper-annotate-as-pure": "^7.10.4",
+ "@babel/helper-module-imports": "^7.10.4",
+ "@babel/types": "^7.10.5"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
- "@babel/helper-create-class-features-plugin": {
- "version": "7.8.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz",
- "integrity": "sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg==",
+ "@babel/helper-compilation-targets": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz",
+ "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==",
"requires": {
- "@babel/helper-function-name": "^7.8.3",
- "@babel/helper-member-expression-to-functions": "^7.8.3",
- "@babel/helper-optimise-call-expression": "^7.8.3",
- "@babel/helper-plugin-utils": "^7.8.3",
- "@babel/helper-replace-supers": "^7.8.6",
- "@babel/helper-split-export-declaration": "^7.8.3"
+ "@babel/compat-data": "^7.10.4",
+ "browserslist": "^4.12.0",
+ "invariant": "^2.2.4",
+ "levenary": "^1.1.1",
+ "semver": "^5.5.0"
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz",
+ "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==",
+ "requires": {
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/helper-member-expression-to-functions": "^7.10.5",
+ "@babel/helper-optimise-call-expression": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-replace-supers": "^7.10.4",
+ "@babel/helper-split-export-declaration": "^7.10.4"
}
},
"@babel/helper-create-regexp-features-plugin": {
- "version": "7.8.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz",
- "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz",
+ "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==",
"requires": {
- "@babel/helper-annotate-as-pure": "^7.8.3",
- "@babel/helper-regex": "^7.8.3",
+ "@babel/helper-annotate-as-pure": "^7.10.4",
+ "@babel/helper-regex": "^7.10.4",
"regexpu-core": "^4.7.0"
}
},
"@babel/helper-define-map": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz",
- "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==",
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz",
+ "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==",
"requires": {
- "@babel/helper-function-name": "^7.8.3",
- "@babel/types": "^7.8.3",
- "lodash": "^4.17.13"
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/types": "^7.10.5",
+ "lodash": "^4.17.19"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-explode-assignable-expression": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz",
- "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz",
+ "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==",
"requires": {
- "@babel/traverse": "^7.8.3",
- "@babel/types": "^7.8.3"
+ "@babel/traverse": "^7.10.4",
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-function-name": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
- "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz",
+ "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==",
"requires": {
- "@babel/helper-get-function-arity": "^7.8.3",
- "@babel/template": "^7.8.3",
- "@babel/types": "^7.8.3"
+ "@babel/helper-get-function-arity": "^7.10.4",
+ "@babel/template": "^7.10.4",
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-get-function-arity": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
- "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz",
+ "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==",
"requires": {
- "@babel/types": "^7.8.3"
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-hoist-variables": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz",
- "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz",
+ "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==",
"requires": {
- "@babel/types": "^7.8.3"
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-member-expression-to-functions": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz",
- "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz",
+ "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==",
"requires": {
- "@babel/types": "^7.8.3"
+ "@babel/types": "^7.11.0"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-module-imports": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz",
- "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz",
+ "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==",
"requires": {
- "@babel/types": "^7.8.3"
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-module-transforms": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz",
- "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz",
+ "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==",
"requires": {
- "@babel/helper-module-imports": "^7.8.3",
- "@babel/helper-replace-supers": "^7.8.6",
- "@babel/helper-simple-access": "^7.8.3",
- "@babel/helper-split-export-declaration": "^7.8.3",
- "@babel/template": "^7.8.6",
- "@babel/types": "^7.9.0",
- "lodash": "^4.17.13"
+ "@babel/helper-module-imports": "^7.10.4",
+ "@babel/helper-replace-supers": "^7.10.4",
+ "@babel/helper-simple-access": "^7.10.4",
+ "@babel/helper-split-export-declaration": "^7.11.0",
+ "@babel/template": "^7.10.4",
+ "@babel/types": "^7.11.0",
+ "lodash": "^4.17.19"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-optimise-call-expression": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz",
- "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz",
+ "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==",
"requires": {
- "@babel/types": "^7.8.3"
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-plugin-utils": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
- "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ=="
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
+ "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg=="
},
"@babel/helper-regex": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz",
- "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==",
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz",
+ "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==",
"requires": {
- "lodash": "^4.17.13"
+ "lodash": "^4.17.19"
}
},
"@babel/helper-remap-async-to-generator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz",
- "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz",
+ "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==",
"requires": {
- "@babel/helper-annotate-as-pure": "^7.8.3",
- "@babel/helper-wrap-function": "^7.8.3",
- "@babel/template": "^7.8.3",
- "@babel/traverse": "^7.8.3",
- "@babel/types": "^7.8.3"
+ "@babel/helper-annotate-as-pure": "^7.10.4",
+ "@babel/helper-wrap-function": "^7.10.4",
+ "@babel/template": "^7.10.4",
+ "@babel/traverse": "^7.10.4",
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-replace-supers": {
- "version": "7.8.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz",
- "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz",
+ "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==",
"requires": {
- "@babel/helper-member-expression-to-functions": "^7.8.3",
- "@babel/helper-optimise-call-expression": "^7.8.3",
- "@babel/traverse": "^7.8.6",
- "@babel/types": "^7.8.6"
+ "@babel/helper-member-expression-to-functions": "^7.10.4",
+ "@babel/helper-optimise-call-expression": "^7.10.4",
+ "@babel/traverse": "^7.10.4",
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-simple-access": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz",
- "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz",
+ "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==",
"requires": {
- "@babel/template": "^7.8.3",
- "@babel/types": "^7.8.3"
+ "@babel/template": "^7.10.4",
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz",
+ "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==",
+ "requires": {
+ "@babel/types": "^7.11.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
- "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz",
+ "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==",
"requires": {
- "@babel/types": "^7.8.3"
+ "@babel/types": "^7.11.0"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helper-validator-identifier": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz",
- "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw=="
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
+ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw=="
},
"@babel/helper-wrap-function": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz",
- "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz",
+ "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==",
"requires": {
- "@babel/helper-function-name": "^7.8.3",
- "@babel/template": "^7.8.3",
- "@babel/traverse": "^7.8.3",
- "@babel/types": "^7.8.3"
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/template": "^7.10.4",
+ "@babel/traverse": "^7.10.4",
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/helpers": {
- "version": "7.9.2",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz",
- "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz",
+ "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==",
"requires": {
- "@babel/template": "^7.8.3",
- "@babel/traverse": "^7.9.0",
- "@babel/types": "^7.9.0"
+ "@babel/template": "^7.10.4",
+ "@babel/traverse": "^7.10.4",
+ "@babel/types": "^7.10.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/highlight": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz",
- "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
+ "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
+ "@babel/helper-validator-identifier": "^7.10.4",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
},
@@ -684,64 +790,54 @@
}
},
"@babel/parser": {
- "version": "7.9.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
- "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA=="
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz",
+ "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw=="
},
"@babel/plugin-proposal-async-generator-functions": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz",
- "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==",
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz",
+ "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3",
- "@babel/helper-remap-async-to-generator": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-remap-async-to-generator": "^7.10.4",
"@babel/plugin-syntax-async-generators": "^7.8.0"
}
},
"@babel/plugin-proposal-class-properties": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.0.tgz",
- "integrity": "sha512-tufDcFA1Vj+eWvwHN+jvMN6QsV5o+vUlytNKrbMiCeDL0F2j92RURzUsUMWE5EJkLyWxjdUslCsMQa9FWth16A==",
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz",
+ "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==",
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.7.0",
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-create-class-features-plugin": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
}
},
"@babel/plugin-proposal-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz",
+ "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.10.4",
"@babel/plugin-syntax-dynamic-import": "^7.8.0"
- },
- "dependencies": {
- "@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- }
}
},
"@babel/plugin-proposal-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz",
- "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz",
+ "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.10.4",
"@babel/plugin-syntax-json-strings": "^7.8.0"
}
},
"@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.7.4.tgz",
- "integrity": "sha512-TbYHmr1Gl1UC7Vo2HVuj/Naci5BEGNZ0AJhzqD2Vpr6QPFWpUmBRLrIDjedzx7/CShq0bRDS2gI4FIs77VHLVQ==",
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==",
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.7.4"
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
}
},
"@babel/plugin-proposal-numeric-separator": {
@@ -754,39 +850,40 @@
}
},
"@babel/plugin-proposal-object-rest-spread": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz",
- "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==",
+ "version": "7.9.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz",
+ "integrity": "sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A==",
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+ "@babel/plugin-transform-parameters": "^7.9.5"
}
},
"@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz",
+ "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.10.4",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
}
},
"@babel/plugin-proposal-optional-chaining": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.4.tgz",
- "integrity": "sha512-JmgaS+ygAWDR/STPe3/7y0lNlHgS+19qZ9aC06nYLwQ/XB7c0q5Xs+ksFU3EDnp9EiEsO0dnRAOKeyLHTZuW3A==",
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz",
+ "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==",
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-syntax-optional-chaining": "^7.7.4"
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.0"
}
},
"@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.8.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz",
- "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz",
+ "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==",
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.8.8",
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-create-regexp-features-plugin": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-syntax-async-generators": {
@@ -806,11 +903,11 @@
}
},
"@babel/plugin-syntax-dynamic-import": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
- "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "^7.8.0"
}
},
"@babel/plugin-syntax-json-strings": {
@@ -822,11 +919,11 @@
}
},
"@babel/plugin-syntax-jsx": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz",
- "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz",
+ "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-syntax-nullish-coalescing-operator": {
@@ -838,11 +935,11 @@
}
},
"@babel/plugin-syntax-numeric-separator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz",
- "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-syntax-object-rest-spread": {
@@ -870,416 +967,435 @@
}
},
"@babel/plugin-syntax-top-level-await": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz",
- "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz",
+ "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-syntax-typescript": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz",
- "integrity": "sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz",
+ "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-arrow-functions": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz",
- "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz",
+ "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-async-to-generator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz",
- "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz",
+ "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==",
"requires": {
- "@babel/helper-module-imports": "^7.8.3",
- "@babel/helper-plugin-utils": "^7.8.3",
- "@babel/helper-remap-async-to-generator": "^7.8.3"
+ "@babel/helper-module-imports": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-remap-async-to-generator": "^7.10.4"
}
},
"@babel/plugin-transform-block-scoped-functions": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz",
- "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz",
+ "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-block-scoping": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz",
- "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==",
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz",
+ "integrity": "sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3",
- "lodash": "^4.17.13"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-classes": {
- "version": "7.9.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz",
- "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz",
+ "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==",
"requires": {
- "@babel/helper-annotate-as-pure": "^7.8.3",
- "@babel/helper-define-map": "^7.8.3",
- "@babel/helper-function-name": "^7.8.3",
- "@babel/helper-optimise-call-expression": "^7.8.3",
- "@babel/helper-plugin-utils": "^7.8.3",
- "@babel/helper-replace-supers": "^7.8.6",
- "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/helper-annotate-as-pure": "^7.10.4",
+ "@babel/helper-define-map": "^7.10.4",
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/helper-optimise-call-expression": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-replace-supers": "^7.10.4",
+ "@babel/helper-split-export-declaration": "^7.10.4",
"globals": "^11.1.0"
}
},
"@babel/plugin-transform-computed-properties": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz",
- "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz",
+ "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-destructuring": {
- "version": "7.8.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz",
- "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz",
+ "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-dotall-regex": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz",
- "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz",
+ "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==",
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.8.3",
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-create-regexp-features-plugin": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-duplicate-keys": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz",
- "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz",
+ "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-exponentiation-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz",
- "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz",
+ "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==",
"requires": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3",
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-for-of": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz",
- "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz",
+ "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-function-name": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz",
- "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz",
+ "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==",
"requires": {
- "@babel/helper-function-name": "^7.8.3",
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-literals": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz",
- "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz",
+ "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-member-expression-literals": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz",
- "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz",
+ "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-modules-amd": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz",
- "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==",
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz",
+ "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==",
"requires": {
- "@babel/helper-module-transforms": "^7.9.0",
- "@babel/helper-plugin-utils": "^7.8.3",
- "babel-plugin-dynamic-import-node": "^2.3.0"
+ "@babel/helper-module-transforms": "^7.10.5",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
}
},
"@babel/plugin-transform-modules-commonjs": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.0.tgz",
- "integrity": "sha512-KEMyWNNWnjOom8vR/1+d+Ocz/mILZG/eyHHO06OuBQ2aNhxT62fr4y6fGOplRx+CxCSp3IFwesL8WdINfY/3kg==",
+ "version": "7.9.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz",
+ "integrity": "sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ==",
"requires": {
- "@babel/helper-module-transforms": "^7.7.0",
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-simple-access": "^7.7.0",
- "babel-plugin-dynamic-import-node": "^2.3.0"
+ "@babel/helper-module-transforms": "^7.9.0",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-simple-access": "^7.8.3",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
}
},
"@babel/plugin-transform-modules-systemjs": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz",
- "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==",
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz",
+ "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==",
"requires": {
- "@babel/helper-hoist-variables": "^7.8.3",
- "@babel/helper-module-transforms": "^7.9.0",
- "@babel/helper-plugin-utils": "^7.8.3",
- "babel-plugin-dynamic-import-node": "^2.3.0"
+ "@babel/helper-hoist-variables": "^7.10.4",
+ "@babel/helper-module-transforms": "^7.10.5",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
}
},
"@babel/plugin-transform-modules-umd": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz",
- "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz",
+ "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==",
"requires": {
- "@babel/helper-module-transforms": "^7.9.0",
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-module-transforms": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz",
- "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz",
+ "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==",
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.8.3"
+ "@babel/helper-create-regexp-features-plugin": "^7.10.4"
}
},
"@babel/plugin-transform-new-target": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz",
- "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz",
+ "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-object-super": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz",
- "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz",
+ "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3",
- "@babel/helper-replace-supers": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-replace-supers": "^7.10.4"
}
},
"@babel/plugin-transform-parameters": {
- "version": "7.9.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz",
- "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==",
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz",
+ "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==",
"requires": {
- "@babel/helper-get-function-arity": "^7.8.3",
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-get-function-arity": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-property-literals": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz",
- "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz",
+ "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-react-display-name": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz",
- "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz",
+ "integrity": "sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-react-jsx": {
- "version": "7.9.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz",
- "integrity": "sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz",
+ "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==",
"requires": {
- "@babel/helper-builder-react-jsx": "^7.9.0",
- "@babel/helper-builder-react-jsx-experimental": "^7.9.0",
- "@babel/helper-plugin-utils": "^7.8.3",
- "@babel/plugin-syntax-jsx": "^7.8.3"
+ "@babel/helper-builder-react-jsx": "^7.10.4",
+ "@babel/helper-builder-react-jsx-experimental": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-jsx": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-development": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz",
+ "integrity": "sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ==",
+ "requires": {
+ "@babel/helper-builder-react-jsx-experimental": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-jsx": "^7.10.4"
}
},
"@babel/plugin-transform-react-jsx-self": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz",
- "integrity": "sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz",
+ "integrity": "sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3",
- "@babel/plugin-syntax-jsx": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-jsx": "^7.10.4"
}
},
"@babel/plugin-transform-react-jsx-source": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz",
- "integrity": "sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw==",
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz",
+ "integrity": "sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3",
- "@babel/plugin-syntax-jsx": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-jsx": "^7.10.4"
}
},
"@babel/plugin-transform-regenerator": {
- "version": "7.8.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz",
- "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz",
+ "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==",
"requires": {
"regenerator-transform": "^0.14.2"
}
},
"@babel/plugin-transform-reserved-words": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz",
- "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz",
+ "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-runtime": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz",
- "integrity": "sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA==",
+ "version": "7.9.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz",
+ "integrity": "sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w==",
"requires": {
- "@babel/helper-module-imports": "^7.0.0",
- "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
"resolve": "^1.8.1",
"semver": "^5.5.1"
}
},
"@babel/plugin-transform-shorthand-properties": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz",
- "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz",
+ "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz",
- "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz",
+ "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0"
}
},
"@babel/plugin-transform-sticky-regex": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz",
- "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz",
+ "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3",
- "@babel/helper-regex": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-regex": "^7.10.4"
}
},
"@babel/plugin-transform-template-literals": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz",
- "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==",
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz",
+ "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==",
"requires": {
- "@babel/helper-annotate-as-pure": "^7.8.3",
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-annotate-as-pure": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-typeof-symbol": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz",
- "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz",
+ "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==",
"requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/plugin-transform-typescript": {
- "version": "7.9.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.4.tgz",
- "integrity": "sha512-yeWeUkKx2auDbSxRe8MusAG+n4m9BFY/v+lPjmQDgOFX5qnySkUY5oXzkp6FwPdsYqnKay6lorXYdC0n3bZO7w==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz",
+ "integrity": "sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==",
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.8.3",
- "@babel/helper-plugin-utils": "^7.8.3",
- "@babel/plugin-syntax-typescript": "^7.8.3"
+ "@babel/helper-create-class-features-plugin": "^7.10.5",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-typescript": "^7.10.4"
}
},
"@babel/plugin-transform-unicode-regex": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz",
- "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz",
+ "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==",
"requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.8.3",
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-create-regexp-features-plugin": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
}
},
"@babel/preset-env": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.1.tgz",
- "integrity": "sha512-/93SWhi3PxcVTDpSqC+Dp4YxUu3qZ4m7I76k0w73wYfn7bGVuRIO4QUz95aJksbS+AD1/mT1Ie7rbkT0wSplaA==",
+ "version": "7.9.6",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.6.tgz",
+ "integrity": "sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ==",
"requires": {
- "@babel/helper-module-imports": "^7.7.0",
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-proposal-async-generator-functions": "^7.7.0",
- "@babel/plugin-proposal-dynamic-import": "^7.7.0",
- "@babel/plugin-proposal-json-strings": "^7.2.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.6.2",
- "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.7.0",
- "@babel/plugin-syntax-async-generators": "^7.2.0",
- "@babel/plugin-syntax-dynamic-import": "^7.2.0",
- "@babel/plugin-syntax-json-strings": "^7.2.0",
- "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
- "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
- "@babel/plugin-syntax-top-level-await": "^7.7.0",
- "@babel/plugin-transform-arrow-functions": "^7.2.0",
- "@babel/plugin-transform-async-to-generator": "^7.7.0",
- "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
- "@babel/plugin-transform-block-scoping": "^7.6.3",
- "@babel/plugin-transform-classes": "^7.7.0",
- "@babel/plugin-transform-computed-properties": "^7.2.0",
- "@babel/plugin-transform-destructuring": "^7.6.0",
- "@babel/plugin-transform-dotall-regex": "^7.7.0",
- "@babel/plugin-transform-duplicate-keys": "^7.5.0",
- "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
- "@babel/plugin-transform-for-of": "^7.4.4",
- "@babel/plugin-transform-function-name": "^7.7.0",
- "@babel/plugin-transform-literals": "^7.2.0",
- "@babel/plugin-transform-member-expression-literals": "^7.2.0",
- "@babel/plugin-transform-modules-amd": "^7.5.0",
- "@babel/plugin-transform-modules-commonjs": "^7.7.0",
- "@babel/plugin-transform-modules-systemjs": "^7.7.0",
- "@babel/plugin-transform-modules-umd": "^7.7.0",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.0",
- "@babel/plugin-transform-new-target": "^7.4.4",
- "@babel/plugin-transform-object-super": "^7.5.5",
- "@babel/plugin-transform-parameters": "^7.4.4",
- "@babel/plugin-transform-property-literals": "^7.2.0",
- "@babel/plugin-transform-regenerator": "^7.7.0",
- "@babel/plugin-transform-reserved-words": "^7.2.0",
- "@babel/plugin-transform-shorthand-properties": "^7.2.0",
- "@babel/plugin-transform-spread": "^7.6.2",
- "@babel/plugin-transform-sticky-regex": "^7.2.0",
- "@babel/plugin-transform-template-literals": "^7.4.4",
- "@babel/plugin-transform-typeof-symbol": "^7.2.0",
- "@babel/plugin-transform-unicode-regex": "^7.7.0",
- "@babel/types": "^7.7.1",
- "browserslist": "^4.6.0",
- "core-js-compat": "^3.1.1",
+ "@babel/compat-data": "^7.9.6",
+ "@babel/helper-compilation-targets": "^7.9.6",
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-proposal-async-generator-functions": "^7.8.3",
+ "@babel/plugin-proposal-dynamic-import": "^7.8.3",
+ "@babel/plugin-proposal-json-strings": "^7.8.3",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-proposal-numeric-separator": "^7.8.3",
+ "@babel/plugin-proposal-object-rest-spread": "^7.9.6",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-proposal-optional-chaining": "^7.9.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.8.3",
+ "@babel/plugin-syntax-async-generators": "^7.8.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+ "@babel/plugin-syntax-json-strings": "^7.8.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
+ "@babel/plugin-syntax-numeric-separator": "^7.8.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.0",
+ "@babel/plugin-syntax-top-level-await": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.8.3",
+ "@babel/plugin-transform-async-to-generator": "^7.8.3",
+ "@babel/plugin-transform-block-scoped-functions": "^7.8.3",
+ "@babel/plugin-transform-block-scoping": "^7.8.3",
+ "@babel/plugin-transform-classes": "^7.9.5",
+ "@babel/plugin-transform-computed-properties": "^7.8.3",
+ "@babel/plugin-transform-destructuring": "^7.9.5",
+ "@babel/plugin-transform-dotall-regex": "^7.8.3",
+ "@babel/plugin-transform-duplicate-keys": "^7.8.3",
+ "@babel/plugin-transform-exponentiation-operator": "^7.8.3",
+ "@babel/plugin-transform-for-of": "^7.9.0",
+ "@babel/plugin-transform-function-name": "^7.8.3",
+ "@babel/plugin-transform-literals": "^7.8.3",
+ "@babel/plugin-transform-member-expression-literals": "^7.8.3",
+ "@babel/plugin-transform-modules-amd": "^7.9.6",
+ "@babel/plugin-transform-modules-commonjs": "^7.9.6",
+ "@babel/plugin-transform-modules-systemjs": "^7.9.6",
+ "@babel/plugin-transform-modules-umd": "^7.9.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3",
+ "@babel/plugin-transform-new-target": "^7.8.3",
+ "@babel/plugin-transform-object-super": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.9.5",
+ "@babel/plugin-transform-property-literals": "^7.8.3",
+ "@babel/plugin-transform-regenerator": "^7.8.7",
+ "@babel/plugin-transform-reserved-words": "^7.8.3",
+ "@babel/plugin-transform-shorthand-properties": "^7.8.3",
+ "@babel/plugin-transform-spread": "^7.8.3",
+ "@babel/plugin-transform-sticky-regex": "^7.8.3",
+ "@babel/plugin-transform-template-literals": "^7.8.3",
+ "@babel/plugin-transform-typeof-symbol": "^7.8.4",
+ "@babel/plugin-transform-unicode-regex": "^7.8.3",
+ "@babel/preset-modules": "^0.1.3",
+ "@babel/types": "^7.9.6",
+ "browserslist": "^4.11.1",
+ "core-js-compat": "^3.6.2",
"invariant": "^2.2.2",
- "js-levenshtein": "^1.1.3",
+ "levenary": "^1.1.1",
"semver": "^5.5.0"
}
},
"@babel/preset-modules": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.1.tgz",
- "integrity": "sha512-x/kt2aAZlgcFnP3P851fkkb2s4FmTiyGic58pkWMaRK9Am3u9KkH1ttHGjwlsKu7/TVJsLEBXZnjUxqsid3tww==",
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz",
+ "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==",
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
@@ -1289,24 +1405,25 @@
}
},
"@babel/preset-react": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.7.0.tgz",
- "integrity": "sha512-IXXgSUYBPHUGhUkH+89TR6faMcBtuMW0h5OHbMuVbL3/5wK2g6a2M2BBpkLa+Kw0sAHiZ9dNVgqJMDP/O4GRBA==",
+ "version": "7.9.4",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.4.tgz",
+ "integrity": "sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ==",
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-transform-react-display-name": "^7.0.0",
- "@babel/plugin-transform-react-jsx": "^7.7.0",
- "@babel/plugin-transform-react-jsx-self": "^7.0.0",
- "@babel/plugin-transform-react-jsx-source": "^7.0.0"
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-transform-react-display-name": "^7.8.3",
+ "@babel/plugin-transform-react-jsx": "^7.9.4",
+ "@babel/plugin-transform-react-jsx-development": "^7.9.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.9.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.9.0"
}
},
"@babel/preset-typescript": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.7.2.tgz",
- "integrity": "sha512-1B4HthAelaLGfNRyrWqJtBEjXX1ulThCrLQ5B2VOtEAznWFIFXFJahgXImqppy66lx/Oh+cOSCQdJzZqh2Jh5g==",
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz",
+ "integrity": "sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg==",
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-transform-typescript": "^7.7.2"
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-transform-typescript": "^7.9.0"
}
},
"@babel/runtime": {
@@ -1318,50 +1435,66 @@
}
},
"@babel/template": {
- "version": "7.8.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
- "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
+ "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
"requires": {
- "@babel/code-frame": "^7.8.3",
- "@babel/parser": "^7.8.6",
- "@babel/types": "^7.8.6"
+ "@babel/code-frame": "^7.10.4",
+ "@babel/parser": "^7.10.4",
+ "@babel/types": "^7.10.4"
},
"dependencies": {
- "@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "@babel/types": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/traverse": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz",
- "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz",
+ "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==",
"requires": {
- "@babel/code-frame": "^7.8.3",
- "@babel/generator": "^7.9.0",
- "@babel/helper-function-name": "^7.8.3",
- "@babel/helper-split-export-declaration": "^7.8.3",
- "@babel/parser": "^7.9.0",
- "@babel/types": "^7.9.0",
+ "@babel/code-frame": "^7.10.4",
+ "@babel/generator": "^7.11.0",
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/helper-split-export-declaration": "^7.11.0",
+ "@babel/parser": "^7.11.0",
+ "@babel/types": "^7.11.0",
"debug": "^4.1.0",
"globals": "^11.1.0",
- "lodash": "^4.17.13"
+ "lodash": "^4.17.19"
},
"dependencies": {
- "@babel/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
- "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+ "@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "lodash": "^4.17.13",
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "@babel/types": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0"
}
},
@@ -1381,20 +1514,15 @@
}
},
"@babel/types": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
- "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
+ "version": "7.9.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz",
+ "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==",
"requires": {
- "esutils": "^2.0.2",
+ "@babel/helper-validator-identifier": "^7.9.5",
"lodash": "^4.17.13",
"to-fast-properties": "^2.0.0"
}
},
- "@csstools/convert-colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz",
- "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw=="
- },
"@fortawesome/fontawesome-common-types": {
"version": "0.2.28",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.28.tgz",
@@ -1445,10 +1573,99 @@
"resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz",
"integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw=="
},
- "@next/polyfill-nomodule": {
- "version": "9.3.2",
- "resolved": "https://registry.npmjs.org/@next/polyfill-nomodule/-/polyfill-nomodule-9.3.2.tgz",
- "integrity": "sha512-kEa7v3trZmW6iWeTJrhg+ZsE9njae7mLkgyZB5M1r975JHr5PQ69B5aX7hrEAj7aAJYvCKETgAczx4gGR8MOzQ=="
+ "@next/react-dev-overlay": {
+ "version": "9.5.1",
+ "resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-9.5.1.tgz",
+ "integrity": "sha512-0zQlUocdPWBCFHbfuXL+dg7Rn9YWKrnlJjodNGQsI6CLzXRVa1W72H8Fh6bh8F9pO7ERMiQpnpstMSXPbvFR1Q==",
+ "requires": {
+ "@babel/code-frame": "7.8.3",
+ "ally.js": "1.4.1",
+ "anser": "1.4.9",
+ "chalk": "4.0.0",
+ "classnames": "2.2.6",
+ "data-uri-to-buffer": "3.0.0",
+ "shell-quote": "1.7.2",
+ "source-map": "0.8.0-beta.0",
+ "stacktrace-parser": "0.1.10",
+ "strip-ansi": "6.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
+ },
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz",
+ "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==",
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ },
+ "source-map": {
+ "version": "0.8.0-beta.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
+ "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
+ "requires": {
+ "whatwg-url": "^7.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+ "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@next/react-refresh-utils": {
+ "version": "9.5.1",
+ "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-9.5.1.tgz",
+ "integrity": "sha512-A19z/E6f08RXfBRc2STQ+5qo7iSPif7mNcww9dZAVli3Idu4umGP5dbpL71Hz1vyRs1eMUEylXTpXsY2WzY07g=="
+ },
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
},
"@types/cookie": {
"version": "0.3.3",
@@ -1460,166 +1677,175 @@
"resolved": "https://registry.npmjs.org/@types/domhandler/-/domhandler-2.4.1.tgz",
"integrity": "sha512-cfBw6q6tT5sa1gSPFSRKzF/xxYrrmeiut7E0TxNBObiLSBTuFEHibcfEe3waQPEDbqBsq+ql/TOniw65EyDFMA=="
},
+ "@types/json-schema": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz",
+ "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ=="
+ },
"@types/object-assign": {
"version": "4.0.30",
"resolved": "https://registry.npmjs.org/@types/object-assign/-/object-assign-4.0.30.tgz",
"integrity": "sha1-iUk3HVqZ9Dge4PHfCpt6GH4H5lI="
},
+ "@types/q": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
+ "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
+ },
"@webassemblyjs/ast": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
- "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
+ "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
"requires": {
- "@webassemblyjs/helper-module-context": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/wast-parser": "1.8.5"
+ "@webassemblyjs/helper-module-context": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/wast-parser": "1.9.0"
}
},
"@webassemblyjs/floating-point-hex-parser": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
- "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ=="
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
+ "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA=="
},
"@webassemblyjs/helper-api-error": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
- "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA=="
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
+ "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw=="
},
"@webassemblyjs/helper-buffer": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
- "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q=="
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
+ "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA=="
},
"@webassemblyjs/helper-code-frame": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
- "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
+ "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
"requires": {
- "@webassemblyjs/wast-printer": "1.8.5"
+ "@webassemblyjs/wast-printer": "1.9.0"
}
},
"@webassemblyjs/helper-fsm": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
- "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow=="
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
+ "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw=="
},
"@webassemblyjs/helper-module-context": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
- "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
+ "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "mamacro": "^0.0.3"
+ "@webassemblyjs/ast": "1.9.0"
}
},
"@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
- "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ=="
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
+ "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw=="
},
"@webassemblyjs/helper-wasm-section": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
- "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
+ "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-buffer": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/wasm-gen": "1.8.5"
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0"
}
},
"@webassemblyjs/ieee754": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
- "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
+ "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
"requires": {
"@xtuc/ieee754": "^1.2.0"
}
},
"@webassemblyjs/leb128": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
- "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
+ "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
"requires": {
"@xtuc/long": "4.2.2"
}
},
"@webassemblyjs/utf8": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
- "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw=="
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
+ "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w=="
},
"@webassemblyjs/wasm-edit": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
- "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
+ "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-buffer": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/helper-wasm-section": "1.8.5",
- "@webassemblyjs/wasm-gen": "1.8.5",
- "@webassemblyjs/wasm-opt": "1.8.5",
- "@webassemblyjs/wasm-parser": "1.8.5",
- "@webassemblyjs/wast-printer": "1.8.5"
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/helper-wasm-section": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0",
+ "@webassemblyjs/wasm-opt": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0",
+ "@webassemblyjs/wast-printer": "1.9.0"
}
},
"@webassemblyjs/wasm-gen": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
- "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
+ "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/ieee754": "1.8.5",
- "@webassemblyjs/leb128": "1.8.5",
- "@webassemblyjs/utf8": "1.8.5"
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/ieee754": "1.9.0",
+ "@webassemblyjs/leb128": "1.9.0",
+ "@webassemblyjs/utf8": "1.9.0"
}
},
"@webassemblyjs/wasm-opt": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
- "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
+ "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-buffer": "1.8.5",
- "@webassemblyjs/wasm-gen": "1.8.5",
- "@webassemblyjs/wasm-parser": "1.8.5"
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0"
}
},
"@webassemblyjs/wasm-parser": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
- "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
+ "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-api-error": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/ieee754": "1.8.5",
- "@webassemblyjs/leb128": "1.8.5",
- "@webassemblyjs/utf8": "1.8.5"
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-api-error": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/ieee754": "1.9.0",
+ "@webassemblyjs/leb128": "1.9.0",
+ "@webassemblyjs/utf8": "1.9.0"
}
},
"@webassemblyjs/wast-parser": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
- "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
+ "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/floating-point-hex-parser": "1.8.5",
- "@webassemblyjs/helper-api-error": "1.8.5",
- "@webassemblyjs/helper-code-frame": "1.8.5",
- "@webassemblyjs/helper-fsm": "1.8.5",
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+ "@webassemblyjs/helper-api-error": "1.9.0",
+ "@webassemblyjs/helper-code-frame": "1.9.0",
+ "@webassemblyjs/helper-fsm": "1.9.0",
"@xtuc/long": "4.2.2"
}
},
"@webassemblyjs/wast-printer": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
- "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
+ "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/wast-parser": "1.8.5",
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/wast-parser": "1.9.0",
"@xtuc/long": "4.2.2"
}
},
@@ -1646,6 +1872,14 @@
"postcss-loader": "3.0.0"
}
},
+ "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",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
@@ -1660,6 +1894,12 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
"integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA=="
},
+ "acorn-jsx": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz",
+ "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==",
+ "dev": true
+ },
"adjust-sourcemap-loader": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz",
@@ -1694,6 +1934,15 @@
}
}
},
+ "aggregate-error": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz",
+ "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==",
+ "requires": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ }
+ },
"ajv": {
"version": "6.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz",
@@ -1715,32 +1964,41 @@
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
"integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ=="
},
- "amphtml-validator": {
- "version": "1.0.30",
- "resolved": "https://registry.npmjs.org/amphtml-validator/-/amphtml-validator-1.0.30.tgz",
- "integrity": "sha512-CaEm2ivIi4M4QTiFnCE9t4MRgawCf88iAV/+VsS0zEw6T4VBU6zoXcgn4L+dt6/WZ/NYxKpc38duSoRLqZJhNQ==",
+ "ally.js": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/ally.js/-/ally.js-1.4.1.tgz",
+ "integrity": "sha1-n7fmuljvrE7pExyymqnuO1QLzx4=",
"requires": {
- "colors": "1.2.5",
- "commander": "2.15.1",
- "promise": "8.0.1"
- },
- "dependencies": {
- "commander": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
- "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag=="
- }
+ "css.escape": "^1.5.0",
+ "platform": "1.3.3"
}
},
- "ansi-colors": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
- "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA=="
+ "alphanum-sort": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM="
},
- "ansi-html": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
- "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4="
+ "anser": {
+ "version": "1.4.9",
+ "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.9.tgz",
+ "integrity": "sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA=="
+ },
+ "ansi-escapes": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
+ "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.11.0"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
+ "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
+ "dev": true
+ }
+ }
},
"ansi-regex": {
"version": "2.1.1",
@@ -1753,12 +2011,22 @@
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
"anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
"requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
}
},
"aproba": {
@@ -1799,29 +2067,22 @@
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "array-includes": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz",
+ "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==",
+ "dev": true,
"requires": {
- "array-uniq": "^1.0.1"
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0",
+ "is-string": "^1.0.5"
}
},
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
- },
"array-unique": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
},
- "asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
- },
"asn1.js": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
@@ -1830,6 +2091,13 @@
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw=="
+ }
}
},
"assert": {
@@ -1850,132 +2118,22 @@
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz",
"integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA=="
},
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
"async-each": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
"integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ=="
},
- "async-retry": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.2.3.tgz",
- "integrity": "sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==",
- "requires": {
- "retry": "0.12.0"
- }
- },
- "async-sema": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.0.0.tgz",
- "integrity": "sha512-zyCMBDl4m71feawrxYcVbHxv/UUkqm4nKJiLu3+l9lfiQha6jQ/9dxhrXLnzzBXVFqCTDwiUkZOz9XFbdEGQsg=="
- },
"atob": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
},
- "autodll-webpack-plugin": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/autodll-webpack-plugin/-/autodll-webpack-plugin-0.4.2.tgz",
- "integrity": "sha512-JLrV3ErBNKVkmhi0celM6PJkgYEtztFnXwsNBApjinpVHtIP3g/m2ZZSOvsAe7FoByfJzDhpOXBKFbH3k2UNjw==",
- "requires": {
- "bluebird": "^3.5.0",
- "del": "^3.0.0",
- "find-cache-dir": "^1.0.0",
- "lodash": "^4.17.4",
- "make-dir": "^1.0.0",
- "memory-fs": "^0.4.1",
- "read-pkg": "^2.0.0",
- "tapable": "^1.0.0",
- "webpack-merge": "^4.1.0",
- "webpack-sources": "^1.0.1"
- }
- },
- "autoprefixer": {
- "version": "9.7.5",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.5.tgz",
- "integrity": "sha512-URo6Zvt7VYifomeAfJlMFnYDhow1rk2bufwkbamPEAtQFcL11moLk4PnR7n9vlu7M+BkXAZkHFA0mIcY7tjQFg==",
- "requires": {
- "browserslist": "^4.11.0",
- "caniuse-lite": "^1.0.30001036",
- "chalk": "^2.4.2",
- "normalize-range": "^0.1.2",
- "num2fraction": "^1.2.2",
- "postcss": "^7.0.27",
- "postcss-value-parser": "^4.0.3"
- },
- "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"
- }
- },
- "browserslist": {
- "version": "4.11.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz",
- "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==",
- "requires": {
- "caniuse-lite": "^1.0.30001038",
- "electron-to-chromium": "^1.3.390",
- "node-releases": "^1.1.53",
- "pkg-up": "^2.0.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"
- }
- },
- "pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
- "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
- "requires": {
- "find-up": "^2.1.0"
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "dependencies": {
- "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"
- }
- }
- }
- },
- "postcss-value-parser": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz",
- "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg=="
- },
- "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"
- }
- }
- }
- },
"axios": {
"version": "0.19.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
@@ -1994,98 +2152,10 @@
"js-tokens": "^3.0.2"
}
},
- "babel-core": {
- "version": "7.0.0-bridge.0",
- "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
- "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg=="
- },
- "babel-loader": {
- "version": "8.0.6",
- "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz",
- "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==",
- "requires": {
- "find-cache-dir": "^2.0.0",
- "loader-utils": "^1.0.2",
- "mkdirp": "^0.5.1",
- "pify": "^4.0.1"
- },
- "dependencies": {
- "find-cache-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
- "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^2.0.0",
- "pkg-dir": "^3.0.0"
- }
- },
- "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"
- }
- },
- "make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "requires": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- }
- },
- "p-limit": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
- "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
- "requires": {
- "p-try": "^2.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"
- }
- },
- "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=="
- },
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
- },
- "pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
- "requires": {
- "find-up": "^3.0.0"
- }
- }
- }
- },
"babel-plugin-dynamic-import-node": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
- "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+ "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
"requires": {
"object.assign": "^4.1.0"
}
@@ -2180,9 +2250,18 @@
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
},
"binary-extensions": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
- "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow=="
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
+ },
+ "bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "optional": true,
+ "requires": {
+ "file-uri-to-path": "1.0.0"
+ }
},
"bluebird": {
"version": "3.7.2",
@@ -2190,9 +2269,9 @@
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
},
"bn.js": {
- "version": "4.11.8",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
- "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA=="
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz",
+ "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA=="
},
"body-parser": {
"version": "1.19.0",
@@ -2226,6 +2305,11 @@
}
}
},
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -2236,11 +2320,30 @@
}
},
"braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
"requires": {
- "fill-range": "^7.0.1"
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
}
},
"brorand": {
@@ -2289,20 +2392,29 @@
"requires": {
"bn.js": "^4.1.0",
"randombytes": "^2.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw=="
+ }
}
},
"browserify-sign": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
- "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz",
+ "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==",
"requires": {
- "bn.js": "^4.1.1",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.2",
- "elliptic": "^6.0.0",
- "inherits": "^2.0.1",
- "parse-asn1": "^5.0.0"
+ "bn.js": "^5.1.1",
+ "browserify-rsa": "^4.0.1",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.2",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.5",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
}
},
"browserify-zlib": {
@@ -2314,40 +2426,30 @@
}
},
"browserslist": {
- "version": "4.8.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.3.tgz",
- "integrity": "sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg==",
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz",
+ "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==",
"requires": {
- "caniuse-lite": "^1.0.30001017",
- "electron-to-chromium": "^1.3.322",
- "node-releases": "^1.1.44"
+ "caniuse-lite": "^1.0.30001093",
+ "electron-to-chromium": "^1.3.488",
+ "escalade": "^3.0.1",
+ "node-releases": "^1.1.58"
}
},
"buffer": {
- "version": "4.9.2",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
- "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
+ "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
"requires": {
"base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
+ "ieee754": "^1.1.4"
}
},
- "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=="
},
- "buffer-json": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz",
- "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw=="
- },
"buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
@@ -2358,31 +2460,29 @@
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
},
- "bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
- },
"cacache": {
- "version": "12.0.4",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
- "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz",
+ "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==",
"requires": {
- "bluebird": "^3.5.5",
- "chownr": "^1.1.1",
+ "chownr": "^1.1.2",
"figgy-pudding": "^3.5.1",
+ "fs-minipass": "^2.0.0",
"glob": "^7.1.4",
- "graceful-fs": "^4.1.15",
- "infer-owner": "^1.0.3",
+ "graceful-fs": "^4.2.2",
+ "infer-owner": "^1.0.4",
"lru-cache": "^5.1.1",
- "mississippi": "^3.0.0",
+ "minipass": "^3.0.0",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.2",
"mkdirp": "^0.5.1",
"move-concurrently": "^1.0.1",
+ "p-map": "^3.0.0",
"promise-inflight": "^1.0.1",
- "rimraf": "^2.6.3",
- "ssri": "^6.0.1",
- "unique-filename": "^1.1.1",
- "y18n": "^4.0.0"
+ "rimraf": "^2.7.1",
+ "ssri": "^7.0.0",
+ "unique-filename": "^1.1.1"
}
},
"cache-base": {
@@ -2401,104 +2501,6 @@
"unset-value": "^1.0.0"
}
},
- "cache-loader": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz",
- "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==",
- "requires": {
- "buffer-json": "^2.0.0",
- "find-cache-dir": "^3.0.0",
- "loader-utils": "^1.2.3",
- "mkdirp": "^0.5.1",
- "neo-async": "^2.6.1",
- "schema-utils": "^2.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- },
- "make-dir": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
- "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "p-limit": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
- "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
- "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=="
- },
- "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=="
- },
- "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"
- }
- },
- "schema-utils": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
- "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
- "requires": {
- "ajv": "^6.12.0",
- "ajv-keywords": "^3.4.1"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- }
- }
- },
"caller-callsite": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
@@ -2525,10 +2527,21 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
+ "caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
+ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-lite": "^1.0.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.uniq": "^4.5.0"
+ }
+ },
"caniuse-lite": {
- "version": "1.0.30001038",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz",
- "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ=="
+ "version": "1.0.30001109",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001109.tgz",
+ "integrity": "sha512-4JIXRodHzdS3HdK8nSgIqXYLExOvG+D2/EenSvcub2Kp3QEADjo2v2oUn5g0n0D+UNwG9BtwKOyGcSq2qvQXvQ=="
},
"chalk": {
"version": "1.1.3",
@@ -2557,19 +2570,29 @@
"resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
"integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg=="
},
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
"chokidar": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz",
- "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==",
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
"requires": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "fsevents": "~2.1.2",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.3.0"
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
}
},
"chownr": {
@@ -2585,11 +2608,6 @@
"tslib": "^1.9.0"
}
},
- "ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
- },
"cipher-base": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
@@ -2625,18 +2643,25 @@
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
"integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
},
+ "clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="
+ },
"cli-cursor": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
"requires": {
- "restore-cursor": "^2.0.0"
+ "restore-cursor": "^3.1.0"
}
},
- "cli-spinners": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz",
- "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ=="
+ "cli-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
+ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+ "dev": true
},
"clipboard": {
"version": "2.0.6",
@@ -2649,11 +2674,6 @@
"tiny-emitter": "^2.0.0"
}
},
- "clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
- },
"clone-deep": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
@@ -2664,6 +2684,44 @@
"shallow-clone": "^3.0.0"
}
},
+ "coa": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
+ "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+ "requires": {
+ "@types/q": "^1.5.1",
+ "chalk": "^2.4.1",
+ "q": "^1.1.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
"collapse-white-space": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz",
@@ -2678,6 +2736,15 @@
"object-visit": "^1.0.0"
}
},
+ "color": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz",
+ "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==",
+ "requires": {
+ "color-convert": "^1.9.1",
+ "color-string": "^1.5.2"
+ }
+ },
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -2691,10 +2758,14 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
- "colors": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz",
- "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg=="
+ "color-string": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
+ "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
},
"comma-separated-tokens": {
"version": "1.0.8",
@@ -2724,43 +2795,6 @@
"arity-n": "^1.0.4"
}
},
- "compressible": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
- "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
- "requires": {
- "mime-db": ">= 1.43.0 < 2"
- }
- },
- "compression": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
- "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
- "requires": {
- "accepts": "~1.3.5",
- "bytes": "3.0.0",
- "compressible": "~2.0.16",
- "debug": "2.6.9",
- "on-headers": "~1.0.2",
- "safe-buffer": "5.1.2",
- "vary": "~1.1.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "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=="
- }
- }
- },
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -2806,35 +2840,6 @@
}
}
},
- "conf": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conf/-/conf-5.0.0.tgz",
- "integrity": "sha512-lRNyt+iRD4plYaOSVTxu1zPWpaH0EOxgFIR1l3mpC/DGZ7XzhoGFMKmbl54LAgXcSu6knqWgOwdINkqm58N85A==",
- "requires": {
- "ajv": "^6.10.0",
- "dot-prop": "^5.0.0",
- "env-paths": "^2.2.0",
- "json-schema-typed": "^7.0.0",
- "make-dir": "^3.0.0",
- "pkg-up": "^3.0.1",
- "write-file-atomic": "^3.0.0"
- },
- "dependencies": {
- "make-dir": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
- "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- }
- }
- },
"console-browserify": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
@@ -2845,6 +2850,12 @@
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
"integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U="
},
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
"content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
@@ -2909,11 +2920,11 @@
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
},
"core-js-compat": {
- "version": "3.6.4",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz",
- "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==",
+ "version": "3.6.5",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz",
+ "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==",
"requires": {
- "browserslist": "^4.8.3",
+ "browserslist": "^4.8.5",
"semver": "7.0.0"
},
"dependencies": {
@@ -2947,6 +2958,13 @@
"requires": {
"bn.js": "^4.1.0",
"elliptic": "^6.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw=="
+ }
}
},
"create-hash": {
@@ -2993,12 +3011,11 @@
}
},
"cross-fetch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.4.tgz",
- "integrity": "sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.5.tgz",
+ "integrity": "sha512-FFLcLtraisj5eteosnX1gf01qYDCOc4fDy0+euOt8Kn9YBY2NtXL/pCoYPavw24NIQkQqm5ZOLsGD5Zzj0gyew==",
"requires": {
- "node-fetch": "2.6.0",
- "whatwg-fetch": "3.0.0"
+ "node-fetch": "2.6.0"
}
},
"cross-spawn": {
@@ -3041,69 +3058,18 @@
"urix": "^0.1.0"
}
},
- "css-blank-pseudo": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz",
- "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==",
- "requires": {
- "postcss": "^7.0.5"
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
+ "css-color-names": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
+ "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA="
},
- "css-has-pseudo": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz",
- "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==",
+ "css-declaration-sorter": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
+ "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
"requires": {
- "postcss": "^7.0.6",
- "postcss-selector-parser": "^5.0.0-rc.4"
+ "postcss": "^7.0.1",
+ "timsort": "^0.3.0"
},
"dependencies": {
"ansi-styles": {
@@ -3134,31 +3100,16 @@
}
}
},
- "cssesc": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
- "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg=="
- },
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
"supports-color": "^6.1.0"
}
},
- "postcss-selector-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
- "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
- "requires": {
- "cssesc": "^2.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
- },
"supports-color": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
@@ -3188,12 +3139,65 @@
"source-list-map": "^2.0.0"
}
},
- "css-prefers-color-scheme": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz",
- "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==",
+ "css-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
+ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
"requires": {
- "postcss": "^7.0.5"
+ "boolbase": "^1.0.0",
+ "css-what": "^3.2.1",
+ "domutils": "^1.7.0",
+ "nth-check": "^1.0.2"
+ }
+ },
+ "css-select-base-adapter": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
+ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w=="
+ },
+ "css-selector-tokenizer": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz",
+ "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==",
+ "requires": {
+ "cssesc": "^3.0.0",
+ "fastparse": "^1.1.2",
+ "regexpu-core": "^4.6.0"
+ }
+ },
+ "css-tree": {
+ "version": "1.0.0-alpha.37",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
+ "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
+ "requires": {
+ "mdn-data": "2.0.4",
+ "source-map": "^0.6.1"
+ }
+ },
+ "css-what": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz",
+ "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg=="
+ },
+ "css.escape": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
+ "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s="
+ },
+ "cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
+ },
+ "cssnano": {
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
+ "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
+ "requires": {
+ "cosmiconfig": "^5.0.0",
+ "cssnano-preset-default": "^4.0.7",
+ "is-resolvable": "^1.0.0",
+ "postcss": "^7.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -3225,9 +3229,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -3244,32 +3248,41 @@
}
}
},
- "css-selector-tokenizer": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz",
- "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==",
+ "cssnano-preset-default": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz",
+ "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==",
"requires": {
- "cssesc": "^3.0.0",
- "fastparse": "^1.1.2",
- "regexpu-core": "^4.6.0"
- }
- },
- "cssdb": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz",
- "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ=="
- },
- "cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
- },
- "cssnano-preset-simple": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-1.0.3.tgz",
- "integrity": "sha512-TMtCiUf75Kw+RCyBcYSz14cEmjKb+QI9KDUZbuinqdaZvc7qOuTKU27FTIfnCorbekmA7EGMC3tgN7J4vt1N1Q==",
- "requires": {
- "postcss": "^7.0.18"
+ "css-declaration-sorter": "^4.0.1",
+ "cssnano-util-raw-cache": "^4.0.1",
+ "postcss": "^7.0.0",
+ "postcss-calc": "^7.0.1",
+ "postcss-colormin": "^4.0.3",
+ "postcss-convert-values": "^4.0.1",
+ "postcss-discard-comments": "^4.0.2",
+ "postcss-discard-duplicates": "^4.0.2",
+ "postcss-discard-empty": "^4.0.1",
+ "postcss-discard-overridden": "^4.0.1",
+ "postcss-merge-longhand": "^4.0.11",
+ "postcss-merge-rules": "^4.0.3",
+ "postcss-minify-font-values": "^4.0.2",
+ "postcss-minify-gradients": "^4.0.2",
+ "postcss-minify-params": "^4.0.2",
+ "postcss-minify-selectors": "^4.0.2",
+ "postcss-normalize-charset": "^4.0.1",
+ "postcss-normalize-display-values": "^4.0.2",
+ "postcss-normalize-positions": "^4.0.2",
+ "postcss-normalize-repeat-style": "^4.0.2",
+ "postcss-normalize-string": "^4.0.2",
+ "postcss-normalize-timing-functions": "^4.0.2",
+ "postcss-normalize-unicode": "^4.0.1",
+ "postcss-normalize-url": "^4.0.1",
+ "postcss-normalize-whitespace": "^4.0.2",
+ "postcss-ordered-values": "^4.1.2",
+ "postcss-reduce-initial": "^4.0.3",
+ "postcss-reduce-transforms": "^4.0.2",
+ "postcss-svgo": "^4.0.2",
+ "postcss-unique-selectors": "^4.0.1"
},
"dependencies": {
"ansi-styles": {
@@ -3301,9 +3314,65 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "cssnano-preset-simple": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-1.1.4.tgz",
+ "integrity": "sha512-EYKDo65W+AxMViUijv/hvhbEnxUjmu3V7omcH1MatPOwjRLrAgVArUOE8wTUyc1ePFEtvV8oCT4/QSRJDorm/A==",
+ "requires": {
+ "postcss": "^7.0.32"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -3321,12 +3390,12 @@
}
},
"cssnano-simple": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-1.0.0.tgz",
- "integrity": "sha512-B7u9vvtXEqeU2rzdt+Kfw5O9Nd46R7KNjJoP7Y5lGQs6c7n1Et5Ilofh2W9OjBV/ZiJV5+7j9ShWgiYNtH/57A==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-1.0.5.tgz",
+ "integrity": "sha512-NJjx2Er1C3pa75v1GwMKm0w6xAp1GsW2Ql1As4CWPNFxTgYFN5e8wblYeHfna13sANAhyIdSIPqKJjBO4CU5Eg==",
"requires": {
- "cssnano-preset-simple": "^1.0.0",
- "postcss": "^7.0.18"
+ "cssnano-preset-simple": "1.1.4",
+ "postcss": "^7.0.32"
},
"dependencies": {
"ansi-styles": {
@@ -3358,9 +3427,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -3377,6 +3446,101 @@
}
}
},
+ "cssnano-util-get-arguments": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
+ "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8="
+ },
+ "cssnano-util-get-match": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
+ "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0="
+ },
+ "cssnano-util-raw-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
+ "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
+ "requires": {
+ "postcss": "^7.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "cssnano-util-same-parent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
+ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q=="
+ },
+ "csso": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz",
+ "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==",
+ "requires": {
+ "css-tree": "1.0.0-alpha.39"
+ },
+ "dependencies": {
+ "css-tree": {
+ "version": "1.0.0-alpha.39",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz",
+ "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==",
+ "requires": {
+ "mdn-data": "2.0.6",
+ "source-map": "^0.6.1"
+ }
+ },
+ "mdn-data": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz",
+ "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA=="
+ }
+ }
+ },
"cyclist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
@@ -3391,6 +3555,14 @@
"type": "^1.0.1"
}
},
+ "data-uri-to-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.0.tgz",
+ "integrity": "sha512-MJ6mFTZ+nPQO+39ua/ltwNePXrfdF3Ww0wP1Od7EePySXN1cP9XNqRQOG3FxTfipp8jx898LUCgBCEP11Qw/ZQ==",
+ "requires": {
+ "buffer-from": "^1.1.1"
+ }
+ },
"date-and-time": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.13.1.tgz",
@@ -3409,6 +3581,12 @@
"ms": "2.0.0"
}
},
+ "debug-log": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
+ "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=",
+ "dev": true
+ },
"decode-uri-component": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
@@ -3427,13 +3605,11 @@
"regexp.prototype.flags": "^1.2.0"
}
},
- "defaults": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
- "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
- "requires": {
- "clone": "^1.0.2"
- }
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
},
"define-properties": {
"version": "1.1.3",
@@ -3480,17 +3656,26 @@
}
}
},
- "del": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
- "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+ "deglob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/deglob/-/deglob-4.0.1.tgz",
+ "integrity": "sha512-/g+RDZ7yf2HvoW+E5Cy+K94YhgcFgr6C8LuHZD1O5HoNPkf3KY6RfXJ0DBGlB/NkLi5gml+G9zqRzk9S0mHZCg==",
+ "dev": true,
"requires": {
- "globby": "^6.1.0",
- "is-path-cwd": "^1.0.0",
- "is-path-in-cwd": "^1.0.0",
- "p-map": "^1.1.1",
- "pify": "^3.0.0",
- "rimraf": "^2.2.8"
+ "find-root": "^1.0.0",
+ "glob": "^7.0.5",
+ "ignore": "^5.0.0",
+ "pkg-config": "^1.1.0",
+ "run-parallel": "^1.1.2",
+ "uniq": "^1.0.1"
+ },
+ "dependencies": {
+ "ignore": {
+ "version": "5.1.8",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
+ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+ "dev": true
+ }
}
},
"delegate": {
@@ -3518,11 +3703,6 @@
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
- "devalue": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/devalue/-/devalue-2.0.1.tgz",
- "integrity": "sha512-I2TiqT5iWBEyB8GRfTDP0hiLZ0YeDJZ+upDxjBfOC2lebO5LezQMv7QvIUTzdb64jQyAKLf1AHADtGN+jw6v8Q=="
- },
"diffie-hellman": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
@@ -3531,6 +3711,22 @@
"bn.js": "^4.1.0",
"miller-rabin": "^4.0.0",
"randombytes": "^2.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw=="
+ }
+ }
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
}
},
"dom-serializer": {
@@ -3589,11 +3785,6 @@
"is-obj": "^2.0.0"
}
},
- "duplexer": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
- "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E="
- },
"duplexify": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
@@ -3634,23 +3825,15 @@
}
}
},
- "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==",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"electron-to-chromium": {
- "version": "1.3.391",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.391.tgz",
- "integrity": "sha512-WOi6loSnDmfICOqGRrgeK7bZeWDAbGjCptDhI5eyJAqSzWfoeRuOOU1rOTZRL29/9AaxTndZB6Uh8YrxRfZJqw=="
+ "version": "1.3.516",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.516.tgz",
+ "integrity": "sha512-WDM5AAQdOrvLqSX8g3Zd5AujBXfMxf96oeZkff0U2HF5op3tjShE+on2yay3r1UD4M9I3p0iHpAS4+yV8U8A9A=="
},
"elliptic": {
"version": "6.5.3",
@@ -3664,8 +3847,21 @@
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0",
"minimalistic-crypto-utils": "^1.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw=="
+ }
}
},
+ "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
+ },
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
@@ -3685,9 +3881,9 @@
}
},
"enhanced-resolve": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz",
- "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz",
+ "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==",
"requires": {
"graceful-fs": "^4.1.2",
"memory-fs": "^0.5.0",
@@ -3737,11 +3933,6 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
"integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
},
- "env-paths": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz",
- "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA=="
- },
"errno": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
@@ -3815,6 +4006,11 @@
"ext": "^1.1.2"
}
},
+ "escalade": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz",
+ "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ=="
+ },
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -3825,6 +4021,408 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
+ "eslint": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
+ "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.3",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "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
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "eslint-scope": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz",
+ "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+ "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "globals": {
+ "version": "12.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
+ "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.8.1"
+ }
+ },
+ "import-fresh": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
+ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "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=",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "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
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "eslint-config-standard": {
+ "version": "14.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz",
+ "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==",
+ "dev": true
+ },
+ "eslint-config-standard-jsx": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.1.0.tgz",
+ "integrity": "sha512-ULVC8qH8qCqbU792ZOO6DaiaZyHNS/5CZt3hKqHkEhVlhPEPN3nfBqqxJCyp59XrjIBZPu1chMYe9T2DXZ7TMw==",
+ "dev": true
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz",
+ "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "resolve": "^1.13.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
+ "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "pkg-dir": "^2.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.1.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-es": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz",
+ "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==",
+ "dev": true,
+ "requires": {
+ "eslint-utils": "^1.4.2",
+ "regexpp": "^3.0.0"
+ },
+ "dependencies": {
+ "regexpp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.18.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz",
+ "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "contains-path": "^0.1.0",
+ "debug": "^2.6.9",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.3.2",
+ "eslint-module-utils": "^2.4.0",
+ "has": "^1.0.3",
+ "minimatch": "^3.0.4",
+ "object.values": "^1.1.0",
+ "read-pkg-up": "^2.0.0",
+ "resolve": "^1.11.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-node": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz",
+ "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-es": "^2.0.0",
+ "eslint-utils": "^1.4.2",
+ "ignore": "^5.1.1",
+ "minimatch": "^3.0.4",
+ "resolve": "^1.10.1",
+ "semver": "^6.1.0"
+ },
+ "dependencies": {
+ "ignore": {
+ "version": "5.1.8",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
+ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz",
+ "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==",
+ "dev": true
+ },
+ "eslint-plugin-react": {
+ "version": "7.14.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz",
+ "integrity": "sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "doctrine": "^2.1.0",
+ "has": "^1.0.3",
+ "jsx-ast-utils": "^2.1.0",
+ "object.entries": "^1.1.0",
+ "object.fromentries": "^2.0.0",
+ "object.values": "^1.1.0",
+ "prop-types": "^15.7.2",
+ "resolve": "^1.10.1"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ }
+ }
+ },
+ "eslint-plugin-standard": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz",
+ "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==",
+ "dev": true
+ },
"eslint-scope": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
@@ -3834,11 +4432,62 @@
"estraverse": "^4.1.1"
}
},
+ "eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
+ "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz",
+ "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==",
+ "dev": true
+ }
+ }
+ },
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
+ "esquery": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz",
+ "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz",
+ "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==",
+ "dev": true
+ }
+ }
+ },
"esrecurse": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
@@ -3862,15 +4511,15 @@
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
- "eventemitter3": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz",
- "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg=="
+ "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": "3.1.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz",
- "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg=="
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz",
+ "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg=="
},
"evp_bytestokey": {
"version": "1.0.3",
@@ -4025,6 +4674,17 @@
}
}
},
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ }
+ },
"extglob": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
@@ -4099,6 +4759,12 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
"fastparse": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
@@ -4117,32 +4783,49 @@
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
"integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw=="
},
- "file-loader": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz",
- "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==",
+ "figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
"requires": {
- "loader-utils": "^1.2.3",
- "schema-utils": "^2.0.0"
- },
- "dependencies": {
- "schema-utils": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
- "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
- "requires": {
- "ajv": "^6.12.0",
- "ajv-keywords": "^3.4.1"
- }
- }
+ "escape-string-regexp": "^1.0.5"
}
},
- "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==",
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
"requires": {
- "to-regex-range": "^5.0.1"
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "optional": true
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
}
},
"finalhandler": {
@@ -4169,21 +4852,22 @@
}
}
},
- "finally-polyfill": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/finally-polyfill/-/finally-polyfill-0.1.0.tgz",
- "integrity": "sha512-J1LEcZ5VXe1l3sEO+S//WqL5wcJ/ep7QeKJA6HhNZrcEEFj0eyC8IW3DEZhxySI2bx3r85dwAXz+vYPGuHx5UA=="
- },
"find-cache-dir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
- "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
+ "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": "^1.0.0",
- "pkg-dir": "^2.0.0"
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
}
},
+ "find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
+ "dev": true
+ },
"find-up": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
@@ -4192,10 +4876,33 @@
"locate-path": "^2.0.0"
}
},
- "flatten": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz",
- "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg=="
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "flatted": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
+ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+ "dev": true
},
"flush-write-stream": {
"version": "1.1.1",
@@ -4248,49 +4955,6 @@
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
},
- "fork-ts-checker-webpack-plugin": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz",
- "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==",
- "requires": {
- "babel-code-frame": "^6.22.0",
- "chalk": "^2.4.1",
- "chokidar": "^3.3.0",
- "micromatch": "^3.1.10",
- "minimatch": "^3.0.4",
- "semver": "^5.6.0",
- "tapable": "^1.0.0",
- "worker-rpc": "^0.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"
- }
- },
- "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"
- }
- }
- }
- },
"format": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
@@ -4352,6 +5016,14 @@
}
}
},
+ "fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "requires": {
+ "minipass": "^3.0.0"
+ }
+ },
"fs-write-stream-atomic": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
@@ -4398,16 +5070,32 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fsevents": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
- "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
- "optional": true
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "get-stdin": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz",
+ "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==",
+ "dev": true
+ },
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
@@ -4427,11 +5115,22 @@
}
},
"glob-parent": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
- "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"requires": {
- "is-glob": "^4.0.1"
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
}
},
"glob-to-regexp": {
@@ -4444,25 +5143,6 @@
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
},
- "globby": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
- "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
- "requires": {
- "array-union": "^1.0.1",
- "glob": "^7.0.3",
- "object-assign": "^4.0.1",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
- }
- }
- },
"good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
@@ -4473,31 +5153,15 @@
}
},
"graceful-fs": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
- "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
},
"gud": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz",
"integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw=="
},
- "gzip-size": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz",
- "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==",
- "requires": {
- "duplexer": "^0.1.1",
- "pify": "^4.0.1"
- },
- "dependencies": {
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
- }
- }
- },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -4543,24 +5207,6 @@
"kind-of": "^4.0.0"
},
"dependencies": {
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
"kind-of": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
@@ -4572,12 +5218,13 @@
}
},
"hash-base": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
- "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
+ "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
"requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
}
},
"hash.js": {
@@ -4605,6 +5252,16 @@
"space-separated-tokens": "^1.0.0"
}
},
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0="
+ },
+ "hex-color-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
+ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
+ },
"highlight.js": {
"version": "9.15.10",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.10.tgz",
@@ -4623,7 +5280,23 @@
"hosted-git-info": {
"version": "2.8.8",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg=="
+ "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
+ "dev": true
+ },
+ "hsl-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
+ "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4="
+ },
+ "hsla-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
+ "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg="
+ },
+ "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=="
},
"html-dom-parser": {
"version": "0.2.3",
@@ -4635,11 +5308,6 @@
"htmlparser2": "3.10.1"
}
},
- "html-entities": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
- "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8="
- },
"html-react-parser": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-0.10.3.tgz",
@@ -4735,16 +5403,6 @@
}
}
},
- "http-proxy": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz",
- "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==",
- "requires": {
- "eventemitter3": "^4.0.0",
- "follow-redirects": "^1.0.0",
- "requires-port": "^1.0.0"
- }
- },
"https-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
@@ -4781,6 +5439,12 @@
"resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
"integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE="
},
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
"ignore-loader": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ignore-loader/-/ignore-loader-0.1.2.tgz",
@@ -4816,6 +5480,11 @@
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
},
+ "indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
+ },
"indexes-of": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
@@ -4845,6 +5514,94 @@
"resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
"integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
},
+ "inquirer": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
+ "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^3.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.19",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.4.0",
+ "rxjs": "^6.6.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "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
+ },
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "dev": true,
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "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
+ },
+ "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,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+ "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
"invariant": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
@@ -4858,6 +5615,11 @@
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
},
+ "is-absolute-url": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
+ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY="
+ },
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
@@ -4901,11 +5663,11 @@
"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",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
"requires": {
- "binary-extensions": "^2.0.0"
+ "binary-extensions": "^1.0.0"
}
},
"is-buffer": {
@@ -4918,6 +5680,19 @@
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
"integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q=="
},
+ "is-color-stop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
+ "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
+ "requires": {
+ "css-color-names": "^0.0.4",
+ "hex-color-regex": "^1.1.0",
+ "hsl-regex": "^1.0.0",
+ "hsla-regex": "^1.0.0",
+ "rgb-regex": "^1.0.1",
+ "rgba-regex": "^1.0.0"
+ }
+ },
"is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
@@ -4968,11 +5743,6 @@
"resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
"integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE="
},
- "is-docker": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz",
- "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ=="
- },
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
@@ -4983,6 +5753,12 @@
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
},
+ "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
+ },
"is-glob": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
@@ -4997,36 +5773,28 @@
"integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw=="
},
"is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
},
"is-obj": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
},
- "is-path-cwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
- "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0="
- },
- "is-path-in-cwd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
- "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
- "requires": {
- "is-path-inside": "^1.0.0"
- }
- },
- "is-path-inside": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
- "requires": {
- "path-is-inside": "^1.0.1"
- }
- },
"is-plain-obj": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
@@ -5048,6 +5816,25 @@
"has": "^1.0.3"
}
},
+ "is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg=="
+ },
+ "is-string": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
+ "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
+ "dev": true
+ },
+ "is-svg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
+ "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==",
+ "requires": {
+ "html-comment-regex": "^1.1.0"
+ }
+ },
"is-symbol": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
@@ -5056,11 +5843,6 @@
"has-symbols": "^1.0.1"
}
},
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
- },
"is-whitespace-character": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz",
@@ -5077,9 +5859,9 @@
"integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA=="
},
"is-wsl": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz",
- "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog=="
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0="
},
"isarray": {
"version": "1.0.0",
@@ -5116,11 +5898,6 @@
}
}
},
- "js-levenshtein": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
- "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g=="
- },
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
@@ -5150,10 +5927,11 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
- "json-schema-typed": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz",
- "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A=="
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
},
"json5": {
"version": "1.0.1",
@@ -5163,47 +5941,14 @@
"minimist": "^1.2.0"
}
},
- "jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
+ "jsx-ast-utils": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz",
+ "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==",
+ "dev": true,
"requires": {
- "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"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- }
- }
- },
- "jwa": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
- "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
- "requires": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
+ "array-includes": "^3.1.1",
+ "object.assign": "^4.1.0"
}
},
"keycode": {
@@ -5216,47 +5961,34 @@
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
},
- "launch-editor": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz",
- "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==",
+ "leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
+ },
+ "levenary": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz",
+ "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==",
"requires": {
- "chalk": "^2.3.0",
- "shell-quote": "^1.6.1"
- },
- "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"
- }
- },
- "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"
- }
- }
+ "leven": "^3.1.0"
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
}
},
"load-json-file": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
@@ -5268,6 +6000,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
"requires": {
"error-ex": "^1.2.0"
}
@@ -5275,7 +6008,8 @@
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
}
}
},
@@ -5308,108 +6042,25 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
"integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
},
- "lodash._reinterpolate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
- "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
- },
"lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
"integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
},
- "lodash.curry": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz",
- "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA="
+ "lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
},
- "lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
+ "lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
},
- "lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
- },
- "lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
- },
- "lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
- },
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
- },
- "lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
- },
- "lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
- },
- "lodash.template": {
+ "lodash.uniq": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
- "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
- "requires": {
- "lodash._reinterpolate": "^3.0.0",
- "lodash.templatesettings": "^4.0.0"
- }
- },
- "lodash.templatesettings": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
- "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
- "requires": {
- "lodash._reinterpolate": "^3.0.0"
- }
- },
- "log-symbols": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
- "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
- "requires": {
- "chalk": "^2.0.1"
- },
- "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"
- }
- },
- "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"
- }
- }
- }
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M="
},
"loose-envify": {
"version": "1.4.0",
@@ -5437,18 +6088,20 @@
}
},
"make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "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==",
"requires": {
- "pify": "^3.0.0"
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ }
}
},
- "mamacro": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
- "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA=="
- },
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -5490,6 +6143,11 @@
"unist-util-visit-parents": "1.1.2"
}
},
+ "mdn-data": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
+ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA=="
+ },
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -5548,11 +6206,6 @@
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
},
- "microevent.ts": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz",
- "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g=="
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -5571,83 +6224,6 @@
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.2"
- },
- "dependencies": {
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- }
}
},
"miller-rabin": {
@@ -5657,6 +6233,13 @@
"requires": {
"bn.js": "^4.0.0",
"brorand": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw=="
+ }
}
},
"mime": {
@@ -5678,9 +6261,10 @@
}
},
"mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
},
"mini-css-extract-plugin": {
"version": "0.4.3",
@@ -5715,6 +6299,45 @@
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
+ "minipass": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
+ "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
+ "requires": {
+ "yallist": "^4.0.0"
+ },
+ "dependencies": {
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ }
+ }
+ },
+ "minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "requires": {
+ "minipass": "^3.0.0"
+ }
+ },
+ "minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "requires": {
+ "minipass": "^3.0.0"
+ }
+ },
+ "minipass-pipeline": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "requires": {
+ "minipass": "^3.0.0"
+ }
+ },
"mississippi": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
@@ -5752,9 +6375,9 @@
}
},
"mkdirp": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
- "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==",
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
+ "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
"requires": {
"minimist": "^1.2.5"
}
@@ -5777,6 +6400,18 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.14.1",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
+ "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
+ "optional": true
+ },
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -5796,13 +6431,19 @@
}
},
"native-url": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz",
- "integrity": "sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==",
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.3.4.tgz",
+ "integrity": "sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==",
"requires": {
"querystring": "^0.2.0"
}
},
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
@@ -5814,106 +6455,74 @@
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw=="
},
"next": {
- "version": "9.3.2",
- "resolved": "https://registry.npmjs.org/next/-/next-9.3.2.tgz",
- "integrity": "sha512-KVNnnFyvtO1DwSEyMgt3wtxpkprnGCldEOyMXbt9Zxf8RcCw3YnRImbg8mVgrcXJRzkQpve4bdJKYY5MVwT/RA==",
+ "version": "9.5.1",
+ "resolved": "https://registry.npmjs.org/next/-/next-9.5.1.tgz",
+ "integrity": "sha512-rPjeK8wd5sH/NHdL6Rhi3Mft4onB2+BvnXzS0vhGqdo1IXp26/6Hlpqb1pP+qqwI/HMJ4ms2pSEJQWp+BnyeWw==",
"requires": {
- "@ampproject/toolbox-optimizer": "2.0.1",
- "@babel/core": "7.7.2",
- "@babel/plugin-proposal-class-properties": "7.7.0",
- "@babel/plugin-proposal-nullish-coalescing-operator": "7.7.4",
+ "@ampproject/toolbox-optimizer": "2.5.14",
+ "@babel/code-frame": "7.8.3",
+ "@babel/core": "7.7.7",
+ "@babel/plugin-proposal-class-properties": "7.8.3",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3",
"@babel/plugin-proposal-numeric-separator": "7.8.3",
- "@babel/plugin-proposal-object-rest-spread": "7.6.2",
- "@babel/plugin-proposal-optional-chaining": "7.7.4",
+ "@babel/plugin-proposal-object-rest-spread": "7.9.6",
+ "@babel/plugin-proposal-optional-chaining": "7.9.0",
"@babel/plugin-syntax-bigint": "7.8.3",
- "@babel/plugin-syntax-dynamic-import": "7.2.0",
- "@babel/plugin-transform-modules-commonjs": "7.7.0",
- "@babel/plugin-transform-runtime": "7.6.2",
- "@babel/preset-env": "7.7.1",
- "@babel/preset-modules": "0.1.1",
- "@babel/preset-react": "7.7.0",
- "@babel/preset-typescript": "7.7.2",
- "@babel/runtime": "7.7.2",
- "@babel/types": "7.7.4",
- "@next/polyfill-nomodule": "9.3.2",
- "amphtml-validator": "1.0.30",
- "async-retry": "1.2.3",
- "async-sema": "3.0.0",
- "autodll-webpack-plugin": "0.4.2",
- "babel-core": "7.0.0-bridge.0",
- "babel-loader": "8.0.6",
+ "@babel/plugin-syntax-dynamic-import": "7.8.3",
+ "@babel/plugin-transform-modules-commonjs": "7.9.6",
+ "@babel/plugin-transform-runtime": "7.9.6",
+ "@babel/preset-env": "7.9.6",
+ "@babel/preset-modules": "0.1.3",
+ "@babel/preset-react": "7.9.4",
+ "@babel/preset-typescript": "7.9.0",
+ "@babel/runtime": "7.9.6",
+ "@babel/types": "7.9.6",
+ "@next/react-dev-overlay": "9.5.1",
+ "@next/react-refresh-utils": "9.5.1",
+ "ast-types": "0.13.2",
"babel-plugin-syntax-jsx": "6.18.0",
"babel-plugin-transform-define": "2.0.0",
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
- "browserslist": "4.8.3",
- "cache-loader": "4.1.0",
- "chalk": "2.4.2",
- "ci-info": "2.0.0",
- "compression": "1.7.4",
- "conf": "5.0.0",
- "content-type": "1.0.4",
- "cookie": "0.4.0",
- "css-loader": "3.3.0",
- "cssnano-simple": "1.0.0",
- "devalue": "2.0.1",
- "escape-string-regexp": "2.0.0",
- "etag": "1.8.1",
- "file-loader": "4.2.0",
- "finally-polyfill": "0.1.0",
- "find-up": "4.0.0",
- "fork-ts-checker-webpack-plugin": "3.1.1",
- "fresh": "0.5.2",
- "gzip-size": "5.1.1",
- "http-proxy": "1.18.0",
- "ignore-loader": "0.1.2",
- "is-docker": "2.0.0",
- "is-wsl": "2.1.1",
+ "browserslist": "4.13.0",
+ "buffer": "5.6.0",
+ "cacache": "13.0.1",
+ "chokidar": "2.1.8",
+ "css-loader": "3.5.3",
+ "cssnano-simple": "1.0.5",
+ "find-cache-dir": "3.3.1",
"jest-worker": "24.9.0",
- "json5": "2.1.1",
- "jsonwebtoken": "8.5.1",
- "launch-editor": "2.2.1",
"loader-utils": "2.0.0",
- "lodash.curry": "4.1.1",
- "lru-cache": "5.1.1",
"mini-css-extract-plugin": "0.8.0",
- "native-url": "0.2.6",
- "node-fetch": "2.6.0",
- "ora": "3.4.0",
- "path-to-regexp": "6.1.0",
- "pnp-webpack-plugin": "1.5.0",
- "postcss-flexbugs-fixes": "4.2.0",
- "postcss-loader": "3.0.0",
- "postcss-preset-env": "6.7.0",
+ "mkdirp": "0.5.3",
+ "native-url": "0.3.4",
+ "neo-async": "2.6.1",
+ "node-html-parser": "^1.2.19",
+ "pnp-webpack-plugin": "1.6.4",
+ "postcss": "7.0.32",
+ "process": "0.11.10",
"prop-types": "15.7.2",
"prop-types-exact": "1.2.0",
- "raw-body": "2.4.0",
- "react-error-overlay": "5.1.6",
- "react-is": "16.8.6",
- "recast": "0.18.5",
+ "react-is": "16.13.1",
+ "react-refresh": "0.8.3",
"resolve-url-loader": "3.1.1",
"sass-loader": "8.0.2",
- "send": "0.17.1",
- "source-map": "0.6.1",
- "string-hash": "1.1.3",
- "strip-ansi": "5.2.0",
- "style-loader": "1.0.0",
- "styled-jsx": "3.2.5",
- "terser": "4.4.2",
- "thread-loader": "2.1.3",
- "unfetch": "4.1.0",
- "url": "0.11.0",
- "use-subscription": "1.1.1",
+ "schema-utils": "2.6.6",
+ "style-loader": "1.2.1",
+ "styled-jsx": "3.3.0",
+ "use-subscription": "1.4.1",
"watchpack": "2.0.0-beta.13",
- "webpack": "4.42.0",
- "webpack-dev-middleware": "3.7.0",
- "webpack-hot-middleware": "2.25.0",
+ "web-vitals": "0.2.1",
+ "webpack": "4.44.0",
"webpack-sources": "1.4.3"
},
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ "@babel/runtime": {
+ "version": "7.9.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz",
+ "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
},
"ansi-styles": {
"version": "3.2.1",
@@ -5933,40 +6542,36 @@
"supports-color": "^5.3.0"
},
"dependencies": {
- "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="
+ "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"
+ }
}
}
},
"css-loader": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.3.0.tgz",
- "integrity": "sha512-x9Y1vvHe5RR+4tzwFdWExPueK00uqFTCw7mZy+9aE/X1SKWOArm5luaOrtJ4d05IpOwJ6S86b/tVcIdhw1Bu4A==",
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.3.tgz",
+ "integrity": "sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw==",
"requires": {
"camelcase": "^5.3.1",
"cssesc": "^3.0.0",
"icss-utils": "^4.1.1",
"loader-utils": "^1.2.3",
"normalize-path": "^3.0.0",
- "postcss": "^7.0.23",
+ "postcss": "^7.0.27",
"postcss-modules-extract-imports": "^2.0.0",
"postcss-modules-local-by-default": "^3.0.2",
- "postcss-modules-scope": "^2.1.1",
+ "postcss-modules-scope": "^2.2.0",
"postcss-modules-values": "^3.0.0",
- "postcss-value-parser": "^4.0.2",
- "schema-utils": "^2.6.0"
+ "postcss-value-parser": "^4.0.3",
+ "schema-utils": "^2.6.6",
+ "semver": "^6.3.0"
},
"dependencies": {
- "json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "requires": {
- "minimist": "^1.2.0"
- }
- },
"loader-utils": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
@@ -5979,19 +6584,6 @@
}
}
},
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
- },
- "find-up": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.0.0.tgz",
- "integrity": "sha512-zoH7ZWPkRdgwYCDVoQTzqjG8JSPANhtvLhh4KVUHyKnaUJJrNeFmWIkTcNuJmR3GLMEmGYEf2S2bjgx26JTF+Q==",
- "requires": {
- "locate-path": "^5.0.0"
- }
- },
"icss-utils": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
@@ -6000,14 +6592,6 @@
"postcss": "^7.0.14"
}
},
- "json5": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
- "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
- "requires": {
- "minimist": "^1.2.0"
- }
- },
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
@@ -6019,23 +6603,15 @@
},
"dependencies": {
"json5": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz",
- "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
+ "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
"requires": {
"minimist": "^1.2.5"
}
}
}
},
- "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"
- }
- },
"mini-css-extract-plugin": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz",
@@ -6047,14 +6623,6 @@
"webpack-sources": "^1.1.0"
},
"dependencies": {
- "json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "requires": {
- "minimist": "^1.2.0"
- }
- },
"loader-utils": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
@@ -6077,45 +6645,25 @@
}
}
},
- "p-limit": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
- "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
+ "normalize-url": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
+ "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
"requires": {
- "p-try": "^2.0.0"
+ "object-assign": "^4.0.1",
+ "prepend-http": "^1.0.0",
+ "query-string": "^4.1.0",
+ "sort-keys": "^1.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=="
- },
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
"supports-color": "^6.1.0"
- },
- "dependencies": {
- "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"
- }
- }
}
},
"postcss-modules-extract-imports": {
@@ -6127,14 +6675,14 @@
}
},
"postcss-modules-local-by-default": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz",
- "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz",
+ "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==",
"requires": {
"icss-utils": "^4.1.1",
- "postcss": "^7.0.16",
+ "postcss": "^7.0.32",
"postcss-selector-parser": "^6.0.2",
- "postcss-value-parser": "^4.0.0"
+ "postcss-value-parser": "^4.1.0"
}
},
"postcss-modules-scope": {
@@ -6156,31 +6704,33 @@
}
},
"postcss-value-parser": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz",
- "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg=="
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
+ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ=="
+ },
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"schema-utils": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
- "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
+ "version": "2.6.6",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz",
+ "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==",
"requires": {
"ajv": "^6.12.0",
"ajv-keywords": "^3.4.1"
}
},
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "requires": {
- "ansi-regex": "^4.1.0"
- }
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
},
"supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "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"
}
@@ -6212,11 +6762,25 @@
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
"node-fetch": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
+ "node-html-parser": {
+ "version": "1.2.20",
+ "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.2.20.tgz",
+ "integrity": "sha512-1fUpYjAducDrrBSE0etRUV1tM+wSFTudmrslMXuk35wL/L29E7e1CLQn4CNzFLnqtYpmDlWhkD6VUloyHA0dwA==",
+ "requires": {
+ "he": "1.1.1"
+ }
+ },
"node-libs-browser": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
@@ -6247,6 +6811,16 @@
"vm-browserify": "^1.0.1"
},
"dependencies": {
+ "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"
+ }
+ },
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
@@ -6299,9 +6873,9 @@
}
},
"node-releases": {
- "version": "1.1.53",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz",
- "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ=="
+ "version": "1.1.60",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz",
+ "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA=="
},
"normalize-html-whitespace": {
"version": "1.0.0",
@@ -6312,6 +6886,7 @@
"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==",
+ "dev": true,
"requires": {
"hosted-git-info": "^2.1.4",
"resolve": "^1.10.0",
@@ -6324,21 +6899,10 @@
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
},
- "normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI="
- },
"normalize-url": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
- "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
- "requires": {
- "object-assign": "^4.0.1",
- "prepend-http": "^1.0.0",
- "query-string": "^4.1.0",
- "sort-keys": "^1.0.0"
- }
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
+ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg=="
},
"notyf": {
"version": "3.6.0",
@@ -6350,10 +6914,13 @@
"resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
"integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E="
},
- "num2fraction": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
- "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4="
+ "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"
+ }
},
"object-assign": {
"version": "4.1.1",
@@ -6431,6 +6998,38 @@
"object-keys": "^1.0.11"
}
},
+ "object.entries": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz",
+ "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5",
+ "has": "^1.0.3"
+ }
+ },
+ "object.fromentries": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz",
+ "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ }
+ },
+ "object.getownpropertydescriptors": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
+ "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1"
+ }
+ },
"object.pick": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
@@ -6439,6 +7038,17 @@
"isobject": "^3.0.1"
}
},
+ "object.values": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
+ "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ }
+ },
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -6447,11 +7057,6 @@
"ee-first": "1.1.1"
}
},
- "on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
- },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -6461,65 +7066,26 @@
}
},
"onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
+ "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "dev": true,
"requires": {
- "mimic-fn": "^1.0.0"
+ "mimic-fn": "^2.1.0"
}
},
- "ora": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
- "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
"requires": {
- "chalk": "^2.4.2",
- "cli-cursor": "^2.1.0",
- "cli-spinners": "^2.0.0",
- "log-symbols": "^2.2.0",
- "strip-ansi": "^5.2.0",
- "wcwidth": "^1.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
- },
- "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"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "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"
- }
- }
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
}
},
"os-browserify": {
@@ -6527,6 +7093,12 @@
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc="
},
+ "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=",
+ "dev": true
+ },
"p-limit": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
@@ -6544,9 +7116,12 @@
}
},
"p-map": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
- "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA=="
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "requires": {
+ "aggregate-error": "^3.0.0"
+ }
},
"p-try": {
"version": "1.0.0",
@@ -6597,6 +7172,23 @@
}
}
},
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ }
+ }
+ },
"parse-asn1": {
"version": "5.1.5",
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
@@ -6662,11 +7254,6 @@
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
- },
"path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -6678,15 +7265,11 @@
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
},
- "path-to-regexp": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.1.0.tgz",
- "integrity": "sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw=="
- },
"path-type": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
"integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
"requires": {
"pify": "^2.0.0"
},
@@ -6694,14 +7277,15 @@
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
}
}
},
"pbkdf2": {
- "version": "3.0.17",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
- "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
+ "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
"requires": {
"create-hash": "^1.1.2",
"create-hmac": "^1.1.4",
@@ -6713,63 +7297,61 @@
"picomatch": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
+ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+ "optional": true
},
"pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
},
- "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": "2.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
- "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
- "requires": {
- "find-up": "^2.1.0"
- }
- },
- "pkg-up": {
+ "pkg-conf": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
- "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz",
+ "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==",
+ "dev": true,
"requires": {
- "find-up": "^3.0.0"
+ "find-up": "^3.0.0",
+ "load-json-file": "^5.2.0"
},
"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==",
+ "dev": true,
"requires": {
"locate-path": "^3.0.0"
}
},
+ "load-json-file": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz",
+ "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.15",
+ "parse-json": "^4.0.0",
+ "pify": "^4.0.1",
+ "strip-bom": "^3.0.0",
+ "type-fest": "^0.3.0"
+ }
+ },
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
"requires": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
}
},
"p-limit": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
- "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
"requires": {
"p-try": "^2.0.0"
}
@@ -6778,6 +7360,7 @@
"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==",
+ "dev": true,
"requires": {
"p-limit": "^2.0.0"
}
@@ -6785,16 +7368,92 @@
"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=="
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+ "dev": true
}
}
},
- "pnp-webpack-plugin": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz",
- "integrity": "sha512-jd9olUr9D7do+RN8Wspzhpxhgp1n6Vd0NtQ4SFkmIACZoEL1nkyAdW9Ygrinjec0vgDcWjscFQQ1gDW8rsfKTg==",
+ "pkg-config": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz",
+ "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=",
+ "dev": true,
"requires": {
- "ts-pnp": "^1.1.2"
+ "debug-log": "^1.0.0",
+ "find-root": "^1.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "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"
+ },
+ "dependencies": {
+ "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"
+ }
+ },
+ "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"
+ }
+ },
+ "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=="
+ },
+ "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=="
+ }
+ }
+ },
+ "platform": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.3.tgz",
+ "integrity": "sha1-ZGx3ARiZhwtqCQPnXpl+jlHadGE="
+ },
+ "pnp-webpack-plugin": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz",
+ "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==",
+ "requires": {
+ "ts-pnp": "^1.1.6"
}
},
"popper.js": {
@@ -6845,13 +7504,14 @@
}
}
},
- "postcss-attribute-case-insensitive": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz",
- "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==",
+ "postcss-calc": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz",
+ "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==",
"requires": {
- "postcss": "^7.0.2",
- "postcss-selector-parser": "^6.0.2"
+ "postcss": "^7.0.27",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.0.2"
},
"dependencies": {
"ansi-styles": {
@@ -6883,15 +7543,20 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
"supports-color": "^6.1.0"
}
},
+ "postcss-value-parser": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
+ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ=="
+ },
"supports-color": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
@@ -6902,13 +7567,16 @@
}
}
},
- "postcss-color-functional-notation": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz",
- "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==",
+ "postcss-colormin": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
+ "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
"requires": {
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.0.0"
+ "browserslist": "^4.0.0",
+ "color": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -6940,9 +7608,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -6959,186 +7627,13 @@
}
}
},
- "postcss-color-gray": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz",
- "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==",
- "requires": {
- "@csstools/convert-colors": "^1.4.0",
- "postcss": "^7.0.5",
- "postcss-values-parser": "^2.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"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-color-hex-alpha": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz",
- "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==",
- "requires": {
- "postcss": "^7.0.14",
- "postcss-values-parser": "^2.0.1"
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-color-mod-function": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz",
- "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==",
- "requires": {
- "@csstools/convert-colors": "^1.4.0",
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.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"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-color-rebeccapurple": {
+ "postcss-convert-values": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz",
- "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
+ "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
"requires": {
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.0.0"
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -7170,9 +7665,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -7189,12 +7684,12 @@
}
}
},
- "postcss-custom-media": {
- "version": "7.0.8",
- "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz",
- "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==",
+ "postcss-discard-comments": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
+ "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
"requires": {
- "postcss": "^7.0.14"
+ "postcss": "^7.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -7226,9 +7721,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -7245,13 +7740,12 @@
}
}
},
- "postcss-custom-properties": {
- "version": "8.0.11",
- "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz",
- "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==",
+ "postcss-discard-duplicates": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
+ "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
"requires": {
- "postcss": "^7.0.17",
- "postcss-values-parser": "^2.0.1"
+ "postcss": "^7.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -7283,9 +7777,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -7302,157 +7796,12 @@
}
}
},
- "postcss-custom-selectors": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz",
- "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==",
+ "postcss-discard-empty": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
+ "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
"requires": {
- "postcss": "^7.0.2",
- "postcss-selector-parser": "^5.0.0-rc.3"
- },
- "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"
- }
- }
- }
- },
- "cssesc": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
- "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg=="
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "postcss-selector-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
- "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
- "requires": {
- "cssesc": "^2.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-dir-pseudo-class": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz",
- "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==",
- "requires": {
- "postcss": "^7.0.2",
- "postcss-selector-parser": "^5.0.0-rc.3"
- },
- "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"
- }
- }
- }
- },
- "cssesc": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
- "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg=="
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "postcss-selector-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
- "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
- "requires": {
- "cssesc": "^2.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-double-position-gradients": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz",
- "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==",
- "requires": {
- "postcss": "^7.0.5",
- "postcss-values-parser": "^2.0.0"
+ "postcss": "^7.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -7484,9 +7833,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -7503,13 +7852,12 @@
}
}
},
- "postcss-env-function": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz",
- "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==",
+ "postcss-discard-overridden": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
+ "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
"requires": {
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.0.0"
+ "postcss": "^7.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -7541,461 +7889,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-flexbugs-fixes": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.0.tgz",
- "integrity": "sha512-QRE0n3hpkxxS/OGvzOa+PDuy4mh/Jg4o9ui22/ko5iGYOG3M5dfJabjnAZjTdh2G9F85c7Hv8hWcEDEKW/xceQ==",
- "requires": {
- "postcss": "^7.0.26"
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-focus-visible": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz",
- "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==",
- "requires": {
- "postcss": "^7.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"
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-focus-within": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz",
- "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==",
- "requires": {
- "postcss": "^7.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"
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-font-variant": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz",
- "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==",
- "requires": {
- "postcss": "^7.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"
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-gap-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz",
- "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==",
- "requires": {
- "postcss": "^7.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"
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-image-set-function": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz",
- "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==",
- "requires": {
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.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"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-initial": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz",
- "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==",
- "requires": {
- "lodash.template": "^4.5.0",
- "postcss": "^7.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"
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-lab-function": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz",
- "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==",
- "requires": {
- "@csstools/convert-colors": "^1.4.0",
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.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"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -8080,12 +7976,15 @@
}
}
},
- "postcss-logical": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz",
- "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==",
+ "postcss-merge-longhand": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
+ "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
"requires": {
- "postcss": "^7.0.2"
+ "css-color-names": "0.0.4",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "stylehacks": "^4.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -8117,9 +8016,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -8136,12 +8035,17 @@
}
}
},
- "postcss-media-minmax": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz",
- "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==",
+ "postcss-merge-rules": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
+ "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
"requires": {
- "postcss": "^7.0.2"
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "cssnano-util-same-parent": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0",
+ "vendors": "^1.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -8173,15 +8077,271 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
"supports-color": "^6.1.0"
}
},
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-minify-font-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
+ "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-minify-gradients": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
+ "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "is-color-stop": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-minify-params": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
+ "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "browserslist": "^4.0.0",
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "uniqs": "^2.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-minify-selectors": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
+ "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ },
"supports-color": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
@@ -8227,181 +8387,12 @@
"postcss": "^6.0.1"
}
},
- "postcss-nesting": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz",
- "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==",
- "requires": {
- "postcss": "^7.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"
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-overflow-shorthand": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz",
- "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==",
- "requires": {
- "postcss": "^7.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"
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-page-break": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz",
- "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==",
- "requires": {
- "postcss": "^7.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"
- },
- "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"
- }
- }
- }
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-place": {
+ "postcss-normalize-charset": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz",
- "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
+ "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
"requires": {
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.0.0"
+ "postcss": "^7.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -8433,9 +8424,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -8452,48 +8443,14 @@
}
}
},
- "postcss-preset-env": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz",
- "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==",
+ "postcss-normalize-display-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
+ "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
"requires": {
- "autoprefixer": "^9.6.1",
- "browserslist": "^4.6.4",
- "caniuse-lite": "^1.0.30000981",
- "css-blank-pseudo": "^0.1.4",
- "css-has-pseudo": "^0.10.0",
- "css-prefers-color-scheme": "^3.1.1",
- "cssdb": "^4.4.0",
- "postcss": "^7.0.17",
- "postcss-attribute-case-insensitive": "^4.0.1",
- "postcss-color-functional-notation": "^2.0.1",
- "postcss-color-gray": "^5.0.0",
- "postcss-color-hex-alpha": "^5.0.3",
- "postcss-color-mod-function": "^3.0.3",
- "postcss-color-rebeccapurple": "^4.0.1",
- "postcss-custom-media": "^7.0.8",
- "postcss-custom-properties": "^8.0.11",
- "postcss-custom-selectors": "^5.1.2",
- "postcss-dir-pseudo-class": "^5.0.0",
- "postcss-double-position-gradients": "^1.0.0",
- "postcss-env-function": "^2.0.2",
- "postcss-focus-visible": "^4.0.0",
- "postcss-focus-within": "^3.0.0",
- "postcss-font-variant": "^4.0.0",
- "postcss-gap-properties": "^2.0.0",
- "postcss-image-set-function": "^3.0.1",
- "postcss-initial": "^3.0.0",
- "postcss-lab-function": "^2.0.1",
- "postcss-logical": "^3.0.0",
- "postcss-media-minmax": "^4.0.0",
- "postcss-nesting": "^7.0.0",
- "postcss-overflow-shorthand": "^2.0.0",
- "postcss-page-break": "^2.0.0",
- "postcss-place": "^4.0.1",
- "postcss-pseudo-class-any-link": "^6.0.0",
- "postcss-replace-overflow-wrap": "^3.0.0",
- "postcss-selector-matches": "^4.0.0",
- "postcss-selector-not": "^4.0.0"
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -8525,9 +8482,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -8544,84 +8501,15 @@
}
}
},
- "postcss-pseudo-class-any-link": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz",
- "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==",
+ "postcss-normalize-positions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
+ "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
"requires": {
- "postcss": "^7.0.2",
- "postcss-selector-parser": "^5.0.0-rc.3"
- },
- "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"
- }
- }
- }
- },
- "cssesc": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
- "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg=="
- },
- "postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "postcss-selector-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
- "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
- "requires": {
- "cssesc": "^2.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
- },
- "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"
- }
- }
- }
- },
- "postcss-replace-overflow-wrap": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz",
- "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==",
- "requires": {
- "postcss": "^7.0.2"
+ "cssnano-util-get-arguments": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -8653,9 +8541,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -8672,13 +8560,15 @@
}
}
},
- "postcss-selector-matches": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz",
- "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==",
+ "postcss-normalize-repeat-style": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
+ "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
"requires": {
- "balanced-match": "^1.0.0",
- "postcss": "^7.0.2"
+ "cssnano-util-get-arguments": "^4.0.0",
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -8710,9 +8600,9 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -8729,13 +8619,14 @@
}
}
},
- "postcss-selector-not": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz",
- "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==",
+ "postcss-normalize-string": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
+ "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
"requires": {
- "balanced-match": "^1.0.0",
- "postcss": "^7.0.2"
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -8767,9 +8658,473 @@
}
},
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
- "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-normalize-timing-functions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
+ "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-normalize-unicode": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
+ "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
+ "requires": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-normalize-url": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
+ "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
+ "requires": {
+ "is-absolute-url": "^2.0.0",
+ "normalize-url": "^3.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-normalize-whitespace": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
+ "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-ordered-values": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
+ "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-reduce-initial": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
+ "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-reduce-transforms": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
+ "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-safe-parser": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
+ "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
+ "requires": {
+ "postcss": "^7.0.26"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -8796,20 +9151,133 @@
"uniq": "^1.0.1"
}
},
+ "postcss-svgo": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz",
+ "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==",
+ "requires": {
+ "is-svg": "^3.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "svgo": "^1.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss-unique-selectors": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
+ "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "postcss": "^7.0.0",
+ "uniqs": "^2.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
"postcss-value-parser": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
"integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ=="
},
- "postcss-values-parser": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz",
- "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==",
- "requires": {
- "flatten": "^1.0.2",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
},
"prepend-http": {
"version": "1.0.4",
@@ -8824,11 +9292,6 @@
"clipboard": "^2.0.0"
}
},
- "private": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
- "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
- },
"process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
@@ -8839,13 +9302,11 @@
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
- "promise": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.1.tgz",
- "integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=",
- "requires": {
- "asap": "~2.0.3"
- }
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
},
"promise-inflight": {
"version": "1.0.1",
@@ -8905,6 +9366,13 @@
"parse-asn1": "^5.0.0",
"randombytes": "^2.0.1",
"safe-buffer": "^5.1.2"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw=="
+ }
}
},
"pump": {
@@ -8942,6 +9410,11 @@
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
+ },
"qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
@@ -9065,11 +9538,6 @@
"scheduler": "^0.19.0"
}
},
- "react-error-overlay": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-5.1.6.tgz",
- "integrity": "sha512-X1Y+0jR47ImDVr54Ab6V9eGk0Hnu7fVWGeHQSOXHf/C2pF9c6uy3gef8QUeuUiWlNb0i08InPSE5a/KJzNzw1Q=="
- },
"react-event-listener": {
"version": "0.6.6",
"resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.6.6.tgz",
@@ -9124,6 +9592,11 @@
"resolved": "https://registry.npmjs.org/react-property/-/react-property-1.0.1.tgz",
"integrity": "sha512-1tKOwxFn3dXVomH6pM9IkLkq2Y8oh+fh/lYW3MJ/B03URswUTqttgckOlbxY2XHF3vPG6uanSc4dVsLW/wk3wQ=="
},
+ "react-refresh": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
+ "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg=="
+ },
"react-swipeable-views": {
"version": "0.13.9",
"resolved": "https://registry.npmjs.org/react-swipeable-views/-/react-swipeable-views-0.13.9.tgz",
@@ -9227,12 +9700,23 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
"integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
"requires": {
"load-json-file": "^2.0.0",
"normalize-package-data": "^2.3.2",
"path-type": "^2.0.0"
}
},
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ }
+ },
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -9244,22 +9728,42 @@
}
},
"readdirp": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz",
- "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
"requires": {
- "picomatch": "^2.0.7"
- }
- },
- "recast": {
- "version": "0.18.5",
- "resolved": "https://registry.npmjs.org/recast/-/recast-0.18.5.tgz",
- "integrity": "sha512-sD1WJrpLQAkXGyQZyGzTM75WJvyAd98II5CHdK3IYbt/cZlU0UzCRVU11nUFNXX9fBVEt4E9ajkMjBlUlG+Oog==",
- "requires": {
- "ast-types": "0.13.2",
- "esprima": "~4.0.0",
- "private": "^0.1.8",
- "source-map": "~0.6.1"
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_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"
+ }
+ }
}
},
"reflect.ownkeys": {
@@ -9306,18 +9810,17 @@
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
},
"regenerator-transform": {
- "version": "0.14.4",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz",
- "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==",
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
+ "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
"requires": {
- "@babel/runtime": "^7.8.4",
- "private": "^0.1.8"
+ "@babel/runtime": "^7.8.4"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.9.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
- "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.0.tgz",
+ "integrity": "sha512-qArkXsjJq7H+T86WrIFV0Fnu/tNOkZ4cgXmjkzAu3b/58D5mFIO8JH/y77t7C9q0OdDRdh9s7Ue5GasYssxtXw==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
@@ -9347,6 +9850,12 @@
"es-abstract": "^1.17.0-next.1"
}
},
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true
+ },
"regexpu-core": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz",
@@ -9415,15 +9924,10 @@
"resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
"integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
},
- "requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
- },
"resolve": {
- "version": "1.15.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
- "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
+ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
"requires": {
"path-parse": "^1.0.6"
}
@@ -9519,11 +10023,12 @@
}
},
"restore-cursor": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
"requires": {
- "onetime": "^2.0.0",
+ "onetime": "^5.1.0",
"signal-exit": "^3.0.2"
}
},
@@ -9532,11 +10037,6 @@
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
},
- "retry": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
- "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs="
- },
"rework": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz",
@@ -9558,6 +10058,16 @@
"resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz",
"integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo="
},
+ "rgb-regex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
+ "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE="
+ },
+ "rgba-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
+ "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM="
+ },
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -9575,6 +10085,18 @@
"inherits": "^2.0.1"
}
},
+ "run-async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "dev": true
+ },
+ "run-parallel": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
+ "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
+ "dev": true
+ },
"run-queue": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
@@ -9583,6 +10105,15 @@
"aproba": "^1.1.1"
}
},
+ "rxjs": {
+ "version": "6.6.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
+ "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
"safe-buffer": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
@@ -9613,12 +10144,24 @@
"semver": "^6.3.0"
},
"dependencies": {
- "schema-utils": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
- "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
+ "ajv": {
+ "version": "6.12.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
+ "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
"requires": {
- "ajv": "^6.12.0",
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "schema-utils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
+ "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+ "requires": {
+ "@types/json-schema": "^7.0.4",
+ "ajv": "^6.12.2",
"ajv-keywords": "^3.4.1"
}
},
@@ -9629,6 +10172,11 @@
}
}
},
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
"scheduler": {
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
@@ -9702,9 +10250,12 @@
}
},
"serialize-javascript": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
- "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ=="
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
+ "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
},
"serve-static": {
"version": "1.14.1",
@@ -9793,7 +10344,51 @@
"signal-exit": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
+ "dev": true
+ },
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+ "requires": {
+ "is-arrayish": "^0.3.1"
+ },
+ "dependencies": {
+ "is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ }
+ }
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.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==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "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
+ }
+ }
},
"snapdragon": {
"version": "0.8.2",
@@ -9905,6 +10500,67 @@
}
}
},
+ "snazzy": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/snazzy/-/snazzy-8.0.0.tgz",
+ "integrity": "sha512-59GS69hQD8FvJoNGeDz8aZtbYhkCFxCPQB1BFzAWiVVwPmS/J6Vjaku0k6tGNsdSxQ0kAlButdkn8bPR2hLcBw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.3.0",
+ "inherits": "^2.0.1",
+ "minimist": "^1.1.1",
+ "readable-stream": "^3.0.2",
+ "standard-json": "^1.0.0",
+ "strip-ansi": "^4.0.0",
+ "text-table": "^0.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
"sort-keys": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
@@ -9936,9 +10592,9 @@
}
},
"source-map-support": {
- "version": "0.5.16",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
- "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
+ "version": "0.5.19",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+ "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -9955,23 +10611,26 @@
"integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA=="
},
"spdx-correct": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
- "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "dev": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-exceptions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
- "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
},
"spdx-expression-parse": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
"requires": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
@@ -9980,7 +10639,8 @@
"spdx-license-ids": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q=="
+ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+ "dev": true
},
"split-string": {
"version": "3.1.0",
@@ -9996,11 +10656,77 @@
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
"ssri": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
- "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz",
+ "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==",
"requires": {
- "figgy-pudding": "^3.5.1"
+ "figgy-pudding": "^3.5.1",
+ "minipass": "^3.1.1"
+ }
+ },
+ "stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w=="
+ },
+ "stacktrace-parser": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
+ "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
+ "requires": {
+ "type-fest": "^0.7.1"
+ }
+ },
+ "standard": {
+ "version": "14.3.4",
+ "resolved": "https://registry.npmjs.org/standard/-/standard-14.3.4.tgz",
+ "integrity": "sha512-+lpOkFssMkljJ6eaILmqxHQ2n4csuEABmcubLTb9almFi1ElDzXb1819fjf/5ygSyePCq4kU2wMdb2fBfb9P9Q==",
+ "dev": true,
+ "requires": {
+ "eslint": "~6.8.0",
+ "eslint-config-standard": "14.1.1",
+ "eslint-config-standard-jsx": "8.1.0",
+ "eslint-plugin-import": "~2.18.0",
+ "eslint-plugin-node": "~10.0.0",
+ "eslint-plugin-promise": "~4.2.1",
+ "eslint-plugin-react": "~7.14.2",
+ "eslint-plugin-standard": "~4.0.0",
+ "standard-engine": "^12.0.0"
+ }
+ },
+ "standard-engine": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-12.1.0.tgz",
+ "integrity": "sha512-DVJnWM1CGkag4ucFLGdiYWa5/kJURPONmMmk17p8FT5NE4UnPZB1vxWnXnRo2sPSL78pWJG8xEM+1Tu19z0deg==",
+ "dev": true,
+ "requires": {
+ "deglob": "^4.0.1",
+ "get-stdin": "^7.0.0",
+ "minimist": "^1.2.5",
+ "pkg-conf": "^3.1.0"
+ }
+ },
+ "standard-json": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/standard-json/-/standard-json-1.1.0.tgz",
+ "integrity": "sha512-nkonX+n5g3pyVBvJZmvRlFtT/7JyLbNh4CtrYC3Qfxihgs8PKX52f6ONKQXORStuBWJ5PI83EUrNXme7LKfiTQ==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^2.0.0"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ }
}
},
"state-toggle": {
@@ -10135,6 +10861,34 @@
"resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
"integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs="
},
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "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
+ },
+ "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,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
+ }
+ },
"string.prototype.trimend": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
@@ -10192,23 +10946,60 @@
"strip-bom": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true
},
"style-loader": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz",
- "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz",
+ "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==",
"requires": {
- "loader-utils": "^1.2.3",
- "schema-utils": "^2.0.1"
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^2.6.6"
},
"dependencies": {
- "schema-utils": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
- "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
+ "ajv": {
+ "version": "6.12.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
+ "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
"requires": {
- "ajv": "^6.12.0",
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "json5": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
+ "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "loader-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+ "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ },
+ "schema-utils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
+ "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+ "requires": {
+ "@types/json-schema": "^7.0.4",
+ "ajv": "^6.12.2",
"ajv-keywords": "^3.4.1"
}
}
@@ -10223,9 +11014,9 @@
}
},
"styled-jsx": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.2.5.tgz",
- "integrity": "sha512-prEahkYwQHomUljJzXzrFnBmQrSMtWOBbXn8QeEkpfFkqMZQGshxzzp4H8ebBIsbVlHF/3+GSXMnmK/fp7qVYQ==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.3.0.tgz",
+ "integrity": "sha512-sh8BI5eGKyJlwL4kNXHjb27/a/GJV8wP4ElRIkRXrGW3sHKOsY9Pa1VZRNxyvf3+lisdPwizD9JDkzVO9uGwZw==",
"requires": {
"@babel/types": "7.8.3",
"babel-plugin-syntax-jsx": "6.18.0",
@@ -10269,6 +11060,74 @@
}
}
},
+ "stylehacks": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
+ "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
+ "requires": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
"stylis": {
"version": "3.5.4",
"resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz",
@@ -10298,15 +11157,115 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
},
+ "svgo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
+ "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
+ "requires": {
+ "chalk": "^2.4.1",
+ "coa": "^2.0.2",
+ "css-select": "^2.0.0",
+ "css-select-base-adapter": "^0.1.1",
+ "css-tree": "1.0.0-alpha.37",
+ "csso": "^4.0.2",
+ "js-yaml": "^3.13.1",
+ "mkdirp": "~0.5.1",
+ "object.values": "^1.1.0",
+ "sax": "~1.2.4",
+ "stable": "^0.1.8",
+ "unquote": "~1.1.1",
+ "util.promisify": "~1.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"
+ }
+ },
+ "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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "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
+ },
+ "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
+ },
+ "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
+ },
+ "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,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^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"
+ }
+ }
+ }
+ },
"tapable": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
"integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="
},
"terser": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.2.tgz",
- "integrity": "sha512-Uufrsvhj9O1ikwgITGsZ5EZS6qPokUOkCegS7fYOdGTv+OA90vndUbU6PEjr5ePqHfNUbGyMO7xyIZv2MhsALQ==",
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
+ "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
"requires": {
"commander": "^2.20.0",
"source-map": "~0.6.1",
@@ -10314,21 +11273,43 @@
}
},
"terser-webpack-plugin": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz",
- "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==",
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz",
+ "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==",
"requires": {
"cacache": "^12.0.2",
"find-cache-dir": "^2.1.0",
"is-wsl": "^1.1.0",
"schema-utils": "^1.0.0",
- "serialize-javascript": "^2.1.2",
+ "serialize-javascript": "^3.1.0",
"source-map": "^0.6.1",
"terser": "^4.1.2",
"webpack-sources": "^1.4.0",
"worker-farm": "^1.7.0"
},
"dependencies": {
+ "cacache": {
+ "version": "12.0.4",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
+ "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+ "requires": {
+ "bluebird": "^3.5.5",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.1.15",
+ "infer-owner": "^1.0.3",
+ "lru-cache": "^5.1.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.3",
+ "ssri": "^6.0.1",
+ "unique-filename": "^1.1.1",
+ "y18n": "^4.0.0"
+ }
+ },
"find-cache-dir": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
@@ -10347,11 +11328,6 @@
"locate-path": "^3.0.0"
}
},
- "is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0="
- },
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -10371,9 +11347,9 @@
}
},
"p-limit": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
- "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
+ "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"
}
@@ -10391,11 +11367,6 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
- },
"pkg-dir": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
@@ -10403,18 +11374,28 @@
"requires": {
"find-up": "^3.0.0"
}
+ },
+ "ssri": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+ "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
}
}
},
- "thread-loader": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz",
- "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==",
- "requires": {
- "loader-runner": "^2.3.1",
- "loader-utils": "^1.1.0",
- "neo-async": "^2.6.0"
- }
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
},
"through2": {
"version": "2.0.5",
@@ -10462,6 +11443,11 @@
"setimmediate": "^1.0.4"
}
},
+ "timsort": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
+ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
+ },
"tiny-emitter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
@@ -10473,6 +11459,15 @@
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz",
"integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g="
},
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
"to-arraybuffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
@@ -10513,11 +11508,12 @@
}
},
"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==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
"requires": {
- "is-number": "^7.0.0"
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
}
},
"toidentifier": {
@@ -10525,6 +11521,14 @@
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
},
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
"traverse": {
"version": "0.6.6",
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
@@ -10551,9 +11555,9 @@
"integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw=="
},
"tslib": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz",
- "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA=="
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
+ "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q=="
},
"tty-browserify": {
"version": "0.0.0",
@@ -10565,6 +11569,20 @@
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
},
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "type-fest": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+ "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="
+ },
"type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@@ -10584,19 +11602,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",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
- "requires": {
- "is-typedarray": "^1.0.0"
- }
- },
- "unfetch": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz",
- "integrity": "sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg=="
- },
"unherit": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz",
@@ -10659,6 +11664,11 @@
"resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
"integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8="
},
+ "uniqs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
+ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI="
+ },
"unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
@@ -10732,6 +11742,11 @@
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
+ "unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ="
+ },
"unset-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
@@ -10825,9 +11840,12 @@
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
},
"use-subscription": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.1.1.tgz",
- "integrity": "sha512-gk4fPTYvNhs6Ia7u8/+K7bM7sZ7O7AMfWtS+zPO8luH+zWuiGgGcrW0hL4MRWZSzXo+4ofNorf87wZwBKz2YdQ=="
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.4.1.tgz",
+ "integrity": "sha512-7+IIwDG/4JICrWHL/Q/ZPK5yozEnvRm6vHImu0LKwQlmWGKeiF7mbAenLlK/cTNXrTtXHU/SFASQHzB6+oSJMQ==",
+ "requires": {
+ "object-assign": "^4.1.1"
+ }
},
"util": {
"version": "0.10.3",
@@ -10849,20 +11867,33 @@
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
+ "util.promisify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
+ "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.2",
+ "has-symbols": "^1.0.1",
+ "object.getownpropertydescriptors": "^2.1.0"
+ }
+ },
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
},
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
+ "v8-compile-cache": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
+ "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==",
+ "dev": true
},
"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==",
+ "dev": true,
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
@@ -10873,6 +11904,11 @@
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
+ "vendors": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz",
+ "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w=="
+ },
"vfile": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
@@ -10919,752 +11955,166 @@
"graceful-fs": "^4.1.2"
}
},
- "wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+ "watchpack-chokidar2": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz",
+ "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==",
+ "optional": true,
"requires": {
- "defaults": "^1.0.3"
+ "chokidar": "^2.1.8"
}
},
+ "web-vitals": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-0.2.1.tgz",
+ "integrity": "sha512-2pdRlp6gJpOCg0oMMqwFF0axjk5D9WInc09RSYtqFgPXQ15+YKNQ7YnBBEqAL5jvmfH9WvoXDMb8DHwux7pIew=="
+ },
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
+ },
"webpack": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz",
- "integrity": "sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w==",
+ "version": "4.44.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.0.tgz",
+ "integrity": "sha512-wAuJxK123sqAw31SpkPiPW3iKHgFUiKvO7E7UZjtdExcsRe3fgav4mvoMM7vvpjLHVoJ6a0Mtp2fzkoA13e0Zw==",
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-module-context": "1.8.5",
- "@webassemblyjs/wasm-edit": "1.8.5",
- "@webassemblyjs/wasm-parser": "1.8.5",
- "acorn": "^6.2.1",
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-module-context": "1.9.0",
+ "@webassemblyjs/wasm-edit": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0",
+ "acorn": "^6.4.1",
"ajv": "^6.10.2",
"ajv-keywords": "^3.4.1",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^4.1.0",
+ "enhanced-resolve": "^4.3.0",
"eslint-scope": "^4.0.3",
"json-parse-better-errors": "^1.0.2",
"loader-runner": "^2.4.0",
"loader-utils": "^1.2.3",
"memory-fs": "^0.4.1",
"micromatch": "^3.1.10",
- "mkdirp": "^0.5.1",
+ "mkdirp": "^0.5.3",
"neo-async": "^2.6.1",
"node-libs-browser": "^2.2.1",
"schema-utils": "^1.0.0",
"tapable": "^1.1.3",
"terser-webpack-plugin": "^1.4.3",
- "watchpack": "^1.6.0",
+ "watchpack": "^1.7.4",
"webpack-sources": "^1.4.1"
},
"dependencies": {
"anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+ "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "optional": true,
"requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- },
- "dependencies": {
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
}
},
"binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
+ "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
+ "optional": true
},
"braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "optional": true,
"requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
+ "fill-range": "^7.0.1"
}
},
"chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz",
+ "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==",
+ "optional": true,
"requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "fsevents": "^1.2.7",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
+ "anymatch": "~3.1.1",
+ "braces": "~3.0.2",
+ "fsevents": "~2.1.2",
+ "glob-parent": "~5.1.0",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.4.0"
}
},
"fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "optional": true,
"requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
+ "to-regex-range": "^5.0.1"
}
},
"fsevents": {
- "version": "1.2.12",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
- "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
- "optional": true,
- "requires": {
- "node-pre-gyp": "*"
- },
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "bundled": true,
- "optional": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true,
- "optional": true
- },
- "aproba": {
- "version": "1.2.0",
- "bundled": true,
- "optional": true
- },
- "are-we-there-yet": {
- "version": "1.1.5",
- "bundled": true,
- "optional": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true,
- "optional": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "optional": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "chownr": {
- "version": "1.1.4",
- "bundled": true,
- "optional": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true,
- "optional": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true,
- "optional": true
- },
- "console-control-strings": {
- "version": "1.1.0",
- "bundled": true,
- "optional": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "bundled": true,
- "optional": true
- },
- "debug": {
- "version": "3.2.6",
- "bundled": true,
- "optional": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "deep-extend": {
- "version": "0.6.0",
- "bundled": true,
- "optional": true
- },
- "delegates": {
- "version": "1.0.0",
- "bundled": true,
- "optional": true
- },
- "detect-libc": {
- "version": "1.0.3",
- "bundled": true,
- "optional": true
- },
- "fs-minipass": {
- "version": "1.2.7",
- "bundled": true,
- "optional": true,
- "requires": {
- "minipass": "^2.6.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "bundled": true,
- "optional": true
- },
- "gauge": {
- "version": "2.7.4",
- "bundled": true,
- "optional": true,
- "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"
- }
- },
- "glob": {
- "version": "7.1.6",
- "bundled": true,
- "optional": true,
- "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"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "bundled": true,
- "optional": true
- },
- "iconv-lite": {
- "version": "0.4.24",
- "bundled": true,
- "optional": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ignore-walk": {
- "version": "3.0.3",
- "bundled": true,
- "optional": true,
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "bundled": true,
- "optional": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "bundled": true,
- "optional": true
- },
- "ini": {
- "version": "1.3.5",
- "bundled": true,
- "optional": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "optional": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "bundled": true,
- "optional": true
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "optional": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.5",
- "bundled": true,
- "optional": true
- },
- "minipass": {
- "version": "2.9.0",
- "bundled": true,
- "optional": true,
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "minizlib": {
- "version": "1.3.3",
- "bundled": true,
- "optional": true,
- "requires": {
- "minipass": "^2.9.0"
- }
- },
- "mkdirp": {
- "version": "0.5.3",
- "bundled": true,
- "optional": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "ms": {
- "version": "2.1.2",
- "bundled": true,
- "optional": true
- },
- "needle": {
- "version": "2.3.3",
- "bundled": true,
- "optional": true,
- "requires": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- }
- },
- "node-pre-gyp": {
- "version": "0.14.0",
- "bundled": true,
- "optional": true,
- "requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.1",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4.4.2"
- }
- },
- "nopt": {
- "version": "4.0.3",
- "bundled": true,
- "optional": true,
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- },
- "npm-bundled": {
- "version": "1.1.1",
- "bundled": true,
- "optional": true,
- "requires": {
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npm-normalize-package-bin": {
- "version": "1.0.1",
- "bundled": true,
- "optional": true
- },
- "npm-packlist": {
- "version": "1.4.8",
- "bundled": true,
- "optional": true,
- "requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1",
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "bundled": true,
- "optional": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true,
- "optional": true
- },
- "object-assign": {
- "version": "4.1.1",
- "bundled": true,
- "optional": true
- },
- "once": {
- "version": "1.4.0",
- "bundled": true,
- "optional": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "bundled": true,
- "optional": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "bundled": true,
- "optional": true
- },
- "osenv": {
- "version": "0.1.5",
- "bundled": true,
- "optional": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "bundled": true,
- "optional": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "bundled": true,
- "optional": true
- },
- "rc": {
- "version": "1.2.8",
- "bundled": true,
- "optional": true,
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "bundled": true,
- "optional": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "bundled": true,
- "optional": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "bundled": true,
- "optional": true
- },
- "safer-buffer": {
- "version": "2.1.2",
- "bundled": true,
- "optional": true
- },
- "sax": {
- "version": "1.2.4",
- "bundled": true,
- "optional": true
- },
- "semver": {
- "version": "5.7.1",
- "bundled": true,
- "optional": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true,
- "optional": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true,
- "optional": true
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "optional": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "bundled": true,
- "optional": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "optional": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "bundled": true,
- "optional": true
- },
- "tar": {
- "version": "4.4.13",
- "bundled": true,
- "optional": true,
- "requires": {
- "chownr": "^1.1.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.8.6",
- "minizlib": "^1.2.1",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.3"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "bundled": true,
- "optional": true
- },
- "wide-align": {
- "version": "1.1.3",
- "bundled": true,
- "optional": true,
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "bundled": true,
- "optional": true
- },
- "yallist": {
- "version": "3.1.1",
- "bundled": true,
- "optional": true
- }
- }
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
+ "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
+ "optional": true
},
"glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+ "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+ "optional": true,
"requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
+ "is-glob": "^4.0.1"
}
},
"is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "optional": true,
"requires": {
- "binary-extensions": "^1.0.0"
+ "binary-extensions": "^2.0.0"
}
},
"is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "optional": true
},
"readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
+ "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
+ "optional": true,
"requires": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.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=="
- },
- "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"
+ "picomatch": "^2.2.1"
}
},
"to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "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==",
+ "optional": true,
"requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
+ "is-number": "^7.0.0"
}
},
"watchpack": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz",
- "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==",
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz",
+ "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==",
"requires": {
- "chokidar": "^2.1.8",
+ "chokidar": "^3.4.1",
"graceful-fs": "^4.1.2",
- "neo-async": "^2.5.0"
+ "neo-async": "^2.5.0",
+ "watchpack-chokidar2": "^2.0.0"
}
}
}
},
- "webpack-dev-middleware": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz",
- "integrity": "sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==",
- "requires": {
- "memory-fs": "^0.4.1",
- "mime": "^2.4.2",
- "range-parser": "^1.2.1",
- "webpack-log": "^2.0.0"
- },
- "dependencies": {
- "mime": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
- "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
- }
- }
- },
- "webpack-hot-middleware": {
- "version": "2.25.0",
- "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz",
- "integrity": "sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA==",
- "requires": {
- "ansi-html": "0.0.7",
- "html-entities": "^1.2.0",
- "querystring": "^0.2.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "webpack-log": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
- "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
- "requires": {
- "ansi-colors": "^3.0.0",
- "uuid": "^3.3.2"
- }
- },
- "webpack-merge": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
- "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
- "requires": {
- "lodash": "^4.17.15"
- }
- },
"webpack-sources": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
@@ -11674,10 +12124,15 @@
"source-map": "~0.6.1"
}
},
- "whatwg-fetch": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
- "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
+ "whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
},
"which": {
"version": "2.0.2",
@@ -11688,6 +12143,12 @@
"isexe": "^2.0.0"
}
},
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true
+ },
"worker-farm": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
@@ -11696,28 +12157,18 @@
"errno": "~0.1.7"
}
},
- "worker-rpc": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz",
- "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==",
- "requires": {
- "microevent.ts": "~0.1.1"
- }
- },
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
- "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==",
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
"requires": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
+ "mkdirp": "^0.5.1"
}
},
"x-is-string": {
diff --git a/website/package.json b/website/package.json
index 4d730ab..0045064 100644
--- a/website/package.json
+++ b/website/package.json
@@ -4,10 +4,11 @@
"description": "Website frontend for FunctionProject",
"main": "server.js",
"scripts": {
- "dev": "cross-env NODE_ENV=dev node server",
+ "dev": "cross-env NODE_ENV=development node server",
"build": "next build",
"export": "next export",
- "start": "cross-env NODE_ENV=production node server"
+ "start": "cross-env NODE_ENV=production node server",
+ "format": "standard \"./**/*.{js,jsx}\" --fix | snazzy || exit 0"
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.28",
@@ -22,7 +23,7 @@
"express": "^4.17.1",
"express-http-to-https": "^1.1.4",
"html-react-parser": "^0.10.2",
- "next": "9.3.2",
+ "next": "^9.5.1",
"next-fonts": "^1.0.3",
"notyf": "^3.6.0",
"nprogress": "^0.2.0",
@@ -39,6 +40,8 @@
"universal-cookie": "^4.0.3"
},
"devDependencies": {
- "cross-env": "^7.0.2"
+ "cross-env": "^7.0.2",
+ "snazzy": "^8.0.0",
+ "standard": "^14.3.4"
}
}
diff --git a/website/pages/404.js b/website/pages/404.js
index ef79cca..d23a327 100644
--- a/website/pages/404.js
+++ b/website/pages/404.js
@@ -1,22 +1,21 @@
-import { Fragment } from 'react';
-import Link from 'next/link';
-import HeadTag from '../components/HeadTag';
-import '../public/css/pages/404.css';
+import Link from 'next/link'
+import HeadTag from '../components/HeadTag'
+import '../public/css/pages/404.css'
const Error404 = () => (
-
-
-
-
-);
+ <>
+
+
+ >
+)
-export default Error404;
\ No newline at end of file
+export default Error404
diff --git a/website/pages/_app.js b/website/pages/_app.js
index b090e89..91be737 100644
--- a/website/pages/_app.js
+++ b/website/pages/_app.js
@@ -1,33 +1,33 @@
/* Libraries Imports */
import Router from 'next/router'
-import NProgress from 'nprogress';
+import NProgress from 'nprogress'
/* Components Imports */
-import Header from '../components/Header/Header';
-import Footer from '../components/Footer/Footer';
+import Header from '../components/Header/Header'
+import Footer from '../components/Footer/Footer'
/* Contexts Imports */
-import UserContextProvider from '../contexts/UserContext';
+import UserContextProvider from '../contexts/UserContext'
/* CSS Imports */
-import '../public/fonts/Montserrat/Montserrat.css';
-import '../public/css/normalize.css';
-import '../public/css/grid.css';
-import '../public/css/general.css';
-import '../public/css/nprogress.css';
+import '../public/fonts/Montserrat/Montserrat.css'
+import '../public/css/normalize.css'
+import '../public/css/grid.css'
+import '../public/css/general.css'
+import '../public/css/nprogress.css'
+
+Router.events.on('routeChangeStart', () => NProgress.start())
+Router.events.on('routeChangeComplete', () => NProgress.done())
+Router.events.on('routeChangeError', () => NProgress.done())
-Router.events.on('routeChangeStart', () => NProgress.start());
-Router.events.on('routeChangeComplete', () => NProgress.done());
-Router.events.on('routeChangeError', () => NProgress.done());
-
const App = ({ Component, pageProps }) => (
-
-
-
-
-
-
-
-);
+
+
+
+
+
+
+
+)
-export default App;
\ No newline at end of file
+export default App
diff --git a/website/pages/_document.js b/website/pages/_document.js
index 91818f6..d3913c3 100644
--- a/website/pages/_document.js
+++ b/website/pages/_document.js
@@ -1,28 +1,28 @@
-import Document, { Html, Head, Main, NextScript } from "next/document";
-import Loader from '../components/Loader';
+import Document, { Html, Head, Main, NextScript } from 'next/document'
+import Loader from '../components/Loader'
class MyDocument extends Document {
- static async getInitialProps(ctx) {
- const initialProps = await Document.getInitialProps(ctx);
- return { ...initialProps };
- }
+ static async getInitialProps (ctx) {
+ const initialProps = await Document.getInitialProps(ctx)
+ return { ...initialProps }
+ }
- render() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- );
- }
+ render () {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ }
}
-export default MyDocument;
\ No newline at end of file
+export default MyDocument
diff --git a/website/pages/about.js b/website/pages/about.js
index dfd52f0..2ebd5be 100644
--- a/website/pages/about.js
+++ b/website/pages/about.js
@@ -1,49 +1,48 @@
-import { Fragment } from 'react';
import axios from 'axios'
-import ReactMarkdown from 'react-markdown/with-html';
-import HeadTag from '../components/HeadTag';
+import ReactMarkdown from 'react-markdown/with-html'
+import HeadTag from '../components/HeadTag'
const About = (props) => {
- return (
-
-
+
+
+
+
+
+
À-propos
+
(README.md du GitHub )
+
+
+
+
+
+
{
+ if (uri.startsWith('./')) {
+ return `https://github.com/Divlo/FunctionProject/blob/master/${uri.slice(2)}`
+ }
+ return uri
+ }}
/>
-
-
-
-
-
À-propos
-
(README.md du GitHub )
-
-
-
-
-
- {
- if (uri.startsWith('./')) {
- return `https://github.com/Divlo/FunctionProject/blob/master/${uri.slice(2)}`;
- }
- return uri;
- }}
- />
-
-
-
-
- );
+
+
+
+ >
+ )
}
-export async function getServerSideProps(_context) {
- const { data } = await axios.get('https://raw.githubusercontent.com/Divlo/FunctionProject/master/README.md');
- return {
- props: { data }
- };
+export async function getServerSideProps (_context) {
+ const { data } = await axios.get('https://raw.githubusercontent.com/Divlo/FunctionProject/master/README.md')
+ return {
+ props: { data }
+ }
}
-export default About;
\ No newline at end of file
+export default About
diff --git a/website/pages/admin/[slug].js b/website/pages/admin/[slug].js
index fc10531..b5cc43d 100644
--- a/website/pages/admin/[slug].js
+++ b/website/pages/admin/[slug].js
@@ -1,88 +1,87 @@
-import { Fragment, useState } from 'react';
-import Cookies from "universal-cookie";
-import SwipeableViews from 'react-swipeable-views';
-import HeadTag from '../../components/HeadTag';
-import AddEditFunction from '../../components/FunctionAdmin/AddEditFunction';
-import EditArticleFunction from '../../components/FunctionAdmin/EditArticleFunction';
-import EditFormFunction from '../../components/FunctionAdmin/EditFormFunction';
-import redirect from '../../utils/redirect';
-import api from '../../utils/api';
-import { API_URL } from '../../utils/config/config';
-import '../../components/FunctionPage/FunctionTabs.css';
-import '../../public/css/pages/admin.css';
+import { useState } from 'react'
+import Cookies from 'universal-cookie'
+import SwipeableViews from 'react-swipeable-views'
+import HeadTag from '../../components/HeadTag'
+import AddEditFunction from '../../components/FunctionAdmin/AddEditFunction'
+import EditArticleFunction from '../../components/FunctionAdmin/EditArticleFunction'
+import EditFormFunction from '../../components/FunctionAdmin/EditFormFunction'
+import redirect from '../../utils/redirect'
+import api from '../../utils/api'
+import { API_URL } from '../../utils/config/config'
+import '../../components/FunctionPage/FunctionTabs.css'
+import '../../public/css/pages/admin.css'
const AdminFunctionComponent = (props) => {
+ const [slideIndex, setSlideIndex] = useState(0)
- const [slideIndex, setSlideIndex] = useState(0);
+ const handleDeleteFunction = async () => {
+ await api.delete(`/admin/functions/${props.functionInfo.id}`, { headers: { Authorization: props.user.token } })
+ redirect({}, '/admin')
+ }
- const handleDeleteFunction = async () => {
- await api.delete(`/admin/functions/${props.functionInfo.id}`, { headers: { 'Authorization': props.user.token } });
- redirect({}, '/admin');
- }
+ return (
+ <>
+
- return (
-
-
+
+
-
-
-
-
-
setSlideIndex(index)} index={slideIndex}>
-
-
-
- Supprimer la fonction
-
-
-
-
-
-
-
-
-
-
+
+
setSlideIndex(index)} index={slideIndex}>
+
+
+
+ Supprimer la fonction
+
-
- );
+
+
+
+
+
+
+
+
+
+ >
+ )
}
-export async function getServerSideProps(context) {
- const cookies = new Cookies(context.req.headers.cookie);
- const user = { ...cookies.get('user') };
- const { slug } = context.params;
- if (!user.isAdmin) {
- return redirect(context, '/404');
- }
- return api.get(`/admin/functions/${slug}`, { headers: { 'Authorization': user.token } })
- .then((response) => {
- return {
- props: {
- user,
- functionInfo: response.data
- }
- };
- })
- .catch(() => redirect(context, '/404'));
+export async function getServerSideProps (context) {
+ const cookies = new Cookies(context.req.headers.cookie)
+ const user = { ...cookies.get('user') }
+ const { slug } = context.params
+ if (!user.isAdmin) {
+ return redirect(context, '/404')
+ }
+ return api.get(`/admin/functions/${slug}`, { headers: { Authorization: user.token } })
+ .then((response) => {
+ return {
+ props: {
+ user,
+ functionInfo: response.data
+ }
+ }
+ })
+ .catch(() => redirect(context, '/404'))
}
-export default AdminFunctionComponent;
\ No newline at end of file
+export default AdminFunctionComponent
diff --git a/website/pages/admin/index.js b/website/pages/admin/index.js
index 4ebb0a9..55c17d7 100644
--- a/website/pages/admin/index.js
+++ b/website/pages/admin/index.js
@@ -1,76 +1,76 @@
-import Link from 'next/link';
-import { Fragment, useState } from 'react';
-import Cookies from "universal-cookie";
-import HeadTag from '../../components/HeadTag';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faTimes } from '@fortawesome/free-solid-svg-icons';
-import Modal from '../../components/Modal';
-import FunctionsList from '../../components/FunctionsList/FunctionsList';
-import AddEditFunction from '../../components/FunctionAdmin/AddEditFunction';
-import redirect from '../../utils/redirect';
-import '../../public/css/pages/admin.css';
+import Link from 'next/link'
+import { useState } from 'react'
+import Cookies from 'universal-cookie'
+import HeadTag from '../../components/HeadTag'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { faTimes } from '@fortawesome/free-solid-svg-icons'
+import Modal from '../../components/Modal'
+import FunctionsList from '../../components/FunctionsList/FunctionsList'
+import AddEditFunction from '../../components/FunctionAdmin/AddEditFunction'
+import redirect from '../../utils/redirect'
+import '../../public/css/pages/admin.css'
const Admin = (props) => {
+ const [isOpen, setIsOpen] = useState(false)
- const [isOpen, setIsOpen] = useState(false);
+ const toggleModal = () => setIsOpen(!isOpen)
- const toggleModal = () => setIsOpen(!isOpen);
+ return (
+ <>
+
- return (
-
-
+ {/* Création d'une fonction */}
+ {(isOpen)
+ ? (
+
+
+
+
+
+
+
+
+
+
Crée une nouvelle fonction
+
+
+
- {/* Création d'une fonction */}
- {(isOpen) ?
-
-
-
-
-
-
-
-
-
-
Crée une nouvelle fonction
-
-
-
+
+
+
+
+ )
-
-
-
-
-
- :
-
-
-
-
Administration
- Crée une nouvelle fonction
-
- Gérer les catégories
-
-
- Gérer les citations
-
-
-
- }
-
- );
+ : (
+
+
+
Administration
+ Crée une nouvelle fonction
+
+ Gérer les catégories
+
+
+ Gérer les citations
+
+
+
+ )}
+ >
+ )
}
-export async function getServerSideProps(context) {
- const cookies = new Cookies(context.req.headers.cookie);
- const user = { ...cookies.get('user') };
- if (!user.isAdmin) {
- return redirect(context, '/404');
- }
- return {
- props: { user }
- };
+export async function getServerSideProps (context) {
+ const cookies = new Cookies(context.req.headers.cookie)
+ const user = { ...cookies.get('user') }
+ if (!user.isAdmin) {
+ return redirect(context, '/404')
+ }
+ return {
+ props: { user }
+ }
}
-export default Admin;
\ No newline at end of file
+export default Admin
diff --git a/website/pages/admin/manageCategories.js b/website/pages/admin/manageCategories.js
index 137cd93..0bce32a 100644
--- a/website/pages/admin/manageCategories.js
+++ b/website/pages/admin/manageCategories.js
@@ -1,187 +1,187 @@
-import { Fragment, useState } from 'react';
-import Cookies from "universal-cookie";
-import date from 'date-and-time';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faPen, faTrash, faTimes } from '@fortawesome/free-solid-svg-icons';
-import { PhotoshopPicker } from 'react-color';
-import HeadTag from '../../components/HeadTag';
-import Modal from '../../components/Modal';
-import redirect from '../../utils/redirect';
-import htmlParser from 'html-react-parser';
-import Loader from '../../components/Loader';
-import useAPI from '../../hooks/useAPI';
-import api from '../../utils/api';
-import '../../public/css/pages/admin.css';
+import { useState } from 'react'
+import Cookies from 'universal-cookie'
+import date from 'date-and-time'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { faPen, faTrash, faTimes } from '@fortawesome/free-solid-svg-icons'
+import { PhotoshopPicker } from 'react-color'
+import HeadTag from '../../components/HeadTag'
+import Modal from '../../components/Modal'
+import redirect from '../../utils/redirect'
+import htmlParser from 'html-react-parser'
+import Loader from '../../components/Loader'
+import useAPI from '../../hooks/useAPI'
+import api from '../../utils/api'
+import '../../public/css/pages/admin.css'
-const defaultCategoryState = { name: "", color: "#ffffff" };
+const defaultCategoryState = { name: '', color: '#ffffff' }
const AddEditCategory = (props) => {
+ const [inputState, setInputState] = useState(props.defaultInputState)
+ const [message, setMessage] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
- const [inputState, setInputState] = useState(props.defaultInputState);
- const [message, setMessage] = useState("");
- const [isLoading, setIsLoading] = useState(false);
+ const handleChange = (event, isTypeCheck = false) => {
+ const inputStateNew = { ...inputState }
+ inputStateNew[event.target.name] = (event.target.files != null) ? event.target.files[0] : (isTypeCheck) ? event.target.checked : event.target.value
+ setInputState(inputStateNew)
+ }
- const handleChange = (event, isTypeCheck = false) => {
- const inputStateNew = { ...inputState };
- inputStateNew[event.target.name] = (event.target.files != undefined) ? event.target.files[0] : (isTypeCheck) ? event.target.checked : event.target.value;
- setInputState(inputStateNew);
- }
+ const apiCallCategory = () => {
+ if (props.isEditing) return api.put(`/admin/categories/${inputState.id}`, { name: inputState.name, color: inputState.color }, { headers: { Authorization: props.user.token } })
+ return api.post('/admin/categories', inputState, { headers: { Authorization: props.user.token } })
+ }
- const apiCallCategory = () => {
- if (props.isEditing) return api.put(`/admin/categories/${inputState.id}`, { name: inputState.name, color: inputState.color }, { headers: { 'Authorization': props.user.token } });
- return api.post('/admin/categories', inputState, { headers: { 'Authorization': props.user.token } });
- }
+ const handleSubmit = (event) => {
+ event.preventDefault()
+ setIsLoading(true)
+ apiCallCategory()
+ .then(() => {
+ setIsLoading(false)
+ window.location.reload(true)
+ })
+ .catch((error) => {
+ setMessage(`
Erreur: ${error.response.data.message}
`)
+ setIsLoading(false)
+ })
+ }
- const handleSubmit = (event) => {
- event.preventDefault();
- setIsLoading(true);
- apiCallCategory()
- .then(() => {
- setIsLoading(false);
- window.location.reload(true);
- })
- .catch((error) => {
- setMessage(`
Erreur: ${error.response.data.message}
`);
- setIsLoading(false);
- });
- }
-
- return (
-
-
-
-
-
-
-
-
-
{(props.isEditing) ? "Modifier la catégorie" : "Crée une nouvelle catégorie"}
-
-
-
-
-
-
-
- Nom :
-
-
-
-
-
Couleur :
-
handleChange({ target: { name: "color", value: color.hex } })} />
-
-
-
- Envoyer
-
-
-
- {
- (isLoading) ?
-
- :
- htmlParser(message)
- }
-
-
+ return (
+
+
+
+
+
+
+
+
+
{(props.isEditing) ? 'Modifier la catégorie' : 'Crée une nouvelle catégorie'}
+
- );
+
+
+
+
+ Nom :
+
+
+
+
+
Couleur :
+
handleChange({ target: { name: 'color', value: color.hex } })} />
+
+
+
+ Envoyer
+
+
+
+ {
+ (isLoading)
+ ?
+ : htmlParser(message)
+ }
+
+
+
+
+ )
}
const manageCategories = (props) => {
+ const [, categories] = useAPI('/categories')
+ const [isOpen, setIsOpen] = useState(false)
+ const [isEditing, setIsEditing] = useState(false)
+ const [defaultInputState, setDefaultInputState] = useState(defaultCategoryState)
- const [, categories] = useAPI('/categories');
- const [isOpen, setIsOpen] = useState(false);
- const [isEditing, setIsEditing] = useState(false);
- const [defaultInputState, setDefaultInputState] = useState(defaultCategoryState);
+ const toggleModal = () => setIsOpen(!isOpen)
- const toggleModal = () => setIsOpen(!isOpen);
+ const handleRemoveCategory = async (categoryId) => {
+ try {
+ await api.delete(`/admin/categories/${categoryId}`, { headers: { Authorization: props.user.token } })
+ window.location.reload(true)
+ } catch {}
+ }
- const handleRemoveCategory = async (categoryId) => {
- try {
- await api.delete(`/admin/categories/${categoryId}`, { headers: { 'Authorization': props.user.token } });
- window.location.reload(true);
- } catch {}
- }
+ const handleEditCategory = (categoryInfo) => {
+ setDefaultInputState(categoryInfo)
+ setIsEditing(true)
+ toggleModal()
+ }
- const handleEditCategory = (categoryInfo) => {
- setDefaultInputState(categoryInfo);
- setIsEditing(true);
- toggleModal();
- }
+ return (
+ <>
+
- return (
-
-
-
- {
- (isOpen) ?
-
-
-
- :
-
-
-
-
Gérer les catégories
- { setDefaultInputState(defaultCategoryState); toggleModal(); setIsEditing(false); }} style={{ margin: '0 0 40px 0' }} className="btn btn-dark">Ajouter une catégorie
-
-
-
-
-
-
-
-
- id
- name
- color
- createdAt
- updatedAt
- Modifier
- Supprimer
-
-
-
- {categories.map((category) => {
- return (
-
- {category.id}
- {category.name}
- {category.color}
- {date.format(new Date(category.createdAt), 'DD/MM/YYYY à HH:mm', true)}
- {date.format(new Date(category.updatedAt), 'DD/MM/YYYY à HH:mm', true)}
- handleEditCategory({ name: category.name, color: category.color, id: category.id })}>
-
-
- handleRemoveCategory(category.id)}>
-
-
-
- );
- })}
-
-
-
-
-
-
- }
-
- );
+ {
+ (isOpen)
+ ? (
+
+
+
+ )
+ : (
+
+
+
+
Gérer les catégories
+ { setDefaultInputState(defaultCategoryState); toggleModal(); setIsEditing(false) }} style={{ margin: '0 0 40px 0' }} className='btn btn-dark'>Ajouter une catégorie
+
+
+
+
+
+
+
+
+ id
+ name
+ color
+ createdAt
+ updatedAt
+ Modifier
+ Supprimer
+
+
+
+ {categories.map((category) => {
+ return (
+
+ {category.id}
+ {category.name}
+ {category.color}
+ {date.format(new Date(category.createdAt), 'DD/MM/YYYY à HH:mm', true)}
+ {date.format(new Date(category.updatedAt), 'DD/MM/YYYY à HH:mm', true)}
+ handleEditCategory({ name: category.name, color: category.color, id: category.id })}>
+
+
+ handleRemoveCategory(category.id)}>
+
+
+
+ )
+ })}
+
+
+
+
+
+
+ )
+ }
+ >
+ )
}
-export async function getServerSideProps(context) {
- const cookies = new Cookies(context.req.headers.cookie);
- const user = { ...cookies.get('user') };
- if (!user.isAdmin) {
- return redirect(context, '/404');
- }
- return {
- props: { user }
- };
+export async function getServerSideProps (context) {
+ const cookies = new Cookies(context.req.headers.cookie)
+ const user = { ...cookies.get('user') }
+ if (!user.isAdmin) {
+ return redirect(context, '/404')
+ }
+ return {
+ props: { user }
+ }
}
-export default manageCategories;
\ No newline at end of file
+export default manageCategories
diff --git a/website/pages/admin/manageQuotes.js b/website/pages/admin/manageQuotes.js
index 4275a73..0227fda 100644
--- a/website/pages/admin/manageQuotes.js
+++ b/website/pages/admin/manageQuotes.js
@@ -1,122 +1,121 @@
-import { Fragment, useState, useEffect, useRef, useCallback } from 'react';
-import Cookies from "universal-cookie";
-import Link from 'next/link';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faCheck, faTrash } from '@fortawesome/free-solid-svg-icons';
-import redirect from '../../utils/redirect';
-import HeadTag from '../../components/HeadTag';
-import api from '../../utils/api';
-import '../../public/css/pages/admin.css';
+import { useState, useEffect, useRef, useCallback } from 'react'
+import Cookies from 'universal-cookie'
+import Link from 'next/link'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { faCheck, faTrash } from '@fortawesome/free-solid-svg-icons'
+import redirect from '../../utils/redirect'
+import HeadTag from '../../components/HeadTag'
+import api from '../../utils/api'
+import '../../public/css/pages/admin.css'
const manageQuotes = (props) => {
+ const [quotesData, setQuotesData] = useState({ hasMore: true, rows: [], totalItems: 0 })
+ const [isLoadingQuotes, setLoadingQuotes] = useState(true)
+ const [pageQuotes, setPageQuotes] = useState(1)
- const [quotesData, setQuotesData] = useState({ hasMore: true, rows: [], totalItems: 0 });
- const [isLoadingQuotes, setLoadingQuotes] = useState(true);
- const [pageQuotes, setPageQuotes] = useState(1);
+ // Récupère les citations si la page change
+ useEffect(() => {
+ getQuotesData()
+ }, [pageQuotes])
- // Récupère les citations si la page change
- useEffect(() => {
- getQuotesData();
- }, [pageQuotes]);
+ const getQuotesData = async () => {
+ setLoadingQuotes(true)
+ const { data } = await api.get(`/admin/quotes?limit=20page=${pageQuotes}`, { headers: { Authorization: props.user.token } })
+ setQuotesData({
+ hasMore: data.hasMore,
+ rows: [...quotesData.rows, ...data.rows],
+ totalItems: data.totalItems
+ })
+ setLoadingQuotes(false)
+ }
- const getQuotesData = async () => {
- setLoadingQuotes(true);
- const { data } = await api.get(`/admin/quotes?limit=20page=${pageQuotes}`, { headers: { 'Authorization': props.user.token } });
- setQuotesData({
- hasMore: data.hasMore,
- rows: [...quotesData.rows, ...data.rows],
- totalItems: data.totalItems
- });
- setLoadingQuotes(false);
- }
+ // Permet la pagination au scroll
+ const observer = useRef()
+ const lastQuoteRef = useCallback((node) => {
+ if (isLoadingQuotes) return
+ if (observer.current) observer.current.disconnect()
+ observer.current = new window.IntersectionObserver((entries) => {
+ if (entries[0].isIntersecting && quotesData.hasMore) {
+ setPageQuotes(pageQuotes + 1)
+ }
+ }, { threshold: 1 })
+ if (node) observer.current.observe(node)
+ }, [isLoadingQuotes, quotesData.hasMore])
- // Permet la pagination au scroll
- const observer = useRef();
- const lastQuoteRef = useCallback((node) => {
- if (isLoadingQuotes) return;
- if (observer.current) observer.current.disconnect();
- observer.current = new IntersectionObserver((entries) => {
- if (entries[0].isIntersecting && quotesData.hasMore) {
- setPageQuotes(pageQuotes + 1);
- }
- }, { threshold: 1 });
- if (node) observer.current.observe(node);
- }, [isLoadingQuotes, quotesData.hasMore]);
+ const handleValidationQuote = async (id, isValid) => {
+ try {
+ await api.put(`/admin/quotes/${id}`, { isValid }, { headers: { Authorization: props.user.token } })
+ window.location.reload(true)
+ } catch {}
+ }
- const handleValidationQuote = async (id, isValid) => {
- try {
- await api.put(`/admin/quotes/${id}`, { isValid }, { headers: { 'Authorization': props.user.token } });
- window.location.reload(true);
- } catch {}
- }
+ return (
+ <>
+
- return (
-
-
+
+
+
+
Liste des citations (non validées) :
+
Total de {quotesData.totalItems} citations.
+
+
-
-
-
-
Liste des citations (non validées) :
-
Total de {quotesData.totalItems} citations.
-
-
-
-
-
-
-
-
- Citation/Proverbe
- Auteur
- Proposée par
- Valider
- Supprimer
-
-
-
- {quotesData.rows.map((currentQuote, index) => {
- const quoteJSX = (
-
- {currentQuote.quote}
- {currentQuote.author}
-
-
- {currentQuote.user.name}
-
-
- handleValidationQuote(currentQuote.id, true)} className="table-row text-center" style={{ cursor: 'pointer' }}>
-
-
- handleValidationQuote(currentQuote.id, false)} className="table-row text-center" style={{ cursor: 'pointer' }}>
-
-
-
- );
- // Si c'est le dernier élément
- if (quotesData.rows.length === index + 1) {
- return {quoteJSX}
- }
- return {quoteJSX}
- })}
-
-
-
-
-
-
- );
+
+
+
+
+
+ Citation/Proverbe
+ Auteur
+ Proposée par
+ Valider
+ Supprimer
+
+
+
+ {quotesData.rows.map((currentQuote, index) => {
+ const quoteJSX = (
+ <>
+ {currentQuote.quote}
+ {currentQuote.author}
+
+
+ {currentQuote.user.name}
+
+
+ handleValidationQuote(currentQuote.id, true)} className='table-row text-center' style={{ cursor: 'pointer' }}>
+
+
+ handleValidationQuote(currentQuote.id, false)} className='table-row text-center' style={{ cursor: 'pointer' }}>
+
+
+ >
+ )
+ // Si c'est le dernier élément
+ if (quotesData.rows.length === index + 1) {
+ return {quoteJSX}
+ }
+ return {quoteJSX}
+ })}
+
+
+
+
+
+ >
+ )
}
-export async function getServerSideProps(context) {
- const cookies = new Cookies(context.req.headers.cookie);
- const user = { ...cookies.get('user') };
- if (!user.isAdmin) {
- return redirect(context, '/404');
- }
- return {
- props: { user }
- };
+export async function getServerSideProps (context) {
+ const cookies = new Cookies(context.req.headers.cookie)
+ const user = { ...cookies.get('user') }
+ if (!user.isAdmin) {
+ return redirect(context, '/404')
+ }
+ return {
+ props: { user }
+ }
}
-export default manageQuotes;
\ No newline at end of file
+export default manageQuotes
diff --git a/website/pages/functions/[slug].js b/website/pages/functions/[slug].js
index fd7f46e..3ca4859 100644
--- a/website/pages/functions/[slug].js
+++ b/website/pages/functions/[slug].js
@@ -1,54 +1,54 @@
-import FunctionTabs from '../../components/FunctionPage/FunctionTabs';
-import FunctionForm from '../../components/FunctionPage/FunctionForm';
-import FunctionArticle from '../../components/FunctionPage/FunctionArticle';
-import FunctionComments from '../../components/FunctionPage/FunctionComments/FunctionComments';
-import FunctionPage from '../../components/FunctionPage/FunctionPage';
-import redirect from '../../utils/redirect';
-import api from '../../utils/api';
-import '../../public/css/pages/FunctionComponent.css';
+import FunctionTabs from '../../components/FunctionPage/FunctionTabs'
+import FunctionForm from '../../components/FunctionPage/FunctionForm'
+import FunctionArticle from '../../components/FunctionPage/FunctionArticle'
+import FunctionComments from '../../components/FunctionPage/FunctionComments/FunctionComments'
+import FunctionPage from '../../components/FunctionPage/FunctionPage'
+import redirect from '../../utils/redirect'
+import api from '../../utils/api'
+import '../../public/css/pages/FunctionComponent.css'
const FunctionTabManager = (props) => {
- if (props.type === "form") {
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
- }
-
+ if (props.type === 'form') {
return (
-
-
-
-
-
-
-
-
- );
+
+
+
+
+
+
+
+
+
+
+
+ )
+ }
+
+ return (
+
+
+
+
+
+
+
+
+ )
}
const FunctionComponent = (props) => (
-
-);
+
+)
-export async function getServerSideProps(context) {
- const { slug } = context.params;
- return api.get(`/functions/${slug}`)
- .then((response) => ({ props: response.data }))
- .catch(() => redirect(context, '/404'));
+export async function getServerSideProps (context) {
+ const { slug } = context.params
+ return api.get(`/functions/${slug}`)
+ .then((response) => ({ props: response.data }))
+ .catch(() => redirect(context, '/404'))
}
-export default FunctionComponent;
\ No newline at end of file
+export default FunctionComponent
diff --git a/website/pages/functions/chronometerTimer.js b/website/pages/functions/chronometerTimer.js
index 6679d1a..e7885c4 100644
--- a/website/pages/functions/chronometerTimer.js
+++ b/website/pages/functions/chronometerTimer.js
@@ -1,124 +1,123 @@
-import { useState } from 'react';
-import Codepen from "react-codepen-embed";
-import redirect from '../../utils/redirect';
-import FunctionPage from '../../components/FunctionPage/FunctionPage';
-import FunctionTabs from '../../components/FunctionPage/FunctionTabs';
-import FunctionArticle from '../../components/FunctionPage/FunctionArticle';
-import FunctionComments from '../../components/FunctionPage/FunctionComments/FunctionComments';
-import Loader from '../../components/Loader';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faPlay, faPause, faSync } from '@fortawesome/free-solid-svg-icons';
-import api from '../../utils/api';
-import '../../public/css/pages/FunctionComponent.css';
-import '../../public/css/pages/functions/chronometerTimer.css';
+import { useState } from 'react'
+import Codepen from 'react-codepen-embed'
+import redirect from '../../utils/redirect'
+import FunctionPage from '../../components/FunctionPage/FunctionPage'
+import FunctionTabs from '../../components/FunctionPage/FunctionTabs'
+import FunctionArticle from '../../components/FunctionPage/FunctionArticle'
+import FunctionComments from '../../components/FunctionPage/FunctionComments/FunctionComments'
+import Loader from '../../components/Loader'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { faPlay, faPause, faSync } from '@fortawesome/free-solid-svg-icons'
+import api from '../../utils/api'
+import '../../public/css/pages/FunctionComponent.css'
+import '../../public/css/pages/functions/chronometerTimer.css'
-let interval;
-function convertSeconds(seconds) {
- return {
- minutes: Math.floor(seconds / 60),
- seconds: seconds % 60
- };
+let interval
+function convertSeconds (seconds) {
+ return {
+ minutes: Math.floor(seconds / 60),
+ seconds: seconds % 60
+ }
}
const Chronometer = () => {
+ const [timeLength, setTimeLength] = useState(0) // seconds
+ const [isPlaying, setIsPlaying] = useState(false)
- const [timeLength, setTimeLength] = useState(0); // seconds
- const [isPlaying, setIsPlaying] = useState(false);
-
- const handlePlayPause = () => {
- if (isPlaying) {
- clearInterval(interval);
- } else {
- if (interval) clearInterval(interval);
- interval = setInterval(() => {
- setTimeLength((time) => time + 1);
- }, 1000);
- }
- setIsPlaying(!isPlaying);
+ const handlePlayPause = () => {
+ if (isPlaying) {
+ clearInterval(interval)
+ } else {
+ if (interval) clearInterval(interval)
+ interval = setInterval(() => {
+ setTimeLength((time) => time + 1)
+ }, 1000)
}
+ setIsPlaying(!isPlaying)
+ }
- const handleReset = () => {
- if (interval) clearInterval(interval);
- setIsPlaying(false);
- setTimeLength(0);
- }
+ const handleReset = () => {
+ if (interval) clearInterval(interval)
+ setIsPlaying(false)
+ setTimeLength(0)
+ }
- const getFormattedValue = () => {
- const minutesAndSeconds = convertSeconds(timeLength);
- const minutes = (minutesAndSeconds.minutes < 100) ? (('0'+minutesAndSeconds.minutes).slice(-2)) : minutesAndSeconds.minutes;
- const seconds = ('0'+minutesAndSeconds.seconds).slice(-2);
- return `${minutes}:${seconds}`;
- }
+ const getFormattedValue = () => {
+ const minutesAndSeconds = convertSeconds(timeLength)
+ const minutes = (minutesAndSeconds.minutes < 100) ? (('0' + minutesAndSeconds.minutes).slice(-2)) : minutesAndSeconds.minutes
+ const seconds = ('0' + minutesAndSeconds.seconds).slice(-2)
+ return `${minutes}:${seconds}`
+ }
- return(
-
-
-
-
-
-
-
- {getFormattedValue()}
-
-
-
-
-
-
+ return (
+
+
+
+
+
+
+
+ {getFormattedValue()}
+
+
+
+
- );
+
+
+ )
}
const Pomodoro = () => {
- return (
-
- } />
-
- );
+ return (
+
+ } />
+
+ )
}
const FunctionTabManager = (props) => {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- );
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ )
}
const chronometerTimer = (props) => (
-
-);
+
+)
-export async function getServerSideProps(context) {
- return api.get(`/functions/chronometerTimer`)
- .then((response) => ({ props: response.data }))
- .catch(() => redirect(context, '/404'));
+export async function getServerSideProps (context) {
+ return api.get('/functions/chronometerTimer')
+ .then((response) => ({ props: response.data }))
+ .catch(() => redirect(context, '/404'))
}
-export default chronometerTimer;
\ No newline at end of file
+export default chronometerTimer
diff --git a/website/pages/functions/index.js b/website/pages/functions/index.js
index b32130f..a9c517e 100644
--- a/website/pages/functions/index.js
+++ b/website/pages/functions/index.js
@@ -1,22 +1,20 @@
-import { Fragment } from 'react';
-import HeadTag from '../../components/HeadTag';
-import FunctionsList from '../../components/FunctionsList/FunctionsList';
+import HeadTag from '../../components/HeadTag'
+import FunctionsList from '../../components/FunctionsList/FunctionsList'
const Functions = () => {
+ return (
+ <>
+
- return (
-
-
-
-
- Fonctions
-
-
- );
+
+ Fonctions
+
+ >
+ )
}
-export default Functions;
\ No newline at end of file
+export default Functions
diff --git a/website/pages/functions/randomQuote.js b/website/pages/functions/randomQuote.js
index 2bdbb5b..a5b6011 100644
--- a/website/pages/functions/randomQuote.js
+++ b/website/pages/functions/randomQuote.js
@@ -1,271 +1,267 @@
-import { Fragment, useState, useEffect, useContext, useRef, useCallback } from 'react';
-import Link from 'next/link';
-import { UserContext } from '../../contexts/UserContext';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faTwitter } from '@fortawesome/free-brands-svg-icons';
-import redirect from '../../utils/redirect';
-import htmlParser from 'html-react-parser';
-import Loader from '../../components/Loader';
-import FunctionPage from '../../components/FunctionPage/FunctionPage';
-import FunctionTabs from '../../components/FunctionPage/FunctionTabs';
-import FunctionArticle from '../../components/FunctionPage/FunctionArticle';
-import FunctionComments from '../../components/FunctionPage/FunctionComments/FunctionComments';
-import api from '../../utils/api';
-import copyToClipboard from '../../utils/copyToClipboard';
-import 'notyf/notyf.min.css';
-import '../../public/css/pages/FunctionComponent.css';
+import { useState, useEffect, useContext, useRef, useCallback } from 'react'
+import Link from 'next/link'
+import { UserContext } from '../../contexts/UserContext'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { faTwitter } from '@fortawesome/free-brands-svg-icons'
+import redirect from '../../utils/redirect'
+import htmlParser from 'html-react-parser'
+import Loader from '../../components/Loader'
+import FunctionPage from '../../components/FunctionPage/FunctionPage'
+import FunctionTabs from '../../components/FunctionPage/FunctionTabs'
+import FunctionArticle from '../../components/FunctionPage/FunctionArticle'
+import FunctionComments from '../../components/FunctionPage/FunctionComments/FunctionComments'
+import api from '../../utils/api'
+import copyToClipboard from '../../utils/copyToClipboard'
+import 'notyf/notyf.min.css'
+import '../../public/css/pages/FunctionComponent.css'
const GenerateQuote = () => {
+ const [quote, setQuote] = useState({ quote: '', author: '' })
- const [quote, setQuote] = useState({ quote: "", author: "" });
+ useEffect(() => {
+ getRandomQuote()
+ }, [])
- useEffect(() => {
- getRandomQuote();
- }, []);
+ const getRandomQuote = async () => {
+ const { data } = await api.post('/functions/randomQuote')
+ setQuote(data)
+ }
- const getRandomQuote = async () => {
- const { data } = await api.post("/functions/randomQuote");
- setQuote(data);
+ const handleCopyQuote = () => {
+ let Notyf
+ if (typeof window !== 'undefined') {
+ Notyf = require('notyf')
}
+ const notyf = new Notyf.Notyf({
+ duration: 5000
+ })
+ copyToClipboard(`"${quote?.quote}" - ${quote?.author}`)
+ notyf.success('Citation copiée dans le presse-papier!')
+ }
- const handleCopyQuote = () => {
- let Notyf;
- if (typeof window != 'undefined') {
- Notyf = require('notyf');
- }
- const notyf = new Notyf.Notyf({
- duration: 5000
- });
- copyToClipboard(`"${quote?.quote}" - ${quote?.author}`);
- notyf.success('Citation copiée dans le presse-papier!');
- }
-
- return (
-
-
-
- Générer une nouvelle citation
- Copier la citation
-
-
-
-
-
" {quote?.quote} "
-
- {quote?.author}
-
-
-
+ return (
+
+
+
+ Générer une nouvelle citation
+ Copier la citation
- );
+
+
+
+
" {quote?.quote} "
+
- {quote?.author}
+
+
+
+
+ )
}
-let pageQuotes = 1;
+let pageQuotes = 1
const QuoteList = () => {
+ const [quotesData, setQuotesData] = useState({ hasMore: true, rows: [], totalItems: 0 })
+ const [isLoadingQuotes, setLoadingQuotes] = useState(true)
- const [quotesData, setQuotesData] = useState({ hasMore: true, rows: [], totalItems: 0 });
- const [isLoadingQuotes, setLoadingQuotes] = useState(true);
+ // Récupère les citations initiales
+ useEffect(() => {
+ getQuotesData().then((data) => setQuotesData(data))
+ }, [])
- // Récupère les citations initiales
- useEffect(() => {
- getQuotesData().then((data) => setQuotesData(data));
- }, []);
+ const getQuotesData = async () => {
+ setLoadingQuotes(true)
+ const { data } = await api.get(`/quotes?page=${pageQuotes}&limit=20`)
+ setLoadingQuotes(false)
+ return data
+ }
- const getQuotesData = async () => {
- setLoadingQuotes(true);
- const { data } = await api.get(`/quotes?page=${pageQuotes}&limit=20`);
- setLoadingQuotes(false);
- return data;
- }
-
- // Permet la pagination au scroll
- const observer = useRef();
- const lastQuoteRef = useCallback((node) => {
- if (isLoadingQuotes) return;
- if (observer.current) observer.current.disconnect();
- observer.current = new IntersectionObserver((entries) => {
- if (entries[0].isIntersecting && quotesData.hasMore) {
- pageQuotes += 1;
- getQuotesData().then((data) => {
- setQuotesData((oldData) => {
- return {
- hasMore: data.hasMore,
- rows: [...oldData.rows, ...data.rows],
- totalItems: data.totalItems
- };
- });
- });
+ // Permet la pagination au scroll
+ const observer = useRef()
+ const lastQuoteRef = useCallback((node) => {
+ if (isLoadingQuotes) return
+ if (observer.current) observer.current.disconnect()
+ observer.current = new window.IntersectionObserver((entries) => {
+ if (entries[0].isIntersecting && quotesData.hasMore) {
+ pageQuotes += 1
+ getQuotesData().then((data) => {
+ setQuotesData((oldData) => {
+ return {
+ hasMore: data.hasMore,
+ rows: [...oldData.rows, ...data.rows],
+ totalItems: data.totalItems
}
- }, { threshold: 1 });
- if (node) observer.current.observe(node);
- }, [isLoadingQuotes, quotesData.hasMore]);
+ })
+ })
+ }
+ }, { threshold: 1 })
+ if (node) observer.current.observe(node)
+ }, [isLoadingQuotes, quotesData.hasMore])
- return (
-
-
-
-
Liste des citations :
-
Total de {quotesData.totalItems} citations.
-
-
-
-
-
-
-
-
- Citation/Proverbe
- Auteur
- Proposée par
-
-
-
- {quotesData.rows.map((currentQuote, index) => {
- const quoteJSX = (
-
- {currentQuote.quote}
- {currentQuote.author}
-
-
- {currentQuote.user.name}
-
-
-
- );
- // Si c'est le dernier élément
- if (quotesData.rows.length === index + 1) {
- return {quoteJSX}
- }
- return {quoteJSX}
- })}
-
-
-
-
+ return (
+
+
+
+
Liste des citations :
+
Total de {quotesData.totalItems} citations.
- );
+
+
+
+
+
+
+
+ Citation/Proverbe
+ Auteur
+ Proposée par
+
+
+
+ {quotesData.rows.map((currentQuote, index) => {
+ const quoteJSX = (
+ <>
+ {currentQuote.quote}
+ {currentQuote.author}
+
+
+ {currentQuote.user.name}
+
+
+ >
+ )
+ // Si c'est le dernier élément
+ if (quotesData.rows.length === index + 1) {
+ return {quoteJSX}
+ }
+ return {quoteJSX}
+ })}
+
+
+
+
+
+ )
}
const SuggestQuote = () => {
+ const { isAuth, user } = useContext(UserContext)
+ const [inputState, setInputState] = useState({ quote: '', author: '' })
+ const [message, setMessage] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
- const { isAuth, user } = useContext(UserContext);
- const [inputState, setInputState] = useState({ quote: "", author: "" });
- const [message, setMessage] = useState("");
- const [isLoading, setIsLoading] = useState(false);
+ const handleChange = (event) => {
+ const inputStateNew = { ...inputState }
+ inputStateNew[event.target.name] = event.target.value
+ setInputState(inputStateNew)
+ }
- const handleChange = (event) => {
- const inputStateNew = { ...inputState };
- inputStateNew[event.target.name] = event.target.value;
- setInputState(inputStateNew);
- }
-
- const handleSubmit = (event) => {
- setIsLoading(true);
- event.preventDefault();
- const token = user.token;
- if (isAuth && token != undefined) {
- api.post('/quotes', inputState, { headers: { 'Authorization': token } })
- .then(({ data }) => {
- setInputState({ quote: "", author: "" });
- setMessage(`
Succès: ${data.message}
`);
- setIsLoading(false);
- })
- .catch((error) => {
- setMessage(`
Erreur: ${error.response.data.message}
`);
- setIsLoading(false);
- });
- }
- }
-
- if (!isAuth) {
- return (
-
- Vous devez être connecté pour proposer une citation.
-
- );
+ const handleSubmit = (event) => {
+ setIsLoading(true)
+ event.preventDefault()
+ const token = user.token
+ if (isAuth && token != null) {
+ api.post('/quotes', inputState, { headers: { Authorization: token } })
+ .then(({ data }) => {
+ setInputState({ quote: '', author: '' })
+ setMessage(`
Succès: ${data.message}
`)
+ setIsLoading(false)
+ })
+ .catch((error) => {
+ setMessage(`
Erreur: ${error.response.data.message}
`)
+ setIsLoading(false)
+ })
}
+ }
+ if (!isAuth) {
return (
-
-
-
-
Proposer une citation :
-
Vous pouvez proposer des citations, et une fois validé elles seront rajoutés à la liste des citations.
-
-
-
-
-
-
- Citation :
-
-
-
-
- Auteur :
-
-
+
+ Vous devez être connecté pour proposer une citation.
+
+ )
+ }
-
- Envoyer
-
-
-
-
-
- {
- (isLoading) ?
-
- :
- htmlParser(message)
- }
-
+ return (
+
+
+
+
Proposer une citation :
+
Vous pouvez proposer des citations, et une fois validé elles seront rajoutés à la liste des citations.
- );
+
+
+
+
+
+ Citation :
+
+
+
+
+ Auteur :
+
+
+
+
+ Envoyer
+
+
+
+
+
+ {
+ (isLoading)
+ ?
+ : htmlParser(message)
+ }
+
+
+ )
}
const FunctionTabManager = (props) => {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
}
const randomQuote = (props) => (
-
-);
+
+)
-export async function getServerSideProps(context) {
- return api.get(`/functions/randomQuote`)
- .then((response) => ({ props: response.data }))
- .catch(() => redirect(context, '/404'));
+export async function getServerSideProps (context) {
+ return api.get('/functions/randomQuote')
+ .then((response) => ({ props: response.data }))
+ .catch(() => redirect(context, '/404'))
}
-export default randomQuote;
\ No newline at end of file
+export default randomQuote
diff --git a/website/pages/functions/rightPrice.js b/website/pages/functions/rightPrice.js
index b31d462..b689fda 100644
--- a/website/pages/functions/rightPrice.js
+++ b/website/pages/functions/rightPrice.js
@@ -1,152 +1,158 @@
-import { useState, Fragment } from 'react';
-import redirect from '../../utils/redirect';
-import FunctionPage from '../../components/FunctionPage/FunctionPage';
-import FunctionTabs from '../../components/FunctionPage/FunctionTabs';
-import FunctionArticle from '../../components/FunctionPage/FunctionArticle';
-import FunctionComments from '../../components/FunctionPage/FunctionComments/FunctionComments';
-import Loader from '../../components/Loader';
-import api from '../../utils/api';
-import '../../public/css/pages/FunctionComponent.css';
-import '../../public/css/pages/functions/rightPrice.css';
+import { useState } from 'react'
+import redirect from '../../utils/redirect'
+import FunctionPage from '../../components/FunctionPage/FunctionPage'
+import FunctionTabs from '../../components/FunctionPage/FunctionTabs'
+import FunctionArticle from '../../components/FunctionPage/FunctionArticle'
+import FunctionComments from '../../components/FunctionPage/FunctionComments/FunctionComments'
+import Loader from '../../components/Loader'
+import api from '../../utils/api'
+import '../../public/css/pages/FunctionComponent.css'
+import '../../public/css/pages/functions/rightPrice.css'
const PlayRightPrice = () => {
+ const [isPlaying, setIsPlaying] = useState(false)
+ const [productToGuess, setProductToGuess] = useState({})
+ const [isLoadingProduct, setIsLoadingProduct] = useState(false)
+ const [enteredPrice, setEnteredPrice] = useState('')
+ const [attemptsArray, setAttemptsArray] = useState([])
- const [isPlaying, setIsPlaying] = useState(false);
- const [productToGuess, setProductToGuess] = useState({});
- const [isLoadingProduct, setIsLoadingProduct] = useState(false);
- const [enteredPrice, setEnteredPrice] = useState("");
- const [attemptsArray, setAttemptsArray] = useState([]);
+ const handlePlaying = () => {
+ setIsPlaying(true)
+ setAttemptsArray([])
+ fetchRandomAmazonProduct()
+ }
- const handlePlaying = () => {
- setIsPlaying(true);
- setAttemptsArray([]);
- fetchRandomAmazonProduct();
+ const fetchRandomAmazonProduct = async () => {
+ setIsLoadingProduct(true)
+ const { data } = await api.post('/functions/rightPrice')
+ setProductToGuess(data)
+ setIsLoadingProduct(false)
+ }
+
+ const handleChange = (event) => {
+ setEnteredPrice(event.target.value)
+ }
+
+ const handleSubmit = async (event) => {
+ event.preventDefault()
+ const objectTry = {}
+ const guessedPrice = Number((enteredPrice).replace(',', '.').replace(' ', ''))
+ if (!isNaN(guessedPrice)) {
+ objectTry.guessedPrice = guessedPrice
+ objectTry.numberTry = attemptsArray.length + 1
+ if (guessedPrice > productToGuess.price) {
+ objectTry.message = "C'est moins !"
+ } else if (guessedPrice < productToGuess.price) {
+ objectTry.message = "C'est plus !"
+ } else {
+ objectTry.message = 'Bravo, vous avez trouvé le juste prix !'
+ }
+ setAttemptsArray([objectTry, ...attemptsArray])
}
+ setEnteredPrice('')
+ }
- const fetchRandomAmazonProduct = async () => {
- setIsLoadingProduct(true);
- const { data } = await api.post('/functions/rightPrice');
- setProductToGuess(data);
- setIsLoadingProduct(false);
- }
-
- const handleChange = (event) => {
- setEnteredPrice(event.target.value);
- }
-
- const handleSubmit = async (event) => {
- event.preventDefault();
- const objectTry = {};
- const guessedPrice = Number((enteredPrice).replace(",", ".").replace(" ", ""));
- if (!isNaN(guessedPrice)) {
- objectTry.guessedPrice = guessedPrice;
- objectTry.numberTry = attemptsArray.length + 1;
- if (guessedPrice > productToGuess.price) {
- objectTry.message = "C'est moins !";
- } else if (guessedPrice < productToGuess.price) {
- objectTry.message = "C'est plus !";
- } else {
- objectTry.message = "Bravo, vous avez trouvé le juste prix !";
- }
- setAttemptsArray([objectTry, ...attemptsArray]);
- }
- setEnteredPrice("");
- }
-
- return (
-
- {
- (!isPlaying) ?
-
-
- Jouer
-
+ return (
+
+ {
+ (!isPlaying)
+ ? (
+
+ )
+ : (isLoadingProduct)
+ ? (
+
+
+
+ )
+ : (
+ <>
+
+
+
{productToGuess.name}
+
+
- : (isLoadingProduct) ?
-
-
+
+
+
+ {((attemptsArray.length > 0) && attemptsArray[0].message === 'Bravo, vous avez trouvé le juste prix !')
+ ? (
+
+ Rejouer ?
+
+ )
+ : (
+
+
+
+
+
+
+ Deviner
+
+
+ )}
+
- :
-
-
-
-
{productToGuess.name}
-
-
-
-
-
- {((attemptsArray.length > 0) && attemptsArray[0].message === "Bravo, vous avez trouvé le juste prix !") ?
-
- Rejouer ?
-
- :
-
-
-
-
-
-
- Deviner
-
-
- }
-
-
-
-
- {attemptsArray.map((attempt, index) => {
- const { message } = attempt;
- let priceResultClass;
- if (message === "C'est moins !") {
- priceResultClass = "Price__result-moins";
- } else if (message === "C'est plus !") {
- priceResultClass = "Price__result-plus";
- } else {
- priceResultClass = "Price__result-success";
- }
- return (
-
- # {attempt.numberTry} ({attempt.guessedPrice}) {message}
-
- );
- })}
-
-
- }
-
- );
+
+ {attemptsArray.map((attempt, index) => {
+ const { message } = attempt
+ let priceResultClass
+ if (message === "C'est moins !") {
+ priceResultClass = 'Price__result-moins'
+ } else if (message === "C'est plus !") {
+ priceResultClass = 'Price__result-plus'
+ } else {
+ priceResultClass = 'Price__result-success'
+ }
+ return (
+
+ # {attempt.numberTry} ({attempt.guessedPrice}) {message}
+
+ )
+ })}
+
+ >
+ )
+ }
+
+ )
}
const FunctionTabManager = (props) => {
- return (
-
-
-
-
-
-
-
-
-
- );
+ return (
+
+
+
+
+
+
+
+
+
+ )
}
const rightPrice = (props) => (
-
-);
+
+)
-export async function getServerSideProps(context) {
- return api.get(`/functions/rightPrice`)
- .then((response) => ({ props: response.data }))
- .catch(() => redirect(context, '/404'));
+export async function getServerSideProps (context) {
+ return api.get('/functions/rightPrice')
+ .then((response) => ({ props: response.data }))
+ .catch(() => redirect(context, '/404'))
}
-export default rightPrice;
\ No newline at end of file
+export default rightPrice
diff --git a/website/pages/functions/toDoList.js b/website/pages/functions/toDoList.js
index ef0d536..0fc662d 100644
--- a/website/pages/functions/toDoList.js
+++ b/website/pages/functions/toDoList.js
@@ -1,149 +1,147 @@
-import { useState, useEffect, useContext } from 'react';
-import Link from 'next/link';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faTrash, faCheck, faTimes } from '@fortawesome/free-solid-svg-icons';
-import { UserContext } from '../../contexts/UserContext';
-import redirect from '../../utils/redirect';
-import FunctionPage from '../../components/FunctionPage/FunctionPage';
-import FunctionTabs from '../../components/FunctionPage/FunctionTabs';
-import FunctionArticle from '../../components/FunctionPage/FunctionArticle';
-import FunctionComments from '../../components/FunctionPage/FunctionComments/FunctionComments';
-import api from '../../utils/api';
-import '../../public/css/pages/FunctionComponent.css';
-import '../../public/css/pages/functions/toDoList.css';
+import { useState, useEffect, useContext } from 'react'
+import Link from 'next/link'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { faTrash, faCheck, faTimes } from '@fortawesome/free-solid-svg-icons'
+import { UserContext } from '../../contexts/UserContext'
+import redirect from '../../utils/redirect'
+import FunctionPage from '../../components/FunctionPage/FunctionPage'
+import FunctionTabs from '../../components/FunctionPage/FunctionTabs'
+import FunctionArticle from '../../components/FunctionPage/FunctionArticle'
+import FunctionComments from '../../components/FunctionPage/FunctionComments/FunctionComments'
+import api from '../../utils/api'
+import '../../public/css/pages/FunctionComponent.css'
+import '../../public/css/pages/functions/toDoList.css'
const ManageToDo = () => {
+ const { isAuth, user } = useContext(UserContext)
+ const [inputState, setInputState] = useState({ task: '' })
+ const [tasks, setTasks] = useState([])
- const { isAuth, user } = useContext(UserContext);
- const [inputState, setInputState] = useState({ task: "" });
- const [tasks, setTasks] = useState([]);
-
- useEffect(() => {
- const getTasks = async () => {
- const { data } = await api.get('/tasks', { headers: { 'Authorization': user.token } });
- setTasks(data);
- }
- if (isAuth && user.token != undefined) {
- getTasks();
- }
- }, [isAuth]);
-
- const handleChange = (event) => {
- const inputStateNew = { ...inputState };
- inputStateNew[event.target.name] = event.target.value;
- setInputState(inputStateNew);
+ useEffect(() => {
+ const getTasks = async () => {
+ const { data } = await api.get('/tasks', { headers: { Authorization: user.token } })
+ setTasks(data)
}
-
- const handleSubmit = async (event) => {
- event.preventDefault();
- try {
- const { data } = await api.post('/tasks', inputState, { headers: { 'Authorization': user.token } });
- const newTasks = [...tasks];
- newTasks.push(data);
- setTasks(newTasks);
- setInputState({ task: "" });
- } catch {}
+ if (isAuth && user.token != null) {
+ getTasks()
}
+ }, [isAuth])
- const handleRemoveTask = async (id, index) => {
- const newTasks = [...tasks];
- try {
- await api.delete(`/tasks/${id}`, { headers: { 'Authorization': user.token } });
- newTasks.splice(index, 1);
- setTasks(newTasks);
- } catch {}
- }
+ const handleChange = (event) => {
+ const inputStateNew = { ...inputState }
+ inputStateNew[event.target.name] = event.target.value
+ setInputState(inputStateNew)
+ }
- const handleEditTask = async (id, index, isCompleted) => {
- try {
- await api.put(`/tasks/${id}`, { isCompleted: !isCompleted }, { headers: { 'Authorization': user.token } });
- const newTasks = [...tasks];
- const taskObject = newTasks[index];
- taskObject.isCompleted = !isCompleted;
- setTasks(newTasks);
- } catch {}
- }
+ const handleSubmit = async (event) => {
+ event.preventDefault()
+ try {
+ const { data } = await api.post('/tasks', inputState, { headers: { Authorization: user.token } })
+ const newTasks = [...tasks]
+ newTasks.push(data)
+ setTasks(newTasks)
+ setInputState({ task: '' })
+ } catch {}
+ }
- if (!isAuth) {
- return (
-
- Vous devez être connecté pour gérer des "tâches à faire".
-
- );
- }
+ const handleRemoveTask = async (id, index) => {
+ const newTasks = [...tasks]
+ try {
+ await api.delete(`/tasks/${id}`, { headers: { Authorization: user.token } })
+ newTasks.splice(index, 1)
+ setTasks(newTasks)
+ } catch {}
+ }
+ const handleEditTask = async (id, index, isCompleted) => {
+ try {
+ await api.put(`/tasks/${id}`, { isCompleted: !isCompleted }, { headers: { Authorization: user.token } })
+ const newTasks = [...tasks]
+ const taskObject = newTasks[index]
+ taskObject.isCompleted = !isCompleted
+ setTasks(newTasks)
+ } catch {}
+ }
+
+ if (!isAuth) {
return (
-
-
-
-
-
- Ajouter une tâche à faire :
-
-
+
+ Vous devez être connecté pour gérer des "tâches à faire".
+
+ )
+ }
-
- Envoyer
-
-
-
+ return (
+
+
+
+
+
+ Ajouter une tâche à faire :
+
- {(tasks.length > 0) &&
-
- }
+
+ Envoyer
+
+
- );
+
+
+ {(tasks.length > 0) &&
+
}
+
+ )
}
const FunctionTabManager = (props) => {
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ )
}
const toDoList = (props) => (
-
-);
+
+)
-export async function getServerSideProps(context) {
- return api.get(`/functions/toDoList`)
- .then((response) => ({ props: response.data }))
- .catch(() => redirect(context, '/404'));
+export async function getServerSideProps (context) {
+ return api.get('/functions/toDoList')
+ .then((response) => ({ props: response.data }))
+ .catch(() => redirect(context, '/404'))
}
-export default toDoList;
\ No newline at end of file
+export default toDoList
diff --git a/website/pages/index.js b/website/pages/index.js
index d3f02e2..3034d96 100644
--- a/website/pages/index.js
+++ b/website/pages/index.js
@@ -1,70 +1,69 @@
-import { Fragment, useEffect } from 'react';
-import SwipeableViews from 'react-swipeable-views';
-import { autoPlay } from 'react-swipeable-views-utils';
-import Link from 'next/link';
-import HeadTag from '../components/HeadTag';
-import Loader from '../components/Loader';
-import '../public/css/pages/index.css';
+import { useEffect } from 'react'
+import SwipeableViews from 'react-swipeable-views'
+import { autoPlay } from 'react-swipeable-views-utils'
+import Link from 'next/link'
+import HeadTag from '../components/HeadTag'
+import Loader from '../components/Loader'
+import '../public/css/pages/index.css'
-const AutoPlaySwipeableViews = autoPlay(SwipeableViews);
+const AutoPlaySwipeableViews = autoPlay(SwipeableViews)
const Home = () => {
+ useEffect(() => {
+ console.log(
+ '%c ⚙️ FunctionProject',
+ 'color: #ffd800; font-weight: bold; background-color: #181818;padding: 10px;border-radius: 10px;font-size: 20px'
+ )
+ }, [])
- useEffect(() => {
- console.log(
- '%c ⚙️ FunctionProject',
- 'color: #ffd800; font-weight: bold; background-color: #181818;padding: 10px;border-radius: 10px;font-size: 20px'
- );
- }, []);
+ return (
+ <>
+
+
- return (
-
-
-
-
-
-
- {/* Slide 1 */}
-
-
-
FunctionProject
-
- Apprenez la programmation grâce à l'apprentissage par projet alias fonction (en JavaScript ).
-
-
- En savoir plus ? (à-propos)
-
-
- Découvrez la liste des fonctions disponibles :
-
-
-
-
-
- {/* Slide 2 */}
-
-
-
Code Source
-
- Le partage est essentiel afin de progresser.
- Par conséquent chaque fonction a un article expliquant comment elle fonctionne et
- le code source du projet est disponible sur mon profil GitHub :
-
-
-
-
-
-
-
-
+
+ {/* Slide 1 */}
+
+
+
FunctionProject
+
+ Apprenez la programmation grâce à l'apprentissage par projet alias fonction (en JavaScript ).
+
+
+ En savoir plus ? (à-propos)
+
+
+ Découvrez la liste des fonctions disponibles :
+
-
- );
+
+
+
+ {/* Slide 2 */}
+
+
+
Code Source
+
+ Le partage est essentiel afin de progresser.
+ Par conséquent chaque fonction a un article expliquant comment elle fonctionne et
+ le code source du projet est disponible sur mon profil GitHub :
+
+
+
+
+
+
+
+
+
+
+ >
+ )
}
-export default Home;
\ No newline at end of file
+export default Home
diff --git a/website/pages/users/[name].js b/website/pages/users/[name].js
index 26596c9..fbecfad 100644
--- a/website/pages/users/[name].js
+++ b/website/pages/users/[name].js
@@ -1,245 +1,238 @@
-import Link from 'next/link';
-import { Fragment, useContext, useState, useEffect } from 'react';
-import { UserContext } from '../../contexts/UserContext';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faPen, faTimes } from '@fortawesome/free-solid-svg-icons';
-import date from 'date-and-time';
-import HeadTag from '../../components/HeadTag';
-import FunctionCard from '../../components/FunctionCard/FunctionCard';
-import Modal from '../../components/Modal';
-import redirect from '../../utils/redirect';
-import htmlParser from 'html-react-parser';
-import Loader from '../../components/Loader';
-import ReactMarkdown from 'react-markdown';
-import CodeBlock from "../../components/CodeBlock";
-import api from '../../utils/api';
-import { API_URL } from '../../utils/config/config';
-import '../../public/css/pages/profile.css';
+import Link from 'next/link'
+import { useContext, useState, useEffect } from 'react'
+import { UserContext } from '../../contexts/UserContext'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { faPen, faTimes } from '@fortawesome/free-solid-svg-icons'
+import date from 'date-and-time'
+import HeadTag from '../../components/HeadTag'
+import FunctionCard from '../../components/FunctionCard/FunctionCard'
+import Modal from '../../components/Modal'
+import redirect from '../../utils/redirect'
+import htmlParser from 'html-react-parser'
+import Loader from '../../components/Loader'
+import ReactMarkdown from 'react-markdown'
+import CodeBlock from '../../components/CodeBlock'
+import api from '../../utils/api'
+import { API_URL } from '../../utils/config/config'
+import '../../public/css/pages/profile.css'
const Profile = (props) => {
+ const { isAuth, user, logoutUser } = useContext(UserContext)
+ const [isOpen, setIsOpen] = useState(false)
+ const [inputState, setInputState] = useState({})
+ const [message, setMessage] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
- const { isAuth, user, logoutUser } = useContext(UserContext);
- const [isOpen, setIsOpen] = useState(false);
- const [inputState, setInputState] = useState({});
- const [message, setMessage] = useState("");
- const [isLoading, setIsLoading] = useState(false);
-
- useEffect(() => {
- if (isAuth) {
- setInputState({ name: user.name, email: user.email, biography: user.biography, isPublicEmail: user.isPublicEmail });
- }
- }, [isAuth]);
-
- const toggleModal = () => setIsOpen(!isOpen);
-
- const handleChange = (event, isTypeCheck = false) => {
- const inputStateNew = { ...inputState };
- inputStateNew[event.target.name] = (event.target.files != undefined) ? event.target.files[0] : (isTypeCheck) ? event.target.checked : event.target.value;
- setInputState(inputStateNew);
+ useEffect(() => {
+ if (isAuth) {
+ setInputState({ name: user.name, email: user.email, biography: user.biography, isPublicEmail: user.isPublicEmail })
}
+ }, [isAuth])
- const handleSubmit = (event) => {
- event.preventDefault();
- const token = user.token;
- if (isAuth && token != undefined) {
- setIsLoading(true);
- const formData = new FormData();
- formData.append('name', inputState.name);
- formData.append('email', inputState.email);
- formData.append('biography', inputState.biography);
- formData.append('isPublicEmail', inputState.isPublicEmail);
- formData.append('logo', inputState.logo);
-
- api.put('/users/', formData, { headers: { 'Authorization': token } })
- .then(() => {
- setIsLoading(false);
- logoutUser();
- redirect({}, '/users/login?isSuccessEdit=true');
- })
- .catch((error) => {
- setMessage(`Erreur: ${error.response.data.message}
`);
- setIsLoading(false);
- });
- }
+ const toggleModal = () => setIsOpen(!isOpen)
+
+ const handleChange = (event, isTypeCheck = false) => {
+ const inputStateNew = { ...inputState }
+ inputStateNew[event.target.name] = (event.target.files != null) ? event.target.files[0] : (isTypeCheck) ? event.target.checked : event.target.value
+ setInputState(inputStateNew)
+ }
+
+ const handleSubmit = (event) => {
+ event.preventDefault()
+ const token = user.token
+ if (isAuth && token != null) {
+ setIsLoading(true)
+ const formData = new window.FormData()
+ formData.append('name', inputState.name)
+ formData.append('email', inputState.email)
+ formData.append('biography', inputState.biography)
+ formData.append('isPublicEmail', inputState.isPublicEmail)
+ formData.append('logo', inputState.logo)
+
+ api.put('/users/', formData, { headers: { Authorization: token } })
+ .then(() => {
+ setIsLoading(false)
+ logoutUser()
+ redirect({}, '/users/login?isSuccessEdit=true')
+ })
+ .catch((error) => {
+ setMessage(`Erreur: ${error.response.data.message}
`)
+ setIsLoading(false)
+ })
}
+ }
- return (
-
-
+ return (
+ <>
+
- {/* Édition du profil */}
- {(isOpen) ?
-
-
-
-
-
-
-
-
-
-
Éditer le profil
-
(Vous devrez vous reconnecter après la sauvegarde) Si vous changez votre adresse email, vous devrez la confirmer comme à l'inscription (vérifier vos emails).
-
-
-
-
-
-
-
- Nom :
-
-
-
-
- Email :
-
-
-
-
- handleChange(event, true)} type="checkbox" name="isPublicEmail" checked={inputState.isPublicEmail} className="custom-control-input" id="isPublicEmail" />
- Email Public
-
-
-
- Biographie :
-
-
-
-
-
Logo (400x400 recommandé) :
-
Si aucun fichier est choisi, le logo ne sera pas modifié.
-
-
-
-
- Sauvegarder
-
-
-
- {
- (isLoading) ?
-
- :
- htmlParser(message)
- }
-
-
-
-
-
-
- :
-
-
-
-
-
-
Profil de {props.name}
-
-
-
-
-
-
-
-
- {(props.biography != undefined) &&
{props.biography}
}
- {(props.email != undefined) &&
Email : {props.email}
}
-
Date de création du compte : {date.format(new Date(props.createdAt), 'DD/MM/YYYY à HH:mm', true)}
-
-
- {(isAuth && user.name === props.name) &&
-
-
- Éditez le profil
-
- }
-
-
-
-
- {(props.favoritesArray.length > 0) &&
-
-
-
Dernières fonctions ajoutées aux favoris :
-
-
-
- {props.favoritesArray.map((favorite) => {
- return (
-
- );
- })}
-
-
-
- }
-
- {(props.commentsArray.length > 0) &&
-
-
-
Derniers commentaires :
-
-
- {props.commentsArray.map((comment) => (
-
-
-
- Posté sur la fonction
-
- {comment.function.title}
-
- le {date.format(new Date(comment.createdAt), 'DD/MM/YYYY à HH:mm', true)}
-
-
-
-
- ))}
-
-
- }
-
- {(props.quotesArray.length > 0) &&
-
-
-
-
-
-
- Citation/Proverbe
- Auteur
-
-
-
- {props.quotesArray.map((currentQuote, index) => {
- return (
-
- {currentQuote.quote}
- {currentQuote.author}
-
- );
- })}
-
-
-
-
- }
+ {/* Édition du profil */}
+ {(isOpen)
+ ? (
+
+
+
+
+
+
+
+
+
+
Éditer le profil
+
(Vous devrez vous reconnecter après la sauvegarde) Si vous changez votre adresse email, vous devrez la confirmer comme à l'inscription (vérifier vos emails).
- }
+
+
-
- );
+
+
+
+ Nom :
+
+
+
+
+ Email :
+
+
+
+
+ handleChange(event, true)} type='checkbox' name='isPublicEmail' checked={inputState.isPublicEmail} className='custom-control-input' id='isPublicEmail' />
+ Email Public
+
+
+
+ Biographie :
+
+
+
+
+
Logo (400x400 recommandé) :
+
Si aucun fichier est choisi, le logo ne sera pas modifié.
+
+
+
+
+ Sauvegarder
+
+
+
+ {
+ (isLoading)
+ ?
+ : htmlParser(message)
+ }
+
+
+
+
+
+ )
+ : (
+
+
+
+
+
Profil de {props.name}
+
+
+
+
+
+
+
+
+ {(props.biography != null) &&
{props.biography}
}
+ {(props.email != null) &&
Email : {props.email}
}
+
Date de création du compte : {date.format(new Date(props.createdAt), 'DD/MM/YYYY à HH:mm', true)}
+
+
+ {(isAuth && user.name === props.name) &&
+
+
+ Éditez le profil
+ }
+
+
+
+
+ {(props.favoritesArray.length > 0) &&
+
+
+
Dernières fonctions ajoutées aux favoris :
+
+
+
+ {props.favoritesArray.map((favorite) => {
+ return (
+
+ )
+ })}
+
+
+
}
+
+ {(props.commentsArray.length > 0) &&
+
+
+
Derniers commentaires :
+
+
+ {props.commentsArray.map((comment) => (
+
+
+
+ Posté sur la fonction
+
+ {comment.function.title}
+
+ le {date.format(new Date(comment.createdAt), 'DD/MM/YYYY à HH:mm', true)}
+
+
+
+
+ ))}
+
+
}
+
+ {(props.quotesArray.length > 0) &&
+
+
+
+
+
+
+ Citation/Proverbe
+ Auteur
+
+
+
+ {props.quotesArray.map((currentQuote, index) => {
+ return (
+
+ {currentQuote.quote}
+ {currentQuote.author}
+
+ )
+ })}
+
+
+
+
}
+
+ )}
+ >
+ )
}
-export async function getServerSideProps(context) {
- const { name } = context.params;
- return api.get(`/users/${name}`)
- .then((response) => ({ props: response.data }))
- .catch(() => redirect(context, '/404'));
+export async function getServerSideProps (context) {
+ const { name } = context.params
+ return api.get(`/users/${name}`)
+ .then((response) => ({ props: response.data }))
+ .catch(() => redirect(context, '/404'))
}
-export default Profile;
\ No newline at end of file
+export default Profile
diff --git a/website/pages/users/forgotPassword.js b/website/pages/users/forgotPassword.js
index 60581d1..e21fd64 100644
--- a/website/pages/users/forgotPassword.js
+++ b/website/pages/users/forgotPassword.js
@@ -1,74 +1,71 @@
-import { Fragment, useState } from 'react';
-import htmlParser from 'html-react-parser';
-import Loader from '../../components/Loader';
-import HeadTag from '../../components/HeadTag';
-import api from '../../utils/api';
-import withoutAuth from '../../hoc/withoutAuth';
-import '../../public/css/pages/register-login.css';
+import { useState } from 'react'
+import htmlParser from 'html-react-parser'
+import Loader from '../../components/Loader'
+import HeadTag from '../../components/HeadTag'
+import api from '../../utils/api'
+import withoutAuth from '../../hoc/withoutAuth'
+import '../../public/css/pages/register-login.css'
const forgotPassword = () => {
+ const [inputState, setInputState] = useState({})
+ const [message, setMessage] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
- const [inputState, setInputState] = useState({});
- const [message, setMessage] = useState("");
- const [isLoading, setIsLoading] = useState(false);
+ const handleChange = (event) => {
+ const inputStateNew = { ...inputState }
+ inputStateNew[event.target.name] = event.target.value
+ setInputState(inputStateNew)
+ }
- const handleChange = () => {
- const inputStateNew = { ...inputState };
- inputStateNew[event.target.name] = event.target.value;
- setInputState(inputStateNew);
- }
+ const handleSubmit = (event) => {
+ setIsLoading(true)
+ event.preventDefault()
+ api.post('/users/reset-password', inputState)
+ .then(({ data }) => {
+ setMessage(`
Succès: ${data.result}
`)
+ setIsLoading(false)
+ setInputState({})
+ })
+ .catch((error) => {
+ setMessage(`
Erreur: ${error.response.data.message}
`)
+ setIsLoading(false)
+ })
+ }
- const handleSubmit = (event) => {
- setIsLoading(true);
- event.preventDefault();
- api.post('/users/reset-password', inputState)
- .then(({ data }) => {
- setMessage(`
Succès: ${data.result}
`);
- setIsLoading(false);
- setInputState({});
- })
- .catch((error) => {
- setMessage(`
Erreur: ${error.response.data.message}
`);
- setIsLoading(false);
- });
- }
-
- return (
-
-
-
-
-
-
Mot de passe oublié ?
-
-
Demandez une demande de réinitialisation de mot de passe par email.
-
-
-
- Email :
-
-
-
- Envoyer
-
-
-
- {
- (isLoading) ?
-
- :
- htmlParser(message)
- }
-
-
-
+ return (
+ <>
+
+
+
+
+
Mot de passe oublié ?
+
+
Demandez une demande de réinitialisation de mot de passe par email.
-
- );
-
+
+
+ Email :
+
+
+
+ Envoyer
+
+
+
+ {
+ (isLoading)
+ ?
+ : htmlParser(message)
+ }
+
+
+
+
+ >
+ )
}
-export default withoutAuth(forgotPassword);
\ No newline at end of file
+export default withoutAuth(forgotPassword)
diff --git a/website/pages/users/index.js b/website/pages/users/index.js
index bbfdfdd..74c8c15 100644
--- a/website/pages/users/index.js
+++ b/website/pages/users/index.js
@@ -1,109 +1,108 @@
-import { Fragment, useState, useEffect, useRef, useCallback } from 'react';
-import Link from 'next/link';
-import HeadTag from '../../components/HeadTag';
-import Loader from '../../components/Loader';
-import api from '../../utils/api';
-import '../../public/css/pages/users.css';
-import { API_URL } from '../../utils/config/config';
+import { useState, useEffect, useRef, useCallback } from 'react'
+import Link from 'next/link'
+import HeadTag from '../../components/HeadTag'
+import Loader from '../../components/Loader'
+import api from '../../utils/api'
+import '../../public/css/pages/users.css'
+import { API_URL } from '../../utils/config/config'
const Users = () => {
+ let pageUsers = 1
- let pageUsers = 1;
-
- const [inputSearch, setInputSearch] = useState("");
- const [usersData, setUsersData] = useState({ totalItems: 0, hasMore: true, rows: [] });
- const [isLoadingUsers, setLoadingUsers] = useState(true);
+ const [inputSearch, setInputSearch] = useState('')
+ const [usersData, setUsersData] = useState({ totalItems: 0, hasMore: true, rows: [] })
+ const [isLoadingUsers, setLoadingUsers] = useState(true)
- // Récupère les users si la recherche change
- useEffect(() => {
- pageUsers = 1;
- getUsersData().then((data) => setUsersData(data));
- }, [inputSearch]);
+ // Récupère les users si la recherche change
+ useEffect(() => {
+ pageUsers = 1
+ getUsersData().then((data) => setUsersData(data))
+ }, [inputSearch])
- const getUsersData = async () => {
- setLoadingUsers(true);
- const { data } = await api.get(`/users?page=${pageUsers}&limit=15&search=${inputSearch}`);
- setLoadingUsers(false);
- return data;
- }
+ const getUsersData = async () => {
+ setLoadingUsers(true)
+ const { data } = await api.get(`/users?page=${pageUsers}&limit=15&search=${inputSearch}`)
+ setLoadingUsers(false)
+ return data
+ }
- const handleSearchChange = (event) => {
- setInputSearch(event.target.value);
- }
+ const handleSearchChange = (event) => {
+ setInputSearch(event.target.value)
+ }
- // Permet la pagination au scroll
- const observer = useRef();
- const lastUserCardRef = useCallback((node) => {
- if (isLoadingUsers) return;
- if (observer.current) observer.current.disconnect();
- observer.current = new IntersectionObserver((entries) => {
- if (entries[0].isIntersecting && usersData.hasMore) {
- pageUsers += 1;
- getUsersData().then((data) => {
- setUsersData((oldData) => {
- return {
- totalItems: data.totalItems,
- hasMore: data.hasMore,
- rows: [...oldData.rows, ...data.rows]
- }
- });
- });
+ // Permet la pagination au scroll
+ const observer = useRef()
+ const lastUserCardRef = useCallback((node) => {
+ if (isLoadingUsers) return
+ if (observer.current) observer.current.disconnect()
+ observer.current = new window.IntersectionObserver((entries) => {
+ if (entries[0].isIntersecting && usersData.hasMore) {
+ pageUsers += 1
+ getUsersData().then((data) => {
+ setUsersData((oldData) => {
+ return {
+ totalItems: data.totalItems,
+ hasMore: data.hasMore,
+ rows: [...oldData.rows, ...data.rows]
}
- }, { threshold: 1 });
- if (node) observer.current.observe(node);
- }, [isLoadingUsers, usersData.hasMore]);
+ })
+ })
+ }
+ }, { threshold: 1 })
+ if (node) observer.current.observe(node)
+ }, [isLoadingUsers, usersData.hasMore])
- return (
-
-
+ return (
+ <>
+
-
-
-
-
Utilisateurs
-
La liste des utilisateurs - Total de {usersData.totalItems} utilisateurs :
+
+
+
+
Utilisateurs
+
La liste des utilisateurs - Total de {usersData.totalItems} utilisateurs :
+
+
+
+
+
+
+
+
+ {usersData.rows.map((user, index) => {
+ // Si c'est le dernier élément
+ if (usersData.rows.length === index + 1) {
+ return (
+
+
+
+
+
{user.name}
+
+ )
+ }
+ return (
+
+
+
+
+
{user.name}
+
+
+
+ )
+ })}
+
-
-
-
-
-
- {usersData.rows.map((user, index) => {
- // Si c'est le dernier élément
- if (usersData.rows.length === index + 1) {
- return (
-
-
-
-
-
{user.name}
-
-
-
- );
- }
- return (
-
-
-
-
-
{user.name}
-
-
-
- );
- })}
-
-
- {isLoadingUsers &&
}
-
-
- );
+ {isLoadingUsers &&
}
+
+ >
+ )
}
-export default Users;
\ No newline at end of file
+export default Users
diff --git a/website/pages/users/login.js b/website/pages/users/login.js
index f9d1b6f..317d19d 100644
--- a/website/pages/users/login.js
+++ b/website/pages/users/login.js
@@ -1,77 +1,75 @@
-import { Fragment, useContext, useState } from 'react';
-import { useRouter } from 'next/router';
-import Link from 'next/link';
-import htmlParser from 'html-react-parser';
-import Loader from '../../components/Loader';
-import HeadTag from '../../components/HeadTag';
-import { UserContext } from '../../contexts/UserContext';
-import withoutAuth from '../../hoc/withoutAuth';
-import '../../public/css/pages/register-login.css';
+import { useContext, useState } from 'react'
+import { useRouter } from 'next/router'
+import Link from 'next/link'
+import htmlParser from 'html-react-parser'
+import Loader from '../../components/Loader'
+import HeadTag from '../../components/HeadTag'
+import { UserContext } from '../../contexts/UserContext'
+import withoutAuth from '../../hoc/withoutAuth'
+import '../../public/css/pages/register-login.css'
const Login = () => {
+ const router = useRouter()
+ const [inputState, setInputState] = useState({})
+ const { loginUser, messageLogin, loginLoading, isAuth } = useContext(UserContext)
- const router = useRouter();
- const [inputState, setInputState] = useState({});
- const { loginUser, messageLogin, loginLoading, isAuth } = useContext(UserContext);
+ const handleChange = (event) => {
+ const inputStateNew = { ...inputState }
+ inputStateNew[event.target.name] = event.target.value
+ setInputState(inputStateNew)
+ }
- const handleChange = (event) => {
- const inputStateNew = { ...inputState };
- inputStateNew[event.target.name] = event.target.value;
- setInputState(inputStateNew);
+ const handleSubmit = async (event) => {
+ event.preventDefault()
+ if (!isAuth) {
+ await loginUser(inputState)
}
+ }
- const handleSubmit = async (event) => {
- event.preventDefault();
- if (!isAuth) {
- await loginUser(inputState);
- }
- }
+ return (
+ <>
+
+
+
+
+
Se connecter
+
+
+ Email :
+
+
- return (
-
-
-
-
-
-
Se connecter
-
-
- Email :
-
-
+
-
-
-
- Envoyer
-
-
-
- {(router.query.isConfirmed !== undefined && messageLogin === "") &&
Succès: Votre compte a bien été confirmé, vous pouvez maintenant vous connectez!
}
- {(router.query.isSuccessEdit !== undefined && messageLogin === "") &&
Succès: Votre profil a bien été modifié, vous pouvez maintenant vous connectez!
}
- {
- (loginLoading) ?
-
- :
- htmlParser(messageLogin)
- }
-
-
-
+
+ Envoyer
+
+
+
+ {(router.query.isConfirmed !== undefined && messageLogin === '') &&
Succès: Votre compte a bien été confirmé, vous pouvez maintenant vous connectez!
}
+ {(router.query.isSuccessEdit !== undefined && messageLogin === '') &&
Succès: Votre profil a bien été modifié, vous pouvez maintenant vous connectez!
}
+ {
+ (loginLoading)
+ ?
+ : htmlParser(messageLogin)
+ }
-
- );
+
+
+
+ >
+ )
}
-export default withoutAuth(Login);
\ No newline at end of file
+export default withoutAuth(Login)
diff --git a/website/pages/users/newPassword.js b/website/pages/users/newPassword.js
index a403ba8..deae906 100644
--- a/website/pages/users/newPassword.js
+++ b/website/pages/users/newPassword.js
@@ -1,82 +1,80 @@
-import { Fragment, useState } from 'react';
-import htmlParser from 'html-react-parser';
-import Loader from '../../components/Loader';
-import HeadTag from '../../components/HeadTag';
-import api from '../../utils/api';
-import redirect from '../../utils/redirect';
-import withoutAuth from '../../hoc/withoutAuth';
-import '../../public/css/pages/register-login.css';
+import { useState } from 'react'
+import htmlParser from 'html-react-parser'
+import Loader from '../../components/Loader'
+import HeadTag from '../../components/HeadTag'
+import api from '../../utils/api'
+import redirect from '../../utils/redirect'
+import withoutAuth from '../../hoc/withoutAuth'
+import '../../public/css/pages/register-login.css'
const newPassword = (props) => {
+ const [inputState, setInputState] = useState({})
+ const [message, setMessage] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
- const [inputState, setInputState] = useState({});
- const [message, setMessage] = useState("");
- const [isLoading, setIsLoading] = useState(false);
+ const handleChange = (event) => {
+ const inputStateNew = { ...inputState }
+ inputStateNew[event.target.name] = event.target.value
+ setInputState(inputStateNew)
+ }
- const handleChange = () => {
- const inputStateNew = { ...inputState };
- inputStateNew[event.target.name] = event.target.value;
- setInputState(inputStateNew);
- }
+ const handleSubmit = (event) => {
+ setIsLoading(true)
+ event.preventDefault()
+ api.put('/users/reset-password', { ...inputState, tempToken: props.token })
+ .then(({ data }) => {
+ setMessage(`
Succès: ${data.result}
`)
+ setIsLoading(false)
+ setInputState({})
+ })
+ .catch((error) => {
+ setMessage(`
Erreur: ${error.response.data.message}
`)
+ setIsLoading(false)
+ })
+ }
- const handleSubmit = (event) => {
- setIsLoading(true);
- event.preventDefault();
- api.put('/users/reset-password', { ...inputState, tempToken: props.token })
- .then(({ data }) => {
- setMessage(`
Succès: ${data.result}
`);
- setIsLoading(false);
- setInputState({});
- })
- .catch((error) => {
- setMessage(`
Erreur: ${error.response.data.message}
`);
- setIsLoading(false);
- });
- }
-
- return (
-
-
-
-
-
-
Nouveau mot de passe
-
-
- Mot de passe :
-
-
-
- Envoyer
-
-
-
- {
- (isLoading) ?
-
- :
- htmlParser(message)
- }
-
-
-
+ return (
+ <>
+
+
+
+
+
Nouveau mot de passe
+
+
+ Mot de passe :
+
+
+
+ Envoyer
+
+
+
+ {
+ (isLoading)
+ ?
+ : htmlParser(message)
+ }
-
- );
+
+
+
+ >
+ )
}
-export async function getServerSideProps(context) {
- if (context.query.token != undefined) {
- return {
- props: {
- token: context.query.token
- }
- };
+export async function getServerSideProps (context) {
+ if (context.query.token != null) {
+ return {
+ props: {
+ token: context.query.token
+ }
}
- return redirect(context, '/404');
+ }
+ return redirect(context, '/404')
}
-export default withoutAuth(newPassword);
\ No newline at end of file
+export default withoutAuth(newPassword)
diff --git a/website/pages/users/register.js b/website/pages/users/register.js
index 24de914..99111d4 100644
--- a/website/pages/users/register.js
+++ b/website/pages/users/register.js
@@ -1,83 +1,81 @@
-import { Fragment, useState } from 'react';
-import htmlParser from 'html-react-parser';
-import Loader from '../../components/Loader';
-import HeadTag from '../../components/HeadTag';
-import api from '../../utils/api';
-import withoutAuth from '../../hoc/withoutAuth';
-import '../../public/css/pages/register-login.css';
+import { useState } from 'react'
+import htmlParser from 'html-react-parser'
+import Loader from '../../components/Loader'
+import HeadTag from '../../components/HeadTag'
+import api from '../../utils/api'
+import withoutAuth from '../../hoc/withoutAuth'
+import '../../public/css/pages/register-login.css'
const Register = () => {
-
- const [inputState, setInputState] = useState({ name: "", email: "", password: "" });
- const [message, setMessage] = useState("");
- const [isLoading, setIsLoading] = useState(false);
-
- const handleChange = (event) => {
- const inputStateNew = { ...inputState };
- inputStateNew[event.target.name] = event.target.value;
- setInputState(inputStateNew);
- }
+ const [inputState, setInputState] = useState({ name: '', email: '', password: '' })
+ const [message, setMessage] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
- const handleSubmit = (event) => {
- setIsLoading(true);
- event.preventDefault();
- api.post('/users/register', inputState)
- .then(({ data }) => {
- setInputState({ name: "", email: "", password: "" });
- setMessage(`
Succès: ${data.result}
`);
- setIsLoading(false);
- })
- .catch((error) => {
- setMessage(`
Erreur: ${error.response.data.message}
`);
- setIsLoading(false);
- });
- }
+ const handleChange = (event) => {
+ const inputStateNew = { ...inputState }
+ inputStateNew[event.target.name] = event.target.value
+ setInputState(inputStateNew)
+ }
- return (
-
-
-
-
-
-
S'inscrire
-
-
En vous inscrivant, vous accéderez à de nombreuses fonctionnalités : publier des commentaires, ajouter des fonctions aux favoris, utiliser certaines fonctions disponibles qu'aux membres (exemple: La To Do list) etc.
-
-
-
- Nom :
-
-
+ const handleSubmit = (event) => {
+ setIsLoading(true)
+ event.preventDefault()
+ api.post('/users/register', inputState)
+ .then(({ data }) => {
+ setInputState({ name: '', email: '', password: '' })
+ setMessage(`Succès: ${data.result}
`)
+ setIsLoading(false)
+ })
+ .catch((error) => {
+ setMessage(`Erreur: ${error.response.data.message}
`)
+ setIsLoading(false)
+ })
+ }
-
- Email :
-
-
-
-
- Mot de passe :
-
-
-
-
- Envoyer
-
-
-
- {
- (isLoading) ?
-
- :
- htmlParser(message)
- }
-
-
-
+ return (
+ <>
+
+
+
+
+
S'inscrire
+
+
En vous inscrivant, vous accéderez à de nombreuses fonctionnalités : publier des commentaires, ajouter des fonctions aux favoris, utiliser certaines fonctions disponibles qu'aux membres (exemple: La To Do list) etc.
-
- );
+
+
+ Nom :
+
+
+
+
+ Email :
+
+
+
+
+ Mot de passe :
+
+
+
+
+ Envoyer
+
+
+
+ {
+ (isLoading)
+ ?
+ : htmlParser(message)
+ }
+
+
+
+
+ >
+ )
}
-export default withoutAuth(Register);
\ No newline at end of file
+export default withoutAuth(Register)
diff --git a/website/public/js/extraHeightCSS.js b/website/public/js/extraHeightCSS.js
index badf7e1..0d26dd5 100644
--- a/website/public/js/extraHeightCSS.js
+++ b/website/public/js/extraHeightCSS.js
@@ -1,2 +1,7 @@
-reactSwipeableExtraHeight = document.querySelector('.react-swipeable-view-container');
-reactSwipeableExtraHeight.parentElement.style = "height: 400px; overflow-x: hidden;";
\ No newline at end of file
+/* eslint-disable */
+
+reactSwipeableExtraHeight = document.querySelector(
+ '.react-swipeable-view-container'
+)
+reactSwipeableExtraHeight.parentElement.style =
+ 'height: 400px; overflow-x: hidden;'
diff --git a/website/public/js/preloader.js b/website/public/js/preloader.js
index fd9c46c..5e16c92 100644
--- a/website/public/js/preloader.js
+++ b/website/public/js/preloader.js
@@ -1,4 +1,4 @@
window.addEventListener('load', () => {
- document.querySelector('.isLoading').classList.remove('isLoading');
- document.getElementById('preloader').remove();
-});
\ No newline at end of file
+ document.querySelector('.isLoading').classList.remove('isLoading')
+ document.getElementById('preloader').remove()
+})
diff --git a/website/server.js b/website/server.js
index 84eba2f..be17861 100644
--- a/website/server.js
+++ b/website/server.js
@@ -1,28 +1,28 @@
/* Modules */
-const next = require('next');
-const express = require("express");
-const redirectToHTTPS = require('express-http-to-https').redirectToHTTPS;
+const next = require('next')
+const express = require('express')
+const redirectToHTTPS = require('express-http-to-https').redirectToHTTPS
/* Variables */
-const PORT = process.env.PORT || 3000;
-const dev = process.env.NODE_ENV !== "production";
-const app = next({ dev });
-const handle = app.getRequestHandler();
+const PORT = process.env.PORT || 3000
+const dev = process.env.NODE_ENV !== 'production'
+const app = next({ dev })
+const handle = app.getRequestHandler()
app.prepare().then(() => {
- const server = express();
+ const server = express()
- /* Middlewares */
- server.use(redirectToHTTPS([/localhost:(\d{4})/]));
+ /* Middlewares */
+ server.use(redirectToHTTPS([/localhost:(\d{4})/]))
- /* Routes */
- server.all("*", (req, res) => {
- return handle(req, res);
- });
+ /* Routes */
+ server.all('*', (req, res) => {
+ return handle(req, res)
+ })
- /* Server */
- server.listen(PORT, (error) => {
- if (error) throw error;
- console.log(`> Ready on http://localhost:${PORT}`);
- });
-});
\ No newline at end of file
+ /* Server */
+ server.listen(PORT, (error) => {
+ if (error) throw error
+ console.log(`> Ready on http://localhost:${PORT}`)
+ })
+})
diff --git a/website/utils/api.js b/website/utils/api.js
index 323405f..b7b425b 100644
--- a/website/utils/api.js
+++ b/website/utils/api.js
@@ -1,11 +1,11 @@
-import axios from 'axios';
-import { API_URL } from './config/config';
+import axios from 'axios'
+import { API_URL } from './config/config'
const api = axios.create({
- baseURL: API_URL,
- headers: {
- 'Content-Type': 'application/json'
- }
-});
+ baseURL: API_URL,
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+})
-export default api;
\ No newline at end of file
+export default api
diff --git a/website/utils/config/config.dev.js b/website/utils/config/config.dev.js
deleted file mode 100644
index f334f3c..0000000
--- a/website/utils/config/config.dev.js
+++ /dev/null
@@ -1 +0,0 @@
-export const API_URL = "http://localhost:8080";
\ No newline at end of file
diff --git a/website/utils/config/config.js b/website/utils/config/config.js
index f334f3c..6c8e8a7 100644
--- a/website/utils/config/config.js
+++ b/website/utils/config/config.js
@@ -1 +1 @@
-export const API_URL = "http://localhost:8080";
\ No newline at end of file
+export const API_URL = process.env.NEXT_PUBLIC_API_URL
diff --git a/website/utils/config/config.prod.js b/website/utils/config/config.prod.js
deleted file mode 100644
index c36dbfe..0000000
--- a/website/utils/config/config.prod.js
+++ /dev/null
@@ -1 +0,0 @@
-export const API_URL = "https://api.function.divlo.fr";
\ No newline at end of file
diff --git a/website/utils/copyToClipboard.js b/website/utils/copyToClipboard.js
index 86c4044..9f6097e 100644
--- a/website/utils/copyToClipboard.js
+++ b/website/utils/copyToClipboard.js
@@ -1,10 +1,10 @@
-function copyToClipboard(text) {
- const element = document.createElement('textarea');
- element.value = text;
- document.body.appendChild(element);
- element.select();
- document.execCommand('copy');
- document.body.removeChild(element);
+function copyToClipboard (text) {
+ const element = document.createElement('textarea')
+ element.value = text
+ document.body.appendChild(element)
+ element.select()
+ document.execCommand('copy')
+ document.body.removeChild(element)
}
-export default copyToClipboard;
\ No newline at end of file
+export default copyToClipboard
diff --git a/website/utils/redirect.js b/website/utils/redirect.js
index 456a8c4..855d0f0 100644
--- a/website/utils/redirect.js
+++ b/website/utils/redirect.js
@@ -1,10 +1,10 @@
-function redirect(ctx, path) {
- if (ctx.res != undefined) {
- ctx.res.writeHead(302, { Location: path });
- ctx.res.end();
- } else {
- document.location.href = path;
- }
+function redirect (ctx, path) {
+ if (ctx.res != null) {
+ ctx.res.writeHead(302, { Location: path })
+ ctx.res.end()
+ } else {
+ document.location.href = path
+ }
}
-module.exports = redirect;
\ No newline at end of file
+module.exports = redirect
diff --git a/website/utils/sunEditorConfig.js b/website/utils/sunEditorConfig.js
index ed86d68..f818573 100644
--- a/website/utils/sunEditorConfig.js
+++ b/website/utils/sunEditorConfig.js
@@ -1,14 +1,14 @@
export const complex = [
- ["undo", "redo"],
- ["font", "fontSize", "formatBlock"],
- ["bold", "underline", "italic", "strike", "subscript", "superscript"],
- ["removeFormat"],
- "/",
- ["fontColor", "hiliteColor"],
- ["outdent", "indent"],
- ["align", "horizontalRule", "list", "table"],
- ["link", "image", "video"],
- ["fullScreen", "showBlocks", "codeView"],
- ["preview", "print"],
- ["save", "template"]
-];
\ No newline at end of file
+ ['undo', 'redo'],
+ ['font', 'fontSize', 'formatBlock'],
+ ['bold', 'underline', 'italic', 'strike', 'subscript', 'superscript'],
+ ['removeFormat'],
+ '/',
+ ['fontColor', 'hiliteColor'],
+ ['outdent', 'indent'],
+ ['align', 'horizontalRule', 'list', 'table'],
+ ['link', 'image', 'video'],
+ ['fullScreen', 'showBlocks', 'codeView'],
+ ['preview', 'print'],
+ ['save', 'template']
+]