From c16d444d1b74449d34eee9704ad633929c1c4d0e Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Sat, 25 Sep 2021 11:49:26 +0200 Subject: [PATCH] Workbox risolto , era il file workbox-config.js che non ci andava... --- deploy_all.sh | 21 + deploy_on_production.sh | 25 + package.json | 7 +- quasar.conf.js | 4 +- src-pwa/custom-service-worker.js | 4 +- src-pwa/custom-service-worker.js.off | 564 ------------------ .../admin/sendpushnotif/sendpushnotif.ts | 35 +- workbox-config.js | 13 - yarn.lock | 310 +++++----- 9 files changed, 221 insertions(+), 762 deletions(-) create mode 100755 deploy_all.sh create mode 100755 deploy_on_production.sh delete mode 100755 src-pwa/custom-service-worker.js.off delete mode 100755 workbox-config.js diff --git a/deploy_all.sh b/deploy_all.sh new file mode 100755 index 00000000..513939c5 --- /dev/null +++ b/deploy_all.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +source ./.env.production + +msg="*** TUTTI I SERVER !!! **** SEI SICURO DI INVIARE GLI AGGIORNAMENTI FRONTEND E BACKEND - SU TUTTI SERVER ??? $DIRECTORY_LOCAL e $DIRECTORY_SERVER (Y/N) ? " + +if [ "$1" = "" ]; then + read -p "$msg" risposta +else + risposta=$1 +fi + + +if [[ $risposta == "Y" || $risposta == "y" ]]; then + cd /home/paolo/myproject/$DIRECTORY_LOCAL/ + ./deploy_frontend.sh $risposta + cd /home/paolo/myproject/$DIRECTORY_SERVER/ + ./deploy_backend.sh $risposta +else + echo "Annullato" +fi diff --git a/deploy_on_production.sh b/deploy_on_production.sh new file mode 100755 index 00000000..205a04fd --- /dev/null +++ b/deploy_on_production.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +source ./.env.production + +msg="*** IN PRODUZIONE !!!!! SEI SICURO DI INVIARE GLI AGGIORNAMENTI SUL SERVER DI PRODUZIONE ?? $SERVERDIR_WEBSITE (Y/N) ? " + +if [ "$1" = "" ]; then + read -p "$msg" risposta +else + echo $msg + risposta=$1 +fi + + +if [[ $risposta == "Y" || $risposta == "y" ]]; then + + npm run buildpwa + + echo "Sincronizzazione in remoto..." + + echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..." + sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8822' -a dist/pwa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/ + echo "Finito $SERVERDIR_WEBSITE " + +fi diff --git a/package.json b/package.json index e3875f81..b38eb38e 100755 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "scripts": { "dev": "quasar dev", "build": "quasar build", + "buildpwa": "quasar build -m pwa", "lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", @@ -77,7 +78,7 @@ "@types/googlemaps": "^3.43.3", "@types/jest": "^27.0.1", "@types/js-cookie": "^2.2.7", - "@types/node": "^16.9.2", + "@types/node": "^14.14.45", "@types/nprogress": "^0.2.0", "@types/vue-tel-input": "^2.1.2", "@types/vuelidate": "^0.7.15", @@ -89,7 +90,6 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^5.1.0", "eslint-plugin-vue": "^7.18.0", - "eslint-webpack-plugin": "^3.0.1", "file-loader": "^6.2.0", "html-webpack-plugin": "^5.3.2", "http-proxy-middleware": "^2.0.1", @@ -110,8 +110,7 @@ "typescript": "^4.4.3", "vue-cli-plugin-element-ui": "^1.1.4", "vueify": "^9.4.1", - "workbox-cli": "^6.3.0", - "workbox-webpack-plugin": "^6.3.0" + "workbox-webpack-plugin": "^6.0.0" }, "browser": { "crypto": false diff --git a/quasar.conf.js b/quasar.conf.js index a5a27c95..2e6a8bab 100755 --- a/quasar.conf.js +++ b/quasar.conf.js @@ -17,7 +17,7 @@ const webpack = require('webpack') const helpers = require('./helpers') const envparser = require('./config/envparser') -const ESLintPlugin = require('eslint-webpack-plugin') +// const ESLintPlugin = require('eslint-webpack-plugin') module.exports = configure((ctx) => ({ // https://v2.quasar.dev/quasar-cli/supporting-ts @@ -276,8 +276,6 @@ module.exports = configure((ctx) => ({ // for the custom service worker ONLY (/src-pwa/custom-service-worker.[js|ts]) // if using workbox in InjectManifest mode chainWebpackCustomSW(chain) { - chain.plugin('eslint-webpack-plugin') - .use(ESLintPlugin, [{ extensions: ['js'] }]) }, manifest: { diff --git a/src-pwa/custom-service-worker.js b/src-pwa/custom-service-worker.js index 9b4dfee9..63de293f 100755 --- a/src-pwa/custom-service-worker.js +++ b/src-pwa/custom-service-worker.js @@ -20,9 +20,9 @@ console.log( importScripts('js/idb.js') importScripts('js/storage.js') -importScripts('js/workbox-sw.js') +// importScripts('js/workbox-sw.js') -// importScripts('https://storage.googleapis.com/workbox-cdn/releases/6.2.0/workbox-sw.js'); +importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.4/workbox-sw.js'); // importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.0.0/workbox-sw.js'); diff --git a/src-pwa/custom-service-worker.js.off b/src-pwa/custom-service-worker.js.off deleted file mode 100755 index 6d43363f..00000000 --- a/src-pwa/custom-service-worker.js.off +++ /dev/null @@ -1,564 +0,0 @@ - -import { precacheAndRoute } from 'workbox-precaching' -import { registerRoute } from 'workbox-routing' -import { - NetworkFirst, - NetworkOnly, - StaleWhileRevalidate, - CacheFirst, -} from 'workbox-strategies' - -// Used for filtering matches based on status code, header, or both -import { CacheableResponsePlugin } from 'workbox-cacheable-response' -// Used to limit entries in cache, remove entries after a certain period of time -import { ExpirationPlugin } from 'workbox-expiration' - -// Use with precache injection -precacheAndRoute(self.__WB_MANIFEST) - -console.log( - ' [ VER-0.0.63 ] _---------________------ PAO: this is my custom service worker') - -importScripts('js/idb.js') -importScripts('js/storage.js') -importScripts('js/workbox-sw.js') - -// importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.0.0/workbox-sw.js'); - -// importScripts('./ChabokSDKWorker.js', 'https://storage.googleapis.com/workbox-cdn/releases/5.0.0/workbox-sw.js'); - -let port = 3000 -if (self.location.hostname.startsWith('test')) { - port = 3001 -} -console.log('SW-06 1') - -const cfgenv = { - serverweb: `${self.location.protocol}//${self.location.hostname}:${port}`, - dbname: 'mydb3', - dbversion: 11, -} - -// console.log('serverweb', cfgenv.serverweb) - -async function writeData (table, data) { - // console.log('writeData', table, data); - await idbKeyval.setdata(table, data) -} - -async function readAllData (table) { - // console.log('readAllData', table); - return idbKeyval.getalldata(table) -} - -async function clearAllData (table) { - // console.log('clearAllData', table); - await idbKeyval.clearalldata(table) -} - -async function deleteItemFromData (table, id) { - // console.log('deleteItemFromData', table, 'ID:', id); - - await idbKeyval.deletedata(table, id) -} - -// self.addEventListener('activate', function(event) { -// event.waitUntil( -// // createDB() -// ); -// }); - -if (!workbox) { - const workbox = new self.WorkboxSW() -} - -if (workbox) { - // console.log('WORKBOX PRESENT') - // const url = new URL(location.href); - // const debug = url.searchParams.has('debug'); - const debug = false - workbox.setConfig({ debug }) - - // workbox.setCacheNameDetails({ prefix: self.location.hostname }) - - registerRoute( - new RegExp(/\.(?:png|gif|jpg|jpeg|svg)$/), - new CacheFirst({ - cacheName: 'images', - plugins: [ - // Ensure that only requests that result in a 200 status are cached - new CacheableResponsePlugin({ - statuses: [200], - }), - new ExpirationPlugin({ - maxEntries: 60, - maxAgeSeconds: 30 * 24 * 60 * 60, // 30 Days - }), - ], - }), - ) - - // Per Articoli.... - const articleHandler = new NetworkFirst({ - cacheName: 'articles-cache', - plugins: [ - // Ensure that only requests that result in a 200 status are cached - new CacheableResponsePlugin({ - statuses: [200], - }), - new ExpirationPlugin({ - maxEntries: 50, - }), - ], - }) - - registerRoute( - new RegExp(/(.*)article(.*)\.html/), args => articleHandler.handle(args), - ) - - registerRoute( - new RegExp(/.*(?:googleapis|gstatic)\.com.*$/), - new StaleWhileRevalidate({ - cacheName: 'google-fonts', - plugins: [ - // Ensure that only requests that result in a 200 status are cached - new CacheableResponsePlugin({ - statuses: [200], - }), - new ExpirationPlugin({ - maxEntries: 30, - }), - ], - }), - ) - - // console.log(' routing.registerRoute function declaration:') - - function Execute_Fetch (table, args) { - console.log('Execute_Fetch registerRoute! ', - `${cfgenv.serverweb}/${table}/`) - // console.log('DATABODY:', args.event.request.body) - let myres = null - // return fetch(args.event.request, args.event.headers) - return fetch(args.event.request, args.event.headers) - .then((res) => { - myres = res - if (res.status === 200) { - const clonedRes = res.clone() - - let secondatab = '' - if (table === 'todos') { - secondatab = 'categories' - } - console.log('1) clearAllData: ', table) - return clearAllData(table) - .then(() => { - if (secondatab !== '') { - // console.log('2) clearAllData(todos)') - return clearAllData(secondatab) - .then(() => - // console.log('3) ....return clonedRes') - clonedRes) - } - return clonedRes - }) - } - }) - .then((clonedRes) => { - // console.log(' 3) ') - if (clonedRes) return clonedRes.json() - return null - }) - .then(data => { - // console.log(' 4) data = ', data) - if (data) { - const myarr = idbKeyval.getArrayByTable(table, data) - if (myarr) { - let promiseChain = Promise.resolve() - - console.log('*********+++++++++++++++++********** Records ', - `${table} Received from Server [`, myarr.length, 'record]', myarr) - - if (table === 'todos') { - for (const cat in data.categories) { - promiseChain = promiseChain.then(() => writeData('categories', { - _id: cat, - valore: data.categories[cat], - })) - } - - for (const arrsing of myarr) { - for (const rec of arrsing) { - promiseChain = promiseChain.then(() => writeData(table, rec)) - } - } - } else { - // Others tables - for (const rec of myarr) { - promiseChain = promiseChain.then(() => writeData(table, rec)) - } - } - - // console.log('promiseChain', promiseChain) - - return promiseChain - } - } - }) - .then(() => myres) - .catch(err => { - console.log('ERROR registerRoute FETCH:', err) - return myres - }) - } - - for (const table of MainTables) { - registerRoute( - new RegExp(`${cfgenv.serverweb}/${table}/`), - (args) => { - Execute_Fetch(table, args) - }, - ) - } - - registerRoute( - (routeData) => (routeData.event.request.headers.get('accept') - .includes('text/html')), (args) => caches.match(args.event.request) - .then((response) => { - if (response) { - return response - } - return fetch(args.event.request) - .then((res) => caches.open('dynamic') - .then((cache) => { - cache.put(args.event.request.url, res.clone()) - return res - })) - .catch((err) => caches.match('/offline') - .then((res) => res)) - }), - ) - - registerRoute( - new RegExp(/.*\/(?:statics\/icons).*$/), - new CacheFirst({ - cacheName: 'image-cache', - plugins: [ - // Ensure that only requests that result in a 200 status are cached - new CacheableResponsePlugin({ - statuses: [200], - }), - new ExpirationPlugin({ - maxAgeSeconds: 30 * 24 * 60 * 60, - }), - ], - }), - ) - - registerRoute( - new RegExp(/\.(?:js|css|font)$/), - new StaleWhileRevalidate({ - cacheName: 'js-css-fonts', - // Ensure that only requests that result in a 200 status are cached - plugins: [ - new CacheableResponsePlugin({ - statuses: [200], - }), - ], - }), - ) - - // Storage - registerRoute( - new RegExp(/.*(?:storage)/), - new StaleWhileRevalidate({ - cacheName: 'storage', - plugins: [ - // Ensure that only requests that result in a 200 status are cached - new CacheableResponsePlugin({ - statuses: [200], - }), - new ExpirationPlugin({ - maxAgeSeconds: 30 * 24 * 60 * 60, - // Only cache 10 requests. - maxEntries: 200, - }), - ], - }), - ) - - registerRoute( - new RegExp(/.*\/(?:statics).*$/), - new CacheFirst({ - cacheName: 'statics', - plugins: [ - // Ensure that only requests that result in a 200 status are cached - new CacheableResponsePlugin({ - statuses: [200], - }), - new ExpirationPlugin({ - maxAgeSeconds: 10 * 24 * 60 * 60, - // Only cache 10 requests. - }), - ], - }), - ) - - registerRoute( - new RegExp('/admin/'), - new NetworkOnly(), - ) - - registerRoute( - new RegExp('/owa/'), - new NetworkOnly(), - ) -} - -if ('serviceWorker' in navigator) { - - // console.log('***************** Entering in custom-service-worker.js:') - -} - -// self.addEventListener('fetch', (event) => { -// if (event.request.url === '/') { -// const StaleWhileRevalidate = new StaleWhileRevalidate(); -// event.respondWith(StaleWhileRevalidate.handle({ event })); -// } -// }); - -// self.addEventListener('fetch', function (event) { -// console.log('[Service Worker] Fetching something ....', event); -// console.log('event.request.cache=', event.request.cache) -// if (event.request.cache === 'only-if-cached' && event.request.mode !== 'same-origin') { -// console.log('SAME ORIGIN!', event); -// return; -// } -// event.respondWith(caches.match(event.request)); -// }); -// - -// const syncStore = {} -// self.addEventListener('message', event => { -// if (event.data.type === 'sync') { -// // get a unique id to save the data -// const id = uuid() -// syncStore[id] = event.data -// // register a sync and pass the id as tag for it to get the data -// self.registration.sync.register(id) -// } -// console.log(event.data) -// }) - -// addEventListener('fetch', event => { -// // Prevent the default, and handle the request ourselves. -// event.respondWith(async function() { -// // Try to get the response from a cache. -// const cachedResponse = await caches.match(event.request); -// // Return it if we found one. -// if (cachedResponse && (event.request.cache !== 'no-cache')) -// return cachedResponse; -// -// // If we didn't find a match in the cache, use the network. -// return fetch(event.request); -// }()); -// }); - -// self.addEventListener('fetch', function (event) { -// event.respondWith( -// caches.match(event.request).then(function (response) { -// return response || -// fetch(event.request, event.headers) -// .catch(err => { -// console.log('_______________________ ERRORE FETCH SW: ', event.request, err) -// writeData('config', { _id: 2, stateconn: 'offline' }) -// return caches.match(event.request); -// }) -// }) -// ); -// }); - -// self.addEventListener('fetch', function (event) { -// event.respondWith( -// fetch(event.request, event.headers) -// .catch(err => { -// console.log('_______________________ ERRORE FETCH SW: ', event.request, err) -// writeData('config', {_id: 2, stateconn: 'offline'}) -// return caches.match(event.request); -// }) -// ); -// }); - -// self.addEventListener('sync', function (event) { -// console.log('[Service Worker V5] Background syncing', event.tag); -// -// let mystrparam = event.tag -// let multiparams = mystrparam.split('|') -// if (multiparams) { -// if (multiparams.length > 3) { -// let cmd = multiparams[0] -// let table = multiparams[1] -// let method = multiparams[2] -// let token = multiparams[3] -// // let lang = multiparams[3] -// -// if (cmd === 'sync-todos') { -// console.log('[Service Worker] Syncing', cmd, table, method); -// -// const headers = new Headers() -// headers.append('content-Type', 'application/json') -// headers.append('Accept', 'application/json') -// headers.append('x-auth', token) -// -// -// // console.log('A1) INIZIO.............................................................'); -// -// event.waitUntil( -// readAllData(table) -// .then(function (alldata) { -// const myrecs = [...alldata] -// console.log('----------------------- LEGGO QUALCOSA DAL WAITUNTIL ') -// let errorfromserver = false -// if (myrecs) { -// for (let rec of myrecs) { -// //console.log('syncing', table, '', rec.descr) -// let link = cfgenv.serverweb + '/todos' -// -// if (method !== 'POST') -// link += '/' + rec._id -// -// console.log('++++++++++++++++++ SYNCING !!!! ', rec.descr, table, 'FETCH: ', method, link, 'data:') -// -// // console.log('DATATOSAVE:', JSON.stringify(rec)) -// -// // Insert/Delete/Update table to the server -// fetch(link, { -// method: method, -// headers: headers, -// cache: 'no-cache', -// mode: 'cors', // 'no-cors', -// body: JSON.stringify(rec) -// }) -// .then(() => { -// deleteItemFromData(table, rec._id) -// }) -// .then(() => { -// deleteItemFromData('swmsg', mystrparam) -// }) -// .catch(function (err) { -// console.log('!!!!!!!!!!!!!!! Error while sending data', err, err.message); -// if (err.message === 'Failed to fetch') { -// errorfromserver = true -// } -// }) -// } -// return errorfromserver -// } -// }) -// .then((errorfromserver) => { -// const mystate = !errorfromserver ? 'online' : 'offline' -// writeData('config', { _id: 2, stateconn: mystate }) -// }) -// ); -// // console.log('A2) ?????????????????????????? ESCO DAL LOOP !!!!!!!!! err=') -// } -// } -// } -// }) -// ; - -/* - -// send message to serviceWorker -function sync (url, options) { - navigator.serviceWorker.controller.postMessage({type: 'sync', url, options}) -} - -const syncStore = {} -self.addEventListener('message', event => { - if(event.data.type === 'sync') { - // get a unique id to save the data - const id = uuid() - syncStore[id] = event.data - // register a sync and pass the id as tag for it to get the data - self.registration.sync.register(id) - } - console.log(event.data) -}) - -self.addEventListener('sync', event => { - // get the data by tag - const {url, options} = syncStore[event.tag] - event.waitUntil(fetch(url, options)) -}) -*/ - -self.addEventListener('notificationclick', (event) => { - const { notification } = event - const { action } = event - - console.log(notification) - - if (action === 'confirm') { - console.log('Confirm was chosen') - notification.close() - } else { - console.log(action) - event.waitUntil( - clients.matchAll() - .then((clis) => { - const client = clis.find((c) => c.visibilityState === 'visible') - - if (client) { - client.navigate(notification.data.url) - client.focus() - } else { - clients.openWindow(notification.data.url) - } - notification.close() - }), - ) - } -}) - -self.addEventListener('notificationclose', (event) => { - console.log('Notification was closed', event) -}) - -self.addEventListener('push', (event) => { - console.log('Push Notification received', event) - - let data = { - title: 'New!', - content: 'Something new happened!', - url: '/', - } - - try { - if (event.data) { - try { - data = JSON.parse(event.data.text()) - } catch (e) { - data = event.data.text() - } - } - - const options = { - body: data.content, - icon: '/public/icons/android-chrome-192x192.png', - badge: '/public/icons/android-chrome-192x192.png', - data: { - url: data.url, - }, - tag: 'received', - renitify: true, // vibrate also with others messages. - } - - event.waitUntil( - self.registration.showNotification(data.title, options), - ) - } catch (e) { - console.log('Error on event push:', e) - } -}) diff --git a/src/rootgen/admin/sendpushnotif/sendpushnotif.ts b/src/rootgen/admin/sendpushnotif/sendpushnotif.ts index f48c8fa7..afb4083e 100755 --- a/src/rootgen/admin/sendpushnotif/sendpushnotif.ts +++ b/src/rootgen/admin/sendpushnotif/sendpushnotif.ts @@ -66,28 +66,37 @@ export default defineComponent({ } function SendMsgToParam(typemsg: any) { - /*const param: any = { + interface IPushParam { + typemsg: string, + title: string, + content: string, + openUrl: string, + openUrl2: string, + tag: string, + actions: any[], + } + + let param: IPushParam = { typemsg, - title: title, - content: content, - openUrl: openUrl, - openUrl2: openUrl2, - tag: tag, + title: title.value, + content: content.value, + openUrl: openUrl.value, + openUrl2: openUrl2.value, + tag: tag.value, actions: [] } - */ - let param: any = [] + param.actions = [] if (actiontype.value === shared_consts.TypeMsg_Actions.YESNO) { - param.value = [ + param.actions = [ { action: 'confirm', title: 'Si', icon: '/statics/icons/opz1-icon-96x96.png' }, { action: 'cancel', title: 'No', icon: '/statics/icons/opz2-icon-96x96.png' } ] } else if (actiontype.value === shared_consts.TypeMsg_Actions.OPZ1_2) { - param.value = [ - { action: 'opz1', title: opz1, icon: '/statics/icons/opz1-icon-96x96.png' }, - { action: 'opz2', title: opz2, icon: '/statics/icons/opz2-icon-96x96.png' } + param.actions = [ + { action: 'opz1', title: opz1.value, icon: '/statics/icons/opz1-icon-96x96.png' }, + { action: 'opz2', title: opz2.value, icon: '/statics/icons/opz2-icon-96x96.png' } ] } @@ -100,7 +109,7 @@ export default defineComponent({ function SendMsgToAll() { - SendMsgToParam(destination) + SendMsgToParam(destination.value) } onMounted(created) diff --git a/workbox-config.js b/workbox-config.js deleted file mode 100755 index 883ce8f0..00000000 --- a/workbox-config.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - globDirectory: 'dist/pwa/', - globPatterns: [ - '**/*.{css,woff2,woff,svg,html,js,json,ico}', - // "src/images/*.{jpg,png}" - ], - // "swSrc": "dist/pwa/src-sw.js", - swDest: 'dist/pwa/service-worker.js', - globIgnores: [ - '../workbox-config.js', - 'help/**', - ], -}; diff --git a/yarn.lock b/yarn.lock index 6b1eb77d..ee35995a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -393,6 +393,17 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.14.5" +"@babel/plugin-proposal-object-rest-spread@^7.15.6": + version "7.15.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" + integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg== + dependencies: + "@babel/compat-data" "^7.15.0" + "@babel/helper-compilation-targets" "^7.15.4" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.15.4" + "@babel/plugin-proposal-optional-catch-binding@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" @@ -844,7 +855,86 @@ "@babel/helper-create-regexp-features-plugin" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.9.0": +"@babel/preset-env@^7.11.0": + version "7.15.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.6.tgz#0f3898db9d63d320f21b17380d8462779de57659" + integrity sha512-L+6jcGn7EWu7zqaO2uoTDjjMBW+88FXzV8KvrBl2z6MtRNxlsmUNRlZPaNNPUTgqhyC5DHNFk/2Jmra+ublZWw== + dependencies: + "@babel/compat-data" "^7.15.0" + "@babel/helper-compilation-targets" "^7.15.4" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4" + "@babel/plugin-proposal-async-generator-functions" "^7.15.4" + "@babel/plugin-proposal-class-properties" "^7.14.5" + "@babel/plugin-proposal-class-static-block" "^7.15.4" + "@babel/plugin-proposal-dynamic-import" "^7.14.5" + "@babel/plugin-proposal-export-namespace-from" "^7.14.5" + "@babel/plugin-proposal-json-strings" "^7.14.5" + "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" + "@babel/plugin-proposal-numeric-separator" "^7.14.5" + "@babel/plugin-proposal-object-rest-spread" "^7.15.6" + "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" + "@babel/plugin-proposal-optional-chaining" "^7.14.5" + "@babel/plugin-proposal-private-methods" "^7.14.5" + "@babel/plugin-proposal-private-property-in-object" "^7.15.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.14.5" + "@babel/plugin-transform-async-to-generator" "^7.14.5" + "@babel/plugin-transform-block-scoped-functions" "^7.14.5" + "@babel/plugin-transform-block-scoping" "^7.15.3" + "@babel/plugin-transform-classes" "^7.15.4" + "@babel/plugin-transform-computed-properties" "^7.14.5" + "@babel/plugin-transform-destructuring" "^7.14.7" + "@babel/plugin-transform-dotall-regex" "^7.14.5" + "@babel/plugin-transform-duplicate-keys" "^7.14.5" + "@babel/plugin-transform-exponentiation-operator" "^7.14.5" + "@babel/plugin-transform-for-of" "^7.15.4" + "@babel/plugin-transform-function-name" "^7.14.5" + "@babel/plugin-transform-literals" "^7.14.5" + "@babel/plugin-transform-member-expression-literals" "^7.14.5" + "@babel/plugin-transform-modules-amd" "^7.14.5" + "@babel/plugin-transform-modules-commonjs" "^7.15.4" + "@babel/plugin-transform-modules-systemjs" "^7.15.4" + "@babel/plugin-transform-modules-umd" "^7.14.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" + "@babel/plugin-transform-new-target" "^7.14.5" + "@babel/plugin-transform-object-super" "^7.14.5" + "@babel/plugin-transform-parameters" "^7.15.4" + "@babel/plugin-transform-property-literals" "^7.14.5" + "@babel/plugin-transform-regenerator" "^7.14.5" + "@babel/plugin-transform-reserved-words" "^7.14.5" + "@babel/plugin-transform-shorthand-properties" "^7.14.5" + "@babel/plugin-transform-spread" "^7.14.6" + "@babel/plugin-transform-sticky-regex" "^7.14.5" + "@babel/plugin-transform-template-literals" "^7.14.5" + "@babel/plugin-transform-typeof-symbol" "^7.14.5" + "@babel/plugin-transform-unicode-escapes" "^7.14.5" + "@babel/plugin-transform-unicode-regex" "^7.14.5" + "@babel/preset-modules" "^0.1.4" + "@babel/types" "^7.15.6" + babel-plugin-polyfill-corejs2 "^0.2.2" + babel-plugin-polyfill-corejs3 "^0.2.2" + babel-plugin-polyfill-regenerator "^0.2.2" + core-js-compat "^3.16.0" + semver "^6.3.0" + +"@babel/preset-env@^7.9.0": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.4.tgz#197e7f99a755c488f0af411af179cbd10de6e815" integrity sha512-4f2nLw+q6ht8gl3sHCmNhmA5W6b1ItLzbH3UrKuJxACHr2eCpk96jwjrAfCAaXaaVwTQGnyUYHY2EWXJGt7TUQ== @@ -973,6 +1063,14 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" +"@babel/types@^7.15.6": + version "7.15.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" + integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== + dependencies: + "@babel/helper-validator-identifier" "^7.14.9" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1904,10 +2002,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.13.tgz#86fae356b03b5a12f2506c6cf6cd9287b205973f" integrity sha512-pLUPDn+YG3FYEt/pHI74HmnJOWzeR+tOIQzUx93pi9M7D8OE7PSLr97HboXwk5F+JS+TLtWuzCOW97AHjmOXXA== -"@types/node@^16.9.2": - version "16.9.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.2.tgz#81f5a039d6ed1941f8cc57506c74e7c2b8fc64b9" - integrity sha512-ZHty/hKoOLZvSz6BtP1g7tc7nUeJhoCf3flLjh8ZEv1vFKBWHXcnMbJMyN/pftSljNyy0kNW/UqI3DccnBnZ8w== +"@types/node@^14.14.45": + version "14.17.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.18.tgz#0198489a751005f71217744aa966cd1f29447c81" + integrity sha512-haYyibw4pbteEhkSg0xdDLAI3679L75EJ799ymVrPxOA922bPx3ML59SoDsQ//rHlvqpu+e36kcbR3XRQtFblA== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -2622,7 +2720,7 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1, ajv@^8.6.0: +ajv@^8.0.1: version "8.6.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== @@ -2632,6 +2730,16 @@ ajv@^8.0.1, ajv@^8.6.0: require-from-string "^2.0.2" uri-js "^4.2.2" +ajv@^8.6.0: + version "8.6.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" + integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -3229,20 +3337,6 @@ boolean@^3.0.1: resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.1.4.tgz#f51a2fb5838a99e06f9b6ec1edb674de67026435" integrity sha512-3hx0kwU3uzG6ReQ3pnaFQPSktpBw6RHN3/ivDKEuU8g1XSfafowyvDnadjv1xp8IZqhtSukxlwv9bF6FhX8m0w== -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - boxen@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b" @@ -3555,14 +3649,6 @@ chalk@^2.0.0, chalk@^2.3.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -3573,7 +3659,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@3.5.2, "chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.1, chokidar@^3.5.2: +chokidar@3.5.2, "chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== @@ -3654,7 +3740,7 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-boxes@^2.2.0, cli-boxes@^2.2.1: +cli-boxes@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== @@ -5932,13 +6018,6 @@ global-agent@^2.0.2: semver "^7.3.2" serialize-error "^7.0.1" -global-dirs@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" - integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== - dependencies: - ini "1.3.7" - global-dirs@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" @@ -6430,9 +6509,9 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== idb@^6.0.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.3.tgz#e6cd3b9c38f5c696a82a4b435754f3873c5a7891" - integrity sha512-oIRDpVcs5KXpI1hRnTJUwkY63RB/7iqu9nSNuzXN8TLHjs7oO20IoPFbBTsqxIL5IjzIUDi+FXlVcK4zm26J8A== + version "6.1.4" + resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.4.tgz#ec77519fe2591be616eaf3bbdedc3662bb558a99" + integrity sha512-DshI5yxIB3NYc47cPpfipYX8MSIgQPqVR+WoaGI9EDq6cnLGgGYR1fp6z8/Bq9vMS8Jq1bS3eWUgXpFO5+ypSA== ieee754@^1.1.13: version "1.2.1" @@ -6520,11 +6599,6 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== - ini@2.0.0, ini@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" @@ -6568,25 +6642,6 @@ inquirer@8.1.2: strip-ansi "^6.0.0" through "^2.3.6" -inquirer@^7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - 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" - internal-ip@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1" @@ -6830,14 +6885,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - is-installed-globally@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" @@ -6873,11 +6920,6 @@ is-negative-zero@^2.0.1: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== - is-npm@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" @@ -6917,7 +6959,7 @@ is-path-cwd@^2.2.0: resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== -is-path-inside@^3.0.1, is-path-inside@^3.0.2: +is-path-inside@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== @@ -7833,7 +7875,7 @@ last-call-webpack-plugin@^3.0.0: lodash "^4.17.5" webpack-sources "^1.1.0" -latest-version@^5.0.0, latest-version@^5.1.0: +latest-version@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== @@ -8184,7 +8226,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.x, lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0, lodash@~4.17.10: +lodash@4.x, lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0, lodash@~4.17.10: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -8378,23 +8420,6 @@ memory-fs@^0.2.0: resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" integrity sha1-8rslNovBIeORwlIN6Slpyu4KApA= -meow@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" - integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^2.5.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.13.1" - yargs-parser "^18.1.3" - meow@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" @@ -9274,7 +9299,7 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -ora@^5.0.0, ora@^5.3.0: +ora@^5.3.0: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== @@ -10354,7 +10379,7 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pupa@^2.0.1, pupa@^2.1.1: +pupa@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== @@ -10893,9 +10918,9 @@ rollup-plugin-terser@^7.0.0: terser "^5.0.0" rollup@^2.43.1: - version "2.56.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.56.3.tgz#b63edadd9851b0d618a6d0e6af8201955a77aeff" - integrity sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg== + version "2.57.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.57.0.tgz#c1694475eb22e1022477c0f4635fd0ac80713173" + integrity sha512-bKQIh1rWKofRee6mv8SrF2HdP6pea5QkwBZSMImJysFj39gQuiV8MEPBjXOCpzk3wSYp63M2v2wkWBmFC8O/rg== optionalDependencies: fsevents "~2.3.2" @@ -10922,13 +10947,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - rxjs@^7.2.0: version "7.3.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.3.0.tgz#39fe4f3461dc1e50be1475b2b85a0a88c1e938c6" @@ -11353,6 +11371,14 @@ source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.1 buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@~0.5.20: + version "0.5.20" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" + integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" @@ -11858,11 +11884,6 @@ tempy@^0.6.0: type-fest "^0.16.0" unique-string "^2.0.0" -term-size@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -11904,7 +11925,16 @@ terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.0.0, terser@^5.3.8, terser@^5.7.0, terser@^5.7.2: +terser@^5.0.0: + version "5.9.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" + integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + +terser@^5.3.8, terser@^5.7.0, terser@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.2.tgz#d4d95ed4f8bf735cb933e802f2a1829abf545e3f" integrity sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw== @@ -12119,7 +12149,7 @@ tslib@1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== -tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.13.0, tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -12410,25 +12440,6 @@ upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-notifier@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" - integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== - dependencies: - boxen "^4.2.0" - chalk "^3.0.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - update-notifier@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" @@ -13149,25 +13160,6 @@ workbox-cacheable-response@6.3.0: dependencies: workbox-core "6.3.0" -workbox-cli@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/workbox-cli/-/workbox-cli-6.3.0.tgz#100ae520c79723e0b72f80063f4ba2d1c4c34184" - integrity sha512-N0d+bkNLC7J1ZTugMSbmSvldv/IzDbLrnxQoNwv3O3Ql/oooJIWSLsdAnqb52K5uZYgMDMXbgmZ0D0XQcIUgIg== - dependencies: - chalk "^4.1.0" - chokidar "^3.5.2" - common-tags "^1.8.0" - fs-extra "^9.0.1" - glob "^7.1.6" - inquirer "^7.3.3" - meow "^7.1.0" - ora "^5.0.0" - pretty-bytes "^5.3.0" - stringify-object "^3.3.0" - upath "^1.2.0" - update-notifier "^4.1.0" - workbox-build "6.3.0" - workbox-core@6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.3.0.tgz#a7d82bae6f623f342e04028a0a2cef39af71af55" @@ -13253,7 +13245,7 @@ workbox-sw@6.3.0: resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.3.0.tgz#8b805a3ac5339e8df0e6ba36c491d9cd01aa9f3f" integrity sha512-xwrXRBzw5jwJ7VdAQkTSNTbNZ4S6VhXtbZZ0vY6XKNQARO5nuGphNdif+hJFIejHUgtV6ESpQnixPj5hYB2jKQ== -workbox-webpack-plugin@^6.3.0: +workbox-webpack-plugin@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.3.0.tgz#86c6c6fcb5fc151e6b4ccd8d7041d3da6a4a4271" integrity sha512-3l5H8h7O2eUgTAISQoglDe4VJDDYTZaDnkRY0FY2+eFOXA+fZoWuDSmLiMnA0uYqPC4NWVTZwP549E0dWgiWjw== @@ -13395,14 +13387,6 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.3: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs@^13.3.2: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"