From 7b24f82436b465aacceeda054f1ef2db7055c2a4 Mon Sep 17 00:00:00 2001 From: Chris Kaczor Date: Mon, 16 Dec 2024 21:38:24 +0000 Subject: [PATCH] Continue kiosk work --- WebDisplay/package.json | 5 +- WebDisplay/pnpm-lock.yaml | 408 ++++++++++++------ WebDisplay/src/environment.ts | 16 + .../models/home-assistant/home-assistant.ts | 64 +++ WebDisplay/src/pages/kiosk.vue | 63 ++- WebDisplay/src/stores/homeAssistantStore.ts | 92 ++++ 6 files changed, 496 insertions(+), 152 deletions(-) create mode 100644 WebDisplay/src/models/home-assistant/home-assistant.ts create mode 100644 WebDisplay/src/stores/homeAssistantStore.ts diff --git a/WebDisplay/package.json b/WebDisplay/package.json index 1f061c4..7971fa8 100644 --- a/WebDisplay/package.json +++ b/WebDisplay/package.json @@ -27,9 +27,9 @@ "devDependencies": { "@babel/types": "^7.26.3", "@types/node": "^20.17.9", + "@typescript-eslint/parser": "8.17.0", "@vitejs/plugin-vue": "^4.6.2", "@vue/eslint-config-typescript": "^14.1.4", - "@typescript-eslint/parser": "8.17.0", "cross-env": "^7.0.3", "eslint": "^9.16.0", "eslint-plugin-import": "^2.31.0", @@ -45,6 +45,7 @@ "vite": "^5.4.11", "vite-plugin-vuetify": "^2.0.4", "vue-router": "^4.5.0", - "vue-tsc": "^2.1.10" + "vue-tsc": "^2.1.10", + "websocketstream-polyfill": "^1.0.1" } } diff --git a/WebDisplay/pnpm-lock.yaml b/WebDisplay/pnpm-lock.yaml index 90b62d1..60650fc 100644 --- a/WebDisplay/pnpm-lock.yaml +++ b/WebDisplay/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: version: 8.8.1(vue@3.5.13(typescript@5.6.2)) apexcharts: specifier: ^4.1.0 - version: 4.1.0 + version: 4.2.0 axios: specifier: ^1.7.9 version: 1.7.9 @@ -46,7 +46,7 @@ importers: version: 3.5.13(typescript@5.6.2) vue3-apexcharts: specifier: ^1.8.0 - version: 1.8.0(apexcharts@4.1.0)(vue@3.5.13(typescript@5.6.2)) + version: 1.8.0(apexcharts@4.2.0)(vue@3.5.13(typescript@5.6.2)) vuetify: specifier: ^3.7.5 version: 3.7.5(typescript@5.6.2)(vite-plugin-vuetify@2.0.4)(vue@3.5.13(typescript@5.6.2)) @@ -56,13 +56,13 @@ importers: version: 7.26.3 '@types/node': specifier: ^20.17.9 - version: 20.17.9 + version: 20.17.10 '@typescript-eslint/parser': specifier: 8.17.0 version: 8.17.0(eslint@9.16.0)(typescript@5.6.2) '@vitejs/plugin-vue': specifier: ^4.6.2 - version: 4.6.2(vite@5.4.11(@types/node@20.17.9)(sass@1.82.0))(vue@3.5.13(typescript@5.6.2)) + version: 4.6.2(vite@5.4.11(@types/node@20.17.10)(sass@1.82.0))(vue@3.5.13(typescript@5.6.2)) '@vue/eslint-config-typescript': specifier: ^14.1.4 version: 14.1.4(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.6.2))(eslint-plugin-vue@9.32.0(eslint@9.16.0))(eslint@9.16.0)(typescript@5.6.2) @@ -95,7 +95,7 @@ importers: version: 5.6.2 unplugin-fonts: specifier: ^1.3.1 - version: 1.3.1(vite@5.4.11(@types/node@20.17.9)(sass@1.82.0)) + version: 1.3.1(vite@5.4.11(@types/node@20.17.10)(sass@1.82.0)) unplugin-vue-components: specifier: ^0.26.0 version: 0.26.0(@babel/parser@7.26.3)(rollup@4.28.1)(vue@3.5.13(typescript@5.6.2)) @@ -104,16 +104,19 @@ importers: version: 0.7.0(rollup@4.28.1)(vue-router@4.5.0(vue@3.5.13(typescript@5.6.2)))(vue@3.5.13(typescript@5.6.2)) vite: specifier: ^5.4.11 - version: 5.4.11(@types/node@20.17.9)(sass@1.82.0) + version: 5.4.11(@types/node@20.17.10)(sass@1.82.0) vite-plugin-vuetify: specifier: ^2.0.4 - version: 2.0.4(vite@5.4.11(@types/node@20.17.9)(sass@1.82.0))(vue@3.5.13(typescript@5.6.2))(vuetify@3.7.5) + version: 2.0.4(vite@5.4.11(@types/node@20.17.10)(sass@1.82.0))(vue@3.5.13(typescript@5.6.2))(vuetify@3.7.5) vue-router: specifier: ^4.5.0 version: 4.5.0(vue@3.5.13(typescript@5.6.2)) vue-tsc: specifier: ^2.1.10 version: 2.1.10(typescript@5.6.2) + websocketstream-polyfill: + specifier: ^1.0.1 + version: 1.0.1 packages: @@ -573,22 +576,19 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/node@20.17.9': - resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==} + '@types/node@20.17.10': + resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==} '@types/suncalc@1.9.2': resolution: {integrity: sha512-ATAGBHHfA1TlE2tjfidLyTcysjoT2JHHEAmWRULh73SU9UTn++j5fqHEW16X6Y/2Li87jEQXzgu4R/OOdlDqzw==} - '@typescript-eslint/eslint-plugin@8.17.0': - resolution: {integrity: sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==} + '@typescript-eslint/eslint-plugin@8.18.0': + resolution: {integrity: sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/parser@8.17.0': resolution: {integrity: sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==} @@ -600,24 +600,36 @@ packages: typescript: optional: true + '@typescript-eslint/parser@8.18.0': + resolution: {integrity: sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/scope-manager@8.17.0': resolution: {integrity: sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.17.0': - resolution: {integrity: sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==} + '@typescript-eslint/scope-manager@8.18.0': + resolution: {integrity: sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.18.0': + resolution: {integrity: sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/types@8.17.0': resolution: {integrity: sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.18.0': + resolution: {integrity: sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.17.0': resolution: {integrity: sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -627,20 +639,27 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.17.0': - resolution: {integrity: sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==} + '@typescript-eslint/typescript-estree@8.18.0': + resolution: {integrity: sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/utils@8.18.0': + resolution: {integrity: sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/visitor-keys@8.17.0': resolution: {integrity: sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.18.0': + resolution: {integrity: sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@vitejs/plugin-vue@4.6.2': resolution: {integrity: sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -657,8 +676,8 @@ packages: '@volar/typescript@2.4.10': resolution: {integrity: sha512-F8ZtBMhSXyYKuBfGpYwqA5rsONnOwAVvjyE7KPYJ7wgZqo2roASqNWUnianOomJX5u1cxeRooHV59N0PhvEOgw==} - '@vue-macros/common@1.15.0': - resolution: {integrity: sha512-yg5VqW7+HRfJGimdKvFYzx8zorHUYo0hzPwuraoC1DWa7HHazbTMoVsHDvk3JHa1SGfSL87fRnzmlvgjEHhszA==} + '@vue-macros/common@1.15.1': + resolution: {integrity: sha512-O0ZXaladWXwHplQnSjxLbB/G1KpdWCUNJPNYVHIxHonGex1BGpoB4fBZZLgddHgAiy18VZG/Iu5L0kwG+SV7JQ==} engines: {node: '>=16.14.0'} peerDependencies: vue: ^2.7.0 || ^3.2.25 @@ -762,8 +781,8 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - apexcharts@4.1.0: - resolution: {integrity: sha512-TE0q0cXeS5k/AByLqlZAQ/aRQfdD3z0Ajd1uQWWZEjxiIC5qcBpMrTaG+aT+c3golqkvLH3u6kxDW8HBrggpLw==} + apexcharts@4.2.0: + resolution: {integrity: sha512-MQ5o8KnwMGcAlo+LhXlAjWGk8wBNBK2O1gFv+JiB6w3oJeuDJUFqa6FLTDlXvdhtObNQ3vIfAtv0AbMSkDv0DQ==} argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -841,14 +860,18 @@ packages: builtins@5.1.0: resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} - call-bind-apply-helpers@1.0.0: - resolution: {integrity: sha512-CCKAP2tkPau7D3GE8+V8R6sQubA9R5foIzGp+85EXCVSCivuxBNAWqcpn72PKYiIcqoViv/kcUDpaEIMBVi1lQ==} + call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} call-bind@1.0.8: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} + call-bound@1.0.2: + resolution: {integrity: sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1219,8 +1242,8 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - get-intrinsic@1.2.5: - resolution: {integrity: sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==} + get-intrinsic@1.2.6: + resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} engines: {node: '>= 0.4'} get-symbol-description@1.0.2: @@ -1338,8 +1361,8 @@ packages: resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} engines: {node: '>= 0.4'} - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} is-date-object@1.0.5: @@ -1378,8 +1401,8 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-regex@1.2.0: - resolution: {integrity: sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} is-set@2.0.3: @@ -1470,8 +1493,12 @@ packages: resolution: {integrity: sha512-C9sgUzVZtUtzCBoMdYtwrIRQ4IucGRFGgdhkjL7PXsVfPYmTuWtewqzk7dlipaCMWH/gOYehW9rgMoa4Oebtpw==} engines: {node: '>=16.14.0'} - magic-string@0.30.14: - resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} + magic-string@0.30.15: + resolution: {integrity: sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==} + + math-intrinsics@1.0.0: + resolution: {integrity: sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==} + engines: {node: '>= 0.4'} merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -1696,12 +1723,12 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} sass@1.82.0: @@ -1740,20 +1767,33 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} @@ -1822,15 +1862,12 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.17.0: - resolution: {integrity: sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==} + typescript-eslint@8.18.0: + resolution: {integrity: sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' typescript@5.6.2: resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} @@ -2007,6 +2044,9 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + websocketstream-polyfill@1.0.1: + resolution: {integrity: sha512-SV0AG8yN3YDwCVCex/oBQli7vrezGQ0stgo5suKMTthjPQv2wuMsNvwUWDAvNmDGGb9VIm5WsW99x57GW06gLQ==} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -2381,26 +2421,42 @@ snapshots: '@types/json5@0.0.29': {} - '@types/node@20.17.9': + '@types/node@20.17.10': dependencies: undici-types: 6.19.8 '@types/suncalc@1.9.2': {} - '@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.6.2))(eslint@9.16.0)(typescript@5.6.2)': + '@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.6.2))(eslint@9.16.0)(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 8.17.0(eslint@9.16.0)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.17.0 - '@typescript-eslint/type-utils': 8.17.0(eslint@9.16.0)(typescript@5.6.2) - '@typescript-eslint/utils': 8.17.0(eslint@9.16.0)(typescript@5.6.2) - '@typescript-eslint/visitor-keys': 8.17.0 + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/type-utils': 8.18.0(eslint@9.16.0)(typescript@5.6.2) + '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.18.0 + eslint: 9.16.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.3(typescript@5.6.2) + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.6.2))(eslint@9.16.0)(typescript@5.6.2)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/type-utils': 8.18.0(eslint@9.16.0)(typescript@5.6.2) + '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.18.0 eslint: 9.16.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 ts-api-utils: 1.4.3(typescript@5.6.2) - optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -2418,25 +2474,43 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.6.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.18.0 + debug: 4.4.0 + eslint: 9.16.0 + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.17.0': dependencies: '@typescript-eslint/types': 8.17.0 '@typescript-eslint/visitor-keys': 8.17.0 - '@typescript-eslint/type-utils@8.17.0(eslint@9.16.0)(typescript@5.6.2)': + '@typescript-eslint/scope-manager@8.18.0': dependencies: - '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.17.0(eslint@9.16.0)(typescript@5.6.2) + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/visitor-keys': 8.18.0 + + '@typescript-eslint/type-utils@8.18.0(eslint@9.16.0)(typescript@5.6.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.6.2) debug: 4.4.0 eslint: 9.16.0 ts-api-utils: 1.4.3(typescript@5.6.2) - optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.17.0': {} + '@typescript-eslint/types@8.18.0': {} + '@typescript-eslint/typescript-estree@8.17.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 8.17.0 @@ -2452,14 +2526,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.17.0(eslint@9.16.0)(typescript@5.6.2)': + '@typescript-eslint/typescript-estree@8.18.0(typescript@5.6.2)': + dependencies: + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/visitor-keys': 8.18.0 + debug: 4.4.0 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.3(typescript@5.6.2) + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.18.0(eslint@9.16.0)(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0) - '@typescript-eslint/scope-manager': 8.17.0 - '@typescript-eslint/types': 8.17.0 - '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.6.2) eslint: 9.16.0 - optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -2469,9 +2556,14 @@ snapshots: '@typescript-eslint/types': 8.17.0 eslint-visitor-keys: 4.2.0 - '@vitejs/plugin-vue@4.6.2(vite@5.4.11(@types/node@20.17.9)(sass@1.82.0))(vue@3.5.13(typescript@5.6.2))': + '@typescript-eslint/visitor-keys@8.18.0': dependencies: - vite: 5.4.11(@types/node@20.17.9)(sass@1.82.0) + '@typescript-eslint/types': 8.18.0 + eslint-visitor-keys: 4.2.0 + + '@vitejs/plugin-vue@4.6.2(vite@5.4.11(@types/node@20.17.10)(sass@1.82.0))(vue@3.5.13(typescript@5.6.2))': + dependencies: + vite: 5.4.11(@types/node@20.17.10)(sass@1.82.0) vue: 3.5.13(typescript@5.6.2) '@volar/language-core@2.4.10': @@ -2486,7 +2578,7 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.0.8 - '@vue-macros/common@1.15.0(rollup@4.28.1)(vue@3.5.13(typescript@5.6.2))': + '@vue-macros/common@1.15.1(rollup@4.28.1)(vue@3.5.13(typescript@5.6.2))': dependencies: '@babel/types': 7.26.3 '@rollup/pluginutils': 5.1.3(rollup@4.28.1) @@ -2520,7 +2612,7 @@ snapshots: '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 estree-walker: 2.0.2 - magic-string: 0.30.14 + magic-string: 0.30.15 postcss: 8.4.49 source-map-js: 1.2.1 @@ -2538,11 +2630,11 @@ snapshots: '@vue/eslint-config-typescript@14.1.4(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.6.2))(eslint-plugin-vue@9.32.0(eslint@9.16.0))(eslint@9.16.0)(typescript@5.6.2)': dependencies: - '@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.6.2))(eslint@9.16.0)(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.6.2))(eslint@9.16.0)(typescript@5.6.2) eslint: 9.16.0 eslint-plugin-vue: 9.32.0(eslint@9.16.0) fast-glob: 3.3.2 - typescript-eslint: 8.17.0(eslint@9.16.0)(typescript@5.6.2) + typescript-eslint: 8.18.0(eslint@9.16.0)(typescript@5.6.2) vue-eslint-parser: 9.4.3(eslint@9.16.0) optionalDependencies: typescript: 5.6.2 @@ -2628,7 +2720,7 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - apexcharts@4.1.0: + apexcharts@4.2.0: dependencies: '@svgdotjs/svg.draggable.js': 3.0.4(@svgdotjs/svg.js@3.2.4) '@svgdotjs/svg.filter.js': 3.0.8 @@ -2650,7 +2742,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.5 es-object-atoms: 1.0.0 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 is-string: 1.1.0 array.prototype.findlastindex@1.2.5: @@ -2683,7 +2775,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.5 es-errors: 1.3.0 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 @@ -2746,18 +2838,23 @@ snapshots: dependencies: semver: 7.6.3 - call-bind-apply-helpers@1.0.0: + call-bind-apply-helpers@1.0.1: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 call-bind@1.0.8: dependencies: - call-bind-apply-helpers: 1.0.0 + call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 set-function-length: 1.2.2 + call-bound@1.0.2: + dependencies: + call-bind: 1.0.8 + get-intrinsic: 1.2.6 + callsites@3.1.0: {} chalk@4.1.2: @@ -2815,19 +2912,19 @@ snapshots: dependencies: call-bind: 1.0.8 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 data-view-byte-length@1.0.1: dependencies: call-bind: 1.0.8 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 data-view-byte-offset@1.0.0: dependencies: call-bind: 1.0.8 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 date-fns@3.6.0: {} @@ -2866,7 +2963,7 @@ snapshots: dunder-proto@1.0.0: dependencies: - call-bind-apply-helpers: 1.0.0 + call-bind-apply-helpers: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 @@ -2887,7 +2984,7 @@ snapshots: es-set-tostringtag: 2.0.3 es-to-primitive: 1.3.0 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 get-symbol-description: 1.0.2 globalthis: 1.0.4 gopd: 1.2.0 @@ -2898,9 +2995,9 @@ snapshots: internal-slot: 1.0.7 is-array-buffer: 3.0.4 is-callable: 1.2.7 - is-data-view: 1.0.1 + is-data-view: 1.0.2 is-negative-zero: 2.0.3 - is-regex: 1.2.0 + is-regex: 1.2.1 is-shared-array-buffer: 1.0.3 is-string: 1.1.0 is-typed-array: 1.1.13 @@ -2909,10 +3006,10 @@ snapshots: object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.3 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 + safe-array-concat: 1.1.3 + safe-regex-test: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 @@ -2931,7 +3028,7 @@ snapshots: es-set-tostringtag@2.0.3: dependencies: - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 has-tostringtag: 1.0.2 hasown: 2.0.2 @@ -3029,7 +3126,7 @@ snapshots: object.groupby: 1.0.3 object.values: 1.2.0 semver: 6.3.1 - string.prototype.trimend: 1.0.8 + string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: '@typescript-eslint/parser': 8.17.0(eslint@9.16.0)(typescript@5.6.2) @@ -3239,22 +3336,24 @@ snapshots: functions-have-names@1.2.3: {} - get-intrinsic@1.2.5: + get-intrinsic@1.2.6: dependencies: - call-bind-apply-helpers: 1.0.0 + call-bind-apply-helpers: 1.0.1 dunder-proto: 1.0.0 es-define-property: 1.0.1 es-errors: 1.3.0 + es-object-atoms: 1.0.0 function-bind: 1.1.2 gopd: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 + math-intrinsics: 1.0.0 get-symbol-description@1.0.2: dependencies: call-bind: 1.0.8 es-errors: 1.3.0 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 get-tsconfig@4.8.1: dependencies: @@ -3322,12 +3421,12 @@ snapshots: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 is-array-buffer@3.0.4: dependencies: call-bind: 1.0.8 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 is-async-function@2.0.0: dependencies: @@ -3356,8 +3455,10 @@ snapshots: dependencies: hasown: 2.0.2 - is-data-view@1.0.1: + is-data-view@1.0.2: dependencies: + call-bound: 1.0.2 + get-intrinsic: 1.2.6 is-typed-array: 1.1.13 is-date-object@1.0.5: @@ -3389,9 +3490,9 @@ snapshots: is-number@7.0.0: {} - is-regex@1.2.0: + is-regex@1.2.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.2 gopd: 1.2.0 has-tostringtag: 1.0.2 hasown: 2.0.2 @@ -3411,7 +3512,7 @@ snapshots: dependencies: call-bind: 1.0.8 has-symbols: 1.1.0 - safe-regex-test: 1.0.3 + safe-regex-test: 1.1.0 is-typed-array@1.1.13: dependencies: @@ -3426,7 +3527,7 @@ snapshots: is-weakset@2.0.3: dependencies: call-bind: 1.0.8 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 isarray@2.0.5: {} @@ -3474,12 +3575,14 @@ snapshots: magic-string-ast@0.6.3: dependencies: - magic-string: 0.30.14 + magic-string: 0.30.15 - magic-string@0.30.14: + magic-string@0.30.15: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + math-intrinsics@1.0.0: {} + merge2@1.4.1: {} micromatch@4.0.8: @@ -3654,7 +3757,7 @@ snapshots: dunder-proto: 1.0.0 es-abstract: 1.23.5 es-errors: 1.3.0 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 gopd: 1.2.0 which-builtin-type: 1.2.0 @@ -3712,18 +3815,19 @@ snapshots: dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.1.2: + safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 - get-intrinsic: 1.2.5 + call-bound: 1.0.2 + get-intrinsic: 1.2.6 has-symbols: 1.1.0 isarray: 2.0.5 - safe-regex-test@1.0.3: + safe-regex-test@1.1.0: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.2 es-errors: 1.3.0 - is-regex: 1.2.0 + is-regex: 1.2.1 sass@1.82.0: dependencies: @@ -3746,7 +3850,7 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -3763,25 +3867,50 @@ snapshots: shebang-regex@3.0.0: {} - side-channel@1.0.6: + side-channel-list@1.0.0: dependencies: - call-bind: 1.0.8 es-errors: 1.3.0 - get-intrinsic: 1.2.5 object-inspect: 1.13.3 + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + source-map-js@1.2.1: {} - string.prototype.trim@1.2.9: + string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.8 + call-bound: 1.0.2 + define-data-property: 1.1.4 define-properties: 1.2.1 es-abstract: 1.23.5 es-object-atoms: 1.0.0 + has-property-descriptors: 1.0.2 - string.prototype.trimend@1.0.8: + string.prototype.trimend@1.0.9: dependencies: call-bind: 1.0.8 + call-bound: 1.0.2 define-properties: 1.2.1 es-object-atoms: 1.0.0 @@ -3866,13 +3995,12 @@ snapshots: possible-typed-array-names: 1.0.0 reflect.getprototypeof: 1.0.8 - typescript-eslint@8.17.0(eslint@9.16.0)(typescript@5.6.2): + typescript-eslint@8.18.0(eslint@9.16.0)(typescript@5.6.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.6.2))(eslint@9.16.0)(typescript@5.6.2) - '@typescript-eslint/parser': 8.17.0(eslint@9.16.0)(typescript@5.6.2) - '@typescript-eslint/utils': 8.17.0(eslint@9.16.0)(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.6.2))(eslint@9.16.0)(typescript@5.6.2) + '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.6.2) + '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.6.2) eslint: 9.16.0 - optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -3892,11 +4020,11 @@ snapshots: universalify@0.2.0: {} - unplugin-fonts@1.3.1(vite@5.4.11(@types/node@20.17.9)(sass@1.82.0)): + unplugin-fonts@1.3.1(vite@5.4.11(@types/node@20.17.10)(sass@1.82.0)): dependencies: fast-glob: 3.3.2 unplugin: 2.0.0-beta.1 - vite: 5.4.11(@types/node@20.17.9)(sass@1.82.0) + vite: 5.4.11(@types/node@20.17.10)(sass@1.82.0) unplugin-vue-components@0.26.0(@babel/parser@7.26.3)(rollup@4.28.1)(vue@3.5.13(typescript@5.6.2)): dependencies: @@ -3906,7 +4034,7 @@ snapshots: debug: 4.4.0 fast-glob: 3.3.2 local-pkg: 0.4.3 - magic-string: 0.30.14 + magic-string: 0.30.15 minimatch: 9.0.5 resolve: 1.22.8 unplugin: 1.16.0 @@ -3921,7 +4049,7 @@ snapshots: dependencies: '@babel/types': 7.26.3 '@rollup/pluginutils': 5.1.3(rollup@4.28.1) - '@vue-macros/common': 1.15.0(rollup@4.28.1)(vue@3.5.13(typescript@5.6.2)) + '@vue-macros/common': 1.15.1(rollup@4.28.1)(vue@3.5.13(typescript@5.6.2)) ast-walker-scope: 0.5.0(rollup@4.28.1) chokidar: 3.6.0 fast-glob: 3.3.2 @@ -3961,24 +4089,24 @@ snapshots: util-deprecate@1.0.2: {} - vite-plugin-vuetify@2.0.4(vite@5.4.11(@types/node@20.17.9)(sass@1.82.0))(vue@3.5.13(typescript@5.6.2))(vuetify@3.7.5): + vite-plugin-vuetify@2.0.4(vite@5.4.11(@types/node@20.17.10)(sass@1.82.0))(vue@3.5.13(typescript@5.6.2))(vuetify@3.7.5): dependencies: '@vuetify/loader-shared': 2.0.3(vue@3.5.13(typescript@5.6.2))(vuetify@3.7.5) debug: 4.4.0 upath: 2.0.1 - vite: 5.4.11(@types/node@20.17.9)(sass@1.82.0) + vite: 5.4.11(@types/node@20.17.10)(sass@1.82.0) vue: 3.5.13(typescript@5.6.2) vuetify: 3.7.5(typescript@5.6.2)(vite-plugin-vuetify@2.0.4)(vue@3.5.13(typescript@5.6.2)) transitivePeerDependencies: - supports-color - vite@5.4.11(@types/node@20.17.9)(sass@1.82.0): + vite@5.4.11(@types/node@20.17.10)(sass@1.82.0): dependencies: esbuild: 0.21.5 postcss: 8.4.49 rollup: 4.28.1 optionalDependencies: - '@types/node': 20.17.9 + '@types/node': 20.17.10 fsevents: 2.3.3 sass: 1.82.0 @@ -4013,9 +4141,9 @@ snapshots: semver: 7.6.3 typescript: 5.6.2 - vue3-apexcharts@1.8.0(apexcharts@4.1.0)(vue@3.5.13(typescript@5.6.2)): + vue3-apexcharts@1.8.0(apexcharts@4.2.0)(vue@3.5.13(typescript@5.6.2)): dependencies: - apexcharts: 4.1.0 + apexcharts: 4.2.0 vue: 3.5.13(typescript@5.6.2) vue@3.5.13(typescript@5.6.2): @@ -4033,12 +4161,14 @@ snapshots: vue: 3.5.13(typescript@5.6.2) optionalDependencies: typescript: 5.6.2 - vite-plugin-vuetify: 2.0.4(vite@5.4.11(@types/node@20.17.9)(sass@1.82.0))(vue@3.5.13(typescript@5.6.2))(vuetify@3.7.5) + vite-plugin-vuetify: 2.0.4(vite@5.4.11(@types/node@20.17.10)(sass@1.82.0))(vue@3.5.13(typescript@5.6.2))(vuetify@3.7.5) webidl-conversions@3.0.1: {} webpack-virtual-modules@0.6.2: {} + websocketstream-polyfill@1.0.1: {} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -4061,7 +4191,7 @@ snapshots: is-date-object: 1.0.5 is-finalizationregistry: 1.1.0 is-generator-function: 1.0.10 - is-regex: 1.2.0 + is-regex: 1.2.1 is-weakref: 1.0.2 isarray: 2.0.5 which-boxed-primitive: 1.1.0 diff --git a/WebDisplay/src/environment.ts b/WebDisplay/src/environment.ts index 337381b..a1885c8 100644 --- a/WebDisplay/src/environment.ts +++ b/WebDisplay/src/environment.ts @@ -4,4 +4,20 @@ export default class Environment { public static getUrlPrefix(): string { return config.API_PREFIX; } + + public static getHomeAssistantUrl(): string { + return config.HOME_ASSISTANT_URL; + } + + public static getHomeAssistantToken(): string { + return config.HOME_ASSISTANT_TOKEN; + } + + public static getGarageDevice(): string { + return config.GARAGE_DEVICE; + } + + public static getAlarmDevice(): string { + return config.ALARM_DEVICE; + } } diff --git a/WebDisplay/src/models/home-assistant/home-assistant.ts b/WebDisplay/src/models/home-assistant/home-assistant.ts new file mode 100644 index 0000000..079e7a8 --- /dev/null +++ b/WebDisplay/src/models/home-assistant/home-assistant.ts @@ -0,0 +1,64 @@ +let messageId: number = 1; + +export enum MessageType { + auth_invalid = 'auth_invalid', + auth_ok = 'auth_ok', + auth_required = 'auth_required', + event = 'event', + pong = 'pong', + result = 'result' +} + +export interface OutgoingMessage { + id: number | undefined; + type: string; +} + +export interface IncomingMessage { + id: number | undefined; + type: string; + success: boolean | undefined; + result: any; +} + +export class AuthMessage implements OutgoingMessage { + id = undefined; + type: string = 'auth'; + access_token: string | null = null; + + constructor(access_token: string) { + this.access_token = access_token; + } +} + +export class SubscribeEntitiesMessage implements OutgoingMessage { + id = messageId++; + type = 'subscribe_entities'; + entity_ids: string[] = []; + + constructor(entity_ids: string[]) { + this.entity_ids = entity_ids; + } +} + +export interface EventMessage extends IncomingMessage { + event: StatesUpdates; +} + +export interface EntityState { + /** state */ + s: string; + /** attributes */ + a: { [key: string]: any }; + /** last_changed; if set, also applies to lu */ + lc: number; + /** last_updated */ + lu: number; +} + +export interface StatesUpdates { + /** add */ + a?: Record; + /** remove */ + r?: string[]; // remove +} diff --git a/WebDisplay/src/pages/kiosk.vue b/WebDisplay/src/pages/kiosk.vue index e02b84b..19c1d16 100644 --- a/WebDisplay/src/pages/kiosk.vue +++ b/WebDisplay/src/pages/kiosk.vue @@ -1,8 +1,9 @@