diff --git a/package-lock.json b/package-lock.json index 84c56b64..518a5436 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,10 @@ "version": "0.0.1", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.24.0", + "@babel/runtime": "^7.24.5", "@noble/ed25519": "^1.6.1", "@noble/secp256k1": "^1.6.3", - "balm-ui": "^10.27.0", + "balm-ui": "^10.28.2", "bitsharesjs": "https://github.com/bitshares/bitsharesjs#develop", "crypto-js": "^4.2.0", "dexie": "^3.2.6", @@ -22,46 +22,46 @@ "http-terminator": "^3.2.0", "lzma": "^2.3.2", "mitt": "^3.0.1", - "otpauth": "^9.2.2", + "otpauth": "^9.2.4", "query-string": "^9.0.0", "simple-websocket": "^9.1.0", - "socket.io": "^4.7.4", + "socket.io": "^4.7.5", "typeface-rajdhani": "1.1.13", "typeface-roboto": "1.1.13", "uuid": "^9.0.1", - "vue": "^3.4.21", + "vue": "^3.4.27", "vue-i18n": "9", - "vue-qrcode-reader": "^5.5.3", - "vue-router": "^4.3.0", + "vue-qrcode-reader": "^5.5.4", + "vue-router": "^4.3.2", "vuex": "^4.1.0" }, "devDependencies": { - "@babel/core": "^7.24.0", + "@babel/core": "^7.24.5", "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-transform-runtime": "^7.24.0", - "@babel/preset-env": "^7.24.0", + "@babel/plugin-transform-runtime": "^7.24.3", + "@babel/preset-env": "^7.24.5", "@soda/friendly-errors-webpack-plugin": "^1.8.1", "babel-loader": "^9.1.3", "css-loader": "^6.10.0", - "electron": "^29.1.1", + "electron": "^30.0.3", "electron-builder": "^24.13.3", "eslint": "^8.57.0", - "eslint-plugin-vue": "^9.22.0", + "eslint-plugin-vue": "^9.26.0", "file-loader": "^6.2.0", - "sass": "^1.71.1", - "sass-loader": "^14.1.1", + "sass": "^1.77.0", + "sass-loader": "^14.2.1", "source-map-support": "^0.5.21", "style-loader": "^3.3.4", "vue-loader": "^17.4.2", "vue-template-compiler": "^2.7.16", - "webpack": "^5.90.3", + "webpack": "^5.91.0", "webpack-cli": "^5.1.4", "webpack-merge": "^5.10.0", "webpack-node-externals": "^3.0.0" }, "optionalDependencies": { "bufferutil": "^4.0.8", - "utf-8-validate": "^6.0.3" + "utf-8-validate": "^6.0.4" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -87,43 +87,43 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -139,14 +139,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -194,19 +194,19 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", - "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", + "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.24.5", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-split-export-declaration": "^7.24.5", "semver": "^6.3.1" }, "engines": { @@ -234,9 +234,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -284,40 +284,40 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", + "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -339,9 +339,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -365,13 +365,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -382,12 +382,12 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -406,30 +406,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -445,51 +445,52 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz", + "integrity": "sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/helper-function-name": "^7.23.0", + "@babel/template": "^7.24.0", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dev": true, "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -497,13 +498,29 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz", + "integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -513,14 +530,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/plugin-transform-optional-chaining": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -530,13 +547,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", - "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", + "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -641,12 +658,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -656,12 +673,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -813,12 +830,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -828,13 +845,13 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", - "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", + "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -846,13 +863,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { @@ -863,12 +880,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -878,12 +895,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", + "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -893,13 +910,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", + "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -909,13 +926,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", + "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -926,18 +943,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", - "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", + "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-split-export-declaration": "^7.24.5", "globals": "^11.1.0" }, "engines": { @@ -948,13 +965,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -964,12 +981,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", + "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -979,13 +996,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -995,12 +1012,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1010,12 +1027,12 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1026,13 +1043,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", "dev": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1042,12 +1059,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1058,12 +1075,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", - "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { @@ -1074,14 +1091,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1091,12 +1108,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1107,12 +1124,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1122,12 +1139,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1138,12 +1155,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1153,13 +1170,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1169,13 +1186,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-simple-access": "^7.22.5" }, "engines": { @@ -1186,14 +1203,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", - "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { @@ -1204,13 +1221,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1236,12 +1253,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1251,12 +1268,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1267,12 +1284,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1283,16 +1300,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", - "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz", + "integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1302,13 +1318,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1318,12 +1334,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1334,12 +1350,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", + "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -1351,12 +1367,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", + "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1366,13 +1382,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1382,14 +1398,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz", + "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.5", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1400,12 +1416,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1415,12 +1431,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1431,12 +1447,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1446,16 +1462,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.0.tgz", - "integrity": "sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz", + "integrity": "sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-module-imports": "^7.24.3", "@babel/helper-plugin-utils": "^7.24.0", - "babel-plugin-polyfill-corejs2": "^0.4.8", - "babel-plugin-polyfill-corejs3": "^0.9.0", - "babel-plugin-polyfill-regenerator": "^0.5.5", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "engines": { @@ -1466,12 +1482,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1481,12 +1497,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { @@ -1497,12 +1513,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1512,12 +1528,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1527,12 +1543,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", + "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1542,12 +1558,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1557,13 +1573,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1573,13 +1589,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1589,13 +1605,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1605,26 +1621,27 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", - "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.5.tgz", + "integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.5", + "@babel/compat-data": "^7.24.4", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.1", + "@babel/plugin-syntax-import-attributes": "^7.24.1", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1636,58 +1653,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.9", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.8", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.6", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.9", - "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.1", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.24.1", + "@babel/plugin-transform-block-scoped-functions": "^7.24.1", + "@babel/plugin-transform-block-scoping": "^7.24.5", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-class-static-block": "^7.24.4", + "@babel/plugin-transform-classes": "^7.24.5", + "@babel/plugin-transform-computed-properties": "^7.24.1", + "@babel/plugin-transform-destructuring": "^7.24.5", + "@babel/plugin-transform-dotall-regex": "^7.24.1", + "@babel/plugin-transform-duplicate-keys": "^7.24.1", + "@babel/plugin-transform-dynamic-import": "^7.24.1", + "@babel/plugin-transform-exponentiation-operator": "^7.24.1", + "@babel/plugin-transform-export-namespace-from": "^7.24.1", + "@babel/plugin-transform-for-of": "^7.24.1", + "@babel/plugin-transform-function-name": "^7.24.1", + "@babel/plugin-transform-json-strings": "^7.24.1", + "@babel/plugin-transform-literals": "^7.24.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-member-expression-literals": "^7.24.1", + "@babel/plugin-transform-modules-amd": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-modules-systemjs": "^7.24.1", + "@babel/plugin-transform-modules-umd": "^7.24.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.24.0", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-new-target": "^7.24.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.5", + "@babel/plugin-transform-object-super": "^7.24.1", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.5", + "@babel/plugin-transform-parameters": "^7.24.5", + "@babel/plugin-transform-private-methods": "^7.24.1", + "@babel/plugin-transform-private-property-in-object": "^7.24.5", + "@babel/plugin-transform-property-literals": "^7.24.1", + "@babel/plugin-transform-regenerator": "^7.24.1", + "@babel/plugin-transform-reserved-words": "^7.24.1", + "@babel/plugin-transform-shorthand-properties": "^7.24.1", + "@babel/plugin-transform-spread": "^7.24.1", + "@babel/plugin-transform-sticky-regex": "^7.24.1", + "@babel/plugin-transform-template-literals": "^7.24.1", + "@babel/plugin-transform-typeof-symbol": "^7.24.5", + "@babel/plugin-transform-unicode-escapes": "^7.24.1", + "@babel/plugin-transform-unicode-property-regex": "^7.24.1", + "@babel/plugin-transform-unicode-regex": "^7.24.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.8", - "babel-plugin-polyfill-corejs3": "^0.9.0", - "babel-plugin-polyfill-regenerator": "^0.5.5", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -1719,9 +1736,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", - "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1744,19 +1761,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1765,13 +1782,13 @@ } }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2365,14 +2382,14 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -2388,9 +2405,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" @@ -2412,9 +2429,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -3576,49 +3593,49 @@ "dev": true }, "node_modules/@vue/compiler-core": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz", - "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==", + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz", + "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==", "dependencies": { - "@babel/parser": "^7.23.9", - "@vue/shared": "3.4.21", + "@babel/parser": "^7.24.4", + "@vue/shared": "3.4.27", "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz", - "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==", + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz", + "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==", "dependencies": { - "@vue/compiler-core": "3.4.21", - "@vue/shared": "3.4.21" + "@vue/compiler-core": "3.4.27", + "@vue/shared": "3.4.27" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz", - "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==", - "dependencies": { - "@babel/parser": "^7.23.9", - "@vue/compiler-core": "3.4.21", - "@vue/compiler-dom": "3.4.21", - "@vue/compiler-ssr": "3.4.21", - "@vue/shared": "3.4.21", + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz", + "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==", + "dependencies": { + "@babel/parser": "^7.24.4", + "@vue/compiler-core": "3.4.27", + "@vue/compiler-dom": "3.4.27", + "@vue/compiler-ssr": "3.4.27", + "@vue/shared": "3.4.27", "estree-walker": "^2.0.2", - "magic-string": "^0.30.7", - "postcss": "^8.4.35", - "source-map-js": "^1.0.2" + "magic-string": "^0.30.10", + "postcss": "^8.4.38", + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz", - "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==", + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz", + "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==", "dependencies": { - "@vue/compiler-dom": "3.4.21", - "@vue/shared": "3.4.21" + "@vue/compiler-dom": "3.4.27", + "@vue/shared": "3.4.27" } }, "node_modules/@vue/devtools-api": { @@ -3627,53 +3644,53 @@ "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" }, "node_modules/@vue/reactivity": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.21.tgz", - "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==", + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.27.tgz", + "integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==", "dependencies": { - "@vue/shared": "3.4.21" + "@vue/shared": "3.4.27" } }, "node_modules/@vue/runtime-core": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.21.tgz", - "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==", + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.27.tgz", + "integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==", "dependencies": { - "@vue/reactivity": "3.4.21", - "@vue/shared": "3.4.21" + "@vue/reactivity": "3.4.27", + "@vue/shared": "3.4.27" } }, "node_modules/@vue/runtime-dom": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz", - "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==", + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz", + "integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==", "dependencies": { - "@vue/runtime-core": "3.4.21", - "@vue/shared": "3.4.21", + "@vue/runtime-core": "3.4.27", + "@vue/shared": "3.4.27", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz", - "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==", + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.27.tgz", + "integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==", "dependencies": { - "@vue/compiler-ssr": "3.4.21", - "@vue/shared": "3.4.21" + "@vue/compiler-ssr": "3.4.27", + "@vue/shared": "3.4.27" }, "peerDependencies": { - "vue": "3.4.21" + "vue": "3.4.27" } }, "node_modules/@vue/shared": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz", - "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==" + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz", + "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==" }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", @@ -3693,9 +3710,9 @@ "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { @@ -3716,15 +3733,15 @@ "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { @@ -3752,28 +3769,28 @@ "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -3781,24 +3798,24 @@ } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -3807,12 +3824,12 @@ } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -4334,13 +4351,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", - "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.5.0", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { @@ -4348,25 +4365,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", - "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0", - "core-js-compat": "^3.34.0" + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", - "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -4378,9 +4395,9 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/balm-ui": { - "version": "10.27.0", - "resolved": "https://registry.npmjs.org/balm-ui/-/balm-ui-10.27.0.tgz", - "integrity": "sha512-0Vh6JQCylLUP9MOEsS4zjMbGzulcpXWvC+EXYPDX8EppHGRU/ABhRCKGYKamTCk7OiY5EUKWD4Rv/ivAbul8QA==", + "version": "10.28.2", + "resolved": "https://registry.npmjs.org/balm-ui/-/balm-ui-10.28.2.tgz", + "integrity": "sha512-77i9rgcQLJ02hiTiHxDlroiaUgHVswEVtAlXL2olZSUxWgv6eJh3CqaED/4fQS6pYd9JU/9Gspdd89+KmyELAQ==", "dependencies": { "deepmerge": "^4.3.1", "flatpickr": "^4.6.13", @@ -5311,12 +5328,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", - "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", "dev": true, "dependencies": { - "browserslist": "^4.22.3" + "browserslist": "^4.23.0" }, "funding": { "type": "opencollective", @@ -5922,9 +5939,9 @@ } }, "node_modules/electron": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-29.1.1.tgz", - "integrity": "sha512-cXN15NgCi7MkzGo5/23ZQbii+0UfhmUiDjACunmzcUofYCjF42XhFbL7JZnwgI0qtBCCeJU8qZNZt9lU91gUFw==", + "version": "30.0.3", + "resolved": "https://registry.npmjs.org/electron/-/electron-30.0.3.tgz", + "integrity": "sha512-h+suwx6e0fnv/9wi0/cmCMtG+4LrPzJZa+3DEEpxcPcP+pcWnBI70t8QspxgMNIh2wzXLMD9XVqrLkEbiBAInw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -6402,9 +6419,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -6702,12 +6719,13 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "9.22.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.22.0.tgz", - "integrity": "sha512-7wCXv5zuVnBtZE/74z4yZ0CM8AjH6bk4MQGm7hZjUC2DBppKU5ioeOk5LGSg/s9a1ZJnIsdPLJpXnu1Rc+cVHg==", + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.26.0.tgz", + "integrity": "sha512-eTvlxXgd4ijE1cdur850G6KalZqk65k1JKoOI2d1kT3hr8sPD07j1q98FRFdNnpxBELGPWxZmInxeHGF/GxtqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", "natural-compare": "^1.4.0", "nth-check": "^2.1.1", "postcss-selector-parser": "^6.0.15", @@ -6719,7 +6737,22 @@ "node": "^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-vue/node_modules/lru-cache": { @@ -6749,6 +6782,18 @@ "node": ">=10" } }, + "node_modules/eslint-plugin-vue/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-plugin-vue/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -9137,14 +9182,11 @@ } }, "node_modules/magic-string": { - "version": "0.30.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", - "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" } }, "node_modules/matcher": { @@ -9576,9 +9618,9 @@ } }, "node_modules/otpauth": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/otpauth/-/otpauth-9.2.2.tgz", - "integrity": "sha512-2VcnYRUmq1dNckIfySNYP32ITWp1bvTeAEW0BSCR6G3GBf3a5zb9E+ubY62t3Dma9RjoHlvd7QpmzHfJZRkiNg==", + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/otpauth/-/otpauth-9.2.4.tgz", + "integrity": "sha512-t0Nioq2Up2ZaT5AbpXZLTjrsNtLc/g/rVSaEThmKLErAuT9mrnAKJryiPOKc3rCH+3ycWBgKpRHYn+DHqfaPiQ==", "dependencies": { "jssha": "~3.3.1" }, @@ -9889,9 +9931,9 @@ } }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -9909,7 +9951,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -10601,9 +10643,9 @@ } }, "node_modules/sass": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", - "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", + "version": "1.77.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.0.tgz", + "integrity": "sha512-eGj4HNfXqBWtSnvItNkn7B6icqH14i3CiCGbzMKs3BAPTq62pp9NBYsBgyN4cA+qssqo9r26lW4JSvlaUUWbgw==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -10618,9 +10660,9 @@ } }, "node_modules/sass-loader": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", - "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.2.1.tgz", + "integrity": "sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==", "dev": true, "dependencies": { "neo-async": "^2.6.2" @@ -11077,9 +11119,9 @@ } }, "node_modules/socket.io": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.4.tgz", - "integrity": "sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", @@ -11156,9 +11198,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -11814,9 +11856,9 @@ } }, "node_modules/utf-8-validate": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.3.tgz", - "integrity": "sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.4.tgz", + "integrity": "sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==", "hasInstallScript": true, "optional": true, "dependencies": { @@ -11891,15 +11933,15 @@ } }, "node_modules/vue": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz", - "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==", + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz", + "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==", "dependencies": { - "@vue/compiler-dom": "3.4.21", - "@vue/compiler-sfc": "3.4.21", - "@vue/runtime-dom": "3.4.21", - "@vue/server-renderer": "3.4.21", - "@vue/shared": "3.4.21" + "@vue/compiler-dom": "3.4.27", + "@vue/compiler-sfc": "3.4.27", + "@vue/runtime-dom": "3.4.27", + "@vue/server-renderer": "3.4.27", + "@vue/shared": "3.4.27" }, "peerDependencies": { "typescript": "*" @@ -12079,9 +12121,9 @@ } }, "node_modules/vue-qrcode-reader": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/vue-qrcode-reader/-/vue-qrcode-reader-5.5.3.tgz", - "integrity": "sha512-ZR+3axFuW1rxrBZXhkmH+4x6c7JqYLkrYuBmwKLve2eEVZb3LiuYJdW7HZaWqvuuOo1uMjqFe3MqyFOf4/BGyA==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/vue-qrcode-reader/-/vue-qrcode-reader-5.5.4.tgz", + "integrity": "sha512-pE/a0V+K7hvFspJYcBhymbYJHOZ98hosijcIpil7Xer3LjIqljCPK90saLAPathOsb7OJNhlz6S/kjg5unUqwQ==", "dependencies": { "barcode-detector": "2.2.2", "webrtc-adapter": "8.2.3" @@ -12091,9 +12133,9 @@ } }, "node_modules/vue-router": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.0.tgz", - "integrity": "sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.2.tgz", + "integrity": "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==", "dependencies": { "@vue/devtools-api": "^6.5.1" }, @@ -12126,9 +12168,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -12139,26 +12181,26 @@ } }, "node_modules/webpack": { - "version": "5.90.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", - "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", "acorn-import-assertions": "^1.9.0", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.16.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -12166,7 +12208,7 @@ "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.0", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { diff --git a/package.json b/package.json index 88e93c62..c09fdf33 100644 --- a/package.json +++ b/package.json @@ -34,11 +34,15 @@ "target": "nsis" }, "linux": { - "target": [ - "AppImage", - "deb" - ], - "category": "Utility" + "category": "Utility", + "target": "deb", + "mimeTypes": [ + "x-scheme-handler/rawbeeteos", + "x-scheme-handler/beeteos" + ], + "desktop": { + "exec": "beeteos %U" + } } }, "scripts": { @@ -53,10 +57,10 @@ "lintFix": "npm run-script eslint --ext .js,.vue src --fix" }, "dependencies": { - "@babel/runtime": "^7.24.0", + "@babel/runtime": "^7.24.5", "@noble/ed25519": "^1.6.1", "@noble/secp256k1": "^1.6.3", - "balm-ui": "^10.27.0", + "balm-ui": "^10.28.2", "bitsharesjs": "https://github.com/bitshares/bitsharesjs#develop", "crypto-js": "^4.2.0", "dexie": "^3.2.6", @@ -66,45 +70,45 @@ "http-terminator": "^3.2.0", "lzma": "^2.3.2", "mitt": "^3.0.1", - "otpauth": "^9.2.2", + "otpauth": "^9.2.4", "query-string": "^9.0.0", "simple-websocket": "^9.1.0", - "socket.io": "^4.7.4", + "socket.io": "^4.7.5", "typeface-rajdhani": "1.1.13", "typeface-roboto": "1.1.13", "uuid": "^9.0.1", - "vue": "^3.4.21", + "vue": "^3.4.27", "vue-i18n": "9", - "vue-qrcode-reader": "^5.5.3", - "vue-router": "^4.3.0", + "vue-qrcode-reader": "^5.5.4", + "vue-router": "^4.3.2", "vuex": "^4.1.0" }, "devDependencies": { - "@babel/core": "^7.24.0", + "@babel/core": "^7.24.5", "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-transform-runtime": "^7.24.0", - "@babel/preset-env": "^7.24.0", + "@babel/plugin-transform-runtime": "^7.24.3", + "@babel/preset-env": "^7.24.5", "@soda/friendly-errors-webpack-plugin": "^1.8.1", "babel-loader": "^9.1.3", "css-loader": "^6.10.0", - "electron": "^29.1.1", + "electron": "^30.0.3", "electron-builder": "^24.13.3", "eslint": "^8.57.0", - "eslint-plugin-vue": "^9.22.0", + "eslint-plugin-vue": "^9.26.0", "file-loader": "^6.2.0", - "sass": "^1.71.1", - "sass-loader": "^14.1.1", + "sass": "^1.77.0", + "sass-loader": "^14.2.1", "source-map-support": "^0.5.21", "style-loader": "^3.3.4", "vue-loader": "^17.4.2", "vue-template-compiler": "^2.7.16", - "webpack": "^5.90.3", + "webpack": "^5.91.0", "webpack-cli": "^5.1.4", "webpack-merge": "^5.10.0", "webpack-node-externals": "^3.0.0" }, "optionalDependencies": { "bufferutil": "^4.0.8", - "utf-8-validate": "^6.0.3" + "utf-8-validate": "^6.0.4" } } diff --git a/src/background.js b/src/background.js index 7f0406e3..c84873fd 100644 --- a/src/background.js +++ b/src/background.js @@ -1,38 +1,38 @@ import path from "path"; import url from "url"; -import fs from 'fs'; -import os from 'os'; +import fs from "fs"; +import os from "os"; import queryString from "query-string"; -import {PrivateKey} from "bitsharesjs"; +import { PrivateKey } from "bitsharesjs"; -import { v4 as uuidv4 } from 'uuid'; +import { v4 as uuidv4 } from "uuid"; import sha512 from "crypto-js/sha512.js"; import aes from "crypto-js/aes.js"; -import ENC from 'crypto-js/enc-utf8.js'; -import Base64 from 'crypto-js/enc-base64'; +import ENC from "crypto-js/enc-utf8.js"; +import Base64 from "crypto-js/enc-base64"; import * as secp from "@noble/secp256k1"; import { - app, - BrowserWindow, - Menu, - Tray, - dialog, - ipcMain, - Notification, - shell -} from 'electron'; - -import Logger from './lib/Logger.js'; -import {initApplicationMenu} from './lib/applicationMenu.js'; + app, + BrowserWindow, + Menu, + Tray, + dialog, + ipcMain, + Notification, + shell, +} from "electron"; + +import Logger from "./lib/Logger.js"; +import { initApplicationMenu } from "./lib/applicationMenu.js"; import { getSignature } from "./lib/SecureRemote.js"; -import * as Actions from './lib/Actions.js'; +import * as Actions from "./lib/Actions.js"; import getBlockchainAPI from "./lib/blockchains/blockchainFactory.js"; import BTSWalletHandler from "./lib/blockchains/bitshares/BTSWalletHandler.js"; -import BeetServer from './lib/BeetServer.js'; +import BeetServer from "./lib/BeetServer.js"; -import { inject } from './lib/inject.js'; +import { inject } from "./lib/inject.js"; // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. @@ -44,7 +44,7 @@ let receiptWindows = {}; var isDevMode = process.execPath.match(/[\\/]electron/); const logger = new Logger(isDevMode ? 3 : 0); let tray = null; -let regexBTS = /1.2.\d+/g +let regexBTS = /1.2.\d+/g; /* * On modal popup this runs to create child browser window @@ -54,71 +54,75 @@ const createModal = async (arg, modalEvent) => { let modalWidth = 800; if (!mainWindow) { logger.debug(`No window`); - throw 'No main window'; + throw "No main window"; } let request = arg.request; let id = request.id; if (!request || !request.id) { logger.debug(`No request`); - throw 'No request'; + throw "No request"; } if (modalWindows[id] || modalRequests[id]) { - throw 'Modal exists already!'; + throw "Modal exists already!"; } let type = request.type; if (!type) { - throw 'No modal type' + throw "No modal type"; } - modalRequests[id] = {request: request, event: modalEvent}; - let targetURL = `file://${__dirname}/modal.html?id=${encodeURIComponent(id)}`; + modalRequests[id] = { request: request, event: modalEvent }; + let targetURL = `file://${__dirname}/modal.html?id=${encodeURIComponent( + id + )}`; let modalData = { id, type, request }; if (type === Actions.REQUEST_LINK) { let existingLinks = arg.existingLinks; if (existingLinks) { - modalRequests[id]['existingLinks'] = existingLinks; - modalData['existingLinks'] = existingLinks; + modalRequests[id]["existingLinks"] = existingLinks; + modalData["existingLinks"] = existingLinks; } } if ([Actions.INJECTED_CALL, Actions.REQUEST_SIGNATURE].includes(type)) { - let visualizedAccount = arg.visualizedAccount; - let visualizedParams = arg.visualizedParams; - if (!visualizedAccount || !visualizedParams) { - throw 'Missing required visualized fields' - } - modalRequests[id]['visualizedAccount'] = visualizedAccount; - modalRequests[id]['visualizedParams'] = visualizedParams; - modalData['visualizedAccount'] = visualizedAccount; - modalData['visualizedParams'] = visualizedParams; + let visualizedAccount = arg.visualizedAccount; + let visualizedParams = arg.visualizedParams; + if (!visualizedAccount || !visualizedParams) { + throw "Missing required visualized fields"; + } + modalRequests[id]["visualizedAccount"] = visualizedAccount; + modalRequests[id]["visualizedParams"] = visualizedParams; + modalData["visualizedAccount"] = visualizedAccount; + modalData["visualizedParams"] = visualizedParams; } - if ([ - Actions.REQUEST_LINK, - Actions.REQUEST_RELINK, - Actions.GET_ACCOUNT, - Actions.SIGN_MESSAGE, - Actions.SIGN_NFT - ].includes(type)) { - let accounts = arg.accounts; - if (!accounts) { - throw 'Missing required accounts field' - } - modalRequests[id]['accounts'] = accounts; - modalData['accounts'] = accounts; + if ( + [ + Actions.REQUEST_LINK, + Actions.REQUEST_RELINK, + Actions.GET_ACCOUNT, + Actions.SIGN_MESSAGE, + Actions.SIGN_NFT, + ].includes(type) + ) { + let accounts = arg.accounts; + if (!accounts) { + throw "Missing required accounts field"; + } + modalRequests[id]["accounts"] = accounts; + modalData["accounts"] = accounts; } if ([Actions.INJECTED_CALL].includes(type)) { if (arg.isBlockedAccount) { - modalRequests[id]['warning'] = true; - modalData['warning'] = "blockedAccount"; + modalRequests[id]["warning"] = true; + modalData["warning"] = "blockedAccount"; } else if (arg.serverError) { - modalRequests[id]['warning'] = true; - modalData['warning'] = "serverError"; + modalRequests[id]["warning"] = true; + modalData["warning"] = "serverError"; } } @@ -129,7 +133,7 @@ const createModal = async (arg, modalEvent) => { modalWindows[id] = new BrowserWindow({ parent: mainWindow, - title: 'BeetEOS prompt', + title: "BeetEOS prompt", width: modalWidth, height: modalHeight, minWidth: modalWidth, @@ -143,37 +147,37 @@ const createModal = async (arg, modalEvent) => { contextIsolation: true, // Keep true for security enableRemoteModule: false, // Keep false for security sandbox: true, // Keep true for security - preload: path.join(__dirname, "preloadmodal.js"), + preload: path.join(__dirname, "preloadModal.js"), }, - icon: __dirname + '/img/beet-taskbar.png' + icon: __dirname + "/img/beet-taskbar.png", }); modalWindows[id].loadURL(targetURL); - modalWindows[id].once('ready-to-show', () => { - console.log('ready to show modal') + modalWindows[id].once("ready-to-show", () => { + console.log("ready to show modal"); modalWindows[id].show(); - }) - - modalWindows[id].on('closed', () => { - if (modalWindows[id]) { - delete modalWindows[id]; - } - - if (modalRequests[id]) { - modalRequests[id].event.sender.send(`popupRejected_${id}`, { - id: id, - result: { - isError: true, - method: type, - error: 'User closed modal without answering prompt.' - } - }); - delete modalRequests[id]; - modalData = {}; - } }); -} + + modalWindows[id].on("closed", () => { + if (modalWindows[id]) { + delete modalWindows[id]; + } + + if (modalRequests[id]) { + modalRequests[id].event.sender.send(`popupRejected_${id}`, { + id: id, + result: { + isError: true, + method: type, + error: "User closed modal without answering prompt.", + }, + }); + delete modalRequests[id]; + modalData = {}; + } + }); +}; /* * Creating an optional receipt browser window popup @@ -183,7 +187,7 @@ const createReceipt = async (arg, modalEvent) => { let modalWidth = 800; if (!mainWindow) { logger.debug(`No window`); - throw 'No main window'; + throw "No main window"; } let request = arg.request; @@ -193,26 +197,31 @@ const createReceipt = async (arg, modalEvent) => { let notifyTXT = arg.notifyTXT; if (!request || !request.id || !result || !notifyTXT || !receipt) { logger.debug(`No request`); - throw 'No request'; + throw "No request"; } if (receiptWindows[id]) { - throw 'Receipt window exists already!'; + throw "Receipt window exists already!"; } - let targetURL = `file://${__dirname}/receipt.html?id=${encodeURIComponent(id)}`; - + let targetURL = `file://${__dirname}/receipt.html?id=${encodeURIComponent( + id + )}`; + ipcMain.on(`get:receipt:${id}`, (event) => { // The modal window is ready to receive data - event.reply( - `respond:receipt:${id}`, - { id, request, result, receipt, notifyTXT } - ); + event.reply(`respond:receipt:${id}`, { + id, + request, + result, + receipt, + notifyTXT, + }); }); receiptWindows[id] = new BrowserWindow({ parent: mainWindow, - title: 'BeetEOS receipt', + title: "BeetEOS receipt", width: modalWidth, height: modalHeight, minWidth: modalWidth, @@ -226,73 +235,73 @@ const createReceipt = async (arg, modalEvent) => { contextIsolation: true, // Keep true for security enableRemoteModule: false, // Keep false for security sandbox: true, // Keep true for security - preload: path.join(__dirname, "preloadmodal.js"), + preload: path.join(__dirname, "preloadModal.js"), }, - icon: __dirname + '/img/beet-taskbar.png' + icon: __dirname + "/img/beet-taskbar.png", }); receiptWindows[id].loadURL(targetURL); - receiptWindows[id].once('ready-to-show', () => { - console.log('ready to show modal') + receiptWindows[id].once("ready-to-show", () => { + console.log("ready to show modal"); receiptWindows[id].show(); - }) + }); - receiptWindows[id].on('closed', () => { - if (receiptWindows[id]) { - delete receiptWindows[id]; - } + receiptWindows[id].on("closed", () => { + if (receiptWindows[id]) { + delete receiptWindows[id]; + } }); -} +}; /* * User approved modal contents. Close window, resolve promise, delete references. */ -ipcMain.on('clickedAllow', (event, arg) => { - console.log('ipcmain clickedAllow'); - let id = arg.request.id; - - if (modalWindows[id]) { - modalWindows[id].close(); - delete modalWindows[id]; - } - - if (modalRequests[id]) { - modalRequests[id].event.sender.send(`popupApproved_${id}`, arg); - delete modalRequests[id]; - } +ipcMain.on("clickedAllow", (event, arg) => { + console.log("ipcmain clickedAllow"); + let id = arg.request.id; + + if (modalWindows[id]) { + modalWindows[id].close(); + delete modalWindows[id]; + } + + if (modalRequests[id]) { + modalRequests[id].event.sender.send(`popupApproved_${id}`, arg); + delete modalRequests[id]; + } }); /* * User rejected modal contents. Close window, reject promise, delete references. */ -ipcMain.on('clickedDeny', (event, arg) => { - console.log('ipcmain clickedDeny'); - let id = arg.request.id; - - if (modalWindows[id]) { - modalWindows[id].close(); - delete modalWindows[id]; - } - - if (modalRequests[id]) { - modalRequests[id].event.sender.send(`popupRejected_${id}`, arg); - delete modalRequests[id]; - } +ipcMain.on("clickedDeny", (event, arg) => { + console.log("ipcmain clickedDeny"); + let id = arg.request.id; + + if (modalWindows[id]) { + modalWindows[id].close(); + delete modalWindows[id]; + } + + if (modalRequests[id]) { + modalRequests[id].event.sender.send(`popupRejected_${id}`, arg); + delete modalRequests[id]; + } }); /* * A modal error occurred. Close window, resolve promise, delete references. */ -ipcMain.on('modalError', (event, arg) => { - if (modalWindows[arg.id]) { - modalWindows[arg.id].close(); - delete modalWindows[arg.id]; - } - if (modalRequests[arg.id]) { - modalRequests[arg.id].reject(arg); - delete modalRequests[arg.id]; - } +ipcMain.on("modalError", (event, arg) => { + if (modalWindows[arg.id]) { + modalWindows[arg.id].close(); + delete modalWindows[arg.id]; + } + if (modalRequests[arg.id]) { + modalRequests[arg.id].reject(arg); + delete modalRequests[arg.id]; + } }); async function _parseDeeplink( @@ -312,14 +321,19 @@ async function _parseDeeplink( try { processedRequest = decodeURIComponent(requestContent); } catch (error) { - console.log('Processing request failed'); + console.log("Processing request failed"); return; } - + try { - parsedRequest = Base64.parse(processedRequest).toString(ENC) + parsedRequest = Base64.parse(processedRequest).toString(ENC); } catch (error) { - console.log({msg: 'Parsing request failed', error, processedRequest, requestContent}); + console.log({ + msg: "Parsing request failed", + error, + processedRequest, + requestContent, + }); return; } @@ -330,7 +344,7 @@ async function _parseDeeplink( console.log(error); return; } - + let decryptedData; try { decryptedData = decryptedBytes.toString(ENC); @@ -349,7 +363,7 @@ async function _parseDeeplink( try { processedRequest = decodeURIComponent(requestContent); } catch (error) { - console.log('Processing request failed'); + console.log("Processing request failed"); return; } @@ -369,23 +383,28 @@ async function _parseDeeplink( } if ( - !request - || !request.id - || !request.payload - || !request.payload.chain - || !request.payload.method - || request.payload.method === Actions.INJECTED_CALL && !request.payload.params + !request || + !request.id || + !request.payload || + !request.payload.chain || + !request.payload.method || + (request.payload.method === Actions.INJECTED_CALL && + !request.payload.params) ) { - console.log('invalid request format'); + console.log("invalid request format"); return; } - + if (chain !== request.payload.chain) { console.log("Incoming deeplink request for wrong chain"); return; } - if (!Object.keys(Actions).map(key => Actions[key]).includes(request.payload.method)) { + if ( + !Object.keys(Actions) + .map((key) => Actions[key]) + .includes(request.payload.method) + ) { console.log("Unsupported request type rejected"); return; } @@ -393,9 +412,9 @@ async function _parseDeeplink( if (!blockchainActions.includes(request.payload.method)) { console.log({ msg: "Unsupported request type rejected", - request + request, }); - return + return; } if (!settingsRows.includes(request.payload.method)) { @@ -408,9 +427,11 @@ async function _parseDeeplink( if (["BTS", "BTS_TEST", "TUSC"].includes(chain)) { let tr; try { - tr = await blockchain._parseTransactionBuilder(request.payload.params); + tr = await blockchain._parseTransactionBuilder( + request.payload.params + ); } catch (error) { - console.log(error) + console.log(error); } if (tr) { for (let i = 0; i < tr.operations.length; i++) { @@ -423,7 +444,11 @@ async function _parseDeeplink( } } else if (["EOS", "BEOS", "TLOS"].includes(chain)) { if (request.payload.params.actions) { - for (let i = 0; i < request.payload.params.actions.length; i++) { + for ( + let i = 0; + i < request.payload.params.actions.length; + i++ + ) { let operation = request.payload.params.actions[i]; if (settingsRows && settingsRows.includes(operation.name)) { authorizedUse = true; @@ -434,16 +459,18 @@ async function _parseDeeplink( } if (!authorizedUse) { - console.log(`Unauthorized use of deeplinked ${chain} blockchain operation`); + console.log( + `Unauthorized use of deeplinked ${chain} blockchain operation` + ); return; } - console.log("Authorized use of deeplinks") + console.log("Authorized use of deeplinks"); } return { - id: request.id, - type: request.payload.method, - payload: request.payload + id: request.id, + type: request.payload.method, + payload: request.payload, }; } @@ -451,670 +478,726 @@ async function _parseDeeplink( * Creating the primary window, only runs once. */ const createWindow = async () => { - let width = 480; - let height = 695; - mainWindow = new BrowserWindow({ - width: width, - height: height, - minWidth: width, - minHeight: height, - maxWidth: width, - maximizable: false, - maxHeight: height, - useContentSize: true, - autoHideMenuBar: true, - webPreferences: { - nodeIntegration: false, // Keep false for security - contextIsolation: true, // Keep true for security - enableRemoteModule: false, // Keep false for security - sandbox: true, // Keep true for security - preload: path.join(__dirname, "preload.js"), - }, - icon: __dirname + '/img/beet-taskbar.png' - }); - - initApplicationMenu(mainWindow); - mainWindow.loadURL( - url.format({ - pathname: path.join(__dirname, "index.html"), - protocol: "file:", - slashes: true - }) - ); - - tray = new Tray(__dirname + '/img/beet-tray.png'); - const contextMenu = Menu.buildFromTemplate([ - { - label: 'Show App', - click: function () { - mainWindow.show(); - } - }, - { - label: 'Quit', - click: function () { - app.isQuiting = true; - tray = null; - app.quit(); - } - } - ]); - tray.setToolTip('BeetEOS'); - - tray.on('right-click', (event, bounds) => { - tray.popUpContextMenu(contextMenu); - }); - - ipcMain.handle('launchServer', async (event, arg) => { - const { key, cert } = arg; - return BeetServer.initialize( - 60554, - 60555, - key, - cert, - mainWindow.webContents - ).then(() => { - return { - http: BeetServer.httpTerminator ? true : false, - https: BeetServer.httpsTerminator ? true : false - }; - }).catch((error) => { - console.log(error); - return { - http: false, - https: false - }; - }) - }); - - ipcMain.on('closeServer', async (event, arg) => { - let _closure; - try { - _closure = await BeetServer.close(); - } catch (error) { - console.log(error); - } - - if (_closure) { - console.log(_closure) - } - }); - - ipcMain.handle('fetchSSL', async (event, arg) => { - let key; - try { - key = await fetch('https://raw.githubusercontent.com/beetapp/beet-certs/master/beet.key') - .then(res => res.text()); - } catch (error) { - console.log(error); - } - - let cert; - try { - cert = await fetch('https://raw.githubusercontent.com/beetapp/beet-certs/master/beet.cert') - .then(res => res.text()); - } catch (error) { - console.log(error); - } - - return {key, cert}; - }); - - /* - * Handling front end blockchain requests - */ - ipcMain.handle('blockchainRequest', async (event, arg) => { - const { methods, account, chain } = arg; - - let blockchain; - try { - blockchain = getBlockchainAPI(chain); - } catch (error) { - console.log(error); - } - - if (!blockchain) { - return; - } - - let blockchainActions = [ - Actions.INJECTED_CALL - ]; - - let responses = { - chain - }; + let width = 480; + let height = 695; + mainWindow = new BrowserWindow({ + width: width, + height: height, + minWidth: width, + minHeight: height, + maxWidth: width, + maximizable: false, + maxHeight: height, + useContentSize: true, + autoHideMenuBar: true, + webPreferences: { + nodeIntegration: false, // Keep false for security + contextIsolation: true, // Keep true for security + enableRemoteModule: false, // Keep false for security + sandbox: true, // Keep true for security + preload: path.join(__dirname, "preload.js"), + }, + icon: __dirname + "/img/beet-taskbar.png", + }); - if (methods.includes("supportsLocal")) { - responses['supportsLocal'] = blockchain.supportsLocal(); - } + initApplicationMenu(mainWindow); + mainWindow.loadURL( + url.format({ + pathname: path.join(__dirname, "index.html"), + protocol: "file:", + slashes: true, + }) + ); - if (methods.includes("supportsTOTP")) { - responses['supportsTOTP'] = blockchain.supportsTOTP(); - } + tray = new Tray(__dirname + "/img/beet-tray.png"); + const contextMenu = Menu.buildFromTemplate([ + { + label: "Show App", + click: function () { + mainWindow.show(); + }, + }, + { + label: "Quit", + click: function () { + app.isQuiting = true; + tray = null; + app.quit(); + }, + }, + ]); + tray.setToolTip("BeetEOS"); - if (methods.includes("supportsQR")) { - responses['supportsQR'] = blockchain.supportsQR(); - } + tray.on("right-click", (event, bounds) => { + tray.popUpContextMenu(contextMenu); + }); - if (methods.includes("supportsWeb")) { - responses['supportsWeb'] = blockchain.supportsWeb(); - } + ipcMain.handle("launchServer", async (event, arg) => { + const { key, cert } = arg; + return BeetServer.initialize( + 60554, + 60555, + key, + cert, + mainWindow.webContents + ) + .then(() => { + return { + http: BeetServer.httpTerminator ? true : false, + https: BeetServer.httpsTerminator ? true : false, + }; + }) + .catch((error) => { + console.log(error); + return { + http: false, + https: false, + }; + }); + }); - if (methods.includes("getBalances")) { - const _usr = account.name ? account.name : account.accountName; - let _balances; + ipcMain.on("closeServer", async (event, arg) => { + let _closure; try { - _balances = await blockchain.getBalances(_usr); + _closure = await BeetServer.close(); } catch (error) { - console.log({error, location: "getBalances", user: _usr}); + console.log(error); } - if (_balances) { - responses['getBalances'] = JSON.stringify(_balances); + if (_closure) { + console.log(_closure); } - } + }); - if (methods.includes("verifyMessage")) { - const { request } = arg; - let _verifyMessage; + ipcMain.handle("fetchSSL", async (event, arg) => { + let key; try { - _verifyMessage = await blockchain.verifyMessage(request); + key = await fetch( + "https://raw.githubusercontent.com/beetapp/beet-certs/master/beet.key" + ).then((res) => res.text()); } catch (error) { - console.log({error, location: "verifyMessage"}); - } - if (_verifyMessage) { - responses['verifyMessage'] = _verifyMessage; + console.log(error); } - } - if (methods.includes("getExplorer")) { - let _explorer; + let cert; try { - _explorer = await blockchain.getExplorer({ - accountName: account.name ? account.name : account.accountName, - chain - }); + cert = await fetch( + "https://raw.githubusercontent.com/beetapp/beet-certs/master/beet.cert" + ).then((res) => res.text()); } catch (error) { - console.log({error, location: "getExplorer"}); - } - - if (_explorer) { - responses['getExplorer'] = _explorer; + console.log(error); } - } - if (methods.includes("getAccessType")) { - responses['getAccessType'] = blockchain.getAccessType(); - } + return { key, cert }; + }); - if (methods.includes("getImportOptions")) { - responses['getImportOptions'] = blockchain.getImportOptions(); - } + /* + * Handling front end blockchain requests + */ + ipcMain.handle("blockchainRequest", async (event, arg) => { + const { methods, account, chain } = arg; - if (methods.includes("getOperationTypes")) { - let _opTypes; + let blockchain; try { - _opTypes = await blockchain.getOperationTypes(); + blockchain = await getBlockchainAPI(chain); } catch (error) { - console.log({error, location: "getOperationTypes"}); + console.log(error); } - if (_opTypes) { - responses['getOperationTypes'] = _opTypes; + + if (!blockchain || !methods || !methods.length) { + console.log("Unable to perform blockchain request"); + return; } - } - if (methods.includes("createMemoObject")) { - const { from, to, memo, optionalNonce, encryptMemo } = arg; - let memoObj; - try { - memoObj = await blockchain.createMemoObject( - from, - to, - memo, - optionalNonce, - encryptMemo - ); - } catch (error) { - console.log({error, location: "createMemoObject"}); + let blockchainActions = [Actions.INJECTED_CALL]; + + let responses = { + chain, + }; + + if (methods.includes("supportsLocal")) { + responses["supportsLocal"] = blockchain.supportsLocal(); } - - if (memoObj) { - responses['createMemoObject'] = memoObj; + + if (methods.includes("supportsTOTP")) { + responses["supportsTOTP"] = blockchain.supportsTOTP(); } - } - if (methods.includes("signNFT")) { - const {key, target} = arg; - let signedNFT; - try { - signedNFT = await blockchain.signNFT(key, target); - } catch (error) { - console.log(error); + if (methods.includes("supportsQR")) { + responses["supportsQR"] = blockchain.supportsQR(); } - if (signedNFT) { - responses['signNFT'] = signedNFT; + if (methods.includes("supportsWeb")) { + responses["supportsWeb"] = blockchain.supportsWeb(); } - } - if (methods.includes("signAndBroadcast")) { - const { operation, signingKey } = arg; + if (methods.includes("getBalances")) { + const _usr = account.name ? account.name : account.accountName; + let _balances; + try { + _balances = await blockchain.getBalances(_usr); + } catch (error) { + console.log({ error, location: "getBalances", user: _usr }); + } - let transaction; - try { - transaction = await blockchain.sign(operation, signingKey); - } catch (error) { - console.log({ - error, - location: "signAndBroadcast.blockchain.sign" - }); + if (_balances) { + responses["getBalances"] = JSON.stringify(_balances); + } } - if (transaction) { - let broadcastResponse; + if (methods.includes("verifyMessage")) { + const { request } = arg; + let _verifyMessage; try { - broadcastResponse = await blockchain.broadcast(transaction); + _verifyMessage = await blockchain.verifyMessage(request); } catch (error) { - console.log({ - error, - location: "signAndBroadcast.blockchain.broadcast" - }); + console.log({ error, location: "verifyMessage" }); } - if (broadcastResponse) { - responses['signAndBroadcast'] = broadcastResponse; + if (_verifyMessage) { + responses["verifyMessage"] = _verifyMessage; } } - } - if (methods.includes("broadcastTransaction")) { - const { operation } = arg; - let broadcastResponse; - try { - broadcastResponse = await blockchain.broadcast(operation); - } catch (error) { - console.log({ - error, - location: "broadcast" - }); + if (methods.includes("getExplorer")) { + let _explorer; + try { + _explorer = await blockchain.getExplorer({ + accountName: account.name + ? account.name + : account.accountName, + chain, + }); + } catch (error) { + console.log({ error, location: "getExplorer" }); + } + + if (_explorer) { + responses["getExplorer"] = _explorer; + } } - if (broadcastResponse) { - responses['broadcastTransaction'] = broadcastResponse; + + if (methods.includes("getAccessType")) { + responses["getAccessType"] = blockchain.getAccessType(); } - } - if (methods.includes("totpCode")) { - const { timestamp } = arg; - const msg = uuidv4(); - let shaMSG = sha512(msg + timestamp).toString().substring(0, 15); - responses['code'] = shaMSG; - } + if (methods.includes("getImportOptions")) { + responses["getImportOptions"] = blockchain.getImportOptions(); + } - if (methods.includes("totpDeeplink")) { - const { requestContent, currentCode, allowedOperations } = arg; + if (methods.includes("getOperationTypes")) { + let _opTypes; + try { + _opTypes = await blockchain.getOperationTypes(); + } catch (error) { + console.log({ error, location: "getOperationTypes" }); + } + if (_opTypes) { + responses["getOperationTypes"] = _opTypes; + } + } - let apiobj; - try { - apiobj = await _parseDeeplink( - requestContent, - 'totp', - chain, - blockchain, - blockchainActions, - allowedOperations, - currentCode - ); - } catch (error) { - console.log(error); - } + if (methods.includes("createMemoObject")) { + const { from, to, memo, optionalNonce, encryptMemo } = arg; + let memoObj; + try { + memoObj = await blockchain.createMemoObject( + from, + to, + memo, + optionalNonce, + encryptMemo + ); + } catch (error) { + console.log({ error, location: "createMemoObject" }); + } - if (apiobj && apiobj.type === Actions.INJECTED_CALL) { - let status; - try { - status = await inject(blockchain, apiobj, mainWindow.webContents) - } catch (error) { - console.log({error: error || "No status"}); + if (memoObj) { + responses["createMemoObject"] = memoObj; + } } - - if (status && status.result && !status.result.isError && !status.result.canceled) { - responses['getRawLink'] = status.result; - } - } - } - if (methods.includes("getRawLink")) { - const { requestBody, allowedOperations } = arg; + if (methods.includes("signNFT")) { + const { key, target } = arg; + let signedNFT; + try { + signedNFT = await blockchain.signNFT(key, target); + } catch (error) { + console.log(error); + } - let apiobj; - try { - apiobj = await _parseDeeplink( - requestBody, - 'raw', - chain, - blockchain, - blockchainActions, - allowedOperations - ); - } catch (error) { - console.log(error); + if (signedNFT) { + responses["signNFT"] = signedNFT; + } } - if (apiobj && apiobj.type === Actions.INJECTED_CALL) { - let status; + if (methods.includes("signAndBroadcast")) { + const { operation, signingKey } = arg; + + let transaction; try { - status = await inject(blockchain, apiobj, mainWindow.webContents) + transaction = await blockchain.sign(operation, signingKey); } catch (error) { - console.log({error: error || "No status"}); + console.log({ + error, + location: "signAndBroadcast.blockchain.sign", + }); } - console.log({status, location: "background.js"}); - - if (status && status.result && !status.result.isError && !status.result.canceled) { - responses['getRawLink'] = status.result; + if (transaction) { + let broadcastResponse; + try { + broadcastResponse = await blockchain.broadcast(transaction); + } catch (error) { + console.log({ + error, + location: "signAndBroadcast.blockchain.broadcast", + }); + } + if (broadcastResponse) { + responses["signAndBroadcast"] = broadcastResponse; + } } } - } - if (methods.includes("localFileUpload")) { - const {allowedOperations, filePath} = arg; - fs.readFile(filePath, 'utf-8', async (error, data) => { - if (!error) { + if (methods.includes("broadcastTransaction")) { + const { operation } = arg; + let broadcastResponse; + try { + broadcastResponse = await blockchain.broadcast(operation); + } catch (error) { + console.log({ + error, + location: "broadcast", + }); + } + if (broadcastResponse) { + responses["broadcastTransaction"] = broadcastResponse; + } + } + + if (methods.includes("totpCode")) { + const { timestamp } = arg; + const msg = uuidv4(); + let shaMSG = sha512(msg + timestamp) + .toString() + .substring(0, 15); + responses["code"] = shaMSG; + } + + if (methods.includes("totpDeeplink")) { + const { requestContent, currentCode, allowedOperations } = arg; + let apiobj; try { apiobj = await _parseDeeplink( - data, - 'local', + requestContent, + "totp", chain, blockchain, blockchainActions, allowedOperations, - null, // avoid TOTP - true // changes request parsing + currentCode ); } catch (error) { console.log(error); } - + if (apiobj && apiobj.type === Actions.INJECTED_CALL) { let status; try { - status = await inject(blockchain, apiobj, mainWindow.webContents) + status = await inject( + blockchain, + apiobj, + mainWindow.webContents + ); } catch (error) { - console.log({error: error || "No status"}); - } - - if (status && status.result && !status.result.isError && !status.result.canceled) { - responses['localFileUpload'] = status.result; + console.log({ error: error || "No status" }); } - } - } else { - console.log({error}); - } - }); - } - - if (methods.includes("processQR")) { - const { qrChoice, qrData, allowedOperations } = arg; - let parsedData = JSON.parse(qrData); - let authorizedUse = false; - if (["BTS", "BTS_TEST", "TUSC"].includes(chain)) { - const ops = parsedData.operations[0].operations; - for (let i = 0; i < ops.length; i++) { - let operation = ops[i]; - if (allowedOperations && allowedOperations.includes(operation[0])) { - authorizedUse = true; - break; - } - } - } else if ( - ["EOS", "BEOS", "TLOS"].includes(chain) - ) { - const ops = parsedData.operations[0].actions; - for (let i = 0; i < ops.length; i++) { - let operation = ops[i]; - if (allowedOperations && allowedOperations.includes(operation.name)) { - authorizedUse = true; - break; + if ( + status && + status.result && + !status.result.isError && + !status.result.canceled + ) { + responses["getRawLink"] = status.result; } } } - if (authorizedUse) { - let qrTX; + if (methods.includes("getRawLink")) { + const { requestBody, allowedOperations } = arg; + + let apiobj; try { - qrTX = ["BTS", "BTS_TEST", "TUSC"].includes(chain) - ? await blockchain.handleQR(JSON.stringify(parsedData.operations[0])) - : parsedData.operations[0].actions; + apiobj = await _parseDeeplink( + requestBody, + "raw", + chain, + blockchain, + blockchainActions, + allowedOperations + ); } catch (error) { - console.log({error, location: "background"}); + console.log(error); } - console.log('Authorized use of QR codes'); - - let apiobj = { - type: Actions.INJECTED_CALL, - id: await uuidv4(), - payload: { - origin: 'localhost', - appName: 'qr', - browser: qrChoice, - params: ["BTS", "BTS_TEST", "TUSC"].includes(chain) - ? qrTX.toObject() - : qrTX, - chain: chain + if (apiobj && apiobj.type === Actions.INJECTED_CALL) { + let status; + try { + status = await inject( + blockchain, + apiobj, + mainWindow.webContents + ); + } catch (error) { + console.log({ error: error || "No status" }); } - } - let status; - try { - status = await inject(blockchain, apiobj, mainWindow.webContents); - } catch (error) { - console.log({error, location: 'processQR'}); - } - - if (status && status.result && !status.result.isError && !status.result.canceled) { - responses['qrData'] = status.result; + if ( + status && + status.result && + !status.result.isError && + !status.result.canceled + ) { + responses["getRawLink"] = status.result; + } } } - } - if (methods.includes("verifyAccount")) { - const { accountname, authorities } = arg; - let account; - try { - account = await blockchain.verifyAccount(accountname, authorities, chain); - } catch (error) { - console.log(error); - return; - } - - if (account) { - responses['verifyAccount'] = {account, authorities}; - } - } + if (methods.includes("localFileUpload")) { + const { allowedOperations, filePath } = arg; + fs.readFile(filePath, "utf-8", async (error, data) => { + if (!error) { + let apiobj; + try { + apiobj = await _parseDeeplink( + data, + "local", + chain, + blockchain, + blockchainActions, + allowedOperations, + null, // avoid TOTP + true // changes request parsing + ); + } catch (error) { + console.log(error); + } - if (methods.includes("verifyCloudAccount")) { - const { accountname, pass, legacy } = arg; + if (apiobj && apiobj.type === Actions.INJECTED_CALL) { + let status; + try { + status = await inject( + blockchain, + apiobj, + mainWindow.webContents + ); + } catch (error) { + console.log({ error: error || "No status" }); + } + + if ( + status && + status.result && + !status.result.isError && + !status.result.canceled + ) { + responses["localFileUpload"] = status.result; + } + } + } else { + console.log({ error }); + } + }); + } - const active_seed = accountname + 'active' + pass; - const owner_seed = accountname + 'owner' + pass; - const memo_seed = accountname + 'memo' + pass; - - let authorities; - try { - authorities = legacy - ? { - active: PrivateKey.fromSeed(active_seed).toWif(), - memo: PrivateKey.fromSeed(active_seed).toWif(), // legacy wallets improperly used active key for memo - owner: PrivateKey.fromSeed(owner_seed).toWif() + if (methods.includes("processQR")) { + const { qrChoice, qrData, allowedOperations } = arg; + + let parsedData = JSON.parse(qrData); + let authorizedUse = false; + if (["BTS", "BTS_TEST", "TUSC"].includes(chain)) { + const ops = parsedData.operations[0].operations; + for (let i = 0; i < ops.length; i++) { + let operation = ops[i]; + if ( + allowedOperations && + allowedOperations.includes(operation[0]) + ) { + authorizedUse = true; + break; + } + } + } else if (["EOS", "BEOS", "TLOS"].includes(chain)) { + const ops = parsedData.operations[0].actions; + for (let i = 0; i < ops.length; i++) { + let operation = ops[i]; + if ( + allowedOperations && + allowedOperations.includes(operation.name) + ) { + authorizedUse = true; + break; + } } - : { - active: PrivateKey.fromSeed(active_seed).toWif(), - memo: PrivateKey.fromSeed(memo_seed).toWif(), - owner: PrivateKey.fromSeed(owner_seed).toWif() + } + + if (authorizedUse) { + let qrTX; + try { + qrTX = ["BTS", "BTS_TEST", "TUSC"].includes(chain) + ? await blockchain.handleQR( + JSON.stringify(parsedData.operations[0]) + ) + : parsedData.operations[0].actions; + } catch (error) { + console.log({ error, location: "background" }); + } + + console.log("Authorized use of QR codes"); + + let apiobj = { + type: Actions.INJECTED_CALL, + id: await uuidv4(), + payload: { + origin: "localhost", + appName: "qr", + browser: qrChoice, + params: ["BTS", "BTS_TEST", "TUSC"].includes(chain) + ? qrTX.toObject() + : qrTX, + chain: chain, + }, }; - } catch (error) { - console.log(error); + + let status; + try { + status = await inject( + blockchain, + apiobj, + mainWindow.webContents + ); + } catch (error) { + console.log({ error, location: "processQR" }); + } + + if ( + status && + status.result && + !status.result.isError && + !status.result.canceled + ) { + responses["qrData"] = status.result; + } + } } - if (authorities) { + if (methods.includes("verifyAccount")) { + const { accountname, authorities } = arg; let account; try { - account = await blockchain.verifyAccount(accountname, authorities); + account = await blockchain.verifyAccount( + accountname, + authorities, + chain + ); } catch (error) { console.log(error); return; } - + if (account) { - responses['verifyCloudAccount'] = {account, authorities}; + responses["verifyAccount"] = { account, authorities }; } } - } + if (methods.includes("verifyCloudAccount")) { + const { accountname, pass, legacy } = arg; - if (methods.includes("decryptBackup")) { - const { filePath, pass } = arg; - fs.readFile(filePath, async (err, data) => { - if (err) { - console.log({err}); - } else { - let wh = new BTSWalletHandler(data); - let unlocked; + const active_seed = accountname + "active" + pass; + const owner_seed = accountname + "owner" + pass; + const memo_seed = accountname + "memo" + pass; + + let authorities; + try { + authorities = legacy + ? { + active: PrivateKey.fromSeed(active_seed).toWif(), + memo: PrivateKey.fromSeed(active_seed).toWif(), // legacy wallets improperly used active key for memo + owner: PrivateKey.fromSeed(owner_seed).toWif(), + } + : { + active: PrivateKey.fromSeed(active_seed).toWif(), + memo: PrivateKey.fromSeed(memo_seed).toWif(), + owner: PrivateKey.fromSeed(owner_seed).toWif(), + }; + } catch (error) { + console.log(error); + } + + if (authorities) { + let account; try { - unlocked = await wh.unlock(pass); + account = await blockchain.verifyAccount( + accountname, + authorities + ); } catch (error) { - console.log({error}); + console.log(error); return; } - - if (unlocked) { - let retrievedAccounts; - try{ - retrievedAccounts = await wh.lookupAccounts(mainWindow.webContents); + + if (account) { + responses["verifyCloudAccount"] = { account, authorities }; + } + } + } + + if (methods.includes("decryptBackup")) { + const { filePath, pass } = arg; + fs.readFile(filePath, async (err, data) => { + if (err) { + console.log({ err }); + } else { + let wh = new BTSWalletHandler(data); + let unlocked; + try { + unlocked = await wh.unlock(pass); } catch (error) { - console.log({error}); + console.log({ error }); + return; } - - if (retrievedAccounts) { - responses['decryptBackup'] = retrievedAccounts; + + if (unlocked) { + let retrievedAccounts; + try { + retrievedAccounts = await wh.lookupAccounts( + mainWindow.webContents + ); + } catch (error) { + console.log({ error }); + } + + if (retrievedAccounts) { + responses["decryptBackup"] = retrievedAccounts; + } } } + }); + } + + return responses; + }); + + ipcMain.handle("restore", async (event, arg) => { + const { file, seed } = arg; + + fs.readFile(file, "utf-8", async (error, data) => { + if (error) { + console.log("Error reading file"); + return; } - }); - } - return responses; - }); + let decryptedData; + try { + decryptedData = await aes.decrypt(data, seed); + } catch (error) { + console.log(error); + return; + } - ipcMain.handle('restore', async (event, arg) => { - const { file, seed } = arg; + if (!decryptedData) { + console.log("Wallet restore failed"); + return; + } - fs.readFile(file, 'utf-8', async (error, data) => { - if (error) { - console.log("Error reading file"); - return; + return decryptedData; + }); + }); + + const safeDomains = [ + "bloks.io", + "explore.beos.world", + "blocksights.info", + "telos.eosx.io", + "wallet.tusc.network", + ]; + ipcMain.on("openURL", (event, arg) => { + try { + const parsedUrl = new url.URL(arg); + const domain = parsedUrl.hostname; + if (safeDomains.includes(domain)) { + shell.openExternal(arg); + } else { + console.error( + `Rejected opening URL with unsafe domain: ${domain}` + ); + } + } catch (err) { + console.error(`Failed to open URL: ${err.message}`); } + }); - let decryptedData; + /* + * Create modal popup & wait for user response + */ + ipcMain.on("createPopup", async (event, arg) => { try { - decryptedData = await aes.decrypt(data, seed); + await createModal(arg, event); } catch (error) { console.log(error); - return; } + }); - if (!decryptedData) { - console.log("Wallet restore failed"); - return; + /* + * Create receipt popup & wait for user response + */ + ipcMain.on("createReceipt", async (event, arg) => { + try { + await createReceipt(arg, event); + } catch (error) { + console.log(error); } + }); - return decryptedData; + ipcMain.on("notify", (event, arg) => { + logger.debug("notify"); + const NOTIFICATION_TITLE = "Beet wallet notification"; + const NOTIFICATION_BODY = + arg == "request" ? "Beet has received a new request." : arg; + + if (os.platform === "win32") { + app.setAppUserModelId(app.name); + } + + function showNotification() { + new Notification({ + title: NOTIFICATION_TITLE, + subtitle: "subtitle", + body: NOTIFICATION_BODY, + icon: __dirname + "/img/beet-tray.png", + }).show(); + } + + showNotification(); }); - }); - - const safeDomains = [ - "bloks.io", - "explore.beos.world", - "blocksights.info", - "telos.eosx.io", - "wallet.tusc.network", - ]; - ipcMain.on('openURL', (event, arg) => { - try { - const parsedUrl = new url.URL(arg); - const domain = parsedUrl.hostname; - if (safeDomains.includes(domain)) { - shell.openExternal(arg); - } else { - console.error(`Rejected opening URL with unsafe domain: ${domain}`); - } - } catch (err) { - console.error(`Failed to open URL: ${err.message}`); - } - }); - - /* - * Create modal popup & wait for user response - */ - ipcMain.on('createPopup', async (event, arg) => { - try { - await createModal(arg, event); - } catch (error) { - console.log(error); - } - }) + ipcMain.handle("aesEncrypt", async (event, arg) => { + const { data, seed } = arg; - /* - * Create receipt popup & wait for user response - */ - ipcMain.on('createReceipt', async (event, arg) => { + let encryptedData; try { - await createReceipt(arg, event); + encryptedData = aes.encrypt(data, seed).toString(); } catch (error) { - console.log(error); - } - }) - - ipcMain.on('notify', (event, arg) => { - logger.debug("notify"); - const NOTIFICATION_TITLE = 'Beet wallet notification'; - const NOTIFICATION_BODY = arg == 'request' ? "Beet has received a new request." : arg; - - if (os.platform === 'win32') - { - app.setAppUserModelId(app.name); - } - - function showNotification () { - new Notification({ - title: NOTIFICATION_TITLE, - subtitle: 'subtitle', - body: NOTIFICATION_BODY, - icon: __dirname + '/img/beet-tray.png', - }).show() - } - - showNotification(); - }); - - ipcMain.handle('aesEncrypt', async (event, arg) => { - const { data, seed } = arg; - - let encryptedData; - try { - encryptedData = aes.encrypt(data, seed).toString(); - } catch (error) { - console.log(error); - return; - } + console.log(error); + return; + } - return encryptedData; - }); + return encryptedData; + }); - ipcMain.handle('aesDecrypt', async (event, arg) => { + ipcMain.handle("aesDecrypt", async (event, arg) => { const { data, seed } = arg; let decryptedData; @@ -1132,239 +1215,258 @@ const createWindow = async () => { console.log(error); throw error; } - + return decryptedString; }); - ipcMain.handle('sha512', async (event, arg) => { - const { data } = arg; - - let hash; - try { - hash = sha512(data).toString(); - } catch (error) { - console.log(error); - return; - } + ipcMain.handle("sha512", async (event, arg) => { + const { data } = arg; - return hash; - }); - - ipcMain.handle('id', (event, arg) => { - const id = uuidv4(); - return id; - }); - - let _seed; - ipcMain.on('seed', (event, arg) => { - console.log("SEEDED") - _seed = arg; - }); - - ipcMain.handle('decrypt', async (event, arg) => { - let seed; - if (arg.seed) { - seed = arg.seed; - } else if (arg.inject && _seed) { - seed = _seed; - } - - let decryptedData; - if (arg.data && seed) { + let hash; try { - decryptedData = await aes.decrypt(arg.data, seed).toString(ENC); + hash = sha512(data).toString(); } catch (error) { - console.log(error); + console.log(error); + return; } - } - return decryptedData; - }); + return hash; + }); - ipcMain.handle('getSignature', async (event, arg) => { - let response; - try { - response = await getSignature(arg); - } catch (error) { - console.log(error); - } + ipcMain.handle("id", (event, arg) => { + const id = uuidv4(); + return id; + }); + + let _seed; + ipcMain.on("seed", (event, arg) => { + console.log("SEEDED"); + _seed = arg; + }); + + ipcMain.handle("decrypt", async (event, arg) => { + let seed; + if (arg.seed) { + seed = arg.seed; + } else if (arg.inject && _seed) { + seed = _seed; + } + + let decryptedData; + if (arg.data && seed) { + try { + decryptedData = await aes.decrypt(arg.data, seed).toString(ENC); + } catch (error) { + console.log(error); + } + } + + return decryptedData; + }); + + ipcMain.handle("getSignature", async (event, arg) => { + let response; + try { + response = await getSignature(arg); + } catch (error) { + console.log(error); + } - return response; - }); + return response; + }); - ipcMain.handle('verifyCrypto', async (event, arg) => { + ipcMain.handle("verifyCrypto", async (event, arg) => { const { signedMessage, msgHash, pubk } = arg; let isValid; try { - isValid = await secp.verify( - signedMessage, - msgHash, - pubk - ); + isValid = await secp.verify(signedMessage, msgHash, pubk); } catch (error) { console.log(error); } - + return isValid; }); - ipcMain.on('downloadBackup', async (event, arg) => { - const { walletName, accounts, seed } = arg; - let toLocalPath = path.resolve( - app.getPath("desktop"), - `BeetBackup-${walletName}-${new Date().toISOString().slice(0,10)}.beet` - ); - dialog.showSaveDialog({ defaultPath: toLocalPath }) - .then(async (result) => { - if (result.canceled) { - console.log("Cancelled saving backup.") - return; - } + ipcMain.on("downloadBackup", async (event, arg) => { + const { walletName, accounts, seed } = arg; + let toLocalPath = path.resolve( + app.getPath("desktop"), + `BeetBackup-${walletName}-${new Date() + .toISOString() + .slice(0, 10)}.beet` + ); + dialog + .showSaveDialog({ defaultPath: toLocalPath }) + .then(async (result) => { + if (result.canceled) { + console.log("Cancelled saving backup."); + return; + } - let response = await getSignature('backup'); - if (!response) { - console.log("Error: No signature"); - return; - } + let response = await getSignature("backup"); + if (!response) { + console.log("Error: No signature"); + return; + } - let isValid; - try { - isValid = await secp.verify( - response.signedMessage, - response.msgHash, - response.pubk - ); - } catch (error) { - console.log(error); - return; - } + let isValid; + try { + isValid = await secp.verify( + response.signedMessage, + response.msgHash, + response.pubk + ); + } catch (error) { + console.log(error); + return; + } - if (!isValid) { - console.log("Failed to backup wallet (validation)"); - return; - } + if (!isValid) { + console.log("Failed to backup wallet (validation)"); + return; + } - let encrypted; - try { - encrypted = await aes.encrypt( - JSON.stringify({ - wallet: walletName, - accounts: JSON.parse(accounts) - }), - seed - ).toString(); - } catch (error) { - console.log(`encrypt: ${error}`); - return; - } + let encrypted; + try { + encrypted = await aes + .encrypt( + JSON.stringify({ + wallet: walletName, + accounts: JSON.parse(accounts), + }), + seed + ) + .toString(); + } catch (error) { + console.log(`encrypt: ${error}`); + return; + } - if (!encrypted) { - console.log("Failed to backup wallet (encryption)"); - return; - } + if (!encrypted) { + console.log("Failed to backup wallet (encryption)"); + return; + } - if (encrypted) { - fs.writeFileSync(result.filePath, encrypted); - } + if (encrypted) { + fs.writeFileSync(result.filePath, encrypted); + } + }) + .catch((error) => { + console.log(error); + }); + }); + + ipcMain.on("log", (event, arg) => { + logger[arg.level](arg.data); + }); - }).catch((error) => { - console.log(error) - }); - - }); - - ipcMain.on('log', (event, arg) => { - logger[arg.level](arg.data); - }); - - tray.on('click', () => { - mainWindow.setAlwaysOnTop(true); - mainWindow.show(); - mainWindow.focus(); - mainWindow.setAlwaysOnTop(false); - }); - - tray.on('balloon-click', () => { - mainWindow.setAlwaysOnTop(true); - mainWindow.show(); - mainWindow.focus(); - mainWindow.setAlwaysOnTop(false); - }); + tray.on("click", () => { + mainWindow.setAlwaysOnTop(true); + mainWindow.show(); + mainWindow.focus(); + mainWindow.setAlwaysOnTop(false); + }); + + tray.on("balloon-click", () => { + mainWindow.setAlwaysOnTop(true); + mainWindow.show(); + mainWindow.focus(); + mainWindow.setAlwaysOnTop(false); + }); }; app.disableHardwareAcceleration(); let currentOS = os.platform(); -if (currentOS == 'win32') { - // windows specific steps - const gotTheLock = app.requestSingleInstanceLock() +if (currentOS === "win32" || currentOS === "linux") { + // windows + linux setup phase + const gotTheLock = app.requestSingleInstanceLock(); if (!gotTheLock) { - app.quit() + app.quit(); } else { // Handle the protocol. In this case, we choose to show an Error Box. - app.on('second-instance', (event, args) => { + app.on("second-instance", (event, argv) => { // Someone tried to run a second instance, we should focus our window. - if (mainWindow) { - if (mainWindow.isMinimized()) { - mainWindow.restore() - } - mainWindow.focus() - - if (process.platform == 'win32' && args.length > 2) { - let urlType = args[3].includes('raw') ? 'rawdeeplink' : 'deeplink'; - - let deeplinkingUrl = args[3].replace( - urlType === 'deeplink' ? 'beeteos://api/' : 'rawbeeteos://api/', - '' - ); + if (!mainWindow) { + console.error("Main window is not defined."); + return; + } - let qs; - try { - qs = queryString.parse(deeplinkingUrl); - } catch (error) { - console.log(error); - return; - } + if (mainWindow.isMinimized()) { + mainWindow.restore(); + } - if (qs) { - mainWindow.webContents.send(urlType, qs); - } - } + mainWindow.focus(); + let deeplink; + try { + deeplink = argv.at(-1); + } catch (error) { + console.log(error); + return; } - }) + let deeplinkingUrl = deeplink.includes("beeteos://api/") ? deeplink.split("beeteos://api/")[1] : deeplink.split("rawbeeteos://api/")[1]; + + let qs; + try { + qs = queryString.parse(deeplinkingUrl); + } catch (error) { + console.log(error); + return; + } + + if (qs) { + mainWindow.webContents.send( + deeplink.includes("raw") + ? "rawdeeplink" + : "deeplink", + qs + ); + } + }); + let defaultPath; try { defaultPath = path.resolve(process.argv[1]); } catch (error) { - console.log(error) + console.log(error); } - - app.setAsDefaultProtocolClient('beeteos', process.execPath, [defaultPath]) - app.setAsDefaultProtocolClient('rawbeeteos', process.execPath, [defaultPath]) + + app.setAsDefaultProtocolClient("beeteos", process.execPath, [ + defaultPath, + ]); + + app.setAsDefaultProtocolClient("rawbeeteos", process.execPath, [ + defaultPath, + ]); app.whenReady().then(() => { createWindow(); - }); + }); } } else { - app.setAsDefaultProtocolClient('beeteos') - app.setAsDefaultProtocolClient('rawbeeteos') - - // mac or linux + app.setAsDefaultProtocolClient("beeteos"); + app.setAsDefaultProtocolClient("rawbeeteos"); + app.whenReady().then(() => { - createWindow() - }) - - // Handle the protocol. In this case, we choose to show an Error Box. - app.on('open-url', (event, urlString) => { - let urlType = urlString.contains('raw') ? 'rawdeeplink' : 'deeplink'; + createWindow(); + }); + + app.on("open-url", (event, urlString) => { + if (!mainWindow) { + console.error("Main window is not defined."); + return; + } + + let urlType = urlString.contains("raw") ? "rawdeeplink" : "deeplink"; + + dialog.showErrorBox("Error", urlType); let deeplinkingUrl = urlString.replace( - urlType === 'deeplink' ? 'beeteos://api/' : 'rawbeeteos://api/', - '' + urlType === "deeplink" ? "beeteos://api/" : "rawbeeteos://api/", + "" ); let qs; @@ -1376,28 +1478,20 @@ if (currentOS == 'win32') { } if (qs) { + dialog.showErrorBox("Error", JSON.stringify({qs: qs})); mainWindow.webContents.send(urlType, qs); } - }) + }); - // This method will be called when Electron has finished - // initialization and is ready to create browser windows. - // Some APIs can only be used after this event occurs. - // Quit when all windows are closed. - app.on('window-all-closed', () => { - // On OS X it is common for applications and their menu bar - // to stay active until the user quits explicitly with Cmd + Q - if (process.platform !== 'darwin') { + app.on("window-all-closed", () => { + if (process.platform !== "darwin") { app.quit(); } }); - - app.on('activate', () => { - // On OS X it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. + + app.on("activate", () => { if (mainWindow === null) { createWindow(); } }); } - diff --git a/src/components/raw-link.vue b/src/components/raw-link.vue index 395ba8c1..b4be5e0c 100644 --- a/src/components/raw-link.vue +++ b/src/components/raw-link.vue @@ -39,7 +39,7 @@ return store.getters['AccountStore/getChain']; }); - let compatibleChain = ref(false); + let compatibleChain = ref(); let operationTypes = ref([]); watchEffect(() => { async function initialize() { @@ -132,7 +132,7 @@
@@ -232,7 +232,7 @@
- {{ t('common.raw.unsupported') }} + Unsupported chain.