diff --git a/.github/workflows/sonar_check.yml b/.github/workflows/sonar_check.yml index c0ea0e1bb..b638df864 100644 --- a/.github/workflows/sonar_check.yml +++ b/.github/workflows/sonar_check.yml @@ -9,9 +9,10 @@ jobs: build: name: Build runs-on: ubuntu-latest + if: github.repository_owner == 'emsesp' + # if: github.repository == 'emsesp/EMS-ESP32' env: # https://binaries.sonarsource.com/?prefix=Distribution/sonar-scanner-cli/ - # SONAR_SCANNER_VERSION: 4.6.1.2450 SONAR_SCANNER_VERSION: 4.7.0.2747 SONAR_SERVER_URL: "https://sonarcloud.io" BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory diff --git a/CHANGELOG.md b/CHANGELOG.md index bf8fd774f..e2c8260d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,108 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +# [3.4.1] May 29 2022 + +## Fixed + +- Fix memory leak in api [#524](https://github.com/emsesp/EMS-ESP32/issues/524) + +## Changed + +- Controller data in web-ui only for IVT [#522](https://github.com/emsesp/EMS-ESP32/issues/522) +- Rename hidden `climate` to a more explaining name [#523](https://github.com/emsesp/EMS-ESP32/issues/523) +- Minor changes to the Customizations web page [#527](https://github.com/emsesp/EMS-ESP32/pull/527) + +# [3.4.0] May 23 2022 + +## Added + +- WebUI optimizations, updated look&feel and better performance [#124](https://github.com/emsesp/EMS-ESP32/issues/124) +- Auto refresh of WebUI after successful firmware upload [#178](https://github.com/emsesp/EMS-ESP32/issues/178) +- New Customization Service in WebUI. First feature is the ability to enable/disabled Enitites (device values) from EMS devices [#206](https://github.com/emsesp/EMS-ESP32/issues/206) +- Option to disable Telnet Console [#209](https://github.com/emsesp/EMS-ESP32/issues/209) +- Added Hide SSID, Max Clients and Preferred Channel to Access Point +- Merged in MichaelDvP's changes like Fahrenheit conversion, publish single (for IOBroker) and a few other critical optimizations +- Enabled bi-directional read/write with Home Assistant, so values can be changed automatically from the UI without scripting [#265](https://github.com/emsesp/EMS-ESP32/issues/265) +- Added GC7000F Boiler [#270](https://github.com/emsesp/EMS-ESP32/issues/270) +- Revised LED flash sequence on boot up to show system health (1 flash=no ems, 2 flashes=no wifi) [#224](https://github.com/emsesp/EMS-ESP32/issues/224) +- Analog Sensor support [#271](https://github.com/emsesp/EMS-ESP32/issues/271) +- Solar cylinder priority [#247](https://github.com/emsesp/EMS-ESP32/issues/247) +- Read only mode in Settings, where EMS Tx/Write commands are blocked [#286](https://github.com/emsesp/EMS-ESP32/issues/286) +- Added 8700i Boiler device +- Added Cascade CM10 Controller device +- Add Olimex ESP32-POE-ISO to board profiles plus settings to customize Ethernet modules [#301](https://github.com/emsesp/EMS-ESP32/issues/301) +- Help text for string commands in WebUI [#320](https://github.com/emsesp/EMS-ESP32/issues/320) +- Germany translations (at compile time) +- #entities added to system/info` endpoint [#322](https://github.com/emsesp/EMS-ESP32/issues/322) +- analog outputs digital/pwm/dac +- remove MQTT retained configs if discovery is disabled +- timeout 10 min for MQTT-QoS wait +- Moduline 300 auto-temperatures T1-T4, RC300 romminfluencefactor +- RC35 parameters [#392](https://github.com/emsesp/EMS-ESP32/issues/392), [#398](https://github.com/emsesp/EMS-ESP32/issues/398) +- sync time with thermostat [#386](https://github.com/emsesp/EMS-ESP32/issues/386), [#408](https://github.com/emsesp/EMS-ESP32/issues/408) +- set mode has immediate effect [#395](https://github.com/emsesp/EMS-ESP32/issues/395) +- min/max in web value setting +- Extend customization to select if an entity is to be shown in the WebUI or forced as read-only [#317](https://github.com/emsesp/EMS-ESP32/issues/317) +- Added Moduline 400 installation parameters [PR #449 by @kwertie01](https://github.com/emsesp/EMS-ESP32/pull/449) +- Read time from IVT-controller [#439](https://github.com/emsesp/EMS-ESP32/issues/439) +- Hybrid Heatpump product-id 168 [#459](https://github.com/emsesp/EMS-ESP32/issues/459), thermostat settings +- Junkers ISM2 and IPM in warm water mode [#437](https://github.com/emsesp/EMS-ESP32/issues/437) +- Added Shower Alert trigger time and cold shot time [#436](https://github.com/emsesp/EMS-ESP32/issues/436) +- Improved Table layout in Web UI (searching, filtering, sorting, exporting to CSV) +- API fetch individual attributes from an entity [#462](https://github.com/emsesp/EMS-ESP32/issues/462) +- Option to disable mDNS +- Option for rendering booleans on dashboard [#456](https://github.com/emsesp/EMS-ESP32/issues/456) +- Upload customization settings from a file [#256](https://github.com/emsesp/EMS-ESP32/issues/256) + +## Fixed + +- lastcode broke MQTT JSON structure [#228](https://github.com/emsesp/EMS-ESP32/issues/228) +- fixed issue with overlapping while reading sequence of EMS1.0 telegrams +- fixed redundant telegram readings (because of offset overflow) +- added missing RC30/Moduline 400 [#243](https://github.com/emsesp/EMS-ESP32/issues/243) +- Correct modes for RC25 [#106](https://github.com/emsesp/EMS-ESP32/issues/106) +- Clean up old HA config's in MQTT before publishing data. This will prevent HA giving the 'dict' warnings [#229](https://github.com/emsesp/EMS-ESP32/issues/229) +- RC25 temperature setting [#272](https://github.com/emsesp/EMS-ESP32/issues/272) +- Buderus RC25 - "hc1 mode type" incorrect value [#273](https://github.com/emsesp/EMS-ESP32/issues/273) +- Increased number of Mixers and Heating Circuits [#294](https://github.com/emsesp/EMS-ESP32/issues/294) +- Check receive status before removing a telegram fetch [#268](https://github.com/emsesp/EMS-ESP32/issues/268), [#282](https://github.com/emsesp/EMS-ESP32/issues/282) +- Fix uploading firmware on OSX [#345](https://github.com/emsesp/EMS-ESP32/issues/345) +- Non-nested MQTT would corrupt the json [#354](https://github.com/emsesp/EMS-ESP32/issues/354) +- Burner selected max power can have a value higher than 100% [#314](https://github.com/emsesp/EMS-ESP32/issues/314) +- some missing fahrenheit calculations +- limited number of exclusions [#339](https://github.com/emsesp/EMS-ESP32/issues/339) +- MQTT sometimes would not reconnect after a WiFi outage + +## Changed + +- Use flash system to show system health (1 flash=no ems, 2 flashes=no wifi) [#224](https://github.com/emsesp/EMS-ESP32/issues/224) +- Renamed Dallas Sensor to Temperature Sensor in UI +- Dallas Format removed. Use the name to give each sensor an alias +- No longer MQTT subscribes to topic `/thermostat_hc` as it supports a path similar to the API endpoint construct +- Show Sensors quality in WebUI +- Controller not shown in WebUI dashboard +- renamed "Home Assistant Integration" to "MQTT Discovery" in MQTT Settings [#290](https://github.com/emsesp/EMS-ESP32/issues/290) +- Show ems tx reads and writes separately +- Show ems device handlers separated for received, fetched and pending handlers. +- Wired renamed to Ethernet +- removed system/pin command, new commands in analogsensors +- system/info device-info split to name/version/brand +- exclude list uses short-names, possible flags for web/api/mqtt excludes, readonly and favorite (selection not yet implemented) +- thermostat clock formate date-time: dd.mm.yyyy hh:mm +- RC300 summermode as other thermostats `winter/summer` instead of `off/on` + +## **BREAKING CHANGES:** + +- Settings: + - order of Boolean Format has changed in Application Settings - check your settings + - Dallas Format setting removed. Now customize name of each Dallas sensor via the UI +- MQTT/API + - Boiler `wwheat` renamed to `ww3wayon` [#211](https://github.com/emsesp/EMS-ESP32/issues/211) + - Boiler `ww` tag renamed to `dhw`. Any custom Home Assistant lovelace dashboards will need updating. + - Renamed description of `wwtapactivated` to "turn on/off DHW". Otherwise would have looked like "boiler_dhw_turn_on_off_dhw" in HA. + - `/api/system/info` endpoint has updated keys. Now lowercase, no underscores and not capitalized. Replace "handlers" with "handlers received", "handlers fetched" and "handlers pending". + # [3.3.1] January 20 2022 - lastcode broke MQTT JSON structure [#228](https://github.com/emsesp/EMS-ESP32/issues/228) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 0ec10fa91..c011b9734 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -1,91 +1,19 @@ # Changelog -## [3.4.0] +# [3.4.2] -### Added +## Added -- WebUI optimizations, updated look&feel and better performance [#124](https://github.com/emsesp/EMS-ESP32/issues/124) -- Auto refresh of WebUI after successful firmware upload [#178](https://github.com/emsesp/EMS-ESP32/issues/178) -- New Customization Service in WebUI. First feature is the ability to enable/disabled Enitites (device values) from EMS devices [#206](https://github.com/emsesp/EMS-ESP32/issues/206) -- Option to disable Telnet Console [#209](https://github.com/emsesp/EMS-ESP32/issues/209) -- Added Hide SSID, Max Clients and Preferred Channel to Access Point -- Merged in MichaelDvP's changes like Fahrenheit conversion, publish single (for IOBroker) and a few other critical optimizations -- Enabled bi-directional read/write with Home Assistant, so values can be changed automatically from the UI without scripting [#265](https://github.com/emsesp/EMS-ESP32/issues/265) -- Added GC7000F Boiler [#270](https://github.com/emsesp/EMS-ESP32/issues/270) -- Revised LED flash sequence on boot up to show system health (1 flash=no ems, 2 flashes=no wifi) [#224](https://github.com/emsesp/EMS-ESP32/issues/224) -- Analog Sensor support [#271](https://github.com/emsesp/EMS-ESP32/issues/271) -- Solar cylinder priority [#247](https://github.com/emsesp/EMS-ESP32/issues/247) -- Read only mode in Settings, where EMS Tx/Write commands are blocked [#286](https://github.com/emsesp/EMS-ESP32/issues/286) -- Added 8700i Boiler device -- Added Cascade CM10 Controller device -- Add Olimex ESP32-POE-ISO to board profiles plus settings to customize Ethernet modules [#301](https://github.com/emsesp/EMS-ESP32/issues/301) -- Help text for string commands in WebUI [#320](https://github.com/emsesp/EMS-ESP32/issues/320) -- Germany translations (at compile time) -- #entities added to system/info` endpoint [#322](https://github.com/emsesp/EMS-ESP32/issues/322) -- analog outputs digital/pwm/dac -- remove MQTT retained configs if discovery is disabled -- timeout 10 min for MQTT-QoS wait -- Moduline 300 auto-temperatures T1-T4, RC300 romminfluencefactor -- RC35 parameters [#392](https://github.com/emsesp/EMS-ESP32/issues/392), [#398](https://github.com/emsesp/EMS-ESP32/issues/398) -- sync time with thermostat [#386](https://github.com/emsesp/EMS-ESP32/issues/386), [#408](https://github.com/emsesp/EMS-ESP32/issues/408) -- set mode has immediate effect [#395](https://github.com/emsesp/EMS-ESP32/issues/395) -- min/max in web value setting -- Extend customization to select if an entity is to be shown in the WebUI or forced as read-only [#317](https://github.com/emsesp/EMS-ESP32/issues/317) -- Added Moduline 400 installation parameters [PR #449 by @kwertie01](https://github.com/emsesp/EMS-ESP32/pull/449) -- Read time from IVT-controller [#439](https://github.com/emsesp/EMS-ESP32/issues/439) -- Hybrid Heatpump product-id 168 [#459](https://github.com/emsesp/EMS-ESP32/issues/459), thermostat settings -- Junkers ISM2 and IPM in warm water mode [#437](https://github.com/emsesp/EMS-ESP32/issues/437) -- Added Shower Alert trigger time and cold shot time [#436](https://github.com/emsesp/EMS-ESP32/issues/436) -- Improved Table layout in Web UI (searching, filtering, sorting, exporting to CSV) -- API fetch individual attributes from an entity [#462](https://github.com/emsesp/EMS-ESP32/issues/462) -- Option to disable mDNS -- Option for rendering booleans on dashboard [#456](https://github.com/emsesp/EMS-ESP32/issues/456) -- Upload customization settings from a file [#256](https://github.com/emsesp/EMS-ESP32/issues/256) +- RC310 additions [#520](https://github.com/emsesp/EMS-ESP32/pull/520) + - damping + - wwprio for RC310 heating circuits + - switchonoptimization for RC310 heating circuits + - enum_controlmode for RC310 (new enum list) + - nofrostmode, reducemode, reducetemp & noreducetemp for RC310 + - emergencyops and emergencytemp, wwmaxtemp, wwflowtempoffset and wwcomfort1 for RC310 -### Fixed +## Fixed -- lastcode broke MQTT JSON structure [#228](https://github.com/emsesp/EMS-ESP32/issues/228) -- fixed issue with overlapping while reading sequence of EMS1.0 telegrams -- fixed redundant telegram readings (because of offset overflow) -- added missing RC30/Moduline 400 [#243](https://github.com/emsesp/EMS-ESP32/issues/243) -- Correct modes for RC25 [#106](https://github.com/emsesp/EMS-ESP32/issues/106) -- Clean up old HA config's in MQTT before publishing data. This will prevent HA giving the 'dict' warnings [#229](https://github.com/emsesp/EMS-ESP32/issues/229) -- RC25 temperature setting [#272](https://github.com/emsesp/EMS-ESP32/issues/272) -- Buderus RC25 - "hc1 mode type" incorrect value [#273](https://github.com/emsesp/EMS-ESP32/issues/273) -- Increased number of Mixers and Heating Circuits [#294](https://github.com/emsesp/EMS-ESP32/issues/294) -- Check receive status before removing a telegram fetch [#268](https://github.com/emsesp/EMS-ESP32/issues/268), [#282](https://github.com/emsesp/EMS-ESP32/issues/282) -- Fix uploading firmware on OSX [#345](https://github.com/emsesp/EMS-ESP32/issues/345) -- Non-nested MQTT would corrupt the json [#354](https://github.com/emsesp/EMS-ESP32/issues/354) -- Burner selected max power can have a value higher than 100% [#314](https://github.com/emsesp/EMS-ESP32/issues/314) -- some missing fahrenheit calculations -- limited number of exclusions [#339](https://github.com/emsesp/EMS-ESP32/issues/339) -- MQTT sometimes would not reconnect after a WiFi outage - -### Changed - -- Use flash system to show system health (1 flash=no ems, 2 flashes=no wifi) [#224](https://github.com/emsesp/EMS-ESP32/issues/224) -- Renamed Dallas Sensor to Temperature Sensor in UI -- Dallas Format removed. Use the name to give each sensor an alias -- No longer MQTT subscribes to topic `/thermostat_hc` as it supports a path similar to the API endpoint construct -- Show Sensors quality in WebUI -- Controller not shown in WebUI dashboard -- renamed "Home Assistant Integration" to "MQTT Discovery" in MQTT Settings [#290](https://github.com/emsesp/EMS-ESP32/issues/290) -- Show ems tx reads and writes separately -- Show ems device handlers separated for received, fetched and pending handlers. -- Wired renamed to Ethernet -- removed system/pin command, new commands in analogsensors -- system/info device-info split to name/version/brand -- exclude list uses short-names, possible flags for web/api/mqtt excludes, readonly and favorite (selection not yet implemented) -- thermostat clock formate date-time: dd.mm.yyyy hh:mm -- RC300 summermode as other thermostats `winter/summer` instead of `off/on` +## Changed ## **BREAKING CHANGES:** - -- Settings: - - order of Boolean Format has changed in Application Settings - check your settings - - Dallas Format setting removed. Now customize name of each Dallas sensor via the UI -- MQTT/API - - Boiler `wwheat` renamed to `ww3wayon` [#211](https://github.com/emsesp/EMS-ESP32/issues/211) - - Boiler `ww` tag renamed to `dhw`. Any custom Home Assistant lovelace dashboards will need updating. - - Renamed description of `wwtapactivated` to "turn on/off DHW". Otherwise would have looked like "boiler_dhw_turn_on_off_dhw" in HA. - - `/api/system/info` endpoint has updated keys. Now lowercase, no underscores and not capitalized. Replace "handlers" with "handlers received", "handlers fetched" and "handlers pending". diff --git a/interface/package-lock.json b/interface/package-lock.json index 5fdcc21d6..bfc328525 100644 --- a/interface/package-lock.json +++ b/interface/package-lock.json @@ -12,12 +12,12 @@ "@emotion/styled": "^11.8.1", "@msgpack/msgpack": "^2.7.2", "@mui/icons-material": "^5.8.0", - "@mui/material": "^5.8.0", - "@table-library/react-table-library": "^3.1.2", + "@mui/material": "^5.8.1", + "@table-library/react-table-library": "^3.1.4", "@types/lodash": "^4.14.182", - "@types/node": "^17.0.35", - "@types/react": "^17.0.43", - "@types/react-dom": "^17.0.14", + "@types/node": "^17.0.36", + "@types/react": "^18.0.9", + "@types/react-dom": "^18.0.5", "@types/react-router-dom": "^5.3.3", "async-validator": "^4.1.1", "axios": "^0.27.2", @@ -26,15 +26,15 @@ "lodash": "^4.17.21", "notistack": "^2.0.5", "parse-ms": "^3.0.0", - "react": "^17.0.2", + "react": "^18.1.0", "react-app-rewired": "^2.2.1", - "react-dom": "^17.0.2", + "react-dom": "^18.1.0", "react-dropzone": "^14.2.1", "react-icons": "^4.3.1", "react-router-dom": "^6.3.0", "react-scripts": "5.0.1", "sockette": "^2.0.6", - "typescript": "^4.6.4" + "typescript": "^4.7.2" }, "devDependencies": { "nodemon": "^2.0.16", @@ -73,20 +73,20 @@ } }, "node_modules/@babel/core": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.0.tgz", - "integrity": "sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.0", - "@babel/helper-compilation-targets": "^7.17.10", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", "@babel/helper-module-transforms": "^7.18.0", - "@babel/helpers": "^7.18.0", + "@babel/helpers": "^7.18.2", "@babel/parser": "^7.18.0", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -102,9 +102,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", - "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", + "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", "dependencies": { "eslint-scope": "^5.1.1", "eslint-visitor-keys": "^2.1.0", @@ -147,11 +147,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.0.tgz", - "integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", "dependencies": { - "@babel/types": "^7.18.0", + "@babel/types": "^7.18.2", "@jridgewell/gen-mapping": "^0.3.0", "jsesc": "^2.5.1" }, @@ -196,9 +196,9 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", - "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", "dependencies": { "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", @@ -266,12 +266,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dependencies": { - "@babel/types": "^7.16.7" - }, + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", "engines": { "node": ">=6.9.0" } @@ -383,26 +380,26 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.2" }, "engines": { "node": ">=6.9.0" @@ -461,13 +458,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.0.tgz", - "integrity": "sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0" + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" }, "engines": { "node": ">=6.9.0" @@ -487,9 +484,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.3.tgz", + "integrity": "sha512-rL50YcEuHbbauAFAysNsJA4/f89fGTOBRNs9P81sniKnKAr4xULe5AecolcsKbi88xu0ByWYDj/S1AJ3FSFuSQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -575,13 +572,13 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.12.tgz", - "integrity": "sha512-gL0qSSeIk/VRfTDgtQg/EtejENssN/r3p5gJsPie1UacwiHibprpr19Z0pcK3XKuqQvjGVxsQ37Tl1MGfXzonA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz", + "integrity": "sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-create-class-features-plugin": "^7.18.0", "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-replace-supers": "^7.18.2", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/plugin-syntax-decorators": "^7.17.12", "charcodes": "^0.2.0" @@ -1275,13 +1272,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.0.tgz", - "integrity": "sha512-cCeR0VZWtfxWS4YueAK2qtHtBPJRSaJcMlbS8jhSIm/A3E2Kpro4W1Dn4cqJtp59dtWfXjQwK7SPKF8ghs7rlw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", "dependencies": { "@babel/helper-module-transforms": "^7.18.0", "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-simple-access": "^7.18.2", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1501,9 +1498,9 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.0.tgz", - "integrity": "sha512-7kM/jJ3DD/y1hDPn0jov12DoUIFsxLiItprhNydUSibxaywaxNqKwq+ODk72J9ePn4LWobIc5ik6TAJhVl8IkQ==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz", + "integrity": "sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg==", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/helper-plugin-utils": "^7.17.12", @@ -1563,9 +1560,9 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.17.12.tgz", - "integrity": "sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", "dependencies": { "@babel/helper-plugin-utils": "^7.17.12" }, @@ -1636,12 +1633,12 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.0.tgz", - "integrity": "sha512-cP74OMs7ECLPeG1reiCQ/D/ypyOxgfm8uR6HRYV23vTJ7Lu1nbgj9DQDo/vH59gnn7GOAwtTDPPYV4aXzsMKHA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", "dependencies": { "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-option": "^7.16.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", @@ -1686,12 +1683,12 @@ "@babel/plugin-transform-dotall-regex": "^7.16.7", "@babel/plugin-transform-duplicate-keys": "^7.17.12", "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.17.12", + "@babel/plugin-transform-for-of": "^7.18.1", "@babel/plugin-transform-function-name": "^7.16.7", "@babel/plugin-transform-literals": "^7.17.12", "@babel/plugin-transform-member-expression-literals": "^7.16.7", "@babel/plugin-transform-modules-amd": "^7.18.0", - "@babel/plugin-transform-modules-commonjs": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", "@babel/plugin-transform-modules-systemjs": "^7.18.0", "@babel/plugin-transform-modules-umd": "^7.18.0", "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", @@ -1704,12 +1701,12 @@ "@babel/plugin-transform-shorthand-properties": "^7.16.7", "@babel/plugin-transform-spread": "^7.17.12", "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.17.12", + "@babel/plugin-transform-template-literals": "^7.18.2", "@babel/plugin-transform-typeof-symbol": "^7.17.12", "@babel/plugin-transform-unicode-escapes": "^7.16.7", "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.0", + "@babel/types": "^7.18.2", "babel-plugin-polyfill-corejs2": "^0.3.0", "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", @@ -1774,9 +1771,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.0.tgz", - "integrity": "sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -1785,9 +1782,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.0.tgz", - "integrity": "sha512-G5FaGZOWORq9zthDjIrjib5XlcddeqLbIiDO3YQsut6j7aGf76xn0umUC/pA6+nApk3hQJF4JzLzg5PCl6ewJg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz", + "integrity": "sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q==", "dependencies": { "core-js-pure": "^3.20.2", "regenerator-runtime": "^0.13.4" @@ -1810,18 +1807,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.0.tgz", - "integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", + "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.0", - "@babel/helper-environment-visitor": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/parser": "^7.18.0", - "@babel/types": "^7.18.0", + "@babel/types": "^7.18.2", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1830,9 +1827,9 @@ } }, "node_modules/@babel/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.0.tgz", - "integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.2.tgz", + "integrity": "sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" @@ -2187,14 +2184,14 @@ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, "node_modules/@eslint/eslintrc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", - "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.3.2", - "globals": "^13.9.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -2991,9 +2988,9 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-alpha.81", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.81.tgz", - "integrity": "sha512-KJP+RdKBLSbhiAliy1b5xFuoAezawupfIHc/MRtEZdqAmUW0+UFNDXIUDlBKR9zLCjgjQ7eVJsSe0TwAgd8OMQ==", + "version": "5.0.0-alpha.82", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.82.tgz", + "integrity": "sha512-WUVDjCGnLXzmGxrmfW31blhucg0sRX4YddK2Falq7FlVzwdJaPgWn/xzPZmdLL0+WXon0gQVnDrq2qvggE/GMg==", "dependencies": { "@babel/runtime": "^7.17.2", "@emotion/is-prop-valid": "^1.1.2", @@ -3048,13 +3045,13 @@ } }, "node_modules/@mui/material": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.8.0.tgz", - "integrity": "sha512-yvt3sUmUZ1i8SPadRYBCThcB57lBZsvyhC7ufVpRxA3AD39O+WXtXAapEfpDdDkJnnKb5MCimDMwBYgWLmY89Q==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.8.1.tgz", + "integrity": "sha512-Vl3BHFzOcAT5TJfvzoQUyuo/Xckn+/NSRyJ8upM4Hbz6Y1egW6P8f1RCa4FdkEfPSd5wSSYdmPfAiEh8eI4rPg==", "dependencies": { "@babel/runtime": "^7.17.2", - "@mui/base": "5.0.0-alpha.81", - "@mui/system": "^5.8.0", + "@mui/base": "5.0.0-alpha.82", + "@mui/system": "^5.8.1", "@mui/types": "^7.1.3", "@mui/utils": "^5.8.0", "@types/react-transition-group": "^4.4.4", @@ -3148,9 +3145,9 @@ } }, "node_modules/@mui/system": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.8.0.tgz", - "integrity": "sha512-1tEj2S59RjlZ/6JMJMUktQDbV2ev7hyGXqO7dRRUQ7nOJi9qHmCFP0uXj3YS6LbM6hVasgYXJg8GBjbEtfTJvg==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.8.1.tgz", + "integrity": "sha512-kWJMEN62+HJb4LMRNEAZQYc++FPYsqPsU9dCL7ByLgmz/ZzRrZ8FjDi2r4j0ZeE4kaVvqBXh+RA7tLzmCKqV9w==", "dependencies": { "@babel/runtime": "^7.17.2", "@mui/private-theming": "^5.8.0", @@ -3254,9 +3251,9 @@ } }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.6.tgz", - "integrity": "sha512-IIWxofIYt/AbMwoeBgj+O2aAXLrlCQVg+A4a2zfpXFNHgP8o8rvi3v+oe5t787Lj+KXlKOh8BAiUp9bhuELXhg==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.7.tgz", + "integrity": "sha512-bcKCAzF0DV2IIROp9ZHkRJa6O4jy7NlnHdWL3GmcUxYWNjLXkK5kfELELwEfSP5hXPfVL/qOGMAROuMQb9GG8Q==", "dependencies": { "ansi-html-community": "^0.0.8", "common-path-prefix": "^3.0.0", @@ -3689,20 +3686,31 @@ } }, "node_modules/@table-library/react-table-library": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@table-library/react-table-library/-/react-table-library-3.1.2.tgz", - "integrity": "sha512-zfjIvcEP114KFh5WyZzbPQHtaxiSr0LHHgm+A8El6YG/SQ7D+i88RUdwiBu3uuKXTY7OV+5v/GESEiioZo150w==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@table-library/react-table-library/-/react-table-library-3.1.4.tgz", + "integrity": "sha512-6JgQJLWgkMkdVzB/gGU/7BuMRGhQkkbg150YXiq+2U2ICyV773JPW5oxE5QaQJZUsDGlcS1FuaK/UFJVLZWs4A==", "dependencies": { "clsx": "1.1.1", "react-virtualized-auto-sizer": "1.0.6", - "react-window": "1.8.6" + "react-window": "1.8.7" }, "peerDependencies": { - "@emotion/react": ">= 11", "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, + "node_modules/@table-library/react-table-library/node_modules/react-virtualized-auto-sizer": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.6.tgz", + "integrity": "sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==", + "engines": { + "node": ">8.0.0" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0-alpha || ^17.0.0", + "react-dom": "^15.3.0 || ^16.0.0-alpha || ^17.0.0" + } + }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -3902,9 +3910,9 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "node_modules/@types/node": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" + "version": "17.0.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz", + "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -3912,9 +3920,9 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "node_modules/@types/prettier": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.1.tgz", - "integrity": "sha512-XFjFHmaLVifrAKaZ+EKghFHtHSUonyw8P2Qmy2/+osBnrKbH9UYtlK10zg8/kCt47MFilll/DEDKy3DHfJ0URw==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==" }, "node_modules/@types/prop-types": { "version": "15.7.5", @@ -3937,9 +3945,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/react": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.45.tgz", - "integrity": "sha512-YfhQ22Lah2e3CHPsb93tRwIGNiSwkuz1/blk4e6QrWS0jQzCSNbGLtOEYhPg02W0yGTTmpajp7dCTbBAMN3qsg==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -3947,11 +3955,11 @@ } }, "node_modules/@types/react-dom": { - "version": "17.0.17", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz", - "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==", + "version": "18.0.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.5.tgz", + "integrity": "sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==", "dependencies": { - "@types/react": "^17" + "@types/react": "*" } }, "node_modules/@types/react-is": { @@ -4064,13 +4072,13 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.25.0.tgz", - "integrity": "sha512-icYrFnUzvm+LhW0QeJNKkezBu6tJs9p/53dpPLFH8zoM9w1tfaKzVurkPotEpAqQ8Vf8uaFyL5jHd0Vs6Z0ZQg==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.26.0.tgz", + "integrity": "sha512-oGCmo0PqnRZZndr+KwvvAUvD3kNE4AfyoGCwOZpoCncSh4MVD06JTE8XQa2u9u+NX5CsyZMBTEc2C72zx38eYA==", "dependencies": { - "@typescript-eslint/scope-manager": "5.25.0", - "@typescript-eslint/type-utils": "5.25.0", - "@typescript-eslint/utils": "5.25.0", + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/type-utils": "5.26.0", + "@typescript-eslint/utils": "5.26.0", "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", @@ -4110,11 +4118,11 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.25.0.tgz", - "integrity": "sha512-YTe9rmslCh1xAvNa3X+uZe4L2lsyb8V3WIeK9z46nNiPswk/V/0SGLJSfo8W9Hj4R7ak7bolazXGn3DErmb8QA==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.26.0.tgz", + "integrity": "sha512-OgUGXC/teXD8PYOkn33RSwBJPVwL0I2ipm5OHr9g9cfAhVrPC2DxQiWqaq88MNO5mbr/ZWnav3EVBpuwDreS5Q==", "dependencies": { - "@typescript-eslint/utils": "5.25.0" + "@typescript-eslint/utils": "5.26.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4128,13 +4136,13 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.25.0.tgz", - "integrity": "sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.26.0.tgz", + "integrity": "sha512-n/IzU87ttzIdnAH5vQ4BBDnLPly7rC5VnjN3m0xBG82HK6rhRxnCb3w/GyWbNDghPd+NktJqB/wl6+YkzZ5T5Q==", "dependencies": { - "@typescript-eslint/scope-manager": "5.25.0", - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/typescript-estree": "5.25.0", + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/typescript-estree": "5.26.0", "debug": "^4.3.4" }, "engines": { @@ -4154,12 +4162,12 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.25.0.tgz", - "integrity": "sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.26.0.tgz", + "integrity": "sha512-gVzTJUESuTwiju/7NiTb4c5oqod8xt5GhMbExKsCTp6adU3mya6AGJ4Pl9xC7x2DX9UYFsjImC0mA62BCY22Iw==", "dependencies": { - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/visitor-keys": "5.25.0" + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/visitor-keys": "5.26.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4170,11 +4178,11 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.25.0.tgz", - "integrity": "sha512-B6nb3GK3Gv1Rsb2pqalebe/RyQoyG/WDy9yhj8EE0Ikds4Xa8RR28nHz+wlt4tMZk5bnAr0f3oC8TuDAd5CPrw==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.26.0.tgz", + "integrity": "sha512-7ccbUVWGLmcRDSA1+ADkDBl5fP87EJt0fnijsMFTVHXKGduYMgienC/i3QwoVhDADUAPoytgjbZbCOMj4TY55A==", "dependencies": { - "@typescript-eslint/utils": "5.25.0", + "@typescript-eslint/utils": "5.26.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -4195,9 +4203,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.25.0.tgz", - "integrity": "sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.26.0.tgz", + "integrity": "sha512-8794JZFE1RN4XaExLWLI2oSXsVImNkl79PzTOOWt9h0UHROwJedNOD2IJyfL0NbddFllcktGIO2aOu10avQQyA==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4207,12 +4215,12 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.25.0.tgz", - "integrity": "sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.26.0.tgz", + "integrity": "sha512-EyGpw6eQDsfD6jIqmXP3rU5oHScZ51tL/cZgFbFBvWuCwrIptl+oueUZzSmLtxFuSOQ9vDcJIs+279gnJkfd1w==", "dependencies": { - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/visitor-keys": "5.25.0", + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/visitor-keys": "5.26.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4247,14 +4255,14 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.25.0.tgz", - "integrity": "sha512-qNC9bhnz/n9Kba3yI6HQgQdBLuxDoMgdjzdhSInZh6NaDnFpTUlwNGxplUFWfY260Ya0TRPvkg9dd57qxrJI9g==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.26.0.tgz", + "integrity": "sha512-PJFwcTq2Pt4AMOKfe3zQOdez6InIDOjUJJD3v3LyEtxHGVVRK3Vo7Dd923t/4M9hSH2q2CLvcTdxlLPjcIk3eg==", "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.25.0", - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/typescript-estree": "5.25.0", + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/typescript-estree": "5.26.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -4290,11 +4298,11 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.25.0.tgz", - "integrity": "sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.26.0.tgz", + "integrity": "sha512-wei+ffqHanYDOQgg/fS6Hcar6wAWv0CUPQ3TZzOWd2BLfgP539rb49bwua8WRAs7R6kOSLn82rfEu2ro6Llt8Q==", "dependencies": { - "@typescript-eslint/types": "5.25.0", + "@typescript-eslint/types": "5.26.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -5624,9 +5632,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001341", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", - "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", + "version": "1.0.30001344", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz", + "integrity": "sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==", "funding": [ { "type": "opencollective", @@ -5662,7 +5670,7 @@ "node_modules/chalk/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { "node": ">=0.8.0" } @@ -5776,7 +5784,7 @@ "node_modules/clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", "dev": true, "dependencies": { "mimic-response": "^1.0.0" @@ -5793,7 +5801,7 @@ "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -5828,7 +5836,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/colord": { "version": "2.9.2", @@ -5875,7 +5883,7 @@ "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, "node_modules/compressible": { "version": "2.0.18", @@ -5921,7 +5929,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/configstore": { "version": "5.0.1", @@ -6010,12 +6018,12 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/core-js": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.5.tgz", - "integrity": "sha512-VP/xYuvJ0MJWRAobcmQ8F2H6Bsn+s7zqAAjFaHGBMc5AQm7zaelhD1LGduFn2EehEcQcU+br6t+fwbpQ5d1ZWA==", + "version": "3.22.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.7.tgz", + "integrity": "sha512-Jt8SReuDKVNZnZEzyEQT5eK6T2RRCXkfTq7Lo09kpm+fHjgGewSbNjV+Wt4yZMhPDdzz2x1ulI5z/w4nxpBseg==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -6023,9 +6031,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.5.tgz", - "integrity": "sha512-rEF75n3QtInrYICvJjrAgV03HwKiYvtKHdPtaba1KucG+cNZ4NJnH9isqt979e67KZlhpbCOTwnsvnIr+CVeOg==", + "version": "3.22.7", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.7.tgz", + "integrity": "sha512-uI9DAQKKiiE/mclIC5g4AjRpio27g+VMRhe6rQoz+q4Wm4L6A/fJhiLtBw+sfOpDG9wZ3O0pxIw7GbfOlBgjOA==", "dependencies": { "browserslist": "^4.20.3", "semver": "7.0.0" @@ -6044,9 +6052,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.5.tgz", - "integrity": "sha512-8xo9R00iYD7TcV7OrC98GwxiUEAabVWO3dix+uyWjnYrx9fyASLlIX+f/3p5dW5qByaP2bcZ8X/T47s55et/tA==", + "version": "3.22.7", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.7.tgz", + "integrity": "sha512-wTriFxiZI+C8msGeh7fJcbC/a0V8fdInN1oS2eK79DMBGs8iIJiXhtFJCiT3rBa8w6zroHWW3p8ArlujZ/Mz+w==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -6350,9 +6358,9 @@ } }, "node_modules/cssdb": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.1.tgz", - "integrity": "sha512-0/nZEYfp8SFEzJkMud8NxZJsGfD7RHDJti6GRBLZptIwAzco6RTx1KgwFl4mGWsYS0ZNbCrsY9QryhQ4ldF3Mg==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.2.tgz", + "integrity": "sha512-w08LaP+DRoPlw4g4LSUp+EWRrWTPlrzWREcU7/6IeMfL7tPR2P9oeQ1G+pxyfMmLWBNDwqHWa6kxiuGMLb71EA==", "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" @@ -6370,11 +6378,11 @@ } }, "node_modules/cssnano": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.8.tgz", - "integrity": "sha512-5lma/yQlK+6eOHSUqNAS11b4/fbiuasoxmCHoVYxSg6lQsyX7bGGIqiLi4o3Pe2CrUTrgcD2udW7JIgzC2806g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.9.tgz", + "integrity": "sha512-hctQHIIeDrfMjq0bQhoVmRVaSeNNOGxkvkKVOcKpJzLr09wlRrZWH4GaYudp0aszpW8wJeaO5/yBmID9n7DNCg==", "dependencies": { - "cssnano-preset-default": "^5.2.8", + "cssnano-preset-default": "^5.2.9", "lilconfig": "^2.0.3", "yaml": "^1.10.2" }, @@ -6390,9 +6398,9 @@ } }, "node_modules/cssnano-preset-default": { - "version": "5.2.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.8.tgz", - "integrity": "sha512-6xQXUhTAPupvib3KC0Gl0d1jIwGFcJyuWQiMcA6grprGdmIzt1cxG5z78VuZu6DRRS6qin6ETkQsH6ixxb/SQw==", + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.9.tgz", + "integrity": "sha512-/4qcQcAfFEg+gnXE5NxKmYJ9JcT+8S5SDuJCLYMDN8sM/ymZ+lgLXq5+ohx/7V2brUCkgW2OaoCzOdAN0zvhGw==", "dependencies": { "css-declaration-sorter": "^6.2.2", "cssnano-utils": "^3.1.0", @@ -6403,7 +6411,7 @@ "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.4", + "postcss-merge-longhand": "^5.1.5", "postcss-merge-rules": "^5.1.1", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", @@ -6546,7 +6554,7 @@ "node_modules/decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "dev": true, "dependencies": { "mimic-response": "^1.0.0" @@ -6558,7 +6566,7 @@ "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" }, "node_modules/deep-extend": { "version": "0.6.0", @@ -6625,12 +6633,12 @@ "node_modules/defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { "node": ">=0.4.0" } @@ -6695,13 +6703,13 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", "dependencies": { - "acorn-node": "^1.6.1", + "acorn-node": "^1.8.2", "defined": "^1.0.0", - "minimist": "^1.1.1" + "minimist": "^1.2.6" }, "bin": { "detective": "bin/detective.js" @@ -6742,7 +6750,7 @@ "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" }, "node_modules/dns-packet": { "version": "5.3.1", @@ -6895,13 +6903,13 @@ "node_modules/duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==", "dev": true }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/ejs": { "version": "3.1.8", @@ -6918,9 +6926,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", - "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==" + "version": "1.4.141", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz", + "integrity": "sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA==" }, "node_modules/emittery": { "version": "0.8.1", @@ -6949,7 +6957,7 @@ "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { "node": ">= 0.8" } @@ -7089,7 +7097,7 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -7180,11 +7188,11 @@ } }, "node_modules/eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", - "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", "dependencies": { - "@eslint/eslintrc": "^1.2.3", + "@eslint/eslintrc": "^1.3.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -7202,7 +7210,7 @@ "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -7297,7 +7305,7 @@ "node_modules/eslint-module-utils/node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dependencies": { "locate-path": "^2.0.0" }, @@ -7532,9 +7540,9 @@ } }, "node_modules/eslint-plugin-testing-library": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.5.0.tgz", - "integrity": "sha512-eWQ19l6uWL7LW8oeMyQVSGjVYFnBqk7DMHjadm0yOHBvX3Xi9OBrsNuxoAMdX4r7wlQ5WWpW46d+CB6FWFL/PQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.5.1.tgz", + "integrity": "sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==", "dependencies": { "@typescript-eslint/utils": "^5.13.0" }, @@ -7855,7 +7863,7 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "engines": { "node": ">= 0.6" } @@ -7952,7 +7960,7 @@ "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "engines": { "node": ">= 0.8.0" } @@ -8077,7 +8085,7 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fastq": { "version": "1.13.0", @@ -8277,9 +8285,9 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" }, "node_modules/follow-redirects": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", - "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", "funding": [ { "type": "individual", @@ -8486,7 +8494,7 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { "node": ">= 0.6" } @@ -8512,7 +8520,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.2", @@ -8552,7 +8560,7 @@ "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" }, "node_modules/functions-have-names": { "version": "1.2.3", @@ -8825,7 +8833,7 @@ "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } @@ -8921,7 +8929,7 @@ "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -9041,7 +9049,7 @@ "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" }, "node_modules/http-errors": { "version": "2.0.0", @@ -9162,7 +9170,7 @@ "node_modules/identity-obj-proxy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", "dependencies": { "harmony-reflect": "^1.4.6" }, @@ -9181,7 +9189,7 @@ "node_modules/ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", "dev": true }, "node_modules/immer": { @@ -9211,7 +9219,7 @@ "node_modules/import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", "dev": true, "engines": { "node": ">=4" @@ -9238,7 +9246,7 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "engines": { "node": ">=0.8.19" } @@ -9246,7 +9254,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -12153,9 +12161,9 @@ } }, "node_modules/memfs": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.3.tgz", - "integrity": "sha512-eivjfi7Ahr6eQTn44nvTnR60e4a1Fs1Via2kCR5lHo/kyNoiMWaXCNJ/GpSd0ilXas2JSOl9B5FTIhflXu0hlg==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.4.tgz", + "integrity": "sha512-W4gHNUE++1oSJVn8Y68jPXi+mkx3fXR5ITE/Ubz6EQ3xRpCN5k2CQ4AUR8094Z7211F876TyoBACGsIveqgiGA==", "dependencies": { "fs-monkey": "1.0.3" }, @@ -12436,9 +12444,9 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" }, "node_modules/node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" }, "node_modules/nodemon": { "version": "2.0.16", @@ -12623,9 +12631,9 @@ } }, "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dependencies": { "boolbase": "^1.0.0" }, @@ -12655,9 +12663,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13695,9 +13703,9 @@ } }, "node_modules/postcss-merge-longhand": { - "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==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.5.tgz", + "integrity": "sha512-NOG1grw9wIO+60arKa2YYsrbgvP6tp+jqc7+ZD5/MalIw234ooH2C6KlR6FEn4yle7GqZoBxSK1mLBE9KPur6w==", "dependencies": { "postcss-value-parser": "^4.2.0", "stylehacks": "^5.1.0" @@ -14611,12 +14619,11 @@ } }, "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" }, "engines": { "node": ">=0.10.0" @@ -14821,16 +14828,15 @@ } }, "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", + "integrity": "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==", "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.22.0" }, "peerDependencies": { - "react": "17.0.2" + "react": "^18.1.0" } }, "node_modules/react-dropzone": { @@ -15000,22 +15006,10 @@ "react-dom": ">=16.6.0" } }, - "node_modules/react-virtualized-auto-sizer": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.6.tgz", - "integrity": "sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==", - "engines": { - "node": ">8.0.0" - }, - "peerDependencies": { - "react": "^15.3.0 || ^16.0.0-alpha || ^17.0.0", - "react-dom": "^15.3.0 || ^16.0.0-alpha || ^17.0.0" - } - }, "node_modules/react-window": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.6.tgz", - "integrity": "sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg==", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.7.tgz", + "integrity": "sha512-JHEZbPXBpKMmoNO1bNhoXOOLg/ujhL/BU4IqVU9r8eQPcy5KQnGHIHDRkJ0ns9IM5+Aq5LNwt3j8t3tIrePQzA==", "dependencies": { "@babel/runtime": "^7.0.0", "memoize-one": ">=3.1.1 <6" @@ -15024,8 +15018,8 @@ "node": ">8.0.0" }, "peerDependencies": { - "react": "^15.0.0 || ^16.0.0 || ^17.0.0", - "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0" + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/read-pkg": { @@ -15414,9 +15408,9 @@ } }, "node_modules/rollup": { - "version": "2.74.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.74.1.tgz", - "integrity": "sha512-K2zW7kV8Voua5eGkbnBtWYfMIhYhT9Pel2uhBk2WO5eMee161nPze/XRfvEQPFYz7KgrCCnmh2Wy0AMFLGGmMA==", + "version": "2.75.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.3.tgz", + "integrity": "sha512-YA29fLU6MAYSaDxIQYrGGOcbXlDmG96h0krGGYObroezcQ0KgEPM3+7MtKD/qeuUbFuAJXvKZee5dA1dpwq1PQ==", "bin": { "rollup": "dist/bin/rollup" }, @@ -15572,12 +15566,11 @@ } }, "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { @@ -15710,7 +15703,7 @@ "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "engines": { "node": ">= 0.6" } @@ -15718,7 +15711,7 @@ "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -15732,7 +15725,7 @@ "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", @@ -16809,9 +16802,9 @@ } }, "node_modules/typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", + "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -17405,9 +17398,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", + "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", "engines": { "node": ">=10.0.0" }, @@ -17661,9 +17654,9 @@ } }, "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz", - "integrity": "sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.4.tgz", + "integrity": "sha512-Ic2d8ZT6HJiSikGVQvSklaFyw1OUv4g8sDOxa0PXSlbmN/3gL5IO1WYY9DOwTDqOFmjWoqG1yaaKnPDqYCE9KA==", "dependencies": { "json-schema": "^0.4.0", "jsonpointer": "^5.0.0", @@ -17953,9 +17946,9 @@ } }, "node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", + "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", "engines": { "node": ">=8.3.0" }, @@ -18081,20 +18074,20 @@ "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==" }, "@babel/core": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.0.tgz", - "integrity": "sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.0", - "@babel/helper-compilation-targets": "^7.17.10", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", "@babel/helper-module-transforms": "^7.18.0", - "@babel/helpers": "^7.18.0", + "@babel/helpers": "^7.18.2", "@babel/parser": "^7.18.0", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -18103,9 +18096,9 @@ } }, "@babel/eslint-parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", - "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", + "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", "requires": { "eslint-scope": "^5.1.1", "eslint-visitor-keys": "^2.1.0", @@ -18134,11 +18127,11 @@ } }, "@babel/generator": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.0.tgz", - "integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", "requires": { - "@babel/types": "^7.18.0", + "@babel/types": "^7.18.2", "@jridgewell/gen-mapping": "^0.3.0", "jsesc": "^2.5.1" }, @@ -18173,9 +18166,9 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", - "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", "requires": { "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", @@ -18222,12 +18215,9 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "requires": { - "@babel/types": "^7.16.7" - } + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==" }, "@babel/helper-explode-assignable-expression": { "version": "7.16.7", @@ -18309,23 +18299,23 @@ } }, "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" } }, "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", "requires": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.2" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -18366,13 +18356,13 @@ } }, "@babel/helpers": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.0.tgz", - "integrity": "sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", "requires": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0" + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" } }, "@babel/highlight": { @@ -18386,9 +18376,9 @@ } }, "@babel/parser": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==" + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.3.tgz", + "integrity": "sha512-rL50YcEuHbbauAFAysNsJA4/f89fGTOBRNs9P81sniKnKAr4xULe5AecolcsKbi88xu0ByWYDj/S1AJ3FSFuSQ==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.17.12", @@ -18438,13 +18428,13 @@ } }, "@babel/plugin-proposal-decorators": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.12.tgz", - "integrity": "sha512-gL0qSSeIk/VRfTDgtQg/EtejENssN/r3p5gJsPie1UacwiHibprpr19Z0pcK3XKuqQvjGVxsQ37Tl1MGfXzonA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz", + "integrity": "sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-create-class-features-plugin": "^7.18.0", "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-replace-supers": "^7.18.2", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/plugin-syntax-decorators": "^7.17.12", "charcodes": "^0.2.0" @@ -18877,13 +18867,13 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.0.tgz", - "integrity": "sha512-cCeR0VZWtfxWS4YueAK2qtHtBPJRSaJcMlbS8jhSIm/A3E2Kpro4W1Dn4cqJtp59dtWfXjQwK7SPKF8ghs7rlw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", "requires": { "@babel/helper-module-transforms": "^7.18.0", "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-simple-access": "^7.18.2", "babel-plugin-dynamic-import-node": "^2.3.3" } }, @@ -19013,9 +19003,9 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.0.tgz", - "integrity": "sha512-7kM/jJ3DD/y1hDPn0jov12DoUIFsxLiItprhNydUSibxaywaxNqKwq+ODk72J9ePn4LWobIc5ik6TAJhVl8IkQ==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz", + "integrity": "sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg==", "requires": { "@babel/helper-module-imports": "^7.16.7", "@babel/helper-plugin-utils": "^7.17.12", @@ -19051,9 +19041,9 @@ } }, "@babel/plugin-transform-template-literals": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.17.12.tgz", - "integrity": "sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", "requires": { "@babel/helper-plugin-utils": "^7.17.12" } @@ -19094,12 +19084,12 @@ } }, "@babel/preset-env": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.0.tgz", - "integrity": "sha512-cP74OMs7ECLPeG1reiCQ/D/ypyOxgfm8uR6HRYV23vTJ7Lu1nbgj9DQDo/vH59gnn7GOAwtTDPPYV4aXzsMKHA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", "requires": { "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-option": "^7.16.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", @@ -19144,12 +19134,12 @@ "@babel/plugin-transform-dotall-regex": "^7.16.7", "@babel/plugin-transform-duplicate-keys": "^7.17.12", "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.17.12", + "@babel/plugin-transform-for-of": "^7.18.1", "@babel/plugin-transform-function-name": "^7.16.7", "@babel/plugin-transform-literals": "^7.17.12", "@babel/plugin-transform-member-expression-literals": "^7.16.7", "@babel/plugin-transform-modules-amd": "^7.18.0", - "@babel/plugin-transform-modules-commonjs": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", "@babel/plugin-transform-modules-systemjs": "^7.18.0", "@babel/plugin-transform-modules-umd": "^7.18.0", "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", @@ -19162,12 +19152,12 @@ "@babel/plugin-transform-shorthand-properties": "^7.16.7", "@babel/plugin-transform-spread": "^7.17.12", "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.17.12", + "@babel/plugin-transform-template-literals": "^7.18.2", "@babel/plugin-transform-typeof-symbol": "^7.17.12", "@babel/plugin-transform-unicode-escapes": "^7.16.7", "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.0", + "@babel/types": "^7.18.2", "babel-plugin-polyfill-corejs2": "^0.3.0", "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", @@ -19211,17 +19201,17 @@ } }, "@babel/runtime": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.0.tgz", - "integrity": "sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.0.tgz", - "integrity": "sha512-G5FaGZOWORq9zthDjIrjib5XlcddeqLbIiDO3YQsut6j7aGf76xn0umUC/pA6+nApk3hQJF4JzLzg5PCl6ewJg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz", + "integrity": "sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q==", "requires": { "core-js-pure": "^3.20.2", "regenerator-runtime": "^0.13.4" @@ -19238,26 +19228,26 @@ } }, "@babel/traverse": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.0.tgz", - "integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", + "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.0", - "@babel/helper-environment-visitor": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/parser": "^7.18.0", - "@babel/types": "^7.18.0", + "@babel/types": "^7.18.2", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.0.tgz", - "integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.2.tgz", + "integrity": "sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==", "requires": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" @@ -19478,14 +19468,14 @@ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, "@eslint/eslintrc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", - "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.3.2", - "globals": "^13.9.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -20072,9 +20062,9 @@ "integrity": "sha512-rYEi46+gIzufyYUAoHDnRzkWGxajpD9vVXFQ3g1vbjrBm6P7MBmm+s/fqPa46sxa+8FOUdEuRQKaugo5a4JWpw==" }, "@mui/base": { - "version": "5.0.0-alpha.81", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.81.tgz", - "integrity": "sha512-KJP+RdKBLSbhiAliy1b5xFuoAezawupfIHc/MRtEZdqAmUW0+UFNDXIUDlBKR9zLCjgjQ7eVJsSe0TwAgd8OMQ==", + "version": "5.0.0-alpha.82", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.82.tgz", + "integrity": "sha512-WUVDjCGnLXzmGxrmfW31blhucg0sRX4YddK2Falq7FlVzwdJaPgWn/xzPZmdLL0+WXon0gQVnDrq2qvggE/GMg==", "requires": { "@babel/runtime": "^7.17.2", "@emotion/is-prop-valid": "^1.1.2", @@ -20095,13 +20085,13 @@ } }, "@mui/material": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.8.0.tgz", - "integrity": "sha512-yvt3sUmUZ1i8SPadRYBCThcB57lBZsvyhC7ufVpRxA3AD39O+WXtXAapEfpDdDkJnnKb5MCimDMwBYgWLmY89Q==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.8.1.tgz", + "integrity": "sha512-Vl3BHFzOcAT5TJfvzoQUyuo/Xckn+/NSRyJ8upM4Hbz6Y1egW6P8f1RCa4FdkEfPSd5wSSYdmPfAiEh8eI4rPg==", "requires": { "@babel/runtime": "^7.17.2", - "@mui/base": "5.0.0-alpha.81", - "@mui/system": "^5.8.0", + "@mui/base": "5.0.0-alpha.82", + "@mui/system": "^5.8.1", "@mui/types": "^7.1.3", "@mui/utils": "^5.8.0", "@types/react-transition-group": "^4.4.4", @@ -20134,9 +20124,9 @@ } }, "@mui/system": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.8.0.tgz", - "integrity": "sha512-1tEj2S59RjlZ/6JMJMUktQDbV2ev7hyGXqO7dRRUQ7nOJi9qHmCFP0uXj3YS6LbM6hVasgYXJg8GBjbEtfTJvg==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.8.1.tgz", + "integrity": "sha512-kWJMEN62+HJb4LMRNEAZQYc++FPYsqPsU9dCL7ByLgmz/ZzRrZ8FjDi2r4j0ZeE4kaVvqBXh+RA7tLzmCKqV9w==", "requires": { "@babel/runtime": "^7.17.2", "@mui/private-theming": "^5.8.0", @@ -20190,9 +20180,9 @@ } }, "@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.6.tgz", - "integrity": "sha512-IIWxofIYt/AbMwoeBgj+O2aAXLrlCQVg+A4a2zfpXFNHgP8o8rvi3v+oe5t787Lj+KXlKOh8BAiUp9bhuELXhg==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.7.tgz", + "integrity": "sha512-bcKCAzF0DV2IIROp9ZHkRJa6O4jy7NlnHdWL3GmcUxYWNjLXkK5kfELELwEfSP5hXPfVL/qOGMAROuMQb9GG8Q==", "requires": { "ansi-html-community": "^0.0.8", "common-path-prefix": "^3.0.0", @@ -20455,13 +20445,21 @@ } }, "@table-library/react-table-library": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@table-library/react-table-library/-/react-table-library-3.1.2.tgz", - "integrity": "sha512-zfjIvcEP114KFh5WyZzbPQHtaxiSr0LHHgm+A8El6YG/SQ7D+i88RUdwiBu3uuKXTY7OV+5v/GESEiioZo150w==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@table-library/react-table-library/-/react-table-library-3.1.4.tgz", + "integrity": "sha512-6JgQJLWgkMkdVzB/gGU/7BuMRGhQkkbg150YXiq+2U2ICyV773JPW5oxE5QaQJZUsDGlcS1FuaK/UFJVLZWs4A==", "requires": { "clsx": "1.1.1", "react-virtualized-auto-sizer": "1.0.6", - "react-window": "1.8.6" + "react-window": "1.8.7" + }, + "dependencies": { + "react-virtualized-auto-sizer": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.6.tgz", + "integrity": "sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==", + "requires": {} + } } }, "@tootallnate/once": { @@ -20657,9 +20655,9 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "@types/node": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" + "version": "17.0.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz", + "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==" }, "@types/parse-json": { "version": "4.0.0", @@ -20667,9 +20665,9 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "@types/prettier": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.1.tgz", - "integrity": "sha512-XFjFHmaLVifrAKaZ+EKghFHtHSUonyw8P2Qmy2/+osBnrKbH9UYtlK10zg8/kCt47MFilll/DEDKy3DHfJ0URw==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==" }, "@types/prop-types": { "version": "15.7.5", @@ -20692,9 +20690,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/react": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.45.tgz", - "integrity": "sha512-YfhQ22Lah2e3CHPsb93tRwIGNiSwkuz1/blk4e6QrWS0jQzCSNbGLtOEYhPg02W0yGTTmpajp7dCTbBAMN3qsg==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -20702,11 +20700,11 @@ } }, "@types/react-dom": { - "version": "17.0.17", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz", - "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==", + "version": "18.0.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.5.tgz", + "integrity": "sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==", "requires": { - "@types/react": "^17" + "@types/react": "*" } }, "@types/react-is": { @@ -20819,13 +20817,13 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.25.0.tgz", - "integrity": "sha512-icYrFnUzvm+LhW0QeJNKkezBu6tJs9p/53dpPLFH8zoM9w1tfaKzVurkPotEpAqQ8Vf8uaFyL5jHd0Vs6Z0ZQg==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.26.0.tgz", + "integrity": "sha512-oGCmo0PqnRZZndr+KwvvAUvD3kNE4AfyoGCwOZpoCncSh4MVD06JTE8XQa2u9u+NX5CsyZMBTEc2C72zx38eYA==", "requires": { - "@typescript-eslint/scope-manager": "5.25.0", - "@typescript-eslint/type-utils": "5.25.0", - "@typescript-eslint/utils": "5.25.0", + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/type-utils": "5.26.0", + "@typescript-eslint/utils": "5.26.0", "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", @@ -20845,55 +20843,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.25.0.tgz", - "integrity": "sha512-YTe9rmslCh1xAvNa3X+uZe4L2lsyb8V3WIeK9z46nNiPswk/V/0SGLJSfo8W9Hj4R7ak7bolazXGn3DErmb8QA==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.26.0.tgz", + "integrity": "sha512-OgUGXC/teXD8PYOkn33RSwBJPVwL0I2ipm5OHr9g9cfAhVrPC2DxQiWqaq88MNO5mbr/ZWnav3EVBpuwDreS5Q==", "requires": { - "@typescript-eslint/utils": "5.25.0" + "@typescript-eslint/utils": "5.26.0" } }, "@typescript-eslint/parser": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.25.0.tgz", - "integrity": "sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.26.0.tgz", + "integrity": "sha512-n/IzU87ttzIdnAH5vQ4BBDnLPly7rC5VnjN3m0xBG82HK6rhRxnCb3w/GyWbNDghPd+NktJqB/wl6+YkzZ5T5Q==", "requires": { - "@typescript-eslint/scope-manager": "5.25.0", - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/typescript-estree": "5.25.0", + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/typescript-estree": "5.26.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.25.0.tgz", - "integrity": "sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.26.0.tgz", + "integrity": "sha512-gVzTJUESuTwiju/7NiTb4c5oqod8xt5GhMbExKsCTp6adU3mya6AGJ4Pl9xC7x2DX9UYFsjImC0mA62BCY22Iw==", "requires": { - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/visitor-keys": "5.25.0" + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/visitor-keys": "5.26.0" } }, "@typescript-eslint/type-utils": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.25.0.tgz", - "integrity": "sha512-B6nb3GK3Gv1Rsb2pqalebe/RyQoyG/WDy9yhj8EE0Ikds4Xa8RR28nHz+wlt4tMZk5bnAr0f3oC8TuDAd5CPrw==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.26.0.tgz", + "integrity": "sha512-7ccbUVWGLmcRDSA1+ADkDBl5fP87EJt0fnijsMFTVHXKGduYMgienC/i3QwoVhDADUAPoytgjbZbCOMj4TY55A==", "requires": { - "@typescript-eslint/utils": "5.25.0", + "@typescript-eslint/utils": "5.26.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.25.0.tgz", - "integrity": "sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA==" + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.26.0.tgz", + "integrity": "sha512-8794JZFE1RN4XaExLWLI2oSXsVImNkl79PzTOOWt9h0UHROwJedNOD2IJyfL0NbddFllcktGIO2aOu10avQQyA==" }, "@typescript-eslint/typescript-estree": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.25.0.tgz", - "integrity": "sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.26.0.tgz", + "integrity": "sha512-EyGpw6eQDsfD6jIqmXP3rU5oHScZ51tL/cZgFbFBvWuCwrIptl+oueUZzSmLtxFuSOQ9vDcJIs+279gnJkfd1w==", "requires": { - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/visitor-keys": "5.25.0", + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/visitor-keys": "5.26.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -20912,14 +20910,14 @@ } }, "@typescript-eslint/utils": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.25.0.tgz", - "integrity": "sha512-qNC9bhnz/n9Kba3yI6HQgQdBLuxDoMgdjzdhSInZh6NaDnFpTUlwNGxplUFWfY260Ya0TRPvkg9dd57qxrJI9g==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.26.0.tgz", + "integrity": "sha512-PJFwcTq2Pt4AMOKfe3zQOdez6InIDOjUJJD3v3LyEtxHGVVRK3Vo7Dd923t/4M9hSH2q2CLvcTdxlLPjcIk3eg==", "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.25.0", - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/typescript-estree": "5.25.0", + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/typescript-estree": "5.26.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -20941,11 +20939,11 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.25.0.tgz", - "integrity": "sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.26.0.tgz", + "integrity": "sha512-wei+ffqHanYDOQgg/fS6Hcar6wAWv0CUPQ3TZzOWd2BLfgP539rb49bwua8WRAs7R6kOSLn82rfEu2ro6Llt8Q==", "requires": { - "@typescript-eslint/types": "5.25.0", + "@typescript-eslint/types": "5.26.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -21968,9 +21966,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001341", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", - "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==" + "version": "1.0.30001344", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz", + "integrity": "sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==" }, "case-sensitive-paths-webpack-plugin": { "version": "2.4.0", @@ -21990,7 +21988,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" } } }, @@ -22073,7 +22071,7 @@ "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", "dev": true, "requires": { "mimic-response": "^1.0.0" @@ -22087,7 +22085,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" }, "coa": { "version": "2.0.2", @@ -22115,7 +22113,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "colord": { "version": "2.9.2", @@ -22153,7 +22151,7 @@ "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, "compressible": { "version": "2.0.18", @@ -22195,7 +22193,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "configstore": { "version": "5.0.1", @@ -22257,17 +22255,17 @@ "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "core-js": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.5.tgz", - "integrity": "sha512-VP/xYuvJ0MJWRAobcmQ8F2H6Bsn+s7zqAAjFaHGBMc5AQm7zaelhD1LGduFn2EehEcQcU+br6t+fwbpQ5d1ZWA==" + "version": "3.22.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.7.tgz", + "integrity": "sha512-Jt8SReuDKVNZnZEzyEQT5eK6T2RRCXkfTq7Lo09kpm+fHjgGewSbNjV+Wt4yZMhPDdzz2x1ulI5z/w4nxpBseg==" }, "core-js-compat": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.5.tgz", - "integrity": "sha512-rEF75n3QtInrYICvJjrAgV03HwKiYvtKHdPtaba1KucG+cNZ4NJnH9isqt979e67KZlhpbCOTwnsvnIr+CVeOg==", + "version": "3.22.7", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.7.tgz", + "integrity": "sha512-uI9DAQKKiiE/mclIC5g4AjRpio27g+VMRhe6rQoz+q4Wm4L6A/fJhiLtBw+sfOpDG9wZ3O0pxIw7GbfOlBgjOA==", "requires": { "browserslist": "^4.20.3", "semver": "7.0.0" @@ -22281,9 +22279,9 @@ } }, "core-js-pure": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.5.tgz", - "integrity": "sha512-8xo9R00iYD7TcV7OrC98GwxiUEAabVWO3dix+uyWjnYrx9fyASLlIX+f/3p5dW5qByaP2bcZ8X/T47s55et/tA==" + "version": "3.22.7", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.7.tgz", + "integrity": "sha512-wTriFxiZI+C8msGeh7fJcbC/a0V8fdInN1oS2eK79DMBGs8iIJiXhtFJCiT3rBa8w6zroHWW3p8ArlujZ/Mz+w==" }, "core-util-is": { "version": "1.0.3", @@ -22475,9 +22473,9 @@ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" }, "cssdb": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.1.tgz", - "integrity": "sha512-0/nZEYfp8SFEzJkMud8NxZJsGfD7RHDJti6GRBLZptIwAzco6RTx1KgwFl4mGWsYS0ZNbCrsY9QryhQ4ldF3Mg==" + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.2.tgz", + "integrity": "sha512-w08LaP+DRoPlw4g4LSUp+EWRrWTPlrzWREcU7/6IeMfL7tPR2P9oeQ1G+pxyfMmLWBNDwqHWa6kxiuGMLb71EA==" }, "cssesc": { "version": "3.0.0", @@ -22485,19 +22483,19 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.8.tgz", - "integrity": "sha512-5lma/yQlK+6eOHSUqNAS11b4/fbiuasoxmCHoVYxSg6lQsyX7bGGIqiLi4o3Pe2CrUTrgcD2udW7JIgzC2806g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.9.tgz", + "integrity": "sha512-hctQHIIeDrfMjq0bQhoVmRVaSeNNOGxkvkKVOcKpJzLr09wlRrZWH4GaYudp0aszpW8wJeaO5/yBmID9n7DNCg==", "requires": { - "cssnano-preset-default": "^5.2.8", + "cssnano-preset-default": "^5.2.9", "lilconfig": "^2.0.3", "yaml": "^1.10.2" } }, "cssnano-preset-default": { - "version": "5.2.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.8.tgz", - "integrity": "sha512-6xQXUhTAPupvib3KC0Gl0d1jIwGFcJyuWQiMcA6grprGdmIzt1cxG5z78VuZu6DRRS6qin6ETkQsH6ixxb/SQw==", + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.9.tgz", + "integrity": "sha512-/4qcQcAfFEg+gnXE5NxKmYJ9JcT+8S5SDuJCLYMDN8sM/ymZ+lgLXq5+ohx/7V2brUCkgW2OaoCzOdAN0zvhGw==", "requires": { "css-declaration-sorter": "^6.2.2", "cssnano-utils": "^3.1.0", @@ -22508,7 +22506,7 @@ "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.4", + "postcss-merge-longhand": "^5.1.5", "postcss-merge-rules": "^5.1.1", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", @@ -22621,7 +22619,7 @@ "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "dev": true, "requires": { "mimic-response": "^1.0.0" @@ -22630,7 +22628,7 @@ "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" }, "deep-extend": { "version": "0.6.0", @@ -22679,12 +22677,12 @@ "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "depd": { "version": "2.0.0", @@ -22731,13 +22729,13 @@ } }, "detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", "requires": { - "acorn-node": "^1.6.1", + "acorn-node": "^1.8.2", "defined": "^1.0.0", - "minimist": "^1.1.1" + "minimist": "^1.2.6" } }, "didyoumean": { @@ -22766,7 +22764,7 @@ "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" }, "dns-packet": { "version": "5.3.1", @@ -22885,13 +22883,13 @@ "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==", "dev": true }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "ejs": { "version": "3.1.8", @@ -22902,9 +22900,9 @@ } }, "electron-to-chromium": { - "version": "1.4.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", - "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==" + "version": "1.4.141", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz", + "integrity": "sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA==" }, "emittery": { "version": "0.8.1", @@ -22924,7 +22922,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, "end-of-stream": { "version": "1.4.4", @@ -23037,7 +23035,7 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "escape-string-regexp": { "version": "4.0.0", @@ -23100,11 +23098,11 @@ } }, "eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", - "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", "requires": { - "@eslint/eslintrc": "^1.2.3", + "@eslint/eslintrc": "^1.3.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -23122,7 +23120,7 @@ "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -23316,7 +23314,7 @@ "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "requires": { "locate-path": "^2.0.0" } @@ -23484,9 +23482,9 @@ "requires": {} }, "eslint-plugin-testing-library": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.5.0.tgz", - "integrity": "sha512-eWQ19l6uWL7LW8oeMyQVSGjVYFnBqk7DMHjadm0yOHBvX3Xi9OBrsNuxoAMdX4r7wlQ5WWpW46d+CB6FWFL/PQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.5.1.tgz", + "integrity": "sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==", "requires": { "@typescript-eslint/utils": "^5.13.0" } @@ -23581,7 +23579,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "eventemitter3": { "version": "4.0.7", @@ -23650,7 +23648,7 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" }, "expect": { "version": "27.5.1", @@ -23751,7 +23749,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "fastq": { "version": "1.13.0", @@ -23909,9 +23907,9 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" }, "follow-redirects": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", - "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==" + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" }, "fork-ts-checker-webpack-plugin": { "version": "6.5.2", @@ -24035,7 +24033,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, "fs-extra": { "version": "10.1.0", @@ -24055,7 +24053,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -24082,7 +24080,7 @@ "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" }, "functions-have-names": { "version": "1.2.3", @@ -24281,7 +24279,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-property-descriptors": { "version": "1.0.0", @@ -24352,7 +24350,7 @@ "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "requires": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -24448,7 +24446,7 @@ "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" }, "http-errors": { "version": "2.0.0", @@ -24535,7 +24533,7 @@ "identity-obj-proxy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", "requires": { "harmony-reflect": "^1.4.6" } @@ -24548,7 +24546,7 @@ "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", "dev": true }, "immer": { @@ -24568,7 +24566,7 @@ "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", "dev": true }, "import-local": { @@ -24583,12 +24581,12 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -26712,9 +26710,9 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "memfs": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.3.tgz", - "integrity": "sha512-eivjfi7Ahr6eQTn44nvTnR60e4a1Fs1Via2kCR5lHo/kyNoiMWaXCNJ/GpSd0ilXas2JSOl9B5FTIhflXu0hlg==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.4.tgz", + "integrity": "sha512-W4gHNUE++1oSJVn8Y68jPXi+mkx3fXR5ITE/Ubz6EQ3xRpCN5k2CQ4AUR8094Z7211F876TyoBACGsIveqgiGA==", "requires": { "fs-monkey": "1.0.3" } @@ -26919,9 +26917,9 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" }, "node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" }, "nodemon": { "version": "2.0.16", @@ -27044,9 +27042,9 @@ } }, "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "requires": { "boolbase": "^1.0.0" } @@ -27067,9 +27065,9 @@ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" }, "object-keys": { "version": "1.1.1", @@ -27723,9 +27721,9 @@ "requires": {} }, "postcss-merge-longhand": { - "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==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.5.tgz", + "integrity": "sha512-NOG1grw9wIO+60arKa2YYsrbgvP6tp+jqc7+ZD5/MalIw234ooH2C6KlR6FEn4yle7GqZoBxSK1mLBE9KPur6w==", "requires": { "postcss-value-parser": "^4.2.0", "stylehacks": "^5.1.0" @@ -28329,12 +28327,11 @@ } }, "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "react-app-polyfill": { @@ -28483,13 +28480,12 @@ } }, "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", + "integrity": "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==", "requires": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.22.0" } }, "react-dropzone": { @@ -28616,16 +28612,10 @@ "prop-types": "^15.6.2" } }, - "react-virtualized-auto-sizer": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.6.tgz", - "integrity": "sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==", - "requires": {} - }, "react-window": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.6.tgz", - "integrity": "sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg==", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.7.tgz", + "integrity": "sha512-JHEZbPXBpKMmoNO1bNhoXOOLg/ujhL/BU4IqVU9r8eQPcy5KQnGHIHDRkJ0ns9IM5+Aq5LNwt3j8t3tIrePQzA==", "requires": { "@babel/runtime": "^7.0.0", "memoize-one": ">=3.1.1 <6" @@ -28914,9 +28904,9 @@ } }, "rollup": { - "version": "2.74.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.74.1.tgz", - "integrity": "sha512-K2zW7kV8Voua5eGkbnBtWYfMIhYhT9Pel2uhBk2WO5eMee161nPze/XRfvEQPFYz7KgrCCnmh2Wy0AMFLGGmMA==", + "version": "2.75.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.3.tgz", + "integrity": "sha512-YA29fLU6MAYSaDxIQYrGGOcbXlDmG96h0krGGYObroezcQ0KgEPM3+7MtKD/qeuUbFuAJXvKZee5dA1dpwq1PQ==", "requires": { "fsevents": "~2.3.2" } @@ -29011,12 +29001,11 @@ } }, "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "schema-utils": { @@ -29131,12 +29120,12 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -29147,7 +29136,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" }, "ms": { "version": "2.0.0", @@ -29978,9 +29967,9 @@ } }, "typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==" + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", + "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==" }, "unbox-primitive": { "version": "1.0.2", @@ -30431,9 +30420,9 @@ } }, "ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", + "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", "requires": {} } } @@ -30617,9 +30606,9 @@ }, "dependencies": { "@apideck/better-ajv-errors": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz", - "integrity": "sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.4.tgz", + "integrity": "sha512-Ic2d8ZT6HJiSikGVQvSklaFyw1OUv4g8sDOxa0PXSlbmN/3gL5IO1WYY9DOwTDqOFmjWoqG1yaaKnPDqYCE9KA==", "requires": { "json-schema": "^0.4.0", "jsonpointer": "^5.0.0", @@ -30875,9 +30864,9 @@ } }, "ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", + "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", "requires": {} }, "xdg-basedir": { diff --git a/interface/package.json b/interface/package.json index 375f96cb6..bfee5c32d 100644 --- a/interface/package.json +++ b/interface/package.json @@ -8,12 +8,12 @@ "@emotion/styled": "^11.8.1", "@msgpack/msgpack": "^2.7.2", "@mui/icons-material": "^5.8.0", - "@mui/material": "^5.8.0", - "@table-library/react-table-library": "^3.1.2", + "@mui/material": "^5.8.1", + "@table-library/react-table-library": "^3.1.4", "@types/lodash": "^4.14.182", - "@types/node": "^17.0.35", - "@types/react": "^17.0.43", - "@types/react-dom": "^17.0.14", + "@types/node": "^17.0.36", + "@types/react": "^18.0.9", + "@types/react-dom": "^18.0.5", "@types/react-router-dom": "^5.3.3", "async-validator": "^4.1.1", "axios": "^0.27.2", @@ -22,15 +22,15 @@ "lodash": "^4.17.21", "notistack": "^2.0.5", "parse-ms": "^3.0.0", - "react": "^17.0.2", + "react": "^18.1.0", "react-app-rewired": "^2.2.1", - "react-dom": "^17.0.2", + "react-dom": "^18.1.0", "react-dropzone": "^14.2.1", "react-icons": "^4.3.1", "react-router-dom": "^6.3.0", "react-scripts": "5.0.1", "sockette": "^2.0.6", - "typescript": "^4.6.4" + "typescript": "^4.7.2" }, "scripts": { "start": "react-app-rewired start", diff --git a/interface/src/CustomTheme.tsx b/interface/src/CustomTheme.tsx index d83ffeece..f5ff241ac 100644 --- a/interface/src/CustomTheme.tsx +++ b/interface/src/CustomTheme.tsx @@ -4,6 +4,8 @@ import { CssBaseline } from '@mui/material'; import { createTheme, responsiveFontSizes, ThemeProvider } from '@mui/material/styles'; import { blueGrey, blue } from '@mui/material/colors'; +import { RequiredChildrenProps } from './utils'; + const theme = responsiveFontSizes( createTheme({ typography: { @@ -21,7 +23,7 @@ const theme = responsiveFontSizes( }) ); -const CustomTheme: FC = ({ children }) => ( +const CustomTheme: FC = ({ children }) => ( {children} diff --git a/interface/src/components/SectionContent.tsx b/interface/src/components/SectionContent.tsx index 88cb6bb15..de205a7f8 100644 --- a/interface/src/components/SectionContent.tsx +++ b/interface/src/components/SectionContent.tsx @@ -2,7 +2,9 @@ import { FC } from 'react'; import { Paper, Divider } from '@mui/material'; -interface SectionContentProps { +import { RequiredChildrenProps } from '../utils'; + +interface SectionContentProps extends RequiredChildrenProps { title: string; titleGutter?: boolean; id?: string; diff --git a/interface/src/components/layout/Layout.tsx b/interface/src/components/layout/Layout.tsx index 30136be0c..c4f2c8e31 100644 --- a/interface/src/components/layout/Layout.tsx +++ b/interface/src/components/layout/Layout.tsx @@ -4,13 +4,15 @@ import { useLocation } from 'react-router-dom'; import { Box, Toolbar } from '@mui/material'; import { PROJECT_NAME } from '../../api/env'; +import { RequiredChildrenProps } from '../../utils'; + import LayoutDrawer from './LayoutDrawer'; import LayoutAppBar from './LayoutAppBar'; import { LayoutContext } from './context'; export const DRAWER_WIDTH = 240; -const Layout: FC = ({ children }) => { +const Layout: FC = ({ children }) => { const [mobileOpen, setMobileOpen] = useState(false); const [title, setTitle] = useState(PROJECT_NAME); const { pathname } = useLocation(); diff --git a/interface/src/components/routing/RequireAdmin.tsx b/interface/src/components/routing/RequireAdmin.tsx index 924933336..204ba9660 100644 --- a/interface/src/components/routing/RequireAdmin.tsx +++ b/interface/src/components/routing/RequireAdmin.tsx @@ -2,8 +2,9 @@ import { FC, useContext } from 'react'; import { Navigate } from 'react-router-dom'; import { AuthenticatedContext } from '../../contexts/authentication'; +import { RequiredChildrenProps } from '../../utils'; -const RequireAdmin: FC = ({ children }) => { +const RequireAdmin: FC = ({ children }) => { const authenticatedContext = useContext(AuthenticatedContext); return authenticatedContext.me.admin ? <>{children} : ; }; diff --git a/interface/src/components/routing/RequireAuthenticated.tsx b/interface/src/components/routing/RequireAuthenticated.tsx index 6ae24e760..67abf7d9c 100644 --- a/interface/src/components/routing/RequireAuthenticated.tsx +++ b/interface/src/components/routing/RequireAuthenticated.tsx @@ -8,7 +8,9 @@ import { } from '../../contexts/authentication/context'; import { storeLoginRedirect } from '../../api/authentication'; -const RequireAuthenticated: FC = ({ children }) => { +import { RequiredChildrenProps } from '../../utils'; + +const RequireAuthenticated: FC = ({ children }) => { const authenticationContext = useContext(AuthenticationContext); const location = useLocation(); diff --git a/interface/src/components/routing/RequireUnauthenticated.tsx b/interface/src/components/routing/RequireUnauthenticated.tsx index b8ef2ad61..43fee39d9 100644 --- a/interface/src/components/routing/RequireUnauthenticated.tsx +++ b/interface/src/components/routing/RequireUnauthenticated.tsx @@ -3,9 +3,10 @@ import { Navigate } from 'react-router-dom'; import * as AuthenticationApi from '../../api/authentication'; import { AuthenticationContext } from '../../contexts/authentication'; +import { RequiredChildrenProps } from '../../utils'; import { FeaturesContext } from '../../contexts/features'; -const RequireUnauthenticated: FC = ({ children }) => { +const RequireUnauthenticated: FC = ({ children }) => { const { features } = useContext(FeaturesContext); const authenticationContext = useContext(AuthenticationContext); diff --git a/interface/src/components/routing/RouterTabs.tsx b/interface/src/components/routing/RouterTabs.tsx index 49fd6528b..4c0b16c68 100644 --- a/interface/src/components/routing/RouterTabs.tsx +++ b/interface/src/components/routing/RouterTabs.tsx @@ -3,7 +3,9 @@ import { useNavigate } from 'react-router-dom'; import { Tabs, useMediaQuery, useTheme } from '@mui/material'; -interface RouterTabsProps { +import { RequiredChildrenProps } from '../../utils'; + +interface RouterTabsProps extends RequiredChildrenProps { value: string | false; } diff --git a/interface/src/contexts/authentication/Authentication.tsx b/interface/src/contexts/authentication/Authentication.tsx index 9577fbee4..a1310e894 100644 --- a/interface/src/contexts/authentication/Authentication.tsx +++ b/interface/src/contexts/authentication/Authentication.tsx @@ -4,12 +4,13 @@ import { useNavigate } from 'react-router-dom'; import * as AuthenticationApi from '../../api/authentication'; import { ACCESS_TOKEN } from '../../api/endpoints'; +import { RequiredChildrenProps } from '../../utils'; import { LoadingSpinner } from '../../components'; import { Me } from '../../types'; import { FeaturesContext } from '../features'; import { AuthenticationContext } from './context'; -const Authentication: FC = ({ children }) => { +const Authentication: FC = ({ children }) => { const { features } = useContext(FeaturesContext); const navigate = useNavigate(); const { enqueueSnackbar } = useSnackbar(); diff --git a/interface/src/contexts/features/FeaturesLoader.tsx b/interface/src/contexts/features/FeaturesLoader.tsx index 8f412717c..ed5dd73c0 100644 --- a/interface/src/contexts/features/FeaturesLoader.tsx +++ b/interface/src/contexts/features/FeaturesLoader.tsx @@ -2,13 +2,13 @@ import { FC, useCallback, useEffect, useState } from 'react'; import * as FeaturesApi from '../../api/features'; -import { extractErrorMessage } from '../../utils'; +import { extractErrorMessage, RequiredChildrenProps } from '../../utils'; import { Features } from '../../types'; import { ApplicationError, LoadingSpinner } from '../../components'; import { FeaturesContext } from '.'; -const FeaturesLoader: FC = (props) => { +const FeaturesLoader: FC = (props) => { const [errorMessage, setErrorMessage] = useState(); const [features, setFeatures] = useState(); diff --git a/interface/src/index.tsx b/interface/src/index.tsx index e0f77e141..e5473f9d6 100644 --- a/interface/src/index.tsx +++ b/interface/src/index.tsx @@ -1,15 +1,15 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; - +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; import { BrowserRouter } from 'react-router-dom'; import App from './App'; -ReactDOM.render( - +const root = createRoot(document.getElementById('root') as HTMLElement); + +root.render( + - , - document.getElementById('root') + ); diff --git a/interface/src/project/DashboardData.tsx b/interface/src/project/DashboardData.tsx index 42dd661df..31326af62 100644 --- a/interface/src/project/DashboardData.tsx +++ b/interface/src/project/DashboardData.tsx @@ -384,7 +384,10 @@ const DashboardData: FC = () => { const handleDownloadCsv = () => { const columns = [ { accessor: (dv: any) => dv.id.slice(2), name: 'Entity' }, - { accessor: (dv: any) => (typeof dv.v === 'number') ? new Intl.NumberFormat().format(dv.v) : dv.v, name: 'Value' }, + { + accessor: (dv: any) => (typeof dv.v === 'number' ? new Intl.NumberFormat().format(dv.v) : dv.v), + name: 'Value' + }, { accessor: (dv: any) => DeviceValueUOM_s[dv.u], name: 'UoM' } ]; downloadAsCsv( @@ -449,7 +452,7 @@ const DashboardData: FC = () => { } }; - const isCmdOnly = (dv: DeviceValue) => dv.v === undefined && dv.c; + const isCmdOnly = (dv: DeviceValue) => dv.v === '' && dv.c; function formatValue(value: any, uom: number) { if (value === undefined) { diff --git a/interface/src/project/OptionIcon.tsx b/interface/src/project/OptionIcon.tsx new file mode 100644 index 000000000..71be44969 --- /dev/null +++ b/interface/src/project/OptionIcon.tsx @@ -0,0 +1,39 @@ +import { FC } from 'react'; +import { SvgIconProps } from '@mui/material'; + +import EditOutlinedIcon from '@mui/icons-material/EditOutlined'; +import EditOffOutlinedIcon from '@mui/icons-material/EditOffOutlined'; + +import StarIcon from '@mui/icons-material/Star'; +import StarOutlineIcon from '@mui/icons-material/StarOutline'; + +import VisibilityOffOutlinedIcon from '@mui/icons-material/VisibilityOffOutlined'; +import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined'; + +import CommentsDisabledOutlinedIcon from '@mui/icons-material/CommentsDisabledOutlined'; +import InsertCommentOutlinedIcon from '@mui/icons-material/InsertCommentOutlined'; + +type OptionType = 'readonly' | 'web_exclude' | 'api_mqtt_exclude' | 'favorite'; + +const OPTION_ICONS: { [type in OptionType]: [React.ComponentType, React.ComponentType] } = { + readonly: [EditOffOutlinedIcon, EditOutlinedIcon], + web_exclude: [VisibilityOffOutlinedIcon, VisibilityOutlinedIcon], + api_mqtt_exclude: [CommentsDisabledOutlinedIcon, InsertCommentOutlinedIcon], + favorite: [StarIcon, StarOutlineIcon] +}; + +interface OptionIconProps { + type: OptionType; + isSet: boolean; +} + +const OptionIcon: FC = ({ type, isSet }) => { + const Icon = OPTION_ICONS[type][isSet ? 0 : 1]; + return isSet ? ( + + ) : ( + + ); +}; + +export default OptionIcon; diff --git a/interface/src/project/SettingsCustomization.tsx b/interface/src/project/SettingsCustomization.tsx index a5cac3aae..f1527a6dc 100644 --- a/interface/src/project/SettingsCustomization.tsx +++ b/interface/src/project/SettingsCustomization.tsx @@ -25,10 +25,12 @@ import { useSnackbar } from 'notistack'; import SaveIcon from '@mui/icons-material/Save'; import CancelIcon from '@mui/icons-material/Cancel'; -import EditOffOutlinedIcon from '@mui/icons-material/EditOffOutlined'; -import StarIcon from '@mui/icons-material/Star'; -import VisibilityOffOutlinedIcon from '@mui/icons-material/VisibilityOffOutlined'; -import CommentsDisabledOutlinedIcon from '@mui/icons-material/CommentsDisabledOutlined'; + +// import EditOffOutlinedIcon from '@mui/icons-material/EditOffOutlined'; +// import StarIcon from '@mui/icons-material/Star'; +// import VisibilityOffOutlinedIcon from '@mui/icons-material/VisibilityOffOutlined'; +// import CommentsDisabledOutlinedIcon from '@mui/icons-material/CommentsDisabledOutlined'; + import SettingsBackupRestoreIcon from '@mui/icons-material/SettingsBackupRestore'; import KeyboardArrowUpOutlinedIcon from '@mui/icons-material/KeyboardArrowUpOutlined'; import KeyboardArrowDownOutlinedIcon from '@mui/icons-material/KeyboardArrowDownOutlined'; @@ -36,6 +38,8 @@ import UnfoldMoreOutlinedIcon from '@mui/icons-material/UnfoldMoreOutlined'; import SearchIcon from '@mui/icons-material/Search'; import FilterListIcon from '@mui/icons-material/FilterList'; +import OptionIcon from './OptionIcon'; + import { ButtonRow, FormLoader, ValidatedTextField, SectionContent } from '../components'; import * as EMSESP from './api'; @@ -47,7 +51,7 @@ import { DeviceShort, Devices, DeviceEntity, DeviceEntityMask } from './types'; const SettingsCustomization: FC = () => { const { enqueueSnackbar } = useSnackbar(); - const [deviceEntities, setDeviceEntities] = useState([{ id: '', v: 0, s: '', m: 0, w: false }]); + const [deviceEntities, setDeviceEntities] = useState([{ id: '', v: 0, n: '', m: 0, w: false }]); const [devices, setDevices] = useState(); const [errorMessage, setErrorMessage] = useState(); const [selectedDevice, setSelectedDevice] = useState(0); @@ -199,6 +203,15 @@ const SettingsCustomization: FC = () => { return value; } + function formatName(de: DeviceEntity) { + if (de.n === undefined || de.n === de.id) { + return de.id; + } else if (de.n === '') { + return 'Command: ' + de.id; + } + return de.n + ' (' + de.id + ')'; + } + const getMaskNumber = (newMask: string[]) => { var new_mask = 0; for (let entry of newMask) { @@ -272,7 +285,7 @@ const SettingsCustomization: FC = () => { if (deviceEntities && selectedDevice) { const masked_entities = deviceEntities .filter((de) => de.m !== de.om) - .map((new_de) => new_de.m.toString(16).padStart(2, '0') + new_de.s); + .map((new_de) => new_de.m.toString(16).padStart(2, '0') + new_de.id); if (masked_entities.length > 60) { enqueueSnackbar('Selected entities exceeded limit of 60. Please Save in batches', { variant: 'warning' }); @@ -303,8 +316,18 @@ const SettingsCustomization: FC = () => { return ( <> - - Select a device and customize each of its entities using the options. + + Select a device and customize each of its entities using the options: + + + =mark as a favorite   + + =disable write action   + + =exclude from MQTT and API outputs   + + =hide from Web Dashboard + { }} /> - - : - + + + : + + { }} > - - - + - - - + - - - + - - - + - - : - - - + - + @@ -458,29 +475,44 @@ const SettingsCustomization: FC = () => { value={getMaskString(de.m)} onChange={(event, mask) => { de.m = getMaskNumber(mask); + if (de.n === '' && de.m & DeviceEntityMask.DV_READONLY) { + de.m = de.m | DeviceEntityMask.DV_WEB_EXCLUDE; + } if (de.m & DeviceEntityMask.DV_WEB_EXCLUDE) { de.m = de.m & ~DeviceEntityMask.DV_FAVORITE; } setMasks(['']); }} > - - + + - + - - + + - - + + - - {de.id} ({de.s}) - + {formatName(de)} {formatValue(de.v)} ))} diff --git a/interface/src/project/types.ts b/interface/src/project/types.ts index 9c1cfecef..c0f115a16 100644 --- a/interface/src/project/types.ts +++ b/interface/src/project/types.ts @@ -132,9 +132,9 @@ export interface DeviceData { } export interface DeviceEntity { - id: string; // name - v: any; // value, in any format - s: string; // shortname + id: string; // shortname + v?: any; // value, in any format, optional + n?: string; // fullname, optional m: number; // mask om?: number; // original mask before edits w: boolean; // writeable diff --git a/interface/src/utils/index.ts b/interface/src/utils/index.ts index c1fb87d8f..cf4c0d39c 100644 --- a/interface/src/utils/index.ts +++ b/interface/src/utils/index.ts @@ -4,3 +4,5 @@ export * from './route'; export * from './submit'; export * from './time'; export * from './useRest'; +export * from './props'; + diff --git a/interface/src/utils/props.ts b/interface/src/utils/props.ts new file mode 100644 index 000000000..1186a6241 --- /dev/null +++ b/interface/src/utils/props.ts @@ -0,0 +1,3 @@ +export interface RequiredChildrenProps { + children: React.ReactNode; +} diff --git a/mock-api/package-lock.json b/mock-api/package-lock.json index e7dd05f0a..5620b6cf0 100644 --- a/mock-api/package-lock.json +++ b/mock-api/package-lock.json @@ -14,7 +14,7 @@ "express": "^4.18.1", "express-sse": "^0.5.3", "nodemon": "^2.0.16", - "ws": "^8.6.0" + "ws": "^8.7.0" } }, "node_modules/@msgpack/msgpack": { @@ -1811,9 +1811,9 @@ } }, "node_modules/ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", + "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", "engines": { "node": ">=10.0.0" }, @@ -3169,9 +3169,9 @@ } }, "ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", + "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", "requires": {} }, "xdg-basedir": { diff --git a/mock-api/package.json b/mock-api/package.json index bdc44b1c3..b41cb5039 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -16,6 +16,6 @@ "express": "^4.18.1", "express-sse": "^0.5.3", "nodemon": "^2.0.16", - "ws": "^8.6.0" + "ws": "^8.7.0" } } diff --git a/mock-api/server.js b/mock-api/server.js index d6bc9fefc..0802ddcce 100644 --- a/mock-api/server.js +++ b/mock-api/server.js @@ -337,6 +337,7 @@ settings = { pbutton_gpio: 0, board_profile: 'S32', bool_format: 1, + bool_dashboard: 1, enum_format: 1, } @@ -473,7 +474,7 @@ const emsesp_devicedata_1 = { const emsesp_devicedata_2 = { label: 'Boiler: Nefit GBx72/Trendline/Cerapur/Greenstar Si/27i', data: [ - { v: 0, u: 0, id: '08reset', c: 'reset', l: ['-', 'maintenance', 'error'] }, + { v: '', u: 0, id: '08reset', c: 'reset', l: ['-', 'maintenance', 'error'] }, { v: 'false', u: 0, id: '08heating active' }, { v: 'false', u: 0, id: '04tapwater active' }, { v: 5, u: 1, id: '04selected flow temperature', c: 'selflowtemp' }, @@ -575,145 +576,161 @@ const emsesp_devicedata_4 = { ], } +// CUSTOMIZATION + const emsesp_deviceentities_1 = [ { v: '(0)', - id: 'error code', - s: 'errorcode', + n: 'error code', + id: 'errorcode', m: 0, w: false, }, { v: '14:54:39 06/06/2021', - id: 'date/time', - s: 'datetime', + n: 'date/time', + id: 'datetime', + m: 0, + w: false, + }, + { + v: 'test data', + n: 'test', + id: 'test', + m: 0, + w: false, + }, + { + v: 'roomTemp', + id: 'hc1/HA climate config creation', m: 0, w: false, }, { v: 18.2, - id: 'hc1 selected room temperature', - s: 'hc1/seltemp', + n: 'hc1 selected room temperature', + id: 'hc1/seltemp', m: 0, w: true, }, { v: 22.6, - id: 'hc1 current room temperature', - s: 'hc1/curtemp', + n: 'hc1 current room temperature', + id: 'hc1/curtemp', m: 0, w: false, }, { v: 'auto', - id: 'hc1 mode', - s: 'hc1/mode', + n: 'hc1 mode', + id: 'hc1/mode', m: 0, w: true, }, ] const emsesp_deviceentities_2 = [ - { v: false, id: 'heating active', s: 'heatingactive', m: 0, w: false }, - { v: false, id: 'tapwater active', s: 'tapwateractive', m: 0, w: false }, - { v: 5, id: 'selected flow temperature', s: 'selflowtemp', m: 0, w: true }, - { v: 0, id: 'burner selected max power', s: 'selburnpow', m: 0, w: true }, - { v: 0, id: 'heating pump modulation', s: 'heatingpumpmod', m: 0, w: false }, - { id: 'heating pump 2 modulation', s: 'heatingpump2mod', m: 0, w: false }, - { id: 'outside temperature', s: 'outdoortemp', m: 0, w: false }, - { v: 53, id: 'current flow temperature', s: 'curflowtemp', m: 0, w: false }, - { v: 51.8, id: 'return temperature', s: 'rettemp', m: 0, w: false }, - { id: 'mixing switch temperature', s: 'switchtemp', m: 0, w: false }, - { v: 1.3, id: 'system pressure', s: 'syspress', m: 0, w: false }, - { v: 54.6, id: 'actual boiler temperature', s: 'boiltemp', m: 0, w: false }, - { id: 'exhaust temperature', s: 'exhausttemp', m: 0, w: false }, - { v: false, id: 'gas', s: 'burngas', m: 0, w: false }, - { v: false, id: 'gas stage 2', s: 'burngas2', m: 0, w: false }, - { v: 0, id: 'flame current', s: 'flamecurr', m: 0, w: false }, - { v: false, id: 'heating pump', s: 'heatingpump', m: 0, w: false }, - { v: false, id: 'fan', s: 'fanwork', m: 0, w: false }, - { v: false, id: 'ignition', s: 'ignwork', m: 0, w: false }, - { v: false, id: 'oil preheating', s: 'oilpreheat', m: 0, w: false }, - { v: true, id: 'heating activated', s: 'heatingactivated', m: 0, w: false }, - { v: 80, id: 'heating temperature', s: 'heatingtemp', m: 0, w: false }, - { v: 70, id: 'burner pump max power', s: 'pumpmodmax', m: 0, w: false }, - { v: 30, id: 'burner pump min power', s: 'pumpmodmin', m: 0, w: false }, - { v: 1, id: 'pump delay', s: 'pumpdelay', m: 0, w: false }, - { v: 10, id: 'burner min period', s: 'burnminperiod', m: 0, w: false }, - { v: 0, id: 'burner min power', s: 'burnminpower', m: 0, w: false }, - { v: 50, id: 'burner max power', s: 'burnmaxpower', m: 0, w: false }, - { v: -6, id: 'hysteresis on temperature', s: 'boilhyston', m: 0, w: false }, - { v: 6, id: 'hysteresis off temperature', s: 'boilhystoff', m: 0, w: false }, - { v: 0, id: 'set flow temperature', s: 'setflowtemp', m: 0, w: true }, - { v: 0, id: 'burner set power', s: 'setburnpow', m: 0, w: false }, - { v: 0, id: 'burner current power', s: 'curburnpow', m: 0, w: false }, - { v: 326323, id: 'burner starts', s: 'burnstarts', m: 0, w: false }, - { v: 553437, id: 'total burner operating time', s: 'burnworkmin', m: 0, w: false }, - { v: 451286, id: 'total heat operating time', s: 'heatworkmin', m: 0, w: false }, - { v: 4672175, id: 'total UBA operating time', s: 'ubauptime', m: 0, w: false }, - { v: '1C(210) 06.06.2020 12:07 (0 min)', id: 'last error code', s: 'lastcode', m: 0, w: false }, - { v: '0H', id: 'service code', s: 'servicecode', m: 0, w: false }, - { v: 203, id: 'service code number', s: 'servicecodenumber', m: 0, w: false }, - { v: 'H00', id: 'maintenance message', s: 'maintenancemessage', m: 0, w: false }, - { v: 'manual', id: 'maintenance scheduled', s: 'maintenance', m: 0, w: false }, - { v: 6000, id: 'time to next maintenance', s: 'maintenancetime', m: 0, w: false }, - { v: '01.01.2012', id: 'next maintenance date', s: 'maintenancedate', m: 0, w: false }, - { v: true, id: 'dhw turn on/off', s: 'wwtapactivated', m: 0, w: false }, - { v: 62, id: 'dhw set temperature', s: 'wwsettemp', m: 0, w: false }, - { v: 60, id: 'dhw selected temperature', s: 'wwseltemp', m: 0, w: true }, - { id: 'dhw selected lower temperature', s: 'wwseltemplow', m: 2 }, - { id: 'dhw selected temperature for off', s: 'wwseltempoff', m: 2 }, - { id: 'dhw single charge temperature', s: 'wwseltempsingle', m: 2 }, - { v: 'flow', id: 'dhw type', s: 'wwtype', m: 0, w: false }, - { v: 'hot', id: 'dhw comfort', s: 'wwcomfort', m: 0, w: false }, - { v: 40, id: 'dhw flow temperature offset', s: 'wwflowtempoffset', m: 0, w: false }, - { v: 100, id: 'dhw max power', s: 'wwmaxpower', m: 0, w: false }, - { v: false, id: 'dhw circulation pump available', s: 'wwcircpump', m: 0, w: false }, - { v: '3-way valve', id: 'dhw charging type', s: 'wwchargetype', m: 0, w: false }, - { v: -5, id: 'dhw hysteresis on temperature', s: 'wwhyston', m: 0, w: false }, - { v: 0, id: 'dhw hysteresis off temperature', s: 'wwhystoff', m: 0, w: false }, - { v: 70, id: 'dhw disinfection temperature', s: 'wwdisinfectiontemp', m: 0, w: false }, - { v: 'off', id: 'dhw circulation pump mode', s: 'wwcircmode', m: 0, w: false }, - { v: false, id: 'dhw circulation active', s: 'wwcirc', m: 0, w: false }, - { v: 46.4, id: 'dhw current intern temperature', s: 'wwcurtemp', m: 0, w: false }, - { id: 'dhw current extern temperature', s: 'wwcurtemp2', m: 2 }, - { v: 0, id: 'dhw current tap water flow', s: 'wwcurflow', m: 0, w: false }, - { v: 46.3, id: 'dhw storage intern temperature', s: 'wwstoragetemp1', m: 0, w: false }, - { id: 'dhw storage extern temperature', s: 'wwstoragetemp2', m: 2 }, - { v: true, id: 'dhw activated', s: 'wwactivated', m: 0, w: false }, - { v: false, id: 'dhw one time charging', s: 'wwonetime', m: 0, w: false }, - { v: false, id: 'dhw disinfecting', s: 'wwdisinfecting', m: 0, w: false }, - { v: false, id: 'dhw charging', s: 'wwcharging', m: 0, w: false }, - { v: false, id: 'dhw recharging', s: 'wwrecharging', m: 0, w: false }, - { v: true, id: 'dhw temperature ok', s: 'wwtempok', m: 0, w: false }, - { v: false, id: 'dhw active', s: 'wwactive', m: 0, w: false }, - { v: true, id: 'dhw 3way valve active', s: 'ww3wayvalve', m: 0, w: false }, - { v: 0, id: 'dhw set pump power', s: 'wwsetpumppower', m: 0, w: true }, - { id: 'dhw mixer temperature', s: 'wwmixertemp', m: 2 }, - { id: 'dhw cylinder middle temperature (TS3)', s: 'wwcylmiddletemp', m: 2 }, - { v: 288768, id: 'dhw starts', s: 'wwstarts', m: 0, w: false }, - { v: 102151, id: 'dhw active time', s: 'wwworkm', m: 0, w: false }, + { u: 0, n: '', id: 'reset', m: 8, w: false }, + { v: false, n: 'heating active', id: 'heatingactive', m: 8, w: false }, + { v: false, n: 'tapwater active', id: 'tapwateractive', m: 4, w: false }, + { v: 5, n: 'selected flow temperature', id: 'selflowtemp', m: 4, w: true }, + { v: 0, n: 'burner selected max power', id: 'selburnpow', m: 14, w: true }, + { v: 0, n: 'heating pump modulation', id: 'heatingpumpmod', m: 0, w: false }, + { n: 'heating pump 2 modulation', id: 'heatingpump2mod', m: 0, w: false }, + { n: 'outside temperature', id: 'outdoortemp', m: 0, w: false }, + { v: 53, n: 'current flow temperature', id: 'curflowtemp', m: 0, w: false }, + { v: 51.8, n: 'return temperature', id: 'rettemp', m: 0, w: false }, + { n: 'mixing switch temperature', id: 'switchtemp', m: 0, w: false }, + { v: 1.3, n: 'system pressure', id: 'syspress', m: 0, w: false }, + { v: 54.6, n: 'actual boiler temperature', id: 'boiltemp', m: 0, w: false }, + { n: 'exhaust temperature', id: 'exhausttemp', m: 0, w: false }, + { v: false, n: 'gas', id: 'burngas', m: 0, w: false }, + { v: false, n: 'gas stage 2', id: 'burngas2', m: 0, w: false }, + { v: 0, n: 'flame current', id: 'flamecurr', m: 0, w: false }, + { v: false, n: 'heating pump', id: 'heatingpump', m: 0, w: false }, + { v: false, n: 'fan', id: 'fanwork', m: 0, w: false }, + { v: false, n: 'ignition', id: 'ignwork', m: 0, w: false }, + { v: false, n: 'oil preheating', id: 'oilpreheat', m: 0, w: false }, + { v: true, n: 'heating activated', id: 'heatingactivated', m: 0, w: false }, + { v: 80, n: 'heating temperature', id: 'heatingtemp', m: 0, w: false }, + { v: 70, n: 'burner pump max power', id: 'pumpmodmax', m: 0, w: false }, + { v: 30, n: 'burner pump min power', id: 'pumpmodmin', m: 0, w: false }, + { v: 1, n: 'pump delay', id: 'pumpdelay', m: 0, w: false }, + { v: 10, n: 'burner min period', id: 'burnminperiod', m: 0, w: false }, + { v: 0, n: 'burner min power', id: 'burnminpower', m: 0, w: false }, + { v: 50, n: 'burner max power', id: 'burnmaxpower', m: 0, w: false }, + { v: -6, n: 'hysteresis on temperature', id: 'boilhyston', m: 0, w: false }, + { v: 6, n: 'hysteresis off temperature', id: 'boilhystoff', m: 0, w: false }, + { v: 0, n: 'set flow temperature', id: 'setflowtemp', m: 0, w: true }, + { v: 0, n: 'burner set power', id: 'setburnpow', m: 0, w: false }, + { v: 0, n: 'burner current power', id: 'curburnpow', m: 0, w: false }, + { v: 326323, n: 'burner starts', id: 'burnstarts', m: 0, w: false }, + { v: 553437, n: 'total burner operating time', id: 'burnworkmin', m: 0, w: false }, + { v: 451286, n: 'total heat operating time', id: 'heatworkmin', m: 0, w: false }, + { v: 4672175, n: 'total UBA operating time', id: 'ubauptime', m: 0, w: false }, + { v: '1C(210) 06.06.2020 12:07 (0 min)', n: 'last error code', id: 'lastcode', m: 0, w: false }, + { v: '0H', n: 'service code', id: 'servicecode', m: 0, w: false }, + { v: 203, n: 'service code number', id: 'servicecodenumber', m: 0, w: false }, + { v: 'H00', n: 'maintenance message', id: 'maintenancemessage', m: 0, w: false }, + { v: 'manual', n: 'maintenance scheduled', id: 'maintenance', m: 0, w: false }, + { v: 6000, n: 'time to next maintenance', id: 'maintenancetime', m: 0, w: false }, + { v: '01.01.2012', n: 'next maintenance date', id: 'maintenancedate', m: 0, w: false }, + { v: true, n: 'dhw turn on/off', id: 'wwtapactivated', m: 0, w: false }, + { v: 62, n: 'dhw set temperature', id: 'wwsettemp', m: 0, w: false }, + { v: 60, n: 'dhw selected temperature', id: 'wwseltemp', m: 0, w: true }, + { n: 'dhw selected lower temperature', id: 'wwseltemplow', m: 2 }, + { n: 'dhw selected temperature for off', id: 'wwseltempoff', m: 2 }, + { n: 'dhw single charge temperature', id: 'wwseltempsingle', m: 2 }, + { v: 'flow', n: 'dhw type', id: 'wwtype', m: 0, w: false }, + { v: 'hot', n: 'dhw comfort', id: 'wwcomfort', m: 0, w: false }, + { v: 40, n: 'dhw flow temperature offset', id: 'wwflowtempoffset', m: 0, w: false }, + { v: 100, n: 'dhw max power', id: 'wwmaxpower', m: 0, w: false }, + { v: false, n: 'dhw circulation pump available', id: 'wwcircpump', m: 0, w: false }, + { v: '3-way valve', n: 'dhw charging type', id: 'wwchargetype', m: 0, w: false }, + { v: -5, n: 'dhw hysteresis on temperature', id: 'wwhyston', m: 0, w: false }, + { v: 0, n: 'dhw hysteresis off temperature', id: 'wwhystoff', m: 0, w: false }, + { v: 70, n: 'dhw disinfection temperature', id: 'wwdisinfectiontemp', m: 0, w: false }, + { v: 'off', n: 'dhw circulation pump mode', id: 'wwcircmode', m: 0, w: false }, + { v: false, n: 'dhw circulation active', id: 'wwcirc', m: 0, w: false }, + { v: 46.4, n: 'dhw current intern temperature', id: 'wwcurtemp', m: 0, w: false }, + { n: 'dhw current extern temperature', id: 'wwcurtemp2', m: 2 }, + { v: 0, n: 'dhw current tap water flow', id: 'wwcurflow', m: 0, w: false }, + { v: 46.3, n: 'dhw storage intern temperature', id: 'wwstoragetemp1', m: 0, w: false }, + { n: 'dhw storage extern temperature', id: 'wwstoragetemp2', m: 2 }, + { v: true, n: 'dhw activated', id: 'wwactivated', m: 0, w: false }, + { v: false, n: 'dhw one time charging', id: 'wwonetime', m: 0, w: false }, + { v: false, n: 'dhw disinfecting', id: 'wwdisinfecting', m: 0, w: false }, + { v: false, n: 'dhw charging', id: 'wwcharging', m: 0, w: false }, + { v: false, n: 'dhw recharging', id: 'wwrecharging', m: 0, w: false }, + { v: true, n: 'dhw temperature ok', id: 'wwtempok', m: 0, w: false }, + { v: false, n: 'dhw active', id: 'wwactive', m: 0, w: false }, + { v: true, n: 'dhw 3way valve active', id: 'ww3wayvalve', m: 0, w: false }, + { v: 0, n: 'dhw set pump power', id: 'wwsetpumppower', m: 0, w: true }, + { n: 'dhw mixer temperature', id: 'wwmixertemp', m: 2 }, + { n: 'dhw cylinder middle temperature (TS3)', id: 'wwcylmiddletemp', m: 2 }, + { v: 288768, n: 'dhw starts', id: 'wwstarts', m: 0, w: false }, + { v: 102151, n: 'dhw active time', id: 'wwworkm', m: 0, w: false }, ] const emsesp_deviceentities_4 = [ { v: 16, - id: 'hc2 selected room temperature', - s: 'hc2/seltemp', + n: 'hc2 selected room temperature', + id: 'hc2/seltemp', m: 8, w: true, }, { v: 18.5, - id: 'hc2 current room temperature', - s: 'hc2/curtemp', + n: 'hc2 current room temperature', + id: 'hc2/curtemp', m: 2, w: false, }, { v: 'off', - id: 'hc2 mode', - s: 'hc2/mode', + n: 'hc2 mode', + id: 'hc2/mode', m: 2, w: true, }, @@ -912,13 +929,13 @@ rest_server.post(EMSESP_DEVICEENTITIES_ENDPOINT, (req, res) => { }) function updateMask(entity, de, dd) { - const name = entity.slice(2) + const shortname = entity.slice(2) const new_mask = parseInt(entity.slice(0, 2), 16) - objIndex = de.findIndex((obj) => obj.s == name) + objIndex = de.findIndex((obj) => obj.id == shortname) if (objIndex !== -1) { de[objIndex].m = new_mask - const fullname = de[objIndex].id + const fullname = de[objIndex].n objIndex = dd.data.findIndex((obj) => obj.id.slice(2) == fullname) if (objIndex !== -1) { // see if the mask has changed @@ -930,7 +947,7 @@ function updateMask(entity, de, dd) { } } } else { - console.log("can't locate record for id " + id) + console.log("can't locate record for name " + shortname) } } diff --git a/pio_local.ini_example b/pio_local.ini_example index 9d7c4cd8d..9c2db40f8 100644 --- a/pio_local.ini_example +++ b/pio_local.ini_example @@ -32,5 +32,5 @@ build_type = debug monitor_filters = esp32_exception_decoder debug_tool = esp-prog debug_init_break = tbreak setup -build_flags = ${factory_settings.build_flags} ${common.debug_flags} -DONEWIRE_CRC16=0 -DNO_GLOBAL_ARDUINOOTA -DARDUINOJSON_ENABLE_STD_STRING=1 -DESP32=1 -DARDUINO_ARCH_ESP32=1 +build_flags = ${factory_settings.build_flags} -DONEWIRE_CRC16=0 -DNO_GLOBAL_ARDUINOOTA -DARDUINOJSON_ENABLE_STD_STRING=1 -DESP32=1 -DARDUINO_ARCH_ESP32=1 extra_scripts = pre:scripts/build_interface.py diff --git a/platformio.ini b/platformio.ini index 02053760e..915333874 100644 --- a/platformio.ini +++ b/platformio.ini @@ -62,8 +62,7 @@ extra_scripts = pre:scripts/build_interface.py scripts/rename_fw.py board = esp32dev -; platform = espressif32 -platform = https://github.com/platformio/platform-espressif32.git ; develop +platform = espressif32 board_build.partitions = esp32_partition_app1984k_spiffs64k.csv build_flags = ${common.build_flags} build_unflags = ${common.unbuild_flags} diff --git a/src/device_library.h b/src/device_library.h index 21fd47917..acbbc514c 100644 --- a/src/device_library.h +++ b/src/device_library.h @@ -68,7 +68,7 @@ {224, DeviceType::CONTROLLER, F("9000i"), DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09 {229, DeviceType::CONTROLLER, F("8700i"), DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09 {230, DeviceType::CONTROLLER, F("BC Base"), DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09 -{240, DeviceType::CONTROLLER, F("Rego 3000"), DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09 +{240, DeviceType::CONTROLLER, F("Rego 3000"), DeviceFlags::EMS_DEVICE_FLAG_IVT}, // 0x09 {241, DeviceType::CONTROLLER, F("Condens 5000i"), DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x09 // Thermostat - not currently supporting write operations, like the Easy/100 types - 0x18 diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 86c3b3762..c623d1e03 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -206,6 +206,22 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const FL_(maintenanceDate), DeviceValueUOM::NONE, MAKE_CF_CB(set_maintenancedate)); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, + &emergencyOps_, + DeviceValueType::BOOL, + nullptr, + FL_(emergencyOps), + DeviceValueUOM::NONE, + MAKE_CF_CB(set_emergency_ops)); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA, + &emergencyTemp_, + DeviceValueType::UINT, + nullptr, + FL_(emergencyTemp), + DeviceValueUOM::DEGREES, + MAKE_CF_CB(set_emergency_temp), + 40, + 70); /* * Hybrid heatpump with telegram 0xBB is readable and writeable in boiler and thermostat @@ -425,6 +441,15 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const MAKE_CF_CB(set_ww_maxpower), 0, 130); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + &wwMaxTemp_, + DeviceValueType::UINT, + nullptr, + FL_(wwMaxTemp), + DeviceValueUOM::DEGREES, + MAKE_CF_CB(set_ww_maxtemp), + 0, + 70); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCircPump_, DeviceValueType::BOOL, @@ -775,6 +800,9 @@ void Boiler::process_UBAParametersPlus(std::shared_ptr telegram) has_update(telegram, boilHystOff_, 8); has_update(telegram, boilHystOn_, 9); has_update(telegram, burnMinPeriod_, 10); + has_update(telegram, emergencyOps_, 18); + has_update(telegram, emergencyTemp_, 19); + // has_update(telegram, pumpType_, 11); // guess, RC300 manual: power controlled, pressure controlled 1-4? // has_update(telegram, pumpDelay_, 12); // guess // has_update(telegram, pumpModMax_, 13); // guess @@ -795,6 +823,7 @@ void Boiler::process_UBAParameterWWPlus(std::shared_ptr telegram has_update(telegram, wwDisinfectionTemp_, 12); // setting here, status in E9 has_update(telegram, wwSelTempSingle_, 16); has_update(telegram, wwSelTempLow_, 18); + has_update(telegram, wwMaxTemp_, 20); has_update(telegram, wwChargeOptimization_, 25); uint8_t wwComfort1 = EMS_VALUE_UINT_NOTSET; @@ -1412,6 +1441,18 @@ bool Boiler::set_ww_maxpower(const char * value, const int8_t id) { return true; } +// set dhw maximum temperature +bool Boiler::set_ww_maxtemp(const char * value, const int8_t id) { + int v = 0; + if (!Helpers::value2number(value, v)) { + return false; + } + + write_command(EMS_TYPE_UBAParameterWWPlus, 20, v, EMS_TYPE_UBAParameterWWPlus); + + return true; +} + // set min pump modulation bool Boiler::set_min_pump(const char * value, const int8_t id) { int v = 0; @@ -1832,4 +1873,24 @@ bool Boiler::set_pool_temp(const char * value, const int8_t id) { return true; } +bool Boiler::set_emergency_temp(const char * value, const int8_t id) { + int v = 0; + if (!Helpers::value2temperature(value, v)) { + return false; + } + + write_command(EMS_TYPE_UBAParametersPlus, 19, v, EMS_TYPE_UBAParametersPlus); + + return true; +} + +bool Boiler::set_emergency_ops(const char * value, const int8_t id) { + bool v = false; + if (!Helpers::value2bool(value, v)) { + return false; + } + write_command(EMS_TYPE_UBAParametersPlus, 18, v ? 0x01 : 0x00, EMS_TYPE_UBAParametersPlus); + return true; +} + } // namespace emsesp diff --git a/src/devices/boiler.h b/src/devices/boiler.h index e02465905..f60b65120 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -81,6 +81,7 @@ class Boiler : public EMSdevice { uint8_t wwSetPumpPower_; // ww pump speed/power? uint8_t wwFlowTempOffset_; // Boiler offset for ww heating uint8_t wwMaxPower_; // DHW maximum power + uint8_t wwMaxTemp_; // DHW maximum temperature uint32_t wwStarts_; // DHW starts uint32_t wwStarts2_; // DHW control starts uint32_t wwWorkM_; // DHW minutes @@ -133,6 +134,8 @@ class Boiler : public EMSdevice { char lastCode_[50]; // last error code char serviceCode_[4]; // 3 character status/service code uint16_t serviceCodeNumber_; // error/service code + uint8_t emergencyOps_; + uint8_t emergencyTemp_; // info uint32_t upTimeControl_; // Operating time control @@ -255,6 +258,7 @@ class Boiler : public EMSdevice { bool set_ww_temp_single(const char * value, const int8_t id); bool set_ww_disinfect_temp(const char * value, const int8_t id); bool set_ww_maxpower(const char * value, const int8_t id); + bool set_ww_maxtemp(const char * value, const int8_t id); bool set_ww_flowTempOffset(const char * value, const int8_t id); bool set_ww_chargeOptimization(const char * value, const int8_t id); bool set_flow_temp(const char * value, const int8_t id); @@ -276,6 +280,8 @@ class Boiler : public EMSdevice { bool set_ww_hyst_on(const char * value, const int8_t id); bool set_ww_hyst_off(const char * value, const int8_t id); bool set_pool_temp(const char * value, const int8_t id); + bool set_emergency_temp(const char * value, const int8_t id); + bool set_emergency_ops(const char * value, const int8_t id); /* bool set_hybridStrategy(const char * value, const int8_t id); bool set_switchOverTemp(const char * value, const int8_t id); diff --git a/src/devices/controller.cpp b/src/devices/controller.cpp index f7b0b952f..e55213568 100644 --- a/src/devices/controller.cpp +++ b/src/devices/controller.cpp @@ -25,8 +25,10 @@ REGISTER_FACTORY(Controller, EMSdevice::DeviceType::CONTROLLER); Controller::Controller(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const std::string & name, uint8_t flags, uint8_t brand) : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { // IVT broadcasts Thermostat time from controller (0x09) if display is off. - register_telegram_type(0x06, F("RCTime"), false, MAKE_PF_CB(process_dateTime)); - register_device_value(DeviceValueTAG::TAG_NONE, &dateTime_, DeviceValueType::STRING, nullptr, FL_(dateTime), DeviceValueUOM::NONE); + if ((flags & 0x0F) == EMS_DEVICE_FLAG_IVT) { + register_telegram_type(0x06, F("RCTime"), false, MAKE_PF_CB(process_dateTime)); + register_device_value(DeviceValueTAG::TAG_NONE, &dateTime_, DeviceValueType::STRING, nullptr, FL_(dateTime), DeviceValueUOM::NONE); + } } // process_dateTime - type 0x06 - date and time from a thermostat - 14 bytes long, IVT only @@ -35,7 +37,7 @@ void Controller::process_dateTime(std::shared_ptr telegram) { return; } char newdatetime[sizeof(dateTime_)]; - // publich as dd.mm.yyyy hh:mmF + // publish as dd.mm.yyyy hh:mm snprintf(newdatetime, sizeof(dateTime_), "%02d.%02d.%04d %02d:%02d", @@ -47,5 +49,4 @@ void Controller::process_dateTime(std::shared_ptr telegram) { has_update(dateTime_, newdatetime, sizeof(dateTime_)); } - } // namespace emsesp \ No newline at end of file diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 7be718f9b..757be06eb 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -135,6 +135,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) { monitor_typeids = {0x02A5, 0x02A6, 0x02A7, 0x02A8, 0x02A9, 0x02AA, 0x02AB, 0x02AC}; set_typeids = {0x02B9, 0x02BA, 0x02BB, 0x02BC, 0x02BD, 0x02BE, 0x02BF, 0x02C0}; + set2_typeids = {0x02CC, 0x02CE, 0x02D0, 0x02D2}; // max. 4 heating circuits supported ny RC310 summer_typeids = {0x02AF, 0x02B0, 0x02B1, 0x02B2, 0x02B3, 0x02B4, 0x02B5, 0x02B6}; curve_typeids = {0x029B, 0x029C, 0x029D, 0x029E, 0x029F, 0x02A0, 0x02A1, 0x02A2}; summer2_typeids = {0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0476, 0x0477, 0x0478}; @@ -145,6 +146,9 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i register_telegram_type(curve_typeids[i], F("RC300Curves"), false, MAKE_PF_CB(process_RC300Curve)); register_telegram_type(summer2_typeids[i], F("RC300Summer2"), false, MAKE_PF_CB(process_RC300Summer2)); } + for (uint8_t i = 0; i < set2_typeids.size(); i++) { + register_telegram_type(set2_typeids[i], F("RC300Set2"), false, MAKE_PF_CB(process_RC300Set2)); + } register_telegram_type(0x2F5, F("RC300WWmode"), true, MAKE_PF_CB(process_RC300WWmode)); register_telegram_type(0x31B, F("RC300WWtemp"), true, MAKE_PF_CB(process_RC300WWtemp)); register_telegram_type(0x31D, F("RC300WWmode2"), false, MAKE_PF_CB(process_RC300WWmode2)); @@ -253,6 +257,16 @@ std::shared_ptr Thermostat::heating_circuit(std::sha } } + // not found, search set2 types + if (hc_num == 0) { + for (uint8_t i = 0; i < set2_typeids.size(); i++) { + if (set2_typeids[i] == telegram->type_id) { + hc_num = i + 1; + break; + } + } + } + // not found, search summer message types if (hc_num == 0) { for (uint8_t i = 0; i < summer_typeids.size(); i++) { @@ -365,6 +379,9 @@ std::shared_ptr Thermostat::heating_circuit(std::sha if (set_typeids.size()) { toggle_fetch(set_typeids[hc_num - 1], toggle_); } + if (hc_num <= set2_typeids.size()) { + toggle_fetch(set2_typeids[hc_num - 1], toggle_); + } if (summer_typeids.size()) { toggle_fetch(summer_typeids[hc_num - 1], toggle_); } @@ -959,6 +976,10 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { has_update(telegram, hc->manualtemp, 10); // is * 2 has_enumupdate(telegram, hc->program, 11, 1); // timer program 1 or 2 + + has_enumupdate(telegram, hc->reducemode, 5, 1); // 1-outdoor temp threshold, 2-room temp threshold, 3-reduced mode + has_update(telegram, hc->reducetemp, 9); + has_update(telegram, hc->noreducetemp, 12); } // types 0x2AF ff @@ -1004,8 +1025,10 @@ void Thermostat::process_RC300Curve(std::shared_ptr telegram) { return; } - has_update(telegram, hc->controlmode, 0); // 1-outdoor, 2-simple, 3-MPC, 4-room, 5-power, 6-const - has_update(telegram, hc->heatingtype, 1); // 1=radiator, 2=convector, 3=floor + has_enumupdate(telegram, hc->controlmode, 0, 1); // 1-weather_compensated, 2-outside_footpoint,3-n/a, 4-room -- RC310 + has_update(telegram, hc->heatingtype, 1); // 1=radiator, 2=convector, 3=floor + has_update(telegram, hc->switchonoptimization, 4); + has_enumupdate(telegram, hc->nofrostmode, 5, 1); // 1-room, 2-outdoor, 3- room & outdoor has_update(telegram, hc->nofrosttemp, 6); if (hc->heatingtype < 3) { @@ -1059,10 +1082,24 @@ void Thermostat::process_RC300OutdoorTemp(std::shared_ptr telegr // 0x240 RC300 parameter void Thermostat::process_RC300Settings(std::shared_ptr telegram) { + has_update(telegram, ibaDamping_, 8); has_enumupdate(telegram, ibaBuildingType_, 9, 1); // 1=light, 2=medium, 3=heavy has_update(telegram, ibaMinExtTemperature_, 10); } +// 0x2CC - e.g. wwprio for RC310 hcx parameter +void Thermostat::process_RC300Set2(std::shared_ptr telegram) { + // typeids are not in a raw. hc:0x2CC, hc2: 0x2CE for RC310 + // telegram is either offset 3 with data lenght of 1 and values 0/1 (radiators) - 10 0B FF 03 01 CC 01 F6 + // or offset 0 with data lenght of 6 bytes - offset 3 values are 0x00 or 0xFF - 10 0B FF 00 01 CE FF 13 0A FF 1E 00 20 + + std::shared_ptr hc = heating_circuit(telegram); + if (hc == nullptr) { + return; + } + has_update(telegram, hc->wwprio, 3); +} + // 0x267 RC300 floordrying void Thermostat::process_RC300Floordry(std::shared_ptr telegram) { has_update(telegram, floordrystatus_, 0); @@ -1635,14 +1672,20 @@ bool Thermostat::set_heatingpid(const char * value, const int8_t id) { return true; } -// 0xA5 - Set the damping settings +// 0xA5 and 0x0240- Set the damping settings bool Thermostat::set_damping(const char * value, const int8_t id) { bool dmp; - if (Helpers::value2bool(value, dmp)) { - write_command(EMS_TYPE_IBASettings, 21, dmp ? 0xFF : 0, EMS_TYPE_IBASettings); - return true; + if (model() == EMS_DEVICE_FLAG_RC300) { + if (Helpers::value2bool(value, dmp)) { + write_command(0x240, 8, dmp ? 0xFF : 0, 0x240); + return true; + } + } else { + if (Helpers::value2bool(value, dmp)) { + write_command(EMS_TYPE_IBASettings, 21, dmp ? 0xFF : 0, EMS_TYPE_IBASettings); + return true; + } } - return false; } @@ -1788,12 +1831,16 @@ bool Thermostat::set_wwprio(const char * value, const int8_t id) { if (!Helpers::value2bool(value, b)) { return false; } - - write_command(set_typeids[hc->hc()], 21, b ? 0xFF : 0x00, set_typeids[hc->hc()]); + if ((model() == EMS_DEVICE_FLAG_RC300)) { + write_command(set2_typeids[hc->hc()], 3, b ? 0xFF : 0x00, set2_typeids[hc->hc()]); + } else { + write_command(set_typeids[hc->hc()], 21, b ? 0xFF : 0x00, set_typeids[hc->hc()]); + } return true; } + // sets the thermostat ww circulation working mode, where mode is a string bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { uint8_t set = 0xFF; @@ -2382,7 +2429,25 @@ bool Thermostat::set_fastheatup(const char * value, const int8_t id) { return true; } -// sets the thermostat reducemode for RC35 +// Set switchonoptimization RC310 +bool Thermostat::set_switchonoptimization(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + + bool b = false; + + if (!Helpers::value2bool(value, b)) { + return false; + } + write_command(curve_typeids[hc->hc()], 4, b ? 0xFF : 0x00, curve_typeids[hc->hc()]); + return true; +} + + +// sets the thermostat reducemode for RC35 and RC310 bool Thermostat::set_reducemode(const char * value, const int8_t id) { uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; std::shared_ptr hc = heating_circuit(hc_num); @@ -2391,14 +2456,20 @@ bool Thermostat::set_reducemode(const char * value, const int8_t id) { } uint8_t set = 0xFF; - if (!Helpers::value2enum(value, set, FL_(enum_reducemode))) { - return false; + if (model() == EMS_DEVICE_FLAG_RC300) { + if (Helpers::value2enum(value, set, FL_(enum_reducemode1))) { + write_command(set_typeids[hc->hc()], 5, set + 1, set_typeids[hc->hc()]); + } + } else { + if (Helpers::value2enum(value, set, FL_(enum_reducemode))) { + write_command(set_typeids[hc->hc()], EMS_OFFSET_RC35Set_reducemode, set, set_typeids[hc->hc()]); + return true; + } } - - write_command(set_typeids[hc->hc()], EMS_OFFSET_RC35Set_reducemode, set, set_typeids[hc->hc()]); return true; } + // sets the thermostat reducemode for RC35 vacations bool Thermostat::set_vacreducemode(const char * value, const int8_t id) { uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; @@ -2416,20 +2487,25 @@ bool Thermostat::set_vacreducemode(const char * value, const int8_t id) { return true; } -// sets the thermostat nofrost mode for RC35 +// sets the thermostat nofrost mode for RC35, RC300/RC310 bool Thermostat::set_nofrostmode(const char * value, const int8_t id) { uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; std::shared_ptr hc = heating_circuit(hc_num); if (hc == nullptr) { return false; } - uint8_t set = 0xFF; - if (!Helpers::value2enum(value, set, FL_(enum_nofrostmode))) { - return false; + if (model() == EMS_DEVICE_FLAG_RC300) { + if (Helpers::value2enum(value, set, FL_(enum_nofrostmode1))) { + write_command(curve_typeids[hc->hc()], 5, set + 1, curve_typeids[hc->hc()]); + return true; + } + } else { + if (Helpers::value2enum(value, set, FL_(enum_nofrostmode))) { + write_command(set_typeids[hc->hc()], EMS_OFFSET_RC35Set_nofrostmode, set, set_typeids[hc->hc()]); + return true; + } } - - write_command(set_typeids[hc->hc()], EMS_OFFSET_RC35Set_nofrostmode, set, set_typeids[hc->hc()]); return true; } @@ -2467,11 +2543,16 @@ bool Thermostat::set_controlmode(const char * value, const int8_t id) { } uint8_t set = 0xFF; - if (model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + if (model() == EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_controlmode))) { write_command(curve_typeids[hc->hc()], 0, set, curve_typeids[hc->hc()]); return true; } + } else if (model() == EMS_DEVICE_FLAG_RC300) { + if (Helpers::value2enum(value, set, FL_(enum_controlmode1))) { + write_command(curve_typeids[hc->hc()], 0, set + 1, curve_typeids[hc->hc()]); + return true; + } } else if (model() == EMS_DEVICE_FLAG_RC30) { if (Helpers::value2enum(value, set, FL_(enum_controlmode2))) { write_command(curve_typeids[hc->hc()], 1, set, curve_typeids[hc->hc()]); @@ -2894,6 +2975,16 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co offset = 0; factor = 1; break; + case HeatingCircuit::Mode::NOREDUCE: + validate_typeid = set_typeid; + offset = 12; + factor = 1; + break; + case HeatingCircuit::Mode::REDUCE: + validate_typeid = set_typeid; + offset = 9; + factor = 1; + break; default: // HeatingCircuit::Mode::AUTO: uint8_t mode_ = hc->get_mode(); @@ -3262,6 +3353,8 @@ void Thermostat::register_device_values() { FL_(ibaMinExtTemperature), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_minexttemp)); + register_device_value( + DeviceValueTAG::TAG_THERMOSTAT_DATA, &ibaDamping_, DeviceValueType::BOOL, nullptr, FL_(damping), DeviceValueUOM::NONE, MAKE_CF_CB(set_damping)); register_device_value( DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwSetTemp_, DeviceValueType::UINT, nullptr, FL_(wwSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwtemp)); register_device_value( @@ -3829,6 +3922,8 @@ void Thermostat::register_device_values_hc(std::shared_ptrroominfl_factor, DeviceValueType::UINT, FL_(div10), FL_(roominfl_factor), DeviceValueUOM::NONE, MAKE_CF_CB(set_roominfl_factor)); register_device_value(tag, &hc->curroominfl, DeviceValueType::SHORT, FL_(div10), FL_(curroominfl), DeviceValueUOM::DEGREES_R); + register_device_value( + tag, &hc->nofrostmode, DeviceValueType::ENUM, FL_(enum_nofrostmode1), FL_(nofrostmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_nofrostmode)); register_device_value(tag, &hc->nofrosttemp, DeviceValueType::INT, nullptr, FL_(nofrosttemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_nofrosttemp)); register_device_value(tag, &hc->targetflowtemp, DeviceValueType::UINT, nullptr, FL_(targetflowtemp), DeviceValueUOM::DEGREES); register_device_value( @@ -3844,11 +3939,22 @@ void Thermostat::register_device_values_hc(std::shared_ptrsummermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE); register_device_value( - tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode)); + tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode1), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode)); register_device_value(tag, &hc->program, DeviceValueType::ENUM, FL_(enum_progMode), FL_(program), DeviceValueUOM::NONE, MAKE_CF_CB(set_program)); register_device_value( tag, &hc->tempautotemp, DeviceValueType::INT, FL_(div2), FL_(tempautotemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_tempautotemp), -1, 30); register_device_value(tag, &hc->fastHeatup, DeviceValueType::UINT, nullptr, FL_(fastheatup), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_fastheatup)); + register_device_value(tag, + &hc->switchonoptimization, + DeviceValueType::BOOL, + nullptr, + FL_(switchonoptimization), + DeviceValueUOM::NONE, + MAKE_CF_CB(set_switchonoptimization)); + register_device_value(tag, &hc->reducemode, DeviceValueType::ENUM, FL_(enum_reducemode1), FL_(reducemode), DeviceValueUOM::NONE, MAKE_CF_CB(set_reducemode)); + register_device_value(tag, &hc->noreducetemp, DeviceValueType::INT, nullptr, FL_(noreducetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_noreducetemp)); + register_device_value(tag, &hc->reducetemp, DeviceValueType::INT, nullptr, FL_(reducetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_reducetemp)); + register_device_value(tag, &hc->wwprio, DeviceValueType::BOOL, nullptr, FL_(wwprio), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwprio)); break; case EMS_DEVICE_FLAG_CRF: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode5), FL_(mode), DeviceValueUOM::NONE); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 2fde27634..b94c517c2 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -80,6 +80,7 @@ class Thermostat : public EMSdevice { char switchtime1[16]; char switchtime2[16]; uint8_t climate; + uint8_t switchonoptimization; // RC 10 uint8_t reducehours; // night reduce duration @@ -160,6 +161,7 @@ class Thermostat : public EMSdevice { // each thermostat has a list of heating controller type IDs for reading and writing std::vector monitor_typeids; std::vector set_typeids; + std::vector set2_typeids; std::vector timer_typeids; std::vector timer2_typeids; std::vector summer_typeids; @@ -357,6 +359,7 @@ class Thermostat : public EMSdevice { void process_CRFMonitor(std::shared_ptr telegram); void process_RC300Monitor(std::shared_ptr telegram); void process_RC300Set(std::shared_ptr telegram); + void process_RC300Set2(std::shared_ptr telegram); void process_RC300Summer(std::shared_ptr telegram); void process_RC300Summer2(std::shared_ptr telegram); void process_RC300WWmode(std::shared_ptr telegram); @@ -412,7 +415,6 @@ class Thermostat : public EMSdevice { bool set_vacreducetemp(const char * value, const int8_t id); bool set_vacreducemode(const char * value, const int8_t id); bool set_nofrostmode(const char * value, const int8_t id); - bool set_remotetemp(const char * value, const int8_t id); bool set_roominfluence(const char * value, const int8_t id); bool set_roominfl_factor(const char * value, const int8_t id); @@ -426,6 +428,7 @@ class Thermostat : public EMSdevice { bool set_controlmode(const char * value, const int8_t id); bool set_wwprio(const char * value, const int8_t id); bool set_fastheatup(const char * value, const int8_t id); + bool set_switchonoptimization(const char * value, const int8_t id); // set functions - these don't use the id/hc, the parameters are ignored bool set_wwmode(const char * value, const int8_t id); diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 29d2759a2..92561391a 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -716,11 +716,9 @@ void EMSdevice::generate_values_web(JsonObject & output) { auto mask = Helpers::hextoa((uint8_t)(dv.state >> 4), false); // create mask to a 2-char string - // add name, prefixing the tag if it exists. This is the id used for the table sorting + // add name, prefixing the tag if it exists. This is the id used in the WebUI table and must be unique if ((dv.tag == DeviceValueTAG::TAG_NONE) || tag_to_string(dv.tag).empty()) { obj["id"] = mask + read_flash_string(dv.full_name); - } else if (dv.tag < DeviceValueTAG::TAG_HC1) { - obj["id"] = mask + tag_to_string(dv.tag) + " " + read_flash_string(dv.full_name); } else { obj["id"] = mask + tag_to_string(dv.tag) + " " + read_flash_string(dv.full_name); } @@ -775,7 +773,7 @@ void EMSdevice::generate_values_web(JsonObject & output) { // as generate_values_web() but stripped down to only show all entities and their state // this is used only for WebCustomizationService::device_entities() -void EMSdevice::generate_values_web_all(JsonArray & output) { +void EMSdevice::generate_values_web_customization(JsonArray & output) { for (const auto & dv : devicevalues_) { // also show commands and entities that have an empty full name JsonObject obj = output.createNestedObject(); @@ -831,29 +829,29 @@ void EMSdevice::generate_values_web_all(JsonArray & output) { obj["v"] = (divider > 0) ? time_value / divider : time_value * factor; // sometimes we need to divide by 60 } } - } else { - // must always have v for sorting to work in web - obj["v"] = ""; } - // add name, prefixing the tag if it exists as the id (key for table sorting) - if (dv.full_name) { - if ((dv.tag == DeviceValueTAG::TAG_NONE) || tag_to_string(dv.tag).empty()) { - obj["id"] = dv.full_name; - } else { - char name[50]; - snprintf(name, sizeof(name), "%s %s", tag_to_string(dv.tag).c_str(), read_flash_string(dv.full_name).c_str()); - obj["id"] = name; + // id holds the shortname and must always have a value for the WebUI table to work + if (dv.tag >= DeviceValueTAG::TAG_HC1) { + obj["id"] = tag_to_string(dv.tag) + "/" + read_flash_string(dv.short_name); + } else { + obj["id"] = read_flash_string(dv.short_name); + } + + // n is the fullname, and can be optional + // don't add the fullname if its a command + if (dv.type != DeviceValueType::CMD) { + if (dv.full_name) { + if ((dv.tag == DeviceValueTAG::TAG_NONE) || tag_to_string(dv.tag).empty()) { + obj["n"] = dv.full_name; + } else { + char name[50]; + snprintf(name, sizeof(name), "%s %s", tag_to_string(dv.tag).c_str(), read_flash_string(dv.full_name).c_str()); + obj["n"] = name; + } } } else { - obj["id"] = ""; - } - - // shortname - if (dv.tag >= DeviceValueTAG::TAG_HC1) { - obj["s"] = tag_to_string(dv.tag) + "/" + read_flash_string(dv.short_name); - } else { - obj["s"] = dv.short_name; + obj["n"] = ""; } obj["m"] = dv.state >> 4; // send back the mask state. We're only interested in the high nibble diff --git a/src/emsdevice.h b/src/emsdevice.h index 3da12a4e3..603e353c8 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -200,7 +200,7 @@ class EMSdevice { enum OUTPUT_TARGET : uint8_t { API_VERBOSE, API_SHORTNAMES, MQTT, CONSOLE }; bool generate_values(JsonObject & output, const uint8_t tag_filter, const bool nested, const uint8_t output_target); void generate_values_web(JsonObject & output); - void generate_values_web_all(JsonArray & output); + void generate_values_web_customization(JsonArray & output); void register_device_value(uint8_t tag, void * value_p, @@ -315,6 +315,9 @@ class EMSdevice { // device flags: The lower 4 bits hold the unique identifier, the upper 4 bits are used for specific flags static constexpr uint8_t EMS_DEVICE_FLAG_NONE = 0; + // Controller + static constexpr uint8_t EMS_DEVICE_FLAG_IVT = 1; + // Boiler static constexpr uint8_t EMS_DEVICE_FLAG_EMS = 1; static constexpr uint8_t EMS_DEVICE_FLAG_EMSPLUS = 2; diff --git a/src/emsesp.cpp b/src/emsesp.cpp index f7ff887b6..684c827a3 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -183,9 +183,11 @@ uint8_t EMSESP::check_master_device(const uint8_t device_id, const uint16_t type uint16_t curve_ids[] = {0x029B, 0x029C, 0x029D, 0x029E, 0x029F, 0x02A0, 0x02A1, 0x02A2}; uint16_t summer2_ids[] = {0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0476, 0x0477, 0x0478}; uint16_t master_ids[] = {0x02F5, 0x031B, 0x031D, 0x031E, 0x023A, 0x0267, 0x0240}; + uint16_t set2_ids[] = {0x02CC, 0x02CE, 0x02D0, 0x02D2}; // look for heating circuits for (uint8_t i = 0; i < sizeof(mon_ids) / 2; i++) { - if (type_id == mon_ids[i] || type_id == set_ids[i] || type_id == summer_ids[i] || type_id == curve_ids[i] || type_id == summer2_ids[i]) { + if (type_id == mon_ids[i] || type_id == set_ids[i] || type_id == summer_ids[i] || type_id == curve_ids[i] || type_id == summer2_ids[i] + || (i < 4 && type_id == set2_ids[i])) { if (read) { // receiving telegrams and map all to master thermostat at 0x18 (src manipulated) return 0x18; diff --git a/src/locale_EN.h b/src/locale_EN.h index 57653f1af..c2758b912 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -313,6 +313,7 @@ MAKE_PSTR_WORD(winter) MAKE_PSTR_WORD(outdoor) MAKE_PSTR_WORD(mpc) MAKE_PSTR_WORD(room) +MAKE_PSTR_WORD(room_outdoor) MAKE_PSTR_WORD(power) MAKE_PSTR_WORD(constant) MAKE_PSTR_WORD(simple) @@ -383,9 +384,12 @@ MAKE_PSTR_LIST(enum_modetype4, F_(nofrost), F_(eco), F_(heat)) MAKE_PSTR_LIST(enum_modetype5, F_(off), F_(on)) MAKE_PSTR_LIST(enum_reducemode, F_(nofrost), F_(reduce), F_(room), F_(outdoor)) +MAKE_PSTR_LIST(enum_reducemode1, F_(outdoor), F_(room), F_(reduce)) // RC310 values: 1-3 MAKE_PSTR_LIST(enum_nofrostmode, F_(off), F_(room), F_(outdoor)) +MAKE_PSTR_LIST(enum_nofrostmode1, F_(room), F_(outdoor), F_(room_outdoor)) MAKE_PSTR_LIST(enum_controlmode, F_(off), F_(optimized), F_(simple), F_(mpc), F_(room), F_(power), F_(constant)) +MAKE_PSTR_LIST(enum_controlmode1, F("weather-compensated"), F("outside-basepoint"), F("n/a"), F_(room)) // RC310 1-4 MAKE_PSTR_LIST(enum_controlmode2, F_(outdoor), F_(room)) // MAKE_PSTR_LIST(enum_controlmode3, F_(off), F_(room), F_(outdoor), F("room+outdoor")) MAKE_PSTR_LIST(enum_control, F_(off), F_(rc20), F_(rc3x)) @@ -465,6 +469,8 @@ MAKE_PSTR_LIST(maintenanceMessage, F("maintenancemessage"), F("maintenance messa MAKE_PSTR_LIST(maintenanceDate, F("maintenancedate"), F("next maintenance date")) MAKE_PSTR_LIST(maintenanceType, F_(maintenance), F("maintenance scheduled")) MAKE_PSTR_LIST(maintenanceTime, F("maintenancetime"), F("time to next maintenance")) +MAKE_PSTR_LIST(emergencyOps, F("emergencyops"), F("emergency operation")) +MAKE_PSTR_LIST(emergencyTemp, F("emergencytemp"), F("emergency temperature")) // heatpump/compress specific MAKE_PSTR_LIST(upTimeControl, F("uptimecontrol"), F("total operating time heat")) @@ -614,7 +620,7 @@ MAKE_PSTR_LIST(wwDailyHeating, F("wwdailyheating"), F("daily heating")) MAKE_PSTR_LIST(wwDailyHeatTime, F("wwdailyheattime"), F("daily heating time")) MAKE_PSTR_LIST(wwWhenModeOff, F("wwwhenmodeoff"), F("when thermostat mode off")) // thermostat hc -MAKE_PSTR_LIST(climate, F("climate")) +MAKE_PSTR_LIST(climate, F("HA climate config creation")) // no full-name, hidden, only for creation MAKE_PSTR_LIST(selRoomTemp, F("seltemp"), F("selected room temperature")) MAKE_PSTR_LIST(roomTemp, F("currtemp"), F("current room temperature")) MAKE_PSTR_LIST(mode, F("mode"), F("mode")) @@ -662,9 +668,11 @@ MAKE_PSTR_LIST(reducetemp, F("reducetemp"), F("off/reduce switch temperature")) MAKE_PSTR_LIST(vacreducetemp, F("vacreducetemp"), F("vacations off/reduce switch temperature")) MAKE_PSTR_LIST(vacreducemode, F("vacreducemode"), F("vacations reduce mode")) MAKE_PSTR_LIST(nofrostmode, F("nofrostmode"), F("nofrost mode")) +MAKE_PSTR_LIST(nofrostmode1, F("nofrostmode1"), F("nofrost mode")) // RC310 MAKE_PSTR_LIST(remotetemp, F("remotetemp"), F("room temperature from remote")) MAKE_PSTR_LIST(reducehours, F("reducehours"), F("duration for nighttemp")) MAKE_PSTR_LIST(reduceminutes, F("reduceminutes"), F("remaining time for nightmode")) +MAKE_PSTR_LIST(switchonoptimization, F("switchonoptimization"), F("switch-on optimization")) // heatpump MAKE_PSTR_LIST(airHumidity, F("airhumidity"), F("relative air humidity")) diff --git a/src/test/test.cpp b/src/test/test.cpp index 867699b6c..de793b39a 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -418,7 +418,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const // emsdevice->generate_values_web(root); JsonArray output = doc.to(); - emsdevice->generate_values_web_all(output); + emsdevice->generate_values_web_customization(output); Serial.print(COLOR_BRIGHT_MAGENTA); serializeJson(doc, Serial); diff --git a/src/version.h b/src/version.h index 849336274..e56f315d3 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.4.0b18idf4" +#define EMSESP_APP_VERSION "3.4.2b1" diff --git a/src/web/WebAPIService.cpp b/src/web/WebAPIService.cpp index 5ab041987..407e33fb2 100644 --- a/src/web/WebAPIService.cpp +++ b/src/web/WebAPIService.cpp @@ -132,6 +132,7 @@ void WebAPIService::parse(AsyncWebServerRequest * request, JsonObject & input) { JsonVariant data = output["api_data"]; request->send(200, "text/plain; charset=utf-8", data.as()); api_count_++; + delete response; return; } diff --git a/src/web/WebCustomizationService.cpp b/src/web/WebCustomizationService.cpp index 2d8658b5e..1b37c830e 100644 --- a/src/web/WebCustomizationService.cpp +++ b/src/web/WebCustomizationService.cpp @@ -196,7 +196,7 @@ void WebCustomizationService::device_entities(AsyncWebServerRequest * request, J if (emsdevice->unique_id() == json["id"]) { #ifndef EMSESP_STANDALONE JsonArray output = response->getRoot(); - emsdevice->generate_values_web_all(output); + emsdevice->generate_values_web_customization(output); #endif response->setLength(); request->send(response);