diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 84657d8d4..32bbad64e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -119,7 +119,7 @@ jobs: - name: Build Changelog id: github_release - uses: mikepenz/release-changelog-builder-action@v3 + uses: mikepenz/release-changelog-builder-action@v4 with: failOnError: true commitMode: true @@ -138,7 +138,7 @@ jobs: for i in */; do cp ${i}opendtu-*.bin ./; done - name: Create release - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 with: body: ${{steps.github_release.outputs.changelog}} draft: False diff --git a/include/__compiled_constants.h b/include/__compiled_constants.h new file mode 100644 index 000000000..ac8991e9f --- /dev/null +++ b/include/__compiled_constants.h @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +// The referenced values are generated by pio-scripts/auto_firmware_version.py + + +extern const char *__COMPILED_GIT_HASH__; +// extern const char *__COMPILED_DATE_TIME_UTC_STR__; diff --git a/pio-scripts/auto_firmware_version.py b/pio-scripts/auto_firmware_version.py index 3eebf5b8e..f169f6174 100644 --- a/pio-scripts/auto_firmware_version.py +++ b/pio-scripts/auto_firmware_version.py @@ -2,6 +2,7 @@ # # Copyright (C) 2022 Thomas Basler and others # +import os import pkg_resources Import("env") @@ -15,27 +16,64 @@ from dulwich import porcelain -def get_firmware_specifier_build_flag(): + +def updateFileIfChanged(filename, content): + mustUpdate = True try: - build_version = porcelain.describe('.') # '.' refers to the repository root dir + fp = open(filename, "rb") + if fp.read() == content: + mustUpdate = False + fp.close() except: - build_version = "g0000000" + pass + if mustUpdate: + fp = open(filename, "wb") + fp.write(content) + fp.close() + return mustUpdate - print ("###########################################") - print ("Firmware Revision retuned from git: " + build_version) - # filter out release tag from build info git describe --tags - gitindex = build_version.find("-g") - if gitindex >= 0: - print ("contains build info at index %i" % gitindex) - build_version = build_version[gitindex+1:] - print ("filtered git hash: " + build_version) +def get_build_version(): + try: + build_version = porcelain.describe('.') # '.' refers to the repository root dir + except: + build_version = "g0000000" + print ("Firmware Revision: " + build_version) + return build_version - print ("###########################################") +def get_firmware_specifier_build_flag(): + build_version = get_build_version() build_flag = "-D AUTO_GIT_HASH=\\\"" + build_version + "\\\"" return (build_flag) -env.Append( - BUILD_FLAGS=[get_firmware_specifier_build_flag()] -) + +def do_main(): + if 0: + # this results in a full recompilation of the whole project after each commit + env.Append( + BUILD_FLAGS=[get_firmware_specifier_build_flag()] + ) + else: + # we just create a .c file containing the needed datas + targetfile = os.path.join(env.subst("$BUILD_DIR"), "__compiled_constants.c") + lines = "" + lines += "/* Generated file within build process - Do NOT edit */\n" + + if 0: + # Add the current date and time as string in UTC timezone + from datetime import datetime, timezone + now = datetime.now(tz=timezone.utc) + COMPILED_DATE_TIME_UTC_STR = now.strftime("%Y/%m/%d %H:%M:%S") + lines += 'const char *__COMPILED_DATE_TIME_UTC_STR__ = "%s";\n' % (COMPILED_DATE_TIME_UTC_STR) + + if 1: + # Add the description of the current git revision + lines += 'const char *__COMPILED_GIT_HASH__ = "%s";\n' % (get_build_version()) + + updateFileIfChanged(targetfile, bytes(lines, "utf-8")) + + # Add the created file to the buildfiles - platformio knows how to handle *.c files + env.AppendUnique(PIOBUILDFILES=[targetfile]) + +do_main() diff --git a/platformio.ini b/platformio.ini index 7ced3ed11..afd6a67f8 100644 --- a/platformio.ini +++ b/platformio.ini @@ -26,6 +26,7 @@ build_flags = -D_TASK_STD_FUNCTION=1 -D_TASK_THREAD_SAFE=1 -DCONFIG_ASYNC_TCP_EVENT_QUEUE_SIZE=128 + -DCONFIG_ASYNC_TCP_QUEUE_SIZE=128 -Wall -Wextra -Wunused -Wmisleading-indentation -Wduplicated-cond -Wlogical-op -Wnull-dereference ; Have to remove -Werror because of ; https://github.com/espressif/arduino-esp32/issues/9044 and @@ -37,12 +38,12 @@ build_unflags = -std=gnu++11 lib_deps = - mathieucarbou/ESP Async WebServer @ 2.9.3 - bblanchon/ArduinoJson @ ^7.0.4 + mathieucarbou/ESP Async WebServer @ 2.9.5 + bblanchon/ArduinoJson @ 7.0.4 https://github.com/bertmelis/espMqttClient.git#v1.6.0 - nrf24/RF24 @ ^1.4.8 - olikraus/U8g2 @ ^2.35.17 - buelowp/sunset @ ^1.1.7 + nrf24/RF24 @ 1.4.8 + olikraus/U8g2 @ 2.35.19 + buelowp/sunset @ 1.1.7 https://github.com/arkhipenko/TaskScheduler#testing extra_scripts = diff --git a/src/MqttHandleHass.cpp b/src/MqttHandleHass.cpp index a2d998d10..b286eaa23 100644 --- a/src/MqttHandleHass.cpp +++ b/src/MqttHandleHass.cpp @@ -8,6 +8,7 @@ #include "NetworkSettings.h" #include "Utils.h" #include "defaults.h" +#include "__compiled_constants.h" MqttHandleHassClass MqttHandleHass; @@ -380,7 +381,7 @@ void MqttHandleHassClass::createInverterInfo(JsonDocument& root, std::shared_ptr getDtuUrl(), "OpenDTU", inv->typeName(), - AUTO_GIT_HASH, + __COMPILED_GIT_HASH__, getDtuUniqueId()); } @@ -393,7 +394,7 @@ void MqttHandleHassClass::createDtuInfo(JsonDocument& root) getDtuUrl(), "OpenDTU", "OpenDTU", - AUTO_GIT_HASH); + __COMPILED_GIT_HASH__); } void MqttHandleHassClass::createDeviceInfo( diff --git a/src/NetworkSettings.cpp b/src/NetworkSettings.cpp index 59ce8f75b..dac3ecb0a 100644 --- a/src/NetworkSettings.cpp +++ b/src/NetworkSettings.cpp @@ -10,6 +10,7 @@ #include "defaults.h" #include #include +#include "__compiled_constants.h" NetworkSettingsClass::NetworkSettingsClass() : _loopTask(TASK_IMMEDIATE, TASK_FOREVER, std::bind(&NetworkSettingsClass::loop, this)) @@ -136,7 +137,7 @@ void NetworkSettingsClass::handleMDNS() MDNS.addService("http", "tcp", 80); MDNS.addService("opendtu", "tcp", 80); - MDNS.addServiceTxt("opendtu", "tcp", "git_hash", AUTO_GIT_HASH); + MDNS.addServiceTxt("opendtu", "tcp", "git_hash", __COMPILED_GIT_HASH__); MessageOutput.println("done"); } else { diff --git a/src/WebApi_prometheus.cpp b/src/WebApi_prometheus.cpp index 9b3039c44..ad95aacbf 100644 --- a/src/WebApi_prometheus.cpp +++ b/src/WebApi_prometheus.cpp @@ -9,6 +9,7 @@ #include "NetworkSettings.h" #include "WebApi.h" #include +#include "__compiled_constants.h" void WebApiPrometheusClass::init(AsyncWebServer& server, Scheduler& scheduler) { @@ -29,7 +30,7 @@ void WebApiPrometheusClass::onPrometheusMetricsGet(AsyncWebServerRequest* reques stream->print("# HELP opendtu_build Build info\n"); stream->print("# TYPE opendtu_build gauge\n"); stream->printf("opendtu_build{name=\"%s\",id=\"%s\",version=\"%d.%d.%d\"} 1\n", - NetworkSettings.getHostname().c_str(), AUTO_GIT_HASH, CONFIG_VERSION >> 24 & 0xff, CONFIG_VERSION >> 16 & 0xff, CONFIG_VERSION >> 8 & 0xff); + NetworkSettings.getHostname().c_str(), __COMPILED_GIT_HASH__, CONFIG_VERSION >> 24 & 0xff, CONFIG_VERSION >> 16 & 0xff, CONFIG_VERSION >> 8 & 0xff); stream->print("# HELP opendtu_platform Platform info\n"); stream->print("# TYPE opendtu_platform gauge\n"); @@ -142,7 +143,7 @@ void WebApiPrometheusClass::addPanelInfo(AsyncResponseStream* stream, const Stri return; } - const CONFIG_T& config = Configuration.get(); + const auto& config = Configuration.getInverterConfig(inv->serial()); const bool printHelp = (idx == 0 && channel == 0); if (printHelp) { @@ -154,7 +155,7 @@ void WebApiPrometheusClass::addPanelInfo(AsyncResponseStream* stream, const Stri idx, inv->name(), channel, - config.Inverter[idx].channel[channel].Name); + config->channel[channel].Name); if (printHelp) { stream->print("# HELP opendtu_MaxPower panel maximum output power\n"); @@ -165,7 +166,7 @@ void WebApiPrometheusClass::addPanelInfo(AsyncResponseStream* stream, const Stri idx, inv->name(), channel, - config.Inverter[idx].channel[channel].MaxChannelPower); + config->channel[channel].MaxChannelPower); if (printHelp) { stream->print("# HELP opendtu_YieldTotalOffset panel yield offset (for used inverters)\n"); @@ -176,5 +177,5 @@ void WebApiPrometheusClass::addPanelInfo(AsyncResponseStream* stream, const Stri idx, inv->name(), channel, - config.Inverter[idx].channel[channel].YieldTotalOffset); + config->channel[channel].YieldTotalOffset); } diff --git a/src/WebApi_sysstatus.cpp b/src/WebApi_sysstatus.cpp index a2893c820..9b317f943 100644 --- a/src/WebApi_sysstatus.cpp +++ b/src/WebApi_sysstatus.cpp @@ -11,10 +11,7 @@ #include #include #include - -#ifndef AUTO_GIT_HASH -#define AUTO_GIT_HASH "" -#endif +#include "__compiled_constants.h" void WebApiSysstatusClass::init(AsyncWebServer& server, Scheduler& scheduler) { @@ -64,7 +61,7 @@ void WebApiSysstatusClass::onSystemStatus(AsyncWebServerRequest* request) char version[16]; snprintf(version, sizeof(version), "%d.%d.%d", CONFIG_VERSION >> 24 & 0xff, CONFIG_VERSION >> 16 & 0xff, CONFIG_VERSION >> 8 & 0xff); root["config_version"] = version; - root["git_hash"] = AUTO_GIT_HASH; + root["git_hash"] = __COMPILED_GIT_HASH__; root["pioenv"] = PIOENV; root["uptime"] = esp_timer_get_time() / 1000000; diff --git a/webapp/package.json b/webapp/package.json index fbba65f1e..e758594da 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -18,7 +18,7 @@ "mitt": "^3.0.1", "sortablejs": "^1.15.2", "spark-md5": "^3.0.2", - "vue": "^3.4.25", + "vue": "^3.4.26", "vue-i18n": "^9.13.1", "vue-router": "^4.3.2" }, @@ -26,23 +26,23 @@ "@intlify/unplugin-vue-i18n": "^4.0.0", "@tsconfig/node18": "^18.2.4", "@types/bootstrap": "^5.2.10", - "@types/node": "^20.12.7", + "@types/node": "^20.12.10", "@types/pulltorefreshjs": "^0.1.7", "@types/sortablejs": "^1.15.8", "@types/spark-md5": "^3.0.4", "@vitejs/plugin-vue": "^5.0.4", "@vue/eslint-config-typescript": "^13.0.0", "@vue/tsconfig": "^0.5.1", - "eslint": "^9.1.1", + "eslint": "^9.2.0", "eslint-plugin-vue": "^9.25.0", "npm-run-all": "^4.1.5", "pulltorefreshjs": "^0.1.22", - "sass": "^1.75.0", - "terser": "^5.30.4", + "sass": "^1.76.0", + "terser": "^5.31.0", "typescript": "^5.4.5", - "vite": "^5.2.10", + "vite": "^5.2.11", "vite-plugin-compression": "^0.5.1", - "vite-plugin-css-injected-by-js": "^3.5.0", - "vue-tsc": "^2.0.14" + "vite-plugin-css-injected-by-js": "^3.5.1", + "vue-tsc": "^2.0.16" } } diff --git a/webapp/yarn.lock b/webapp/yarn.lock index b1a1203ca..57f29ff91 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -176,10 +176,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.1.1": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.1.1.tgz#eb0f82461d12779bbafc1b5045cde3143d350a8a" - integrity sha512-5WoDz3Y19Bg2BnErkZTp0en+c/i9PvgFS7MBe1+m60HjFr0hrphlAGp4yzI7pxpt4xShln4ZyYp4neJm8hmOkQ== +"@eslint/js@9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.2.0.tgz#b0a9123e8e91a3d9a2eed3a04a6ed44fdab639aa" + integrity sha512-ESiIudvhoYni+MdsI8oD7skpprZ89qKocwRM2KEvhhBJ9nl5MRh7BXU5GTod7Mdygq+AUl+QzId6iWJKR/wABA== "@humanwhocodes/config-array@^0.13.0": version "0.13.0" @@ -449,10 +449,10 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== -"@types/node@^20.12.7": - version "20.12.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384" - integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg== +"@types/node@^20.12.10": + version "20.12.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.10.tgz#8f0c3f12b0f075eee1fe20c1afb417e9765bef76" + integrity sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw== dependencies: undici-types "~5.26.4" @@ -567,26 +567,26 @@ resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz#508d6a0f2440f86945835d903fcc0d95d1bb8a37" integrity sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ== -"@volar/language-core@2.2.0-alpha.10": - version "2.2.0-alpha.10" - resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-2.2.0-alpha.10.tgz#e77db9b2ef4826cc55cf929289933d018c48e56c" - integrity sha512-njVJLtpu0zMvDaEk7K5q4BRpOgbyEUljU++un9TfJoJNhxG0z/hWwpwgTRImO42EKvwIxF3XUzeMk+qatAFy7Q== +"@volar/language-core@2.2.1", "@volar/language-core@~2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-2.2.1.tgz#bb4a28f93cd8598a2e2ca1c811ae113a848b5529" + integrity sha512-iHJAZKcYldZgyS8gx6DfIZApViVBeqbf6iPhqoZpG5A6F4zsZiFldKfwaKaBA3/wnOTWE2i8VUbXywI1WywCPg== dependencies: - "@volar/source-map" "2.2.0-alpha.10" + "@volar/source-map" "2.2.1" -"@volar/source-map@2.2.0-alpha.10": - version "2.2.0-alpha.10" - resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-2.2.0-alpha.10.tgz#d055232eb2a24fb4678db578b55ec095c9925dc3" - integrity sha512-nrdWApVkP5cksAnDEyy1JD9rKdwOJsEq1B+seWO4vNXmZNcxQQCx4DULLBvKt7AzRUAQiAuw5aQkb9RBaSqdVA== +"@volar/source-map@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-2.2.1.tgz#d75b0c38659d3ea7e780d4251ac2b9436845ab97" + integrity sha512-w1Bgpguhbp7YTr7VUFu6gb4iAZjeEPsOX4zpgiuvlldbzvIWDWy4t0jVifsIsxZ99HAu+c3swiME7wt+GeNqhA== dependencies: muggle-string "^0.4.0" -"@volar/typescript@2.2.0-alpha.10": - version "2.2.0-alpha.10" - resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-2.2.0-alpha.10.tgz#14c002a3549ff3adcf9306933f4bf81e80422eff" - integrity sha512-GCa0vTVVdA9ULUsu2Rx7jwsIuyZQPvPVT9o3NrANTbYv+523Ao1gv3glC5vzNSDPM6bUl37r94HbCj7KINQr+g== +"@volar/typescript@~2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-2.2.1.tgz#21585b46cd61c9d63715642ee10418b144b12321" + integrity sha512-Z/tqluR7Hz5/5dCqQp7wo9C/6tSv/IYl+tTzgzUt2NjTq95bKSsuO4E+V06D0c+3aP9x5S9jggLqw451hpnc6Q== dependencies: - "@volar/language-core" "2.2.0-alpha.10" + "@volar/language-core" "2.2.1" path-browserify "^1.0.1" "@vue/compiler-core@3.2.47": @@ -610,13 +610,13 @@ estree-walker "^2.0.2" source-map-js "^1.0.2" -"@vue/compiler-core@3.4.25": - version "3.4.25" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.25.tgz#691f59ee5014f6f2a2488fd4465f892e1e82f729" - integrity sha512-Y2pLLopaElgWnMNolgG8w3C5nNUVev80L7hdQ5iIKPtMJvhVpG0zhnBG/g3UajJmZdvW0fktyZTotEHD1Srhbg== +"@vue/compiler-core@3.4.26": + version "3.4.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.26.tgz#d507886520e83a6f8339ed55ed0b2b5d84b44b73" + integrity sha512-N9Vil6Hvw7NaiyFUFBPXrAyETIGlQ8KcFMkyk6hW1Cl6NvoqvP+Y8p1Eqvx+UdqsnrnI9+HMUEJegzia3mhXmQ== dependencies: "@babel/parser" "^7.24.4" - "@vue/shared" "3.4.25" + "@vue/shared" "3.4.26" entities "^4.5.0" estree-walker "^2.0.2" source-map-js "^1.2.0" @@ -629,13 +629,13 @@ "@vue/compiler-core" "3.2.47" "@vue/shared" "3.2.47" -"@vue/compiler-dom@3.4.25": - version "3.4.25" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.25.tgz#b367e0c84e11d9e9f70beabdd6f6b2277fde375f" - integrity sha512-Ugz5DusW57+HjllAugLci19NsDK+VyjGvmbB2TXaTcSlQxwL++2PETHx/+Qv6qFwNLzSt7HKepPe4DcTE3pBWg== +"@vue/compiler-dom@3.4.26": + version "3.4.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.26.tgz#acc7b788b48152d087d4bb9e655b795e3dbec554" + integrity sha512-4CWbR5vR9fMg23YqFOhr6t6WB1Fjt62d6xdFPyj8pxrYub7d+OgZaObMsoxaF9yBUHPMiPFK303v61PwAuGvZA== dependencies: - "@vue/compiler-core" "3.4.25" - "@vue/shared" "3.4.25" + "@vue/compiler-core" "3.4.26" + "@vue/shared" "3.4.26" "@vue/compiler-dom@^3.4.0": version "3.4.21" @@ -645,16 +645,16 @@ "@vue/compiler-core" "3.4.21" "@vue/shared" "3.4.21" -"@vue/compiler-sfc@3.4.25": - version "3.4.25" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.25.tgz#ceab148f81571c8b251e8a8b75a9972addf1db8b" - integrity sha512-m7rryuqzIoQpOBZ18wKyq05IwL6qEpZxFZfRxlNYuIPDqywrXQxgUwLXIvoU72gs6cRdY6wHD0WVZIFE4OEaAQ== +"@vue/compiler-sfc@3.4.26": + version "3.4.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.26.tgz#c679f206829954c3c078d8a9be76d0098b8377ae" + integrity sha512-It1dp+FAOCgluYSVYlDn5DtZBxk1NCiJJfu2mlQqa/b+k8GL6NG/3/zRbJnHdhV2VhxFghaDq5L4K+1dakW6cw== dependencies: "@babel/parser" "^7.24.4" - "@vue/compiler-core" "3.4.25" - "@vue/compiler-dom" "3.4.25" - "@vue/compiler-ssr" "3.4.25" - "@vue/shared" "3.4.25" + "@vue/compiler-core" "3.4.26" + "@vue/compiler-dom" "3.4.26" + "@vue/compiler-ssr" "3.4.26" + "@vue/shared" "3.4.26" estree-walker "^2.0.2" magic-string "^0.30.10" postcss "^8.4.38" @@ -684,13 +684,13 @@ "@vue/compiler-dom" "3.2.47" "@vue/shared" "3.2.47" -"@vue/compiler-ssr@3.4.25": - version "3.4.25" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.25.tgz#7fdd540bfdf2d4a3d6cb107b7ba4c77228d36331" - integrity sha512-H2ohvM/Pf6LelGxDBnfbbXFPyM4NE3hrw0e/EpwuSiYu8c819wx+SVGdJ65p/sFrYDd6OnSDxN1MB2mN07hRSQ== +"@vue/compiler-ssr@3.4.26": + version "3.4.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.26.tgz#22842d8adfff972d87bb798b8d496111f7f814b5" + integrity sha512-FNwLfk7LlEPRY/g+nw2VqiDKcnDTVdCfBREekF8X74cPLiWHUX6oldktf/Vx28yh4STNy7t+/yuLoMBBF7YDiQ== dependencies: - "@vue/compiler-dom" "3.4.25" - "@vue/shared" "3.4.25" + "@vue/compiler-dom" "3.4.26" + "@vue/shared" "3.4.26" "@vue/devtools-api@^6.5.0": version "6.5.0" @@ -711,12 +711,12 @@ "@typescript-eslint/parser" "^7.1.1" vue-eslint-parser "^9.3.1" -"@vue/language-core@2.0.14": - version "2.0.14" - resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-2.0.14.tgz#99d1dcd7df8a859e12606e80863b3cb4cf045f9e" - integrity sha512-3q8mHSNcGTR7sfp2X6jZdcb4yt8AjBXAfKk0qkZIh7GAJxOnoZ10h5HToZglw4ToFvAnq+xu/Z2FFbglh9Icag== +"@vue/language-core@2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-2.0.16.tgz#c059228e6a0a17b4505421da0e5747a4a04facbe" + integrity sha512-Bc2sexRH99pznOph8mLw2BlRZ9edm7tW51kcBXgx8adAoOcZUWJj3UNSsdQ6H9Y8meGz7BoazVrVo/jUukIsPw== dependencies: - "@volar/language-core" "2.2.0-alpha.10" + "@volar/language-core" "~2.2.0" "@vue/compiler-dom" "^3.4.0" "@vue/shared" "^3.4.0" computeds "^0.0.1" @@ -735,37 +735,37 @@ estree-walker "^2.0.2" magic-string "^0.25.7" -"@vue/reactivity@3.4.25": - version "3.4.25" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.25.tgz#74983b146e06ce3341d15382669350125375d36f" - integrity sha512-mKbEtKr1iTxZkAG3vm3BtKHAOhuI4zzsVcN0epDldU/THsrvfXRKzq+lZnjczZGnTdh3ojd86/WrP+u9M51pWQ== +"@vue/reactivity@3.4.26": + version "3.4.26" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.26.tgz#1191f543809d4c93e5b3e842ba83022350a3f205" + integrity sha512-E/ynEAu/pw0yotJeLdvZEsp5Olmxt+9/WqzvKff0gE67tw73gmbx6tRkiagE/eH0UCubzSlGRebCbidB1CpqZQ== dependencies: - "@vue/shared" "3.4.25" + "@vue/shared" "3.4.26" -"@vue/runtime-core@3.4.25": - version "3.4.25" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.25.tgz#c5545d469ae0827dc471a1376f97c6ace41081ec" - integrity sha512-3qhsTqbEh8BMH3pXf009epCI5E7bKu28fJLi9O6W+ZGt/6xgSfMuGPqa5HRbUxLoehTNp5uWvzCr60KuiRIL0Q== +"@vue/runtime-core@3.4.26": + version "3.4.26" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.26.tgz#51ee971cb700370a67e5a510c4a84eff7491d658" + integrity sha512-AFJDLpZvhT4ujUgZSIL9pdNcO23qVFh7zWCsNdGQBw8ecLNxOOnPcK9wTTIYCmBJnuPHpukOwo62a2PPivihqw== dependencies: - "@vue/reactivity" "3.4.25" - "@vue/shared" "3.4.25" + "@vue/reactivity" "3.4.26" + "@vue/shared" "3.4.26" -"@vue/runtime-dom@3.4.25": - version "3.4.25" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.25.tgz#9bc195e4860edcd0db4303cbba5a160922b963fd" - integrity sha512-ode0sj77kuwXwSc+2Yhk8JMHZh1sZp9F/51wdBiz3KGaWltbKtdihlJFhQG4H6AY+A06zzeMLkq6qu8uDSsaoA== +"@vue/runtime-dom@3.4.26": + version "3.4.26" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.26.tgz#179aa7c8dc964112e6d096bc8ec5f361111009a1" + integrity sha512-UftYA2hUXR2UOZD/Fc3IndZuCOOJgFxJsWOxDkhfVcwLbsfh2CdXE2tG4jWxBZuDAs9J9PzRTUFt1PgydEtItw== dependencies: - "@vue/runtime-core" "3.4.25" - "@vue/shared" "3.4.25" + "@vue/runtime-core" "3.4.26" + "@vue/shared" "3.4.26" csstype "^3.1.3" -"@vue/server-renderer@3.4.25": - version "3.4.25" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.25.tgz#6cfc96ee631104951d5d6c09a8f1e7cef3ef3972" - integrity sha512-8VTwq0Zcu3K4dWV0jOwIVINESE/gha3ifYCOKEhxOj6MEl5K5y8J8clQncTcDhKF+9U765nRw4UdUEXvrGhyVQ== +"@vue/server-renderer@3.4.26": + version "3.4.26" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.26.tgz#6d0c6b0366bfe0232579aea00e3ff6784e5a1c60" + integrity sha512-xoGAqSjYDPGAeRWxeoYwqJFD/gw7mpgzOvSxEmjWaFO2rE6qpbD1PC172YRpvKhrihkyHJkNDADFXTfCyVGhKw== dependencies: - "@vue/compiler-ssr" "3.4.25" - "@vue/shared" "3.4.25" + "@vue/compiler-ssr" "3.4.26" + "@vue/shared" "3.4.26" "@vue/shared@3.2.47": version "3.2.47" @@ -777,10 +777,10 @@ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.21.tgz#de526a9059d0a599f0b429af7037cd0c3ed7d5a1" integrity sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g== -"@vue/shared@3.4.25": - version "3.4.25" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.25.tgz#243ba8543e7401751e0ca319f75a80f153edd273" - integrity sha512-k0yappJ77g2+KNrIaF0FFnzwLvUBLUYr8VOwz+/6vLsmItFp51AcxLL7Ey3iPd7BIRyWPOcqUjMnm7OkahXllA== +"@vue/shared@3.4.26": + version "3.4.26" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.26.tgz#f17854fb1faf889854aed4b23b60e86a8cab6403" + integrity sha512-Fg4zwR0GNnjzodMt3KRy2AWGMKQXByl56+4HjN87soxLNU9P5xcJkstAlIeEF3cU6UYOzmJl1tV0dVPGIljCnQ== "@vue/tsconfig@^0.5.1": version "0.5.1" @@ -1208,15 +1208,15 @@ eslint-visitor-keys@^4.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== -eslint@^9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.1.1.tgz#39ec657ccd12813cb4a1dab2f9229dcc6e468271" - integrity sha512-b4cRQ0BeZcSEzPpY2PjFY70VbO32K7BStTGtBsnIGdTSEEQzBi8hPBcGQmTG2zUvFr9uLe0TK42bw8YszuHEqg== +eslint@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.2.0.tgz#0700ebc99528753315d78090876911d3cdbf19fe" + integrity sha512-0n/I88vZpCOzO+PQpt0lbsqmn9AsnsJAQseIqhZFI8ibQT0U1AkEKRxA3EVMos0BoHSXDQvCXY25TUjB5tr8Og== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^3.0.2" - "@eslint/js" "9.1.1" + "@eslint/js" "9.2.0" "@humanwhocodes/config-array" "^0.13.0" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.2.3" @@ -2201,10 +2201,10 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -sass@^1.75.0: - version "1.75.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.75.0.tgz#91bbe87fb02dfcc34e052ddd6ab80f60d392be6c" - integrity sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw== +sass@^1.76.0: + version "1.76.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.76.0.tgz#fe15909500735ac154f0dc7386d656b62b03987d" + integrity sha512-nc3LeqvF2FNW5xGF1zxZifdW3ffIz5aBb7I7tSvOoNu7z1RQ6pFt9MBuiPtjgaI62YWrM/txjWlOCFiGtf2xpw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -2406,10 +2406,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" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -terser@^5.30.4: - version "5.30.4" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.30.4.tgz#62b4d16a819424e6317fd5ceffb4ee8dc769803a" - integrity sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ== +terser@^5.31.0: + version "5.31.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1" + integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -2514,15 +2514,15 @@ vite-plugin-compression@^0.5.1: debug "^4.3.3" fs-extra "^10.0.0" -vite-plugin-css-injected-by-js@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/vite-plugin-css-injected-by-js/-/vite-plugin-css-injected-by-js-3.5.0.tgz#784c0f42c2b42155eb4c726c6addfa24aba9f4fb" - integrity sha512-d0QaHH9kS93J25SwRqJNEfE29PSuQS5jn51y9N9i2Yoq0FRO7rjuTeLvjM5zwklZlRrIn6SUdtOEDKyHokgJZg== +vite-plugin-css-injected-by-js@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/vite-plugin-css-injected-by-js/-/vite-plugin-css-injected-by-js-3.5.1.tgz#b9c568c21b131d08e31aa6d368ee39c9d6c1b6c1" + integrity sha512-9ioqwDuEBxW55gNoWFEDhfLTrVKXEEZgl5adhWmmqa88EQGKfTmexy4v1Rh0pAS6RhKQs2bUYQArprB32JpUZQ== -vite@^5.2.10: - version "5.2.10" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.10.tgz#2ac927c91e99d51b376a5c73c0e4b059705f5bd7" - integrity sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw== +vite@^5.2.11: + version "5.2.11" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.11.tgz#726ec05555431735853417c3c0bfb36003ca0cbd" + integrity sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ== dependencies: esbuild "^0.20.1" postcss "^8.4.38" @@ -2580,25 +2580,25 @@ vue-template-compiler@^2.7.14: de-indent "^1.0.2" he "^1.2.0" -vue-tsc@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-2.0.14.tgz#5a8a652bcba30fa6fd8f7ac6af5df8e387f25cd8" - integrity sha512-DgAO3U1cnCHOUO7yB35LENbkapeRsBZ7Ugq5hGz/QOHny0+1VQN8eSwSBjYbjLVPfvfw6EY7sNPjbuHHUhckcg== +vue-tsc@^2.0.16: + version "2.0.16" + resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-2.0.16.tgz#ba82c4cdac283e8e39e30e817c8c1c967e528358" + integrity sha512-/gHAWJa216PeEhfxtAToIbxdWgw01wuQzo48ZUqMYVEyNqDp+OYV9xMO5HaPS2P3Ls0+EsjguMZLY4cGobX4Ew== dependencies: - "@volar/typescript" "2.2.0-alpha.10" - "@vue/language-core" "2.0.14" + "@volar/typescript" "~2.2.0" + "@vue/language-core" "2.0.16" semver "^7.5.4" -vue@^3.4.25: - version "3.4.25" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.25.tgz#e59d4ed36389647b52ff2fd7aa84bb6691f4205b" - integrity sha512-HWyDqoBHMgav/OKiYA2ZQg+kjfMgLt/T0vg4cbIF7JbXAjDexRf5JRg+PWAfrAkSmTd2I8aPSXtooBFWHB98cg== +vue@^3.4.26: + version "3.4.26" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.26.tgz#936c97e37672c737705d7bdfa62c31af18742269" + integrity sha512-bUIq/p+VB+0xrJubaemrfhk1/FiW9iX+pDV+62I/XJ6EkspAO9/DXEjbDFoe8pIfOZBqfk45i9BMc41ptP/uRg== dependencies: - "@vue/compiler-dom" "3.4.25" - "@vue/compiler-sfc" "3.4.25" - "@vue/runtime-dom" "3.4.25" - "@vue/server-renderer" "3.4.25" - "@vue/shared" "3.4.25" + "@vue/compiler-dom" "3.4.26" + "@vue/compiler-sfc" "3.4.26" + "@vue/runtime-dom" "3.4.26" + "@vue/server-renderer" "3.4.26" + "@vue/shared" "3.4.26" webpack-sources@^3.2.3: version "3.2.3"