Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development

This commit is contained in:
helgeerbe 2023-07-02 14:32:12 +02:00
commit 9a4eb75160
16 changed files with 154 additions and 85 deletions

View File

@ -0,0 +1,21 @@
[
{
"name": "Wemos Lolin32 OLED",
"nrf24": {
"miso": 2,
"mosi": 14,
"clk": 12,
"irq": 0,
"en": 15,
"cs": 13
},
"eth": {
"enabled": false
},
"display": {
"type": 2,
"data": 5,
"clk": 4
}
}
]

View File

@ -92,3 +92,12 @@ void MultiDataCommand::udpateCRC()
_payload[24] = (uint8_t)(crc >> 8); _payload[24] = (uint8_t)(crc >> 8);
_payload[25] = (uint8_t)(crc); _payload[25] = (uint8_t)(crc);
} }
uint8_t MultiDataCommand::getTotalFragmentSize(fragment_t fragment[], uint8_t max_fragment_id)
{
uint8_t fragmentSize = 0;
for (uint8_t i = 0; i < max_fragment_id; i++) {
fragmentSize += fragment[i].len;
}
return fragmentSize;
}

View File

@ -20,6 +20,7 @@ protected:
void setDataType(uint8_t data_type); void setDataType(uint8_t data_type);
uint8_t getDataType(); uint8_t getDataType();
void udpateCRC(); void udpateCRC();
static uint8_t getTotalFragmentSize(fragment_t fragment[], uint8_t max_fragment_id);
RequestFrameCommand _cmdRequestFrame; RequestFrameCommand _cmdRequestFrame;
}; };

View File

@ -3,6 +3,7 @@
* Copyright (C) 2022 Thomas Basler and others * Copyright (C) 2022 Thomas Basler and others
*/ */
#include "RealTimeRunDataCommand.h" #include "RealTimeRunDataCommand.h"
#include "Hoymiles.h"
#include "inverters/InverterAbstract.h" #include "inverters/InverterAbstract.h"
RealTimeRunDataCommand::RealTimeRunDataCommand(uint64_t target_address, uint64_t router_address, time_t time) RealTimeRunDataCommand::RealTimeRunDataCommand(uint64_t target_address, uint64_t router_address, time_t time)
@ -25,6 +26,18 @@ bool RealTimeRunDataCommand::handleResponse(InverterAbstract* inverter, fragment
return false; return false;
} }
// Check if at least all required bytes are received
// In case of low power in the inverter it occours that some incomplete fragments
// with a valid CRC are received.
uint8_t fragmentsSize = getTotalFragmentSize(fragment, max_fragment_id);
uint8_t expectedSize = inverter->Statistics()->getExpectedByteCount();
if (fragmentsSize < expectedSize) {
Hoymiles.getMessageOutput()->printf("ERROR in %s: Received fragment size: %d, min expected size: %d\r\n",
getCommandName().c_str(), fragmentsSize, expectedSize);
return false;
}
// Move all fragments into target buffer // Move all fragments into target buffer
uint8_t offs = 0; uint8_t offs = 0;
inverter->Statistics()->clearBuffer(); inverter->Statistics()->clearBuffer();

View File

@ -32,6 +32,18 @@ void StatisticsParser::setByteAssignment(const byteAssign_t* byteAssignment, uin
{ {
_byteAssignment = byteAssignment; _byteAssignment = byteAssignment;
_byteAssignmentSize = size; _byteAssignmentSize = size;
for (uint8_t i = 0; i < _byteAssignmentSize; i++) {
if (_byteAssignment[i].div == CMD_CALC) {
continue;
}
_expectedByteCount = max<uint8_t>(_expectedByteCount, _byteAssignment[i].start + _byteAssignment[i].num);
}
}
uint8_t StatisticsParser::getExpectedByteCount()
{
return _expectedByteCount;
} }
void StatisticsParser::clearBuffer() void StatisticsParser::clearBuffer()

View File

@ -109,6 +109,9 @@ public:
void setByteAssignment(const byteAssign_t* byteAssignment, uint8_t size); void setByteAssignment(const byteAssign_t* byteAssignment, uint8_t size);
// Returns 1 based amount of expected bytes of statistic data
uint8_t getExpectedByteCount();
const byteAssign_t* getAssignmentByChannelField(ChannelType_t type, ChannelNum_t channel, FieldId_t fieldId); const byteAssign_t* getAssignmentByChannelField(ChannelType_t type, ChannelNum_t channel, FieldId_t fieldId);
fieldSettings_t* getSettingByChannelField(ChannelType_t type, ChannelNum_t channel, FieldId_t fieldId); fieldSettings_t* getSettingByChannelField(ChannelType_t type, ChannelNum_t channel, FieldId_t fieldId);
@ -139,6 +142,7 @@ private:
const byteAssign_t* _byteAssignment; const byteAssign_t* _byteAssignment;
uint8_t _byteAssignmentSize; uint8_t _byteAssignmentSize;
uint8_t _expectedByteCount;
std::list<fieldSettings_t> _fieldSettings; std::list<fieldSettings_t> _fieldSettings;
uint32_t _rxFailureCount = 0; uint32_t _rxFailureCount = 0;

View File

@ -22,7 +22,7 @@ framework = arduino
platform = espressif32@6.3.1 platform = espressif32@6.3.1
build_flags = build_flags =
-DCOMPONENT_EMBED_FILES=webapp_dist/index.html.gz:webapp_dist/zones.json.gz:webapp_dist/favicon.ico:webapp_dist/js/app.js.gz -DCOMPONENT_EMBED_FILES=webapp_dist/index.html.gz:webapp_dist/zones.json.gz:webapp_dist/favicon.ico:webapp_dist/favicon.png:webapp_dist/js/app.js.gz
-DPIOENV=\"$PIOENV\" -DPIOENV=\"$PIOENV\"
-Wall -Wextra -Werror -Wall -Wextra -Werror
-std=c++17 -std=c++17

View File

@ -6,11 +6,13 @@
extern const uint8_t file_index_html_start[] asm("_binary_webapp_dist_index_html_gz_start"); extern const uint8_t file_index_html_start[] asm("_binary_webapp_dist_index_html_gz_start");
extern const uint8_t file_favicon_ico_start[] asm("_binary_webapp_dist_favicon_ico_start"); extern const uint8_t file_favicon_ico_start[] asm("_binary_webapp_dist_favicon_ico_start");
extern const uint8_t file_favicon_png_start[] asm("_binary_webapp_dist_favicon_png_start");
extern const uint8_t file_zones_json_start[] asm("_binary_webapp_dist_zones_json_gz_start"); extern const uint8_t file_zones_json_start[] asm("_binary_webapp_dist_zones_json_gz_start");
extern const uint8_t file_app_js_start[] asm("_binary_webapp_dist_js_app_js_gz_start"); extern const uint8_t file_app_js_start[] asm("_binary_webapp_dist_js_app_js_gz_start");
extern const uint8_t file_index_html_end[] asm("_binary_webapp_dist_index_html_gz_end"); extern const uint8_t file_index_html_end[] asm("_binary_webapp_dist_index_html_gz_end");
extern const uint8_t file_favicon_ico_end[] asm("_binary_webapp_dist_favicon_ico_end"); extern const uint8_t file_favicon_ico_end[] asm("_binary_webapp_dist_favicon_ico_end");
extern const uint8_t file_favicon_png_end[] asm("_binary_webapp_dist_favicon_png_end");
extern const uint8_t file_zones_json_end[] asm("_binary_webapp_dist_zones_json_gz_end"); extern const uint8_t file_zones_json_end[] asm("_binary_webapp_dist_zones_json_gz_end");
extern const uint8_t file_app_js_end[] asm("_binary_webapp_dist_js_app_js_gz_end"); extern const uint8_t file_app_js_end[] asm("_binary_webapp_dist_js_app_js_gz_end");
@ -41,6 +43,11 @@ void WebApiWebappClass::init(AsyncWebServer* server)
request->send(response); request->send(response);
}); });
_server->on("/favicon.png", HTTP_GET, [](AsyncWebServerRequest* request) {
AsyncWebServerResponse* response = request->beginResponse_P(200, "image/png", file_favicon_png_start, file_favicon_png_end - file_favicon_png_start);
request->send(response);
});
_server->on("/zones.json", HTTP_GET, [](AsyncWebServerRequest* request) { _server->on("/zones.json", HTTP_GET, [](AsyncWebServerRequest* request) {
AsyncWebServerResponse* response = request->beginResponse_P(200, "application/json", file_zones_json_start, file_zones_json_end - file_zones_json_start); AsyncWebServerResponse* response = request->beginResponse_P(200, "application/json", file_zones_json_start, file_zones_json_end - file_zones_json_start);
response->addHeader("Content-Encoding", "gzip"); response->addHeader("Content-Encoding", "gzip");

View File

@ -3,6 +3,8 @@
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/favicon.ico" />
<link rel="shortcut icon" type="image/png" href="/favicon.png">
<link rel="apple-touch-icon" href="/favicon.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OpenDTU</title> <title>OpenDTU</title>
</head> </head>

View File

@ -24,23 +24,23 @@
"devDependencies": { "devDependencies": {
"@intlify/unplugin-vue-i18n": "^0.11.0", "@intlify/unplugin-vue-i18n": "^0.11.0",
"@rushstack/eslint-patch": "^1.3.2", "@rushstack/eslint-patch": "^1.3.2",
"@tsconfig/node18": "^2.0.1", "@tsconfig/node18": "^18.2.0",
"@types/bootstrap": "^5.2.6", "@types/bootstrap": "^5.2.6",
"@types/node": "^20.3.1", "@types/node": "^20.3.2",
"@types/sortablejs": "^1.15.1", "@types/sortablejs": "^1.15.1",
"@types/spark-md5": "^3.0.2", "@types/spark-md5": "^3.0.2",
"@vitejs/plugin-vue": "^4.2.3", "@vitejs/plugin-vue": "^4.2.3",
"@vue/eslint-config-typescript": "^11.0.3", "@vue/eslint-config-typescript": "^11.0.3",
"@vue/tsconfig": "^0.4.0", "@vue/tsconfig": "^0.4.0",
"eslint": "^8.43.0", "eslint": "^8.43.0",
"eslint-plugin-vue": "^9.15.0", "eslint-plugin-vue": "^9.15.1",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"sass": "^1.63.5", "sass": "^1.63.6",
"terser": "^5.18.1", "terser": "^5.18.2",
"typescript": "^5.1.3", "typescript": "^5.1.5",
"vite": "^4.3.9", "vite": "^4.3.9",
"vite-plugin-compression": "^0.5.1", "vite-plugin-compression": "^0.5.1",
"vite-plugin-css-injected-by-js": "^3.1.1", "vite-plugin-css-injected-by-js": "^3.1.2",
"vue-tsc": "^1.8.1" "vue-tsc": "^1.8.3"
} }
} }

BIN
webapp/public/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

View File

@ -32,8 +32,8 @@
"Reload": "Reload" "Reload": "Reload"
}, },
"localeswitcher": { "localeswitcher": {
"Dark": "Dark", "Dark": "Sombre",
"Light": "Light", "Light": "Clair",
"Auto": "Auto" "Auto": "Auto"
}, },
"apiresponse": { "apiresponse": {
@ -230,13 +230,13 @@
}, },
"radioinfo": { "radioinfo": {
"RadioInformation": "Informations sur la radio", "RadioInformation": "Informations sur la radio",
"Status": "{module} Status", "Status": "{module} Statut",
"ChipStatus": "{module} sÉtat de la puce", "ChipStatus": "{module} État de la puce",
"ChipType": "{module} Type de puce", "ChipType": "{module} Type de puce",
"Connected": "connectée", "Connected": "connectée",
"NotConnected": "non connectée", "NotConnected": "non connectée",
"Configured": "configured", "Configured": "configurée",
"NotConfigured": "not configured", "NotConfigured": "non configurée",
"Unknown": "Inconnue" "Unknown": "Inconnue"
}, },
"networkinfo": { "networkinfo": {
@ -285,12 +285,12 @@
"Synced": "synchronisée", "Synced": "synchronisée",
"NotSynced": "pas synchronisée", "NotSynced": "pas synchronisée",
"LocalTime": "Heure locale", "LocalTime": "Heure locale",
"Sunrise": "Sunrise", "Sunrise": "Lever du soleil",
"Sunset": "Sunset", "Sunset": "Coucher du soleil",
"NotAvailable": "Not Available", "NotAvailable": "Not Available",
"Mode": "Mode", "Mode": "Mode",
"Day": "Day", "Day": "Jour",
"Night": "Night" "Night": "Nuit"
}, },
"mqttinfo": { "mqttinfo": {
"MqttInformation": "MQTT Information", "MqttInformation": "MQTT Information",
@ -514,7 +514,7 @@
"InverterSerial": "Numéro de série de l'onduleur", "InverterSerial": "Numéro de série de l'onduleur",
"InverterName": "Nom de l'onduleur :", "InverterName": "Nom de l'onduleur :",
"InverterNameHint": "Ici, vous pouvez spécifier un nom personnalisé pour votre onduleur.", "InverterNameHint": "Ici, vous pouvez spécifier un nom personnalisé pour votre onduleur.",
"InverterStatus": "Receive / Send", "InverterStatus": "Recevoir / Envoyer",
"PollEnable": "Interroger les données de l'onduleur", "PollEnable": "Interroger les données de l'onduleur",
"PollEnableNight": "Interroger les données de l'onduleur la nuit", "PollEnableNight": "Interroger les données de l'onduleur la nuit",
"CommandEnable": "Envoyer des commandes", "CommandEnable": "Envoyer des commandes",
@ -644,10 +644,10 @@
"ScreensaverHint": "Déplacez un peu l'écran à chaque mise à jour pour éviter le phénomène de brûlure. (Utile surtout pour les écrans OLED)", "ScreensaverHint": "Déplacez un peu l'écran à chaque mise à jour pour éviter le phénomène de brûlure. (Utile surtout pour les écrans OLED)",
"Contrast": "Contraste ({contrast}):", "Contrast": "Contraste ({contrast}):",
"Rotation": "Rotation:", "Rotation": "Rotation:",
"rot0": "No rotation", "rot0": "Pas de rotation",
"rot90": "90 degree rotation", "rot90": "Rotation de 90 degrés",
"rot180": "180 degree rotation", "rot180": "Rotation de 180 degrés",
"rot270": "270 degree rotation", "rot270": "Rotation de 270 degrés",
"DisplayLanguage": "Langue d'affichage", "DisplayLanguage": "Langue d'affichage",
"en": "Anglais", "en": "Anglais",
"de": "Allemand", "de": "Allemand",

View File

@ -350,10 +350,10 @@
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz#31b9c510d8cada9683549e1dbb4284cca5001faf" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz#31b9c510d8cada9683549e1dbb4284cca5001faf"
integrity sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw== integrity sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==
"@tsconfig/node18@^2.0.1": "@tsconfig/node18@^18.2.0":
version "2.0.1" version "18.2.0"
resolved "https://registry.yarnpkg.com/@tsconfig/node18/-/node18-2.0.1.tgz#2d2e11333ef2b75a4623203daca264e6697d693b" resolved "https://registry.yarnpkg.com/@tsconfig/node18/-/node18-18.2.0.tgz#d6b5358b3fa85fe89b13b46cb1e996e4d79d6a07"
integrity sha512-UqdfvuJK0SArA2CxhKWwwAWfnVSXiYe63bVpMutc27vpngCntGUZQETO24pEJ46zU6XM+7SpqYoMgcO3bM11Ew== integrity sha512-yhxwIlFVSVcMym3O31HoMnRXpoenmpIxcj4Yoes2DUpe+xCJnA7ECQP1Vw889V0jTt/2nzvpLQ/UuMYCd3JPIg==
"@types/bootstrap@^5.2.6": "@types/bootstrap@^5.2.6":
version "5.2.6" version "5.2.6"
@ -372,10 +372,10 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
"@types/node@^20.3.1": "@types/node@^20.3.2":
version "20.3.1" version "20.3.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.2.tgz#fa6a90f2600e052a03c18b8cb3fd83dd4e599898"
integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg== integrity sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==
"@types/semver@^7.3.12": "@types/semver@^7.3.12":
version "7.3.13" version "7.3.13"
@ -481,26 +481,26 @@
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz#ee0b6dfcc62fe65364e6395bf38fa2ba10bb44b6" resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz#ee0b6dfcc62fe65364e6395bf38fa2ba10bb44b6"
integrity sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw== integrity sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==
"@volar/language-core@1.7.8": "@volar/language-core@1.7.10":
version "1.7.8" version "1.7.10"
resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.7.8.tgz#88e33fda749ecb1ecb28c031027d45e778b8cd5f" resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.7.10.tgz#605edda2844c51bd31fff75d9311023d2c574ec0"
integrity sha512-TPklg4c2e/f1xB/MGZEiQc3AWG+dH64ZfBlYjFB8nNaWJt4Z4k+IHBhmaP52APG+5PHFerwiWI9oF002RrRTPA== integrity sha512-18Gmth5M0UI3hDDqhZngjMnb6WCslcfglkOdepRIhGxRYe7xR7DRRzciisYDMZsvOQxDYme+uaohg0dKUxLV2Q==
dependencies: dependencies:
"@volar/source-map" "1.7.8" "@volar/source-map" "1.7.10"
"@volar/source-map@1.7.8": "@volar/source-map@1.7.10":
version "1.7.8" version "1.7.10"
resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.7.8.tgz#46710f1d1e948e8009993595b70670e3ee4bfc1d" resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.7.10.tgz#756be885bfeb6249c4fa2526c40c0eee4086aeed"
integrity sha512-g2dtC2kOghvfzMDWeODIo4HO1Ml4hxzPTZyAFDz+YhRF9HjZYJSCaWaVuPZ+z0kY+T2daOHYA10GdrWQ5q0teA== integrity sha512-FBpLEOKJpRxeh2nYbw1mTI5sZOPXYU8LlsCz6xuBY3yNtAizDTTIZtBHe1V8BaMpoSMgRysZe4gVxMEi3rDGVA==
dependencies: dependencies:
muggle-string "^0.3.1" muggle-string "^0.3.1"
"@volar/typescript@1.7.8": "@volar/typescript@1.7.10":
version "1.7.8" version "1.7.10"
resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.7.8.tgz#6997b3c7637292a6dc6e4a3737e45f3c4e49ef12" resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.7.10.tgz#d1b11e8cbc5ed0da69f9b8cd3d04cbbc4f06227e"
integrity sha512-NDcI5ZQcdr8kgxzMQrhSSWIM8Tl0MbMFrkvJPTjfm2rdAQZPFT8zv3LrEW9Fqh0e9z2YbCry7jr4a/GShBqeDA== integrity sha512-yqIov4wndLU3GE1iE25bU5W6T+P+exPePcE1dFPPBKzQIBki1KvmdQN5jBlJp3Wo+wp7UIxa/RsdNkXT+iFBjg==
dependencies: dependencies:
"@volar/language-core" "1.7.8" "@volar/language-core" "1.7.10"
"@vue/compiler-core@3.2.47": "@vue/compiler-core@3.2.47":
version "3.2.47" version "3.2.47"
@ -623,13 +623,13 @@
"@typescript-eslint/parser" "^5.59.1" "@typescript-eslint/parser" "^5.59.1"
vue-eslint-parser "^9.1.1" vue-eslint-parser "^9.1.1"
"@vue/language-core@1.8.1": "@vue/language-core@1.8.3":
version "1.8.1" version "1.8.3"
resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.1.tgz#86b709f803bcc0cab84fd14677c0fb909154c562" resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.3.tgz#5d0d24b0290343c592c1e30712553804856b366a"
integrity sha512-pumv3k4J7P58hVh4YGRM9Qz3HaAr4TlFWM9bnVOkZ/2K9o2CK1lAP2y9Jw+Z0+mNL4F2uWQqnAPzj3seLyfpDA== integrity sha512-AzhvMYoQkK/tg8CpAAttO19kx1zjS3+weYIr2AhlH/M5HebVzfftQoq4jZNFifjq+hyLKi8j9FiDMS8oqA89+A==
dependencies: dependencies:
"@volar/language-core" "1.7.8" "@volar/language-core" "1.7.10"
"@volar/source-map" "1.7.8" "@volar/source-map" "1.7.10"
"@vue/compiler-dom" "^3.3.0" "@vue/compiler-dom" "^3.3.0"
"@vue/reactivity" "^3.3.0" "@vue/reactivity" "^3.3.0"
"@vue/shared" "^3.3.0" "@vue/shared" "^3.3.0"
@ -718,13 +718,13 @@
resolved "https://registry.yarnpkg.com/@vue/tsconfig/-/tsconfig-0.4.0.tgz#f01e2f6089b5098136fb084a0dd0cdd4533b72b0" resolved "https://registry.yarnpkg.com/@vue/tsconfig/-/tsconfig-0.4.0.tgz#f01e2f6089b5098136fb084a0dd0cdd4533b72b0"
integrity sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg== integrity sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==
"@vue/typescript@1.8.1": "@vue/typescript@1.8.3":
version "1.8.1" version "1.8.3"
resolved "https://registry.yarnpkg.com/@vue/typescript/-/typescript-1.8.1.tgz#2302f3cc8330e8dd91982eecd64d71ee11198cb0" resolved "https://registry.yarnpkg.com/@vue/typescript/-/typescript-1.8.3.tgz#fde59493ca9a16c61880ba6d570ae6b092697a40"
integrity sha512-nQpo55j/roie8heCfqyXHnyayqD5+p4/0fzfxH4ZuHf7NSBQS791PNv7ztp2CCOjnGAiaiCMdtC9rc6oriyPUg== integrity sha512-6bdgSnIFpRYHlt70pHmnmNksPU00bfXgqAISeaNz3W6d2cH0OTfH8h/IhligQ82sJIhsuyfftQJ5518ZuKIhtA==
dependencies: dependencies:
"@volar/typescript" "1.7.8" "@volar/typescript" "1.7.10"
"@vue/language-core" "1.8.1" "@vue/language-core" "1.8.3"
acorn-jsx@^5.2.0, acorn-jsx@^5.3.2: acorn-jsx@^5.2.0, acorn-jsx@^5.3.2:
version "5.3.2" version "5.3.2"
@ -1089,10 +1089,10 @@ escodegen@^2.0.0:
optionalDependencies: optionalDependencies:
source-map "~0.6.1" source-map "~0.6.1"
eslint-plugin-vue@^9.15.0: eslint-plugin-vue@^9.15.1:
version "9.15.0" version "9.15.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.15.0.tgz#2bffe2b8a628ee438f983672a73cd89df455c461" resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.15.1.tgz#3c09e0edab444b5d4d9239a12a645a0e2e2ea5be"
integrity sha512-XYzpK6e2REli100+6iCeBA69v6Sm0D/yK2FZP+fCeNt0yH/m82qZQq+ztseyV0JsKdhFysuSEzeE1yCmSC92BA== integrity sha512-CJE/oZOslvmAR9hf8SClTdQ9JLweghT6JCBQNrT2Iel1uVw0W0OLJxzvPd6CxmABKCvLrtyDnqGV37O7KQv6+A==
dependencies: dependencies:
"@eslint-community/eslint-utils" "^4.3.0" "@eslint-community/eslint-utils" "^4.3.0"
natural-compare "^1.4.0" natural-compare "^1.4.0"
@ -2184,10 +2184,10 @@ safe-regex-test@^1.0.0:
get-intrinsic "^1.1.3" get-intrinsic "^1.1.3"
is-regex "^1.1.4" is-regex "^1.1.4"
sass@^1.63.5: sass@^1.63.6:
version "1.63.5" version "1.63.6"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.63.5.tgz#6e1900b12576e3e74a8ab0a9d8607cacbe584ef1" resolved "https://registry.yarnpkg.com/sass/-/sass-1.63.6.tgz#481610e612902e0c31c46b46cf2dad66943283ea"
integrity sha512-Q6c5gs482oezdAp+0fWF9cRisvpy7yfYb64knID0OE8AnMgtkluRPfpGMFjeD4/+M4+6QpJZCU6JRSxbjiktkg== integrity sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==
dependencies: dependencies:
chokidar ">=3.0.0 <4.0.0" chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0" immutable "^4.0.0"
@ -2382,10 +2382,10 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
terser@^5.18.1: terser@^5.18.2:
version "5.18.1" version "5.18.2"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.18.1.tgz#6d8642508ae9fb7b48768e48f16d675c89a78460" resolved "https://registry.yarnpkg.com/terser/-/terser-5.18.2.tgz#ff3072a0faf21ffd38f99acc9a0ddf7b5f07b948"
integrity sha512-j1n0Ao919h/Ai5r43VAnfV/7azUYW43GPxK7qSATzrsERfW7+y2QW9Cp9ufnRF5CQUWbnLSo7UJokSWCqg4tsQ== integrity sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==
dependencies: dependencies:
"@jridgewell/source-map" "^0.3.3" "@jridgewell/source-map" "^0.3.3"
acorn "^8.8.2" acorn "^8.8.2"
@ -2435,10 +2435,10 @@ type-fest@^0.20.2:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
typescript@^5.1.3: typescript@^5.1.5:
version "5.1.3" version "5.1.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.3.tgz#8d84219244a6b40b6fb2b33cc1c062f715b9e826" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.5.tgz#a3ae755082488b6046fe64345d293ef26af08671"
integrity sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw== integrity sha512-FOH+WN/DQjUvN6WgW+c4Ml3yi0PH+a/8q+kNIfRehv1wLhWONedw85iu+vQ39Wp49IzTJEsZ2lyLXpBF7mkF1g==
ufo@^1.1.2: ufo@^1.1.2:
version "1.1.2" version "1.1.2"
@ -2499,10 +2499,10 @@ vite-plugin-compression@^0.5.1:
debug "^4.3.3" debug "^4.3.3"
fs-extra "^10.0.0" fs-extra "^10.0.0"
vite-plugin-css-injected-by-js@^3.1.1: vite-plugin-css-injected-by-js@^3.1.2:
version "3.1.1" version "3.1.2"
resolved "https://registry.yarnpkg.com/vite-plugin-css-injected-by-js/-/vite-plugin-css-injected-by-js-3.1.1.tgz#8324412636cf6fdada1a86f595aa2e78458e5ddb" resolved "https://registry.yarnpkg.com/vite-plugin-css-injected-by-js/-/vite-plugin-css-injected-by-js-3.1.2.tgz#0f5b69ee98e09f5271b277289c1968f1ebbb1cae"
integrity sha512-mwrFvEEy0TuH8Ul0cb2HgjmNboQ/JnEFy+kHCWqAJph3ikMOiIuyYVdx0JO4nEIWJyzSnc4TTdmoTulsikvJEg== integrity sha512-hv/DKA1Yn7Dcqh51nSDiqXJORzXxky4I1CjzsSbJtap0lgCk8qVzkoyEIgWMu+XXjEzv1tyIsLHYwobHTLLh/w==
vite@^4.3.9: vite@^4.3.9:
version "4.3.9" version "4.3.9"
@ -2566,13 +2566,13 @@ vue-template-compiler@^2.7.14:
de-indent "^1.0.2" de-indent "^1.0.2"
he "^1.2.0" he "^1.2.0"
vue-tsc@^1.8.1: vue-tsc@^1.8.3:
version "1.8.1" version "1.8.3"
resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.8.1.tgz#cdbc83ad7d1c80eac82e01917a58bc57e2debed2" resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.8.3.tgz#246c0798717ec094e51809e027df48f4d85162e1"
integrity sha512-GxBQrcb0Qvyrj1uZqnTXQyWbXdNDRY2MTa+r7ESgjhf+WzBSdxZfkS3KD/C3WhKYG+aN8hf44Hp5Gqzb6PehAA== integrity sha512-Ua4DHuYxjudlhCW2nRZtaXbhIDVncRGIbDjZhHpF8Z8vklct/G/35/kAPuGNSOmq0JcvhPAe28Oa7LWaUerZVA==
dependencies: dependencies:
"@vue/language-core" "1.8.1" "@vue/language-core" "1.8.3"
"@vue/typescript" "1.8.1" "@vue/typescript" "1.8.3"
semver "^7.3.8" semver "^7.3.8"
vue@^3.3.4: vue@^3.3.4:

BIN
webapp_dist/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

Binary file not shown.