From c9135f157394f51dd6ca3d43b18fa3ea0afea65b Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Tue, 5 Apr 2022 21:14:22 +0000 Subject: [PATCH 01/19] add option to specify sslmode for nats-api pg connection closes #1049 --- .../commands/create_natsapi_conf.py | 6 ++++++ main.go | 2 +- natsapi/bin/nats-api | Bin 6475776 -> 6475776 bytes natsapi/types.go | 1 + natsapi/utils.go | 4 ++-- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/api/tacticalrmm/core/management/commands/create_natsapi_conf.py b/api/tacticalrmm/core/management/commands/create_natsapi_conf.py index 0396ddfbee..34a02bcd46 100644 --- a/api/tacticalrmm/core/management/commands/create_natsapi_conf.py +++ b/api/tacticalrmm/core/management/commands/create_natsapi_conf.py @@ -12,6 +12,11 @@ def handle(self, *args, **kwargs): self.stdout.write("Creating configuration for nats-api...") db = settings.DATABASES["default"] + if hasattr(settings, "DB_SSL"): + ssl = settings.DB_SSL + else: + ssl = "disable" + config = { "key": settings.SECRET_KEY, "natsurl": f"tls://{settings.ALLOWED_HOSTS[0]}:4222", @@ -20,6 +25,7 @@ def handle(self, *args, **kwargs): "host": db["HOST"], "port": int(db["PORT"]), "dbname": db["NAME"], + "sslmode": ssl, } conf = os.path.join(settings.BASE_DIR, "nats-api.conf") with open(conf, "w") as f: diff --git a/main.go b/main.go index 60827d5d73..d5819d6738 100644 --- a/main.go +++ b/main.go @@ -11,7 +11,7 @@ import ( ) var ( - version = "3.0.1" + version = "3.0.2" log = logrus.New() ) diff --git a/natsapi/bin/nats-api b/natsapi/bin/nats-api index a3ddac40cb5844db1c4a304ab1d6bbd59675ef0d..3de7ada4237aefe1358a3fa1b639fb9bcc4fb9b0 100755 GIT binary patch delta 253664 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 delta 254839 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 z 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≠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 diff --git a/natsapi/types.go b/natsapi/types.go index d26fb879a8..aeb334f05e 100644 --- a/natsapi/types.go +++ b/natsapi/types.go @@ -13,4 +13,5 @@ type DjangoConfig struct { Host string `json:"host"` Port int `json:"port"` DBName string `json:"dbname"` + SSLMode string `json:"sslmode"` } diff --git a/natsapi/utils.go b/natsapi/utils.go index b7356b3df7..64154de7e9 100644 --- a/natsapi/utils.go +++ b/natsapi/utils.go @@ -41,8 +41,8 @@ func GetConfig(cfg string) (db *sqlx.DB, r DjangoConfig, err error) { } psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+ - "password=%s dbname=%s sslmode=disable", - r.Host, r.Port, r.User, r.Pass, r.DBName) + "password=%s dbname=%s sslmode=%s", + r.Host, r.Port, r.User, r.Pass, r.DBName, r.SSLMode) db, err = sqlx.Connect("postgres", psqlInfo) if err != nil { From e50e0626faad600583b8fcf6b00cd55196ec9f24 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Tue, 5 Apr 2022 21:31:13 +0000 Subject: [PATCH 02/19] also check env --- api/tacticalrmm/core/management/commands/create_natsapi_conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/tacticalrmm/core/management/commands/create_natsapi_conf.py b/api/tacticalrmm/core/management/commands/create_natsapi_conf.py index 34a02bcd46..db17591a31 100644 --- a/api/tacticalrmm/core/management/commands/create_natsapi_conf.py +++ b/api/tacticalrmm/core/management/commands/create_natsapi_conf.py @@ -12,7 +12,7 @@ def handle(self, *args, **kwargs): self.stdout.write("Creating configuration for nats-api...") db = settings.DATABASES["default"] - if hasattr(settings, "DB_SSL"): + if hasattr(settings, "DB_SSL") or "DB_SSL" in os.environ: ssl = settings.DB_SSL else: ssl = "disable" From 241fe4175613bae0fe1269b89f8cc735e3831b18 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Tue, 5 Apr 2022 22:44:41 +0000 Subject: [PATCH 03/19] fix env --- .../core/management/commands/create_natsapi_conf.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/api/tacticalrmm/core/management/commands/create_natsapi_conf.py b/api/tacticalrmm/core/management/commands/create_natsapi_conf.py index db17591a31..44cd3107d2 100644 --- a/api/tacticalrmm/core/management/commands/create_natsapi_conf.py +++ b/api/tacticalrmm/core/management/commands/create_natsapi_conf.py @@ -12,8 +12,10 @@ def handle(self, *args, **kwargs): self.stdout.write("Creating configuration for nats-api...") db = settings.DATABASES["default"] - if hasattr(settings, "DB_SSL") or "DB_SSL" in os.environ: + if hasattr(settings, "DB_SSL"): ssl = settings.DB_SSL + elif "DB_SSL" in os.environ: + ssl = os.getenv("DB_SSL") else: ssl = "disable" From 8c283281d655717de8c8c3215e69df9daf186d38 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Fri, 8 Apr 2022 16:06:44 +0000 Subject: [PATCH 04/19] remove lower() from mesh username --- api/tacticalrmm/agents/models.py | 2 +- api/tacticalrmm/agents/views.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/tacticalrmm/agents/models.py b/api/tacticalrmm/agents/models.py index edb599a7e1..b17ec78468 100644 --- a/api/tacticalrmm/agents/models.py +++ b/api/tacticalrmm/agents/models.py @@ -620,7 +620,7 @@ def get_login_token(self, key, user, action=3): key1 = key[0:48] key2 = key[48:] msg = '{{"a":{}, "u":"{}","time":{}}}'.format( - action, user.lower(), int(time.time()) + action, user, int(time.time()) ) iv = get_random_bytes(16) diff --git a/api/tacticalrmm/agents/views.py b/api/tacticalrmm/agents/views.py index 4555133a2e..952d569cd7 100644 --- a/api/tacticalrmm/agents/views.py +++ b/api/tacticalrmm/agents/views.py @@ -210,7 +210,7 @@ def get(self, request, agent_id): token = agent.get_login_token( key=core.mesh_token, - user=f"user//{core.mesh_username.lower()}", # type:ignore + user=f"user//{core.mesh_username}", # type:ignore ) if token == "err": From 054cc78e653fe7065d7b57cc369b536104388ec7 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Fri, 8 Apr 2022 18:30:17 +0000 Subject: [PATCH 05/19] add meshctrl --- api/tacticalrmm/agents/models.py | 30 ------------------- api/tacticalrmm/agents/tests.py | 6 +--- api/tacticalrmm/agents/views.py | 9 ++---- .../core/management/commands/check_mesh.py | 3 +- .../management/commands/initial_mesh_setup.py | 4 +-- api/tacticalrmm/core/models.py | 2 +- api/tacticalrmm/core/utils.py | 18 +---------- api/tacticalrmm/requirements.txt | 3 +- 8 files changed, 11 insertions(+), 64 deletions(-) diff --git a/api/tacticalrmm/agents/models.py b/api/tacticalrmm/agents/models.py index b17ec78468..5a5e4a13ee 100644 --- a/api/tacticalrmm/agents/models.py +++ b/api/tacticalrmm/agents/models.py @@ -1,7 +1,5 @@ import asyncio -import base64 import re -import time from collections import Counter from distutils.version import LooseVersion from typing import Any @@ -11,10 +9,6 @@ import validators from asgiref.sync import sync_to_async from core.models import TZ_CHOICES, CoreSettings -from Crypto.Cipher import AES -from Crypto.Hash import SHA3_384 -from Crypto.Random import get_random_bytes -from Crypto.Util.Padding import pad from django.conf import settings from django.contrib.postgres.fields import ArrayField from django.db import models @@ -613,30 +607,6 @@ def generate_tasks_from_policies(self): # Generate tasks based on policies Policy.generate_policy_tasks(self) - # https://github.com/Ylianst/MeshCentral/issues/59#issuecomment-521965347 - def get_login_token(self, key, user, action=3): - try: - key = bytes.fromhex(key) - key1 = key[0:48] - key2 = key[48:] - msg = '{{"a":{}, "u":"{}","time":{}}}'.format( - action, user, int(time.time()) - ) - iv = get_random_bytes(16) - - # sha - h = SHA3_384.new() - h.update(key1) - hashed_msg = h.digest() + msg.encode() - - # aes - cipher = AES.new(key2, AES.MODE_CBC, iv) - msg = cipher.encrypt(pad(hashed_msg, 16)) - - return base64.b64encode(iv + msg, altchars=b"@$").decode("utf-8") - except Exception: - return "err" - def _do_nats_debug(self, agent, message): DebugLog.error(agent=agent, log_type="agent_issues", message=message) diff --git a/api/tacticalrmm/agents/tests.py b/api/tacticalrmm/agents/tests.py index 4142c18b65..66d5e6d9a4 100644 --- a/api/tacticalrmm/agents/tests.py +++ b/api/tacticalrmm/agents/tests.py @@ -519,7 +519,7 @@ def test_install_agent(self): self.check_not_authenticated("post", url) - @patch("agents.models.Agent.get_login_token") + @patch("meshctrl.utils.get_auth_token") def test_meshcentral_tabs(self, mock_token): url = f"{base_url}/{self.agent.agent_id}/meshcentral/" mock_token.return_value = "askjh1k238uasdhk487234jadhsajksdhasd" @@ -547,10 +547,6 @@ def test_meshcentral_tabs(self, mock_token): self.assertEqual(r.status_code, 200) - mock_token.return_value = "err" - r = self.client.get(url) - self.assertEqual(r.status_code, 400) - self.check_not_authenticated("get", url) @patch("agents.models.Agent.nats_cmd") diff --git a/api/tacticalrmm/agents/views.py b/api/tacticalrmm/agents/views.py index 952d569cd7..13b20f7237 100644 --- a/api/tacticalrmm/agents/views.py +++ b/api/tacticalrmm/agents/views.py @@ -4,6 +4,7 @@ import random import string import time +from meshctrl.utils import get_auth_token from core.models import CodeSignToken, CoreSettings from core.utils import get_mesh_ws_url, remove_mesh_agent, send_command_with_mesh @@ -208,13 +209,7 @@ def get(self, request, agent_id): agent = get_object_or_404(Agent, agent_id=agent_id) core = CoreSettings.objects.first() - token = agent.get_login_token( - key=core.mesh_token, - user=f"user//{core.mesh_username}", # type:ignore - ) - - if token == "err": - return notify_error("Invalid mesh token") + token = get_auth_token(user=core.mesh_username, key=core.mesh_token) control = f"{core.mesh_site}/?login={token}&gotonode={agent.mesh_node_id}&viewmode=11&hide=31" # type:ignore terminal = f"{core.mesh_site}/?login={token}&gotonode={agent.mesh_node_id}&viewmode=12&hide=31" # type:ignore diff --git a/api/tacticalrmm/core/management/commands/check_mesh.py b/api/tacticalrmm/core/management/commands/check_mesh.py index 08c9fa1af1..681fe5c4e3 100644 --- a/api/tacticalrmm/core/management/commands/check_mesh.py +++ b/api/tacticalrmm/core/management/commands/check_mesh.py @@ -1,9 +1,10 @@ import asyncio +from meshctrl.utils import get_auth_token from django.core.management.base import BaseCommand from core.models import CoreSettings -from core.utils import get_auth_token, get_mesh_device_id, get_mesh_ws_url +from core.utils import get_mesh_device_id, get_mesh_ws_url class Command(BaseCommand): diff --git a/api/tacticalrmm/core/management/commands/initial_mesh_setup.py b/api/tacticalrmm/core/management/commands/initial_mesh_setup.py index 0ded4c8d9a..3598afb974 100644 --- a/api/tacticalrmm/core/management/commands/initial_mesh_setup.py +++ b/api/tacticalrmm/core/management/commands/initial_mesh_setup.py @@ -45,9 +45,9 @@ def handle(self, *args, **kwargs): # Check for Mesh Username if ( not mesh_settings.mesh_username - or settings.MESH_USERNAME != mesh_settings.mesh_username + or settings.MESH_USERNAME.lower() != mesh_settings.mesh_username ): - mesh_settings.mesh_username = settings.MESH_USERNAME + mesh_settings.mesh_username = settings.MESH_USERNAME.lower() # Check for Mesh Site if ( diff --git a/api/tacticalrmm/core/models.py b/api/tacticalrmm/core/models.py index 8cc2b202c7..fe7ab3b281 100644 --- a/api/tacticalrmm/core/models.py +++ b/api/tacticalrmm/core/models.py @@ -97,7 +97,7 @@ def save(self, *args, **kwargs): if not self.pk: try: self.mesh_site = settings.MESH_SITE - self.mesh_username = settings.MESH_USERNAME + self.mesh_username = settings.MESH_USERNAME.lower() self.mesh_token = settings.MESH_TOKEN_KEY except: pass diff --git a/api/tacticalrmm/core/utils.py b/api/tacticalrmm/core/utils.py index 9068c8f3e4..3aa99334d0 100644 --- a/api/tacticalrmm/core/utils.py +++ b/api/tacticalrmm/core/utils.py @@ -1,30 +1,14 @@ import json import tempfile -import time from base64 import b64encode +from meshctrl.utils import get_auth_token import requests import websockets -from Crypto.Cipher import AES -from Crypto.Random import get_random_bytes from django.conf import settings from django.http import FileResponse -def get_auth_token(user, key): - key = bytes.fromhex(key) - key1 = key[0:32] - msg = '{{"userid":"{}", "domainid":"{}", "time":{}}}'.format( - f"user//{user}", "", int(time.time()) - ) - iv = get_random_bytes(12) - - a = AES.new(key1, AES.MODE_GCM, iv) - msg, tag = a.encrypt_and_digest(bytes(msg, "utf-8")) # type: ignore - - return b64encode(iv + tag + msg, altchars=b"@$").decode("utf-8") - - def get_mesh_ws_url() -> str: from core.models import CoreSettings diff --git a/api/tacticalrmm/requirements.txt b/api/tacticalrmm/requirements.txt index 46311697a8..e7aabbf4bd 100644 --- a/api/tacticalrmm/requirements.txt +++ b/api/tacticalrmm/requirements.txt @@ -34,4 +34,5 @@ validators==0.18.2 vine==5.0.0 websockets==10.2 zipp==3.7.0 -drf_spectacular==0.21.2 \ No newline at end of file +drf_spectacular==0.21.2 +meshctrl==0.1.12 \ No newline at end of file From 58384ae136e7d776dfa9c1cdaadd94c6c970381c Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Fri, 8 Apr 2022 18:45:53 +0000 Subject: [PATCH 06/19] update supported version --- SECURITY.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index ce452d9799..54bfdf8374 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,8 +4,8 @@ | Version | Supported | | ------- | ------------------ | -| 0.12.0 | :white_check_mark: | -| < 0.12.0 | :x: | +| 0.12.2 | :white_check_mark: | +| < 0.12.2 | :x: | ## Reporting a Vulnerability From 5284eb0af8c5a834b01af9d9cebb6fce7c33bfe9 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Fri, 8 Apr 2022 18:47:57 +0000 Subject: [PATCH 07/19] validate mesh username --- api/tacticalrmm/tacticalrmm/settings.py | 2 +- .../modals/coresettings/EditCoreSettings.vue | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/api/tacticalrmm/tacticalrmm/settings.py b/api/tacticalrmm/tacticalrmm/settings.py index 26b8f0553c..f6de4389a3 100644 --- a/api/tacticalrmm/tacticalrmm/settings.py +++ b/api/tacticalrmm/tacticalrmm/settings.py @@ -21,7 +21,7 @@ # bump this version everytime vue code is changed # to alert user they need to manually refresh their browser -APP_VER = "0.0.159" +APP_VER = "0.0.160" # https://github.com/amidaware/rmmagent LATEST_AGENT_VER = "2.0.2" diff --git a/web/src/components/modals/coresettings/EditCoreSettings.vue b/web/src/components/modals/coresettings/EditCoreSettings.vue index d0ac15a666..0b0075913e 100644 --- a/web/src/components/modals/coresettings/EditCoreSettings.vue +++ b/web/src/components/modals/coresettings/EditCoreSettings.vue @@ -304,7 +304,15 @@
Username:
- +
Mesh Site:
From 69ff70a9cef27c0d65859fa91390e026250e7493 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Fri, 8 Apr 2022 18:49:15 +0000 Subject: [PATCH 08/19] typo [skip ci] --- web/src/components/modals/coresettings/EditCoreSettings.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/modals/coresettings/EditCoreSettings.vue b/web/src/components/modals/coresettings/EditCoreSettings.vue index 0b0075913e..3a06cd7680 100644 --- a/web/src/components/modals/coresettings/EditCoreSettings.vue +++ b/web/src/components/modals/coresettings/EditCoreSettings.vue @@ -310,7 +310,7 @@ v-model="settings.mesh_username" class="col-6" :rules="[ - val => (val == val.toLowerCase() && val != val.toUpperCase()) || 'Username be all lowercase', + val => (val == val.toLowerCase() && val != val.toUpperCase()) || 'Username must be all lowercase', ]" />
From c3a0b9192fccb7ddfa14d30a3e36b46b39f6f19d Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Fri, 8 Apr 2022 19:34:38 +0000 Subject: [PATCH 09/19] update reqs --- api/tacticalrmm/requirements.txt | 13 +- web/package-lock.json | 987 +++++++------------------------ web/package.json | 6 +- 3 files changed, 208 insertions(+), 798 deletions(-) diff --git a/api/tacticalrmm/requirements.txt b/api/tacticalrmm/requirements.txt index e7aabbf4bd..980e145bd2 100644 --- a/api/tacticalrmm/requirements.txt +++ b/api/tacticalrmm/requirements.txt @@ -1,5 +1,5 @@ asgiref==3.5.0 -celery==5.2.3 +celery==5.2.6 certifi==2021.10.8 cffi==1.15.0 channels==3.0.4 @@ -14,8 +14,7 @@ django-rest-knox==4.2.0 djangorestframework==3.13.1 future==0.18.2 msgpack==1.0.3 -nats-py==2.0.0 -packaging==21.3 +nats-py==2.1.0 psycopg2-binary==2.9.3 pycparser==2.21 pycryptodome==3.14.1 @@ -23,16 +22,16 @@ pyotp==2.6.0 pyparsing==3.0.7 pytz==2022.1 qrcode==7.3.1 -redis==4.1.4 +redis==4.2.2 requests==2.27.1 six==1.16.0 sqlparse==0.4.2 -twilio==7.8.0 +twilio==7.8.1 urllib3==1.26.9 uWSGI==2.0.20 validators==0.18.2 vine==5.0.0 websockets==10.2 -zipp==3.7.0 +zipp==3.8.0 drf_spectacular==0.21.2 -meshctrl==0.1.12 \ No newline at end of file +meshctrl==0.1.13 \ No newline at end of file diff --git a/web/package-lock.json b/web/package-lock.json index 302d9c092a..202116561c 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -8,12 +8,12 @@ "name": "web", "version": "0.1.8", "dependencies": { - "@quasar/extras": "^1.13.3", + "@quasar/extras": "^1.13.5", "apexcharts": "^3.33.2", "axios": "^0.26.1", "dotenv": "^16.0.0", "qrcode.vue": "^3.3.3", - "quasar": "^2.6.1", + "quasar": "^2.6.6", "vue": "^3.2.31", "vue3-ace-editor": "^2.2.2", "vue3-apexcharts": "^1.4.1", @@ -21,7 +21,7 @@ "vuex": "^4.0.2" }, "devDependencies": { - "@quasar/app-webpack": "^3.4.5", + "@quasar/app-webpack": "^3.5.0", "@quasar/cli": "^1.3.2" } }, @@ -1853,6 +1853,12 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", + "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "dev": true + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1904,14 +1910,15 @@ } }, "node_modules/@quasar/app-webpack": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/@quasar/app-webpack/-/app-webpack-3.4.5.tgz", - "integrity": "sha512-c+FIt9bcUaM5DFiCTrb3s/mfQwTvBn7zHvSj96Iv4EXfnwbcUqcCH1tR3sCGRcowdf+sn2H03H8qfjOdE4KeHQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@quasar/app-webpack/-/app-webpack-3.5.0.tgz", + "integrity": "sha512-eFe0ra7Cnl/YG422Xe5ih5mwThbscDnTBpMWkDF1Lebr1Spv9aTVUy1TwSZzHZPW6TsMscwu08cem7gz9FoEeA==", "dev": true, "dependencies": { "@quasar/babel-preset-app": "2.0.1", "@quasar/fastclick": "1.1.5", - "@quasar/ssr-helpers": "2.1.2", + "@quasar/ssr-helpers": "2.2.0", + "@types/compression": "^1.7.2", "@types/cordova": "0.0.34", "@types/express": "4.17.13", "@types/webpack-bundle-analyzer": "4.4.1", @@ -1926,7 +1933,7 @@ "cross-spawn": "7.0.3", "css-loader": "5.2.6", "css-minimizer-webpack-plugin": "3.4.1", - "cssnano": "5.1.5", + "cssnano": "5.1.7", "dot-prop": "6.0.1", "elementtree": "0.1.7", "error-stack-parser": "2.0.7", @@ -1938,14 +1945,14 @@ "hash-sum": "2.0.0", "html-minifier": "4.0.0", "html-webpack-plugin": "5.5.0", - "inquirer": "8.2.1", + "inquirer": "8.2.2", "isbinaryfile": "4.0.8", "launch-editor-middleware": "2.3.0", + "loader-utils": "^2.0.0", "lodash.debounce": "4.0.8", "lodash.template": "4.5.0", "lodash.throttle": "4.1.1", "log-update": "4.0.0", - "memory-fs": "0.5.0", "mini-css-extract-plugin": "1.6.0", "minimist": "1.2.6", "node-loader": "2.0.0", @@ -1954,12 +1961,12 @@ "ouch": "2.0.0", "postcss": "^8.4.4", "postcss-loader": "6.2.1", - "postcss-rtlcss": "3.5.3", + "postcss-rtlcss": "3.5.4", "pretty-error": "4.0.0", "register-service-worker": "1.7.2", "sass": "1.32.12", "sass-loader": "12.4.0", - "semver": "7.3.5", + "semver": "7.3.6", "table": "6.8.0", "terser-webpack-plugin": "5.3.1", "ts-loader": "9.2.6", @@ -1970,7 +1977,7 @@ "webpack": "^5.58.1", "webpack-bundle-analyzer": "4.5.0", "webpack-chain": "6.5.1", - "webpack-dev-server": "4.7.4", + "webpack-dev-server": "4.8.1", "webpack-merge": "5.8.0", "webpack-node-externals": "3.0.0" }, @@ -2102,9 +2109,9 @@ } }, "node_modules/@quasar/extras": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.13.3.tgz", - "integrity": "sha512-8Tx+iUtg0e+UeSPu2+iJA4joIuIaMGPpV65gNv1/7kINqpAEKi6sXhu/Ahyy/IhZ5o4g1DU9ZGp8CpJKBNwdFA==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.13.5.tgz", + "integrity": "sha512-H4X3jwqOJpDrn1Pof1mJIpoHdBrZQSR9ZpnQ7RCkJsJccpTyQzs8Q6ehVXfIZrco2kd3UPitRQqEiW7k45ckLg==", "funding": { "type": "github", "url": "https://donate.quasar.dev" @@ -2121,9 +2128,9 @@ } }, "node_modules/@quasar/ssr-helpers": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@quasar/ssr-helpers/-/ssr-helpers-2.1.2.tgz", - "integrity": "sha512-YGkabPWOhcMXGboiKDBr7KmYf+lXjuNaK97fJ4C9iiJF0axrTIQbKCuri+MXvWZAhjwoHUgl7gr4sx9jnu8D1w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@quasar/ssr-helpers/-/ssr-helpers-2.2.0.tgz", + "integrity": "sha512-0OaDNqBFoyPzaC/IHrcZhvz6KIRItplZH4a8nL/JBuiuQ3MoUYICpenSQeHLlNhlcMASDmQEAGI+yAAESv0iCQ==", "dev": true, "dependencies": { "serialize-javascript": "^5.0.1" @@ -2185,6 +2192,15 @@ "@types/node": "*" } }, + "node_modules/@types/compression": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.2.tgz", + "integrity": "sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, "node_modules/@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -2699,19 +2715,6 @@ "node": ">=0.4.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -3260,21 +3263,19 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "node_modules/bonjour-service": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.11.tgz", + "integrity": "sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA==", "dev": true, "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" } }, - "node_modules/bonjour/node_modules/array-flatten": { + "node_modules/bonjour-service/node_modules/array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", @@ -3449,12 +3450,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, "node_modules/builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -3675,15 +3670,6 @@ "node": ">=0.10.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/cli-boxes": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", @@ -4362,15 +4348,12 @@ } }, "node_modules/css-declaration-sorter": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", - "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", "dev": true, - "dependencies": { - "timsort": "^0.3.0" - }, "engines": { - "node": ">= 10" + "node": "^10 || ^12 || >=14" }, "peerDependencies": { "postcss": "^8.0.9" @@ -4594,12 +4577,12 @@ } }, "node_modules/cssnano": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.5.tgz", - "integrity": "sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.7.tgz", + "integrity": "sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==", "dev": true, "dependencies": { - "cssnano-preset-default": "^5.2.5", + "cssnano-preset-default": "^5.2.7", "lilconfig": "^2.0.3", "yaml": "^1.10.2" }, @@ -4615,12 +4598,12 @@ } }, "node_modules/cssnano-preset-default": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz", - "integrity": "sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ==", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", + "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", "dev": true, "dependencies": { - "css-declaration-sorter": "^6.0.3", + "css-declaration-sorter": "^6.2.2", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", "postcss-colormin": "^5.3.0", @@ -4629,7 +4612,7 @@ "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.3", + "postcss-merge-longhand": "^5.1.4", "postcss-merge-rules": "^5.1.1", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", @@ -4942,23 +4925,6 @@ "node": ">=0.10.0" } }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -5025,66 +4991,6 @@ "node": ">= 0.4" } }, - "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del/node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/del/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -5125,22 +5031,15 @@ "dev": true }, "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", "dev": true, "dependencies": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, "node_modules/dom-converter": { @@ -5415,18 +5314,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -6522,21 +6409,6 @@ "node": "*" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -6598,9 +6470,9 @@ } }, "node_modules/html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "node_modules/html-minifier": { @@ -6905,15 +6777,6 @@ "node": ">=0.8.19" } }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -6937,9 +6800,9 @@ "dev": true }, "node_modules/inquirer": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.1.tgz", - "integrity": "sha512-pxhBaw9cyTFMjwKtkjePWDhvwzvrNGAw7En4hottzlPvz80GZaMZthdDU35aA6/f5FRZf3uhE057q8w1DE3V2g==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", + "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", "dev": true, "dependencies": { "ansi-escapes": "^4.2.1", @@ -6997,12 +6860,6 @@ "node": ">=4" } }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -7012,22 +6869,6 @@ "node": ">= 0.10" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -7076,21 +6917,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -7215,15 +7041,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -7257,22 +7074,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", @@ -7861,43 +7662,6 @@ "node": ">= 4.0.0" } }, - "node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/memory-fs/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/memory-fs/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -8129,24 +7893,18 @@ "dev": true }, "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", "dev": true, "dependencies": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" }, "bin": { "multicast-dns": "cli.js" } }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, "node_modules/multimatch": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", @@ -8366,22 +8124,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -8599,21 +8341,6 @@ "node": ">=8" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-retry": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", @@ -9202,9 +8929,9 @@ } }, "node_modules/postcss-merge-longhand": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz", - "integrity": "sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", + "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0", @@ -9552,9 +9279,9 @@ } }, "node_modules/postcss-rtlcss": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/postcss-rtlcss/-/postcss-rtlcss-3.5.3.tgz", - "integrity": "sha512-QasqXUUBAqvHtDGJydyw5rJB88S4ZHRdxKsguqfes1PBDkBW97P9GiLCtcg6EuCXRvD+52giBQXKWNWg9gshow==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/postcss-rtlcss/-/postcss-rtlcss-3.5.4.tgz", + "integrity": "sha512-5GpWTmBqeM10rRcFBwaKYCg7M6jiytfSS6pwrphTZnNSioxYNUMZH+88xh1oO4AF7Ix9y2qC76/gQq1HIuUf+g==", "dev": true, "dependencies": { "rtlcss": "^3.5.0" @@ -9672,12 +9399,6 @@ "node": ">= 0.10" } }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -9736,9 +9457,9 @@ } }, "node_modules/quasar": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.6.1.tgz", - "integrity": "sha512-fMjWXaqqgVGFknsXeNblAmOWkV+GH3qZw0jGnI1f1EW4PRq+cz1YVkGvPc4wVc6Phy5kxE3icRhAkNpRloeP0A==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.6.6.tgz", + "integrity": "sha512-rXoGZROOXVutQX14l/ys0te/NrgQ754krI0Vz52pBXdznyS+dTL6AgGpr3JMwffoxpxhQyedrL2jOAMpq+Jsgw==", "engines": { "node": ">= 10.18.1", "npm": ">= 6.13.4", @@ -9926,22 +9647,6 @@ "@babel/runtime": "^7.8.4" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/regexpu-core": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", @@ -10415,30 +10120,30 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "dependencies": { - "node-forge": "^1.2.0" + "node-forge": "^1" }, "engines": { "node": ">=10" } }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", + "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "lru-cache": "^7.4.0" }, "bin": { "semver": "bin/semver.js" }, "engines": { - "node": ">=10" + "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/semver-diff": { @@ -10463,23 +10168,14 @@ } }, "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", + "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/send": { "version": "0.17.2", "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", @@ -11359,12 +11055,6 @@ "node": ">=0.10.0" } }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -12128,9 +11818,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", - "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", + "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", @@ -12138,29 +11828,28 @@ "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", + "@types/ws": "^8.5.1", "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", + "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", + "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", + "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", "open": "^8.0.9", "p-retry": "^4.5.0", "portfinder": "^1.0.28", + "rimraf": "^3.0.2", "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", + "selfsigned": "^2.0.1", "serve-index": "^1.9.1", "sockjs": "^0.3.21", "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", "webpack-dev-middleware": "^5.3.1", "ws": "^8.4.2" }, @@ -12207,18 +11896,6 @@ "ajv": "^8.8.2" } }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/webpack-dev-server/node_modules/ipaddr.js": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", @@ -12253,21 +11930,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/webpack-dev-server/node_modules/ws": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", @@ -13845,6 +13507,12 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@leichtgewicht/ip-codec": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", + "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "dev": true + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -13884,14 +13552,15 @@ "dev": true }, "@quasar/app-webpack": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/@quasar/app-webpack/-/app-webpack-3.4.5.tgz", - "integrity": "sha512-c+FIt9bcUaM5DFiCTrb3s/mfQwTvBn7zHvSj96Iv4EXfnwbcUqcCH1tR3sCGRcowdf+sn2H03H8qfjOdE4KeHQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@quasar/app-webpack/-/app-webpack-3.5.0.tgz", + "integrity": "sha512-eFe0ra7Cnl/YG422Xe5ih5mwThbscDnTBpMWkDF1Lebr1Spv9aTVUy1TwSZzHZPW6TsMscwu08cem7gz9FoEeA==", "dev": true, "requires": { "@quasar/babel-preset-app": "2.0.1", "@quasar/fastclick": "1.1.5", - "@quasar/ssr-helpers": "2.1.2", + "@quasar/ssr-helpers": "2.2.0", + "@types/compression": "^1.7.2", "@types/cordova": "0.0.34", "@types/express": "4.17.13", "@types/webpack-bundle-analyzer": "4.4.1", @@ -13906,7 +13575,7 @@ "cross-spawn": "7.0.3", "css-loader": "5.2.6", "css-minimizer-webpack-plugin": "3.4.1", - "cssnano": "5.1.5", + "cssnano": "5.1.7", "dot-prop": "6.0.1", "elementtree": "0.1.7", "error-stack-parser": "2.0.7", @@ -13918,14 +13587,14 @@ "hash-sum": "2.0.0", "html-minifier": "4.0.0", "html-webpack-plugin": "5.5.0", - "inquirer": "8.2.1", + "inquirer": "8.2.2", "isbinaryfile": "4.0.8", "launch-editor-middleware": "2.3.0", + "loader-utils": "^2.0.0", "lodash.debounce": "4.0.8", "lodash.template": "4.5.0", "lodash.throttle": "4.1.1", "log-update": "4.0.0", - "memory-fs": "0.5.0", "mini-css-extract-plugin": "1.6.0", "minimist": "1.2.6", "node-loader": "2.0.0", @@ -13934,12 +13603,12 @@ "ouch": "2.0.0", "postcss": "^8.4.4", "postcss-loader": "6.2.1", - "postcss-rtlcss": "3.5.3", + "postcss-rtlcss": "3.5.4", "pretty-error": "4.0.0", "register-service-worker": "1.7.2", "sass": "1.32.12", "sass-loader": "12.4.0", - "semver": "7.3.5", + "semver": "7.3.6", "table": "6.8.0", "terser-webpack-plugin": "5.3.1", "ts-loader": "9.2.6", @@ -13950,7 +13619,7 @@ "webpack": "^5.58.1", "webpack-bundle-analyzer": "4.5.0", "webpack-chain": "6.5.1", - "webpack-dev-server": "4.7.4", + "webpack-dev-server": "4.8.1", "webpack-merge": "5.8.0", "webpack-node-externals": "3.0.0" } @@ -14031,9 +13700,9 @@ } }, "@quasar/extras": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.13.3.tgz", - "integrity": "sha512-8Tx+iUtg0e+UeSPu2+iJA4joIuIaMGPpV65gNv1/7kINqpAEKi6sXhu/Ahyy/IhZ5o4g1DU9ZGp8CpJKBNwdFA==" + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.13.5.tgz", + "integrity": "sha512-H4X3jwqOJpDrn1Pof1mJIpoHdBrZQSR9ZpnQ7RCkJsJccpTyQzs8Q6ehVXfIZrco2kd3UPitRQqEiW7k45ckLg==" }, "@quasar/fastclick": { "version": "1.1.5", @@ -14042,9 +13711,9 @@ "dev": true }, "@quasar/ssr-helpers": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@quasar/ssr-helpers/-/ssr-helpers-2.1.2.tgz", - "integrity": "sha512-YGkabPWOhcMXGboiKDBr7KmYf+lXjuNaK97fJ4C9iiJF0axrTIQbKCuri+MXvWZAhjwoHUgl7gr4sx9jnu8D1w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@quasar/ssr-helpers/-/ssr-helpers-2.2.0.tgz", + "integrity": "sha512-0OaDNqBFoyPzaC/IHrcZhvz6KIRItplZH4a8nL/JBuiuQ3MoUYICpenSQeHLlNhlcMASDmQEAGI+yAAESv0iCQ==", "dev": true, "requires": { "serialize-javascript": "^5.0.1" @@ -14090,6 +13759,15 @@ "@types/node": "*" } }, + "@types/compression": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.2.tgz", + "integrity": "sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -14585,16 +14263,6 @@ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -15014,18 +14682,16 @@ } } }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "bonjour-service": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.11.tgz", + "integrity": "sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA==", "dev": true, "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" }, "dependencies": { "array-flatten": { @@ -15153,12 +14819,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -15323,12 +14983,6 @@ } } }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, "cli-boxes": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", @@ -15863,13 +15517,11 @@ "dev": true }, "css-declaration-sorter": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", - "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", "dev": true, - "requires": { - "timsort": "^0.3.0" - } + "requires": {} }, "css-loader": { "version": "5.2.6", @@ -16016,23 +15668,23 @@ "dev": true }, "cssnano": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.5.tgz", - "integrity": "sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.7.tgz", + "integrity": "sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==", "dev": true, "requires": { - "cssnano-preset-default": "^5.2.5", + "cssnano-preset-default": "^5.2.7", "lilconfig": "^2.0.3", "yaml": "^1.10.2" } }, "cssnano-preset-default": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz", - "integrity": "sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ==", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", + "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", "dev": true, "requires": { - "css-declaration-sorter": "^6.0.3", + "css-declaration-sorter": "^6.2.2", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", "postcss-colormin": "^5.3.0", @@ -16041,7 +15693,7 @@ "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.3", + "postcss-merge-longhand": "^5.1.4", "postcss-merge-rules": "^5.1.1", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", @@ -16293,20 +15945,6 @@ } } }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -16358,50 +15996,6 @@ "object-keys": "^1.0.12" } }, - "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "dependencies": { - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - } - } - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -16436,22 +16030,12 @@ "dev": true }, "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", "dev": true, "requires": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" } }, "dom-converter": { @@ -16675,15 +16259,6 @@ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -17504,15 +17079,6 @@ "has-symbol-support-x": "^1.4.1" } }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, "has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -17570,9 +17136,9 @@ } }, "html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "html-minifier": { @@ -17784,12 +17350,6 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "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==", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -17813,9 +17373,9 @@ "dev": true }, "inquirer": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.1.tgz", - "integrity": "sha512-pxhBaw9cyTFMjwKtkjePWDhvwzvrNGAw7En4hottzlPvz80GZaMZthdDU35aA6/f5FRZf3uhE057q8w1DE3V2g==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", + "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -17863,28 +17423,12 @@ "p-is-promise": "^1.1.0" } }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -17926,15 +17470,6 @@ "has": "^1.0.3" } }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -18014,12 +17549,6 @@ "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", "dev": true }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -18041,16 +17570,6 @@ "isobject": "^3.0.1" } }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, "is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", @@ -18538,42 +18057,6 @@ "fs-monkey": "1.0.3" } }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "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==", - "dev": 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" - } - }, - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -18743,21 +18226,15 @@ "dev": true }, "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", "dev": true, "requires": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" } }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, "multimatch": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", @@ -18912,16 +18389,6 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -19076,15 +18543,6 @@ "p-limit": "^2.2.0" } }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, "p-retry": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", @@ -19530,9 +18988,9 @@ } }, "postcss-merge-longhand": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz", - "integrity": "sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", + "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0", @@ -19746,9 +19204,9 @@ } }, "postcss-rtlcss": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/postcss-rtlcss/-/postcss-rtlcss-3.5.3.tgz", - "integrity": "sha512-QasqXUUBAqvHtDGJydyw5rJB88S4ZHRdxKsguqfes1PBDkBW97P9GiLCtcg6EuCXRvD+52giBQXKWNWg9gshow==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/postcss-rtlcss/-/postcss-rtlcss-3.5.4.tgz", + "integrity": "sha512-5GpWTmBqeM10rRcFBwaKYCg7M6jiytfSS6pwrphTZnNSioxYNUMZH+88xh1oO4AF7Ix9y2qC76/gQq1HIuUf+g==", "dev": true, "requires": { "rtlcss": "^3.5.0" @@ -19833,12 +19291,6 @@ "ipaddr.js": "1.9.1" } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -19883,9 +19335,9 @@ "dev": true }, "quasar": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.6.1.tgz", - "integrity": "sha512-fMjWXaqqgVGFknsXeNblAmOWkV+GH3qZw0jGnI1f1EW4PRq+cz1YVkGvPc4wVc6Phy5kxE3icRhAkNpRloeP0A==" + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.6.6.tgz", + "integrity": "sha512-rXoGZROOXVutQX14l/ys0te/NrgQ754krI0Vz52pBXdznyS+dTL6AgGpr3JMwffoxpxhQyedrL2jOAMpq+Jsgw==" }, "query-string": { "version": "5.1.1", @@ -20027,16 +19479,6 @@ "@babel/runtime": "^7.8.4" } }, - "regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, "regexpu-core": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", @@ -20379,36 +19821,27 @@ "dev": true }, "selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "requires": { - "node-forge": "^1.2.0" + "node-forge": "^1" } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", + "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "lru-cache": "^7.4.0" }, "dependencies": { "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", + "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==", "dev": true } } @@ -21122,12 +20555,6 @@ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -21721,9 +21148,9 @@ } }, "webpack-dev-server": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", - "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", + "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -21731,29 +21158,28 @@ "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", + "@types/ws": "^8.5.1", "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", + "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", + "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", + "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", "open": "^8.0.9", "p-retry": "^4.5.0", "portfinder": "^1.0.28", + "rimraf": "^3.0.2", "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", + "selfsigned": "^2.0.1", "serve-index": "^1.9.1", "sockjs": "^0.3.21", "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", "webpack-dev-middleware": "^5.3.1", "ws": "^8.4.2" }, @@ -21779,12 +21205,6 @@ "fast-deep-equal": "^3.1.3" } }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, "ipaddr.js": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", @@ -21809,15 +21229,6 @@ "ajv-keywords": "^5.0.0" } }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, "ws": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", diff --git a/web/package.json b/web/package.json index 6261a7d420..acdbe2cd17 100644 --- a/web/package.json +++ b/web/package.json @@ -10,12 +10,12 @@ "test:e2e:ci": "cross-env E2E_TEST=true start-test \"quasar dev\" http-get://localhost:8080 \"cypress run\"" }, "dependencies": { - "@quasar/extras": "^1.13.3", + "@quasar/extras": "^1.13.5", "apexcharts": "^3.33.2", "axios": "^0.26.1", "dotenv": "^16.0.0", "qrcode.vue": "^3.3.3", - "quasar": "^2.6.1", + "quasar": "^2.6.6", "vue": "^3.2.31", "vue3-ace-editor": "^2.2.2", "vue3-apexcharts": "^1.4.1", @@ -23,7 +23,7 @@ "vuex": "^4.0.2" }, "devDependencies": { - "@quasar/app-webpack": "^3.4.5", + "@quasar/app-webpack": "^3.5.0", "@quasar/cli": "^1.3.2" }, "browserslist": [ From 6a94489df0816eebfac30f1b24814575d9e92dc6 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Sat, 9 Apr 2022 00:26:22 +0000 Subject: [PATCH 10/19] testing coveralls --- .github/workflows/ci-tests.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index aa98f25a40..81bb3c4229 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -54,3 +54,8 @@ jobs: if [ $? -ne 0 ]; then exit 1 fi + + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} From f161a2bbc8e74715b6b52a1dc6ae4132f2e266a6 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Sat, 9 Apr 2022 00:43:47 +0000 Subject: [PATCH 11/19] more coveralls --- .github/workflows/ci-tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 81bb3c4229..a399a2e69d 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -57,5 +57,7 @@ jobs: - name: Coveralls uses: coverallsapp/github-action@master + run: pwd with: github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: ./api/tacticalrmm/coverage.lcov From 8278a4cfd97741abf0f4a3f6b811885ee39629fd Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Sat, 9 Apr 2022 00:45:02 +0000 Subject: [PATCH 12/19] remove run --- .github/workflows/ci-tests.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index a399a2e69d..d88a596030 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -57,7 +57,6 @@ jobs: - name: Coveralls uses: coverallsapp/github-action@master - run: pwd with: github-token: ${{ secrets.GITHUB_TOKEN }} path-to-lcov: ./api/tacticalrmm/coverage.lcov From ac3550dfd7abda3bd206e729340928875ec8b532 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Sat, 9 Apr 2022 00:48:00 +0000 Subject: [PATCH 13/19] add lcov --- .github/workflows/ci-tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index d88a596030..15e6f3a28d 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -42,6 +42,7 @@ jobs: cd api/tacticalrmm source ../env/bin/activate coverage run manage.py test -v 2 + coverage lcov if [ $? -ne 0 ]; then exit 1 fi From b63e87ecb672d2fb76ef7ab775ff76f256f0b5a5 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Sat, 9 Apr 2022 01:01:32 +0000 Subject: [PATCH 14/19] add parallel --- .github/workflows/ci-tests.yml | 3 ++- .gitignore | 1 + api/tacticalrmm/requirements-test.txt | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 15e6f3a28d..907caa74ea 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -41,7 +41,7 @@ jobs: run: | cd api/tacticalrmm source ../env/bin/activate - coverage run manage.py test -v 2 + coverage run manage.py test -v 2 --parallel coverage lcov if [ $? -ne 0 ]; then exit 1 @@ -61,3 +61,4 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} path-to-lcov: ./api/tacticalrmm/coverage.lcov + base-path: ./api/tacticalrmm diff --git a/.gitignore b/.gitignore index a05f4030ce..9555252df0 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,4 @@ reset_db.sh run_go_cmd.py nats-api.conf ignore/ +coverage.lcov diff --git a/api/tacticalrmm/requirements-test.txt b/api/tacticalrmm/requirements-test.txt index ddafe4e71a..5e9ec8a7fc 100644 --- a/api/tacticalrmm/requirements-test.txt +++ b/api/tacticalrmm/requirements-test.txt @@ -1,4 +1,5 @@ coverage coveralls model_bakery -black \ No newline at end of file +black +tblib \ No newline at end of file From 97f362ed1ee3d6c892a80788bf4acdb614ad76d1 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Sat, 9 Apr 2022 01:26:04 +0000 Subject: [PATCH 15/19] fix for multiprocessing --- .github/workflows/ci-tests.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 907caa74ea..d9d8303147 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -41,7 +41,9 @@ jobs: run: | cd api/tacticalrmm source ../env/bin/activate - coverage run manage.py test -v 2 --parallel + rm -f .coverage coverage.lcov + coverage run --concurrency=multiprocessing manage.py test -v 2 --parallel + coverage combine coverage lcov if [ $? -ne 0 ]; then exit 1 From 58fe14bd31762bb9418ce680a82a9c47e32a28ec Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Sat, 9 Apr 2022 02:10:51 +0000 Subject: [PATCH 16/19] add coverage badge --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a732828457..e4f44ac6f7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Tactical RMM -![](https://github.com/amidaware/tacticalrmm/actions/workflows/ci-tests.yml/badge.svg?branch=develop) -[![Coverage Status](https://coveralls.io/repos/github/wh1te909/tacticalrmm/badge.png?branch=develop&kill_cache=1)](https://coveralls.io/github/wh1te909/tacticalrmm?branch=develop) +![CI Tests](https://github.com/amidaware/tacticalrmm/actions/workflows/ci-tests.yml/badge.svg?branch=develop) +[![Coverage Status](https://coveralls.io/repos/github/amidaware/tacticalrmm/badge.svg?branch=develop)](https://coveralls.io/github/amidaware/tacticalrmm?branch=develop) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black) Tactical RMM is a remote monitoring & management tool, built with Django and Vue.\ From 4bdb6ae84e31d9d2ac86fcf67773a2a4e2ea5e63 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Sat, 9 Apr 2022 17:09:09 +0000 Subject: [PATCH 17/19] fix graphics --- api/tacticalrmm/agents/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/tacticalrmm/agents/models.py b/api/tacticalrmm/agents/models.py index 5a5e4a13ee..ff890f61e0 100644 --- a/api/tacticalrmm/agents/models.py +++ b/api/tacticalrmm/agents/models.py @@ -213,7 +213,8 @@ def graphics(self): try: if not self.wmi_detail["gpus"]: return "No graphics cards" - return self.wmi_detail["gpus"] + + return ", ".join(self.wmi_detail["gpus"]) except: return "Error getting graphics cards" From ff41bbd0e5af2b3a7e694f41da471a287c2c0766 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Sat, 9 Apr 2022 17:09:54 +0000 Subject: [PATCH 18/19] adjust celery config --- install.sh | 4 ++-- update.sh | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 4cd6d1e167..e1b84cd2c4 100644 --- a/install.sh +++ b/install.sh @@ -1,6 +1,6 @@ #!/bin/bash -SCRIPT_VERSION="60" +SCRIPT_VERSION="61" SCRIPT_URL='https://raw.githubusercontent.com/amidaware/tacticalrmm/master/install.sh' sudo apt install -y curl wget dirmngr gnupg lsb-release @@ -658,7 +658,7 @@ CELERY_APP="tacticalrmm" CELERYD_MULTI="multi" -CELERYD_OPTS="--time-limit=86400 --autoscale=50,3" +CELERYD_OPTS="--time-limit=86400 --autoscale=20,2" CELERYD_PID_FILE="/rmm/api/tacticalrmm/%n.pid" CELERYD_LOG_FILE="/var/log/celery/%n%I.log" diff --git a/update.sh b/update.sh index 42629b9a2c..7c8f6b0a77 100644 --- a/update.sh +++ b/update.sh @@ -1,6 +1,6 @@ #!/bin/bash -SCRIPT_VERSION="132" +SCRIPT_VERSION="133" SCRIPT_URL='https://raw.githubusercontent.com/amidaware/tacticalrmm/master/update.sh' LATEST_SETTINGS_URL='https://raw.githubusercontent.com/amidaware/tacticalrmm/master/api/tacticalrmm/tacticalrmm/settings.py' YELLOW='\033[1;33m' @@ -258,6 +258,11 @@ sudo chown ${USER}:${USER} -R /etc/conf.d/ sudo chown ${USER}:${USER} -R /etc/letsencrypt sudo chmod 775 -R /etc/letsencrypt +CHECK_CELERY_CONFIG=$(grep "autoscale=20,2" /etc/conf.d/celery.conf) +if ! [[ $CHECK_CELERY_CONFIG ]]; then + sed -i 's/CELERYD_OPTS=.*/CELERYD_OPTS="--time-limit=86400 --autoscale=20,2"/g' /etc/conf.d/celery.conf +fi + CHECK_ADMIN_ENABLED=$(grep ADMIN_ENABLED /rmm/api/tacticalrmm/tacticalrmm/local_settings.py) if ! [[ $CHECK_ADMIN_ENABLED ]]; then adminenabled="$(cat << EOF From cddac4d0fb649cde3694db8d11609b31cec8300c Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Mon, 11 Apr 2022 22:21:57 +0000 Subject: [PATCH 19/19] bump version --- api/tacticalrmm/tacticalrmm/settings.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/tacticalrmm/tacticalrmm/settings.py b/api/tacticalrmm/tacticalrmm/settings.py index f6de4389a3..9f98797951 100644 --- a/api/tacticalrmm/tacticalrmm/settings.py +++ b/api/tacticalrmm/tacticalrmm/settings.py @@ -17,7 +17,7 @@ AUTH_USER_MODEL = "accounts.User" # latest release -TRMM_VERSION = "0.12.2" +TRMM_VERSION = "0.12.3" # bump this version everytime vue code is changed # to alert user they need to manually refresh their browser @@ -31,8 +31,8 @@ NATS_SERVER_VER = "2.7.4" # for the update script, bump when need to recreate venv or npm install -PIP_VER = "27" -NPM_VER = "30" +PIP_VER = "28" +NPM_VER = "31" SETUPTOOLS_VER = "59.6.0" WHEEL_VER = "0.37.1"