diff --git a/locale/de/translation.js b/locale/de/translation.js
index 5e58e6dcc..d104f9c9b 100644
--- a/locale/de/translation.js
+++ b/locale/de/translation.js
@@ -372,6 +372,7 @@ export default {
MN_STATUS_IS: 'Der Status der Masternode ist', //Your masternode status is
MN_STATE: 'Die Masternode hat den Status {state}', //Your masternode is in {state} state
MN_BAD_IP: 'Die IP-Adresse ist ungültig', //The IP address is invalid!
+ MN_BAD_PRIVKEY: '', //The private key is invalid
MN_NOT_ENOUGH_COLLAT:
'Du benötigst {amount} mehr {ticker} um eine Masternode zu erstellen!', //You need {amount} more {ticker} to create a Masternode!
MN_ENOUGH_BUT_NO_COLLAT:
diff --git a/locale/en/translation.js b/locale/en/translation.js
index 3a5416a3b..b67106f9d 100644
--- a/locale/en/translation.js
+++ b/locale/en/translation.js
@@ -365,6 +365,7 @@ export default {
MN_STATUS_IS: 'Your masternode status is',
MN_STATE: 'Your masternode is in {state} state',
MN_BAD_IP: 'The IP address is invalid!',
+ MN_BAD_PRIVKEY: 'The private key is invalid',
MN_NOT_ENOUGH_COLLAT:
'You need {amount} more {ticker} to create a Masternode!',
MN_ENOUGH_BUT_NO_COLLAT:
diff --git a/locale/es-mx/translation.js b/locale/es-mx/translation.js
index 2324bcd48..c08f7ff6f 100644
--- a/locale/es-mx/translation.js
+++ b/locale/es-mx/translation.js
@@ -375,6 +375,7 @@ export default {
MN_STATUS_IS: 'El estado de tu masternode es', //Your masternode status is
MN_STATE: 'Tu masternode está {state}', //Your masternode is in {state} state
MN_BAD_IP: '¡La dirección IP no es válida!', //The IP address is invalid!
+ MN_BAD_PRIVKEY: '', //The private key is invalid
MN_NOT_ENOUGH_COLLAT:
'¡Necesitas {amount} más {ticker} para crear un Masternode!', //You need {amount} more {ticker} to create a Masternode!
MN_ENOUGH_BUT_NO_COLLAT:
diff --git a/locale/fr/translation.js b/locale/fr/translation.js
index 5bf4b2ec1..be771ba93 100644
--- a/locale/fr/translation.js
+++ b/locale/fr/translation.js
@@ -378,6 +378,7 @@ export default {
MN_STATUS_IS: "L'état de votre masternode est", //Your masternode status is
MN_STATE: "L'état de votre masternode est {state}", //Your masternode is in {state} state
MN_BAD_IP: "L'adresse IP n'est pas valide!", //The IP address is invalid!
+ MN_BAD_PRIVKEY: '', //The private key is invalid
MN_NOT_ENOUGH_COLLAT:
'Vous avez besoin {amount} plus {ticker} pour créer un Masternode!', //You need {amount} more {ticker} to create a Masternode!
MN_ENOUGH_BUT_NO_COLLAT:
diff --git a/locale/it/translation.js b/locale/it/translation.js
index e7cf47c2d..123608483 100644
--- a/locale/it/translation.js
+++ b/locale/it/translation.js
@@ -356,6 +356,7 @@ export default {
MN_STATUS_IS: 'Lo stato del tuo Masternode è ', //Your masternode status is
MN_STATE: 'Il tuo masternode è {state}', //Your masternode is in {state} state
MN_BAD_IP: "L'indirizzo IP non è valido!", //The IP address is invalid!
+ MN_BAD_PRIVKEY: '', //The private key is invalid
MN_NOT_ENOUGH_COLLAT:
'Hai bisogno di {amount} altri {ticker} per creare un Masternode!', //You need {amount} more {ticker} to create a Masternode!
MN_ENOUGH_BUT_NO_COLLAT:
diff --git a/locale/ph/translation.js b/locale/ph/translation.js
index 28b3c8daf..f0485dee1 100644
--- a/locale/ph/translation.js
+++ b/locale/ph/translation.js
@@ -383,6 +383,7 @@ export default {
MN_STATUS_IS: 'Ang kalagayan ng iyong Masternode ay', //Your masternode status is
MN_STATE: 'Ang iyong masternode ay nasa {state} kalagayan', //Your masternode is in {state} state
MN_BAD_IP: 'Ang IP address ay hindi wasto!', //The IP address is invalid!
+ MN_BAD_PRIVKEY: '', //The private key is invalid
MN_NOT_ENOUGH_COLLAT:
'Kailangan mo ng {amount} pang {ticker} upang makagawa ng Masternode!', //You need {amount} more {ticker} to create a Masternode!
MN_ENOUGH_BUT_NO_COLLAT:
diff --git a/locale/pt-br/translation.js b/locale/pt-br/translation.js
index 45ea5ef8e..d3d6422f2 100644
--- a/locale/pt-br/translation.js
+++ b/locale/pt-br/translation.js
@@ -369,6 +369,7 @@ export default {
MN_STATUS_IS: 'O status do seu masternode é', //Your masternode status is
MN_STATE: 'O status do seu masternode é {state}', //Your masternode is in {state} state
MN_BAD_IP: 'O endereço IP é inválido!', //The IP address is invalid!
+ MN_BAD_PRIVKEY: '', //The private key is invalid
MN_NOT_ENOUGH_COLLAT:
'Você precisa de {amount} mais {ticker} para criar um Masternode!', //You need {amount} more {ticker} to create a Masternode!
MN_ENOUGH_BUT_NO_COLLAT:
diff --git a/locale/pt-pt/translation.js b/locale/pt-pt/translation.js
index 4e448bb7c..76c61571d 100644
--- a/locale/pt-pt/translation.js
+++ b/locale/pt-pt/translation.js
@@ -370,6 +370,7 @@ export default {
MN_STATUS_IS: 'O estado do seu masternode é', //Your masternode status is
MN_STATE: 'O estado do seu masternode é {state}', //Your masternode is in {state} state
MN_BAD_IP: 'O endereço IP é inválido!', //The IP address is invalid!
+ MN_BAD_PRIVKEY: '', //The private key is invalid
MN_NOT_ENOUGH_COLLAT:
'Você precisa de {amount} mais {ticker} para criar um Masternode!', //You need {amount} more {ticker} to create a Masternode!
MN_ENOUGH_BUT_NO_COLLAT:
diff --git a/locale/template/translation.js b/locale/template/translation.js
index 5a49df470..c23fd5a84 100644
--- a/locale/template/translation.js
+++ b/locale/template/translation.js
@@ -339,6 +339,7 @@ export default {
MN_STATUS_IS: '', //Your masternode status is
MN_STATE: '', //Your masternode is in {state} state
MN_BAD_IP: '', //The IP address is invalid!
+ MN_BAD_PRIVKEY: '', //The private key is invalid!
MN_NOT_ENOUGH_COLLAT: '', //You need {amount} more {ticker} to create a Masternode!
MN_ENOUGH_BUT_NO_COLLAT: '', //You have enough balance for a Masternode, but no valid collateral UTXO of {amount} {ticker}
MN_COLLAT_NOT_SUITABLE: '', //This is not a suitable UTXO for a Masternode
diff --git a/locale/uwu/translation.js b/locale/uwu/translation.js
index 64d234775..ef4a9df8c 100644
--- a/locale/uwu/translation.js
+++ b/locale/uwu/translation.js
@@ -367,6 +367,7 @@ export default {
MN_STATUS_IS: 'Ur masternowode status is', //Your masternode status is
MN_STATE: 'Ur masternowode is in {state} state', //Your masternode is in {state} state
MN_BAD_IP: 'The IP addwess is invalid!', //The IP address is invalid!
+ MN_BAD_PRIVKEY: '', //The private key is invalid
MN_NOT_ENOUGH_COLLAT:
'Yew need {amount} more {ticker} to create a Masternowode!', //You need {amount} more {ticker} to create a Masternode!
MN_ENOUGH_BUT_NO_COLLAT:
diff --git a/package-lock.json b/package-lock.json
index 468e37fb4..794b186dd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -51,6 +51,7 @@
"html-loader": "^4.2.0",
"html-webpack-plugin": "^5.5.0",
"mini-css-extract-plugin": "^2.7.2",
+ "multimap": "^1.1.0",
"node-polyfill-webpack-plugin": "^2.0.1",
"prettier": "^2.8.1",
"resource-loader": "^4.0.0-rc4",
@@ -71,9 +72,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
- "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+ "version": "7.22.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz",
+ "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -90,39 +91,15 @@
"node": ">=10.0.0"
}
},
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.8.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.2.tgz",
- "integrity": "sha512-0MGxAVt1m/ZK+LTJp/j0qF7Hz97D9O/FH9Ms3ltnyIdDD57cbb1ACIQTkbHvNXtWDv5TPq7w5Kq56+cNukbo7g==",
- "dev": true,
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
"node_modules/@eslint/eslintrc": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
- "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
+ "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.6.0",
+ "espree": "^9.4.0",
"globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
@@ -137,15 +114,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/@eslint/js": {
- "version": "8.50.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz",
- "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
"node_modules/@fontsource/chivo": {
"version": "4.5.11",
"resolved": "https://registry.npmjs.org/@fontsource/chivo/-/chivo-4.5.11.tgz",
@@ -157,18 +125,18 @@
"integrity": "sha512-fTvrteVzuFUePhr4QYBGoK8G/YHLJ3IhF1HhKg0AxcFvZajJT7rM7ULdmKLSd2PkX44R3aaFZq1zDbmjbGGI+w=="
},
"node_modules/@fortawesome/fontawesome-free": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz",
- "integrity": "sha512-m5cPn3e2+FDCOgi1mz0RexTUvvQibBebOUlUlW0+YrMjDTPkiJ6VTKukA1GRsvRw+12KyJndNjj0O4AgTxm2Pg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.2.1.tgz",
+ "integrity": "sha512-viouXhegu/TjkvYQoiRZK3aax69dGXxgEjpvZW81wIJdxm5Fnvp3VVIP4VHKqX4SvFw6qpmkILkD4RJWAdrt7A==",
"hasInstallScript": true,
"engines": {
"node": ">=6"
}
},
"node_modules/@humanwhocodes/config-array": {
- "version": "0.11.11",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz",
- "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==",
+ "version": "0.11.8",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
+ "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
"dev": true,
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.1",
@@ -199,24 +167,24 @@
"dev": true
},
"node_modules/@jest/schemas": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
- "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz",
+ "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==",
"dev": true,
"dependencies": {
- "@sinclair/typebox": "^0.27.8"
+ "@sinclair/typebox": "^0.25.16"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/types": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
- "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz",
+ "integrity": "sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==",
"dev": true,
"dependencies": {
- "@jest/schemas": "^29.6.3",
+ "@jest/schemas": "^29.4.3",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
@@ -228,9 +196,9 @@
}
},
"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.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
"dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.0.1",
@@ -242,9 +210,9 @@
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"dev": true,
"engines": {
"node": ">=6.0.0"
@@ -260,9 +228,9 @@
}
},
"node_modules/@jridgewell/source-map": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
- "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
+ "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
"dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.0",
@@ -270,18 +238,19 @@
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "dev": true
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.19",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
- "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
+ "version": "0.3.17",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
"dev": true,
"dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
}
},
"node_modules/@kurkle/color": {
@@ -290,27 +259,27 @@
"integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
},
"node_modules/@ledgerhq/devices": {
- "version": "8.0.7",
- "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.0.7.tgz",
- "integrity": "sha512-BbPyET52lXnVs7CxJWrGYqmtGdbGzj+XnfCqLsDnA7QYr1CZREysxmie+Rr6BKpNDBRVesAovXjtaVaZOn+upw==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-7.0.6.tgz",
+ "integrity": "sha512-trEqJqgXuXLgb228c6kJdur0idTVxtofy8NxumvsspZKh5x/pHJX8EoNxWX91Pg7H3AA+jxLEeRvAjNDVDJgGQ==",
"dependencies": {
- "@ledgerhq/errors": "^6.14.0",
+ "@ledgerhq/errors": "^6.12.2",
"@ledgerhq/logs": "^6.10.1",
"rxjs": "6",
"semver": "^7.3.5"
}
},
"node_modules/@ledgerhq/errors": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.14.0.tgz",
- "integrity": "sha512-ZWJw2Ti6Dq1Ott/+qYqJdDWeZm16qI3VNG5rFlb0TQ3UcAyLIQZbnnzzdcVVwVeZiEp66WIpINd/pBdqsHVyOA=="
+ "version": "6.12.2",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.12.2.tgz",
+ "integrity": "sha512-qYTkxlWHVItxPAb9pQewfVoN8nFvvFYzWEyzVRX/NuO/g3JKL5kef5lLuqTtUIFOvFROMLi3EBxU+vbvV0ktow=="
},
"node_modules/@ledgerhq/hw-app-btc": {
- "version": "9.1.3",
- "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-btc/-/hw-app-btc-9.1.3.tgz",
- "integrity": "sha512-f/eohEQ+Ha8iJ3ix0a42qa8NafeEWQdNhe0Q85xBTwVdzyu2W3kLwVfShqn/ELIy/lZffSNqYQKyHp8EnO4s8w==",
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-btc/-/hw-app-btc-9.1.1.tgz",
+ "integrity": "sha512-ZeZuDhsDyRgofhhKF50rYmhsjOunTz57+gW6SgIuSTVXu/SAcPJ7P1eCFUlTq+mLUVrPXksr9HmR7WSwevnM2g==",
"dependencies": {
- "@ledgerhq/hw-transport": "^6.28.0",
+ "@ledgerhq/hw-transport": "^6.27.9",
"@ledgerhq/logs": "^6.10.1",
"bip32-path": "^0.4.2",
"bitcoinjs-lib": "^5.2.0",
@@ -341,23 +310,23 @@
}
},
"node_modules/@ledgerhq/hw-transport": {
- "version": "6.28.8",
- "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.28.8.tgz",
- "integrity": "sha512-XxQVl4htd018u/M66r0iu5nlHi+J6QfdPsORzDF6N39jaz+tMqItb7tUlXM/isggcuS5lc7GJo7NOuJ8rvHZaQ==",
+ "version": "6.27.9",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.27.9.tgz",
+ "integrity": "sha512-Po0eFWyH3C6I5oxLW3t/jtjqFJdF6/zmF9WL3n5lvSVbtmilPGz2IFOwHoz/XWSwM4PLwV6JXgFBIC6h6UNn/Q==",
"dependencies": {
- "@ledgerhq/devices": "^8.0.7",
- "@ledgerhq/errors": "^6.14.0",
+ "@ledgerhq/devices": "^7.0.6",
+ "@ledgerhq/errors": "^6.12.2",
"events": "^3.3.0"
}
},
"node_modules/@ledgerhq/hw-transport-webusb": {
- "version": "6.27.19",
- "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.27.19.tgz",
- "integrity": "sha512-M93sCyYREk8jCW/o7D/Ey+GQl38IALc0AY5WLKghzyjgqdPNo0x3j7CuTFJXiMWl5Mh8YDsO/MY8kkG9tuMvKQ==",
+ "version": "6.27.9",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.27.9.tgz",
+ "integrity": "sha512-/nII54hWkAVQldercMlS8WgQ4jLOpxdSH5+KC5tUtGLxgyYcD9tCUfhmAUidfkknz67/2s/UJj4cHNkaEykAOg==",
"dependencies": {
- "@ledgerhq/devices": "^8.0.7",
- "@ledgerhq/errors": "^6.14.0",
- "@ledgerhq/hw-transport": "^6.28.8",
+ "@ledgerhq/devices": "^7.0.6",
+ "@ledgerhq/errors": "^6.12.2",
+ "@ledgerhq/hw-transport": "^6.27.9",
"@ledgerhq/logs": "^6.10.1"
}
},
@@ -373,15 +342,15 @@
"dev": true
},
"node_modules/@noble/hashes": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz",
- "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==",
- "engines": {
- "node": ">= 16"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz",
+ "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ]
},
"node_modules/@noble/secp256k1": {
"version": "1.7.1",
@@ -430,18 +399,18 @@
}
},
"node_modules/@popperjs/core": {
- "version": "2.11.8",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
- "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "version": "2.11.6",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
+ "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@sinclair/typebox": {
- "version": "0.27.8",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
- "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+ "version": "0.25.24",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz",
+ "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
"dev": true
},
"node_modules/@trysound/sax": {
@@ -454,9 +423,9 @@
}
},
"node_modules/@types/body-parser": {
- "version": "1.19.3",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz",
- "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==",
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
+ "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
"dev": true,
"dependencies": {
"@types/connect": "*",
@@ -464,27 +433,27 @@
}
},
"node_modules/@types/bonjour": {
- "version": "3.5.11",
- "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.11.tgz",
- "integrity": "sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==",
+ "version": "3.5.10",
+ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz",
+ "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/connect": {
- "version": "3.4.36",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz",
- "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==",
+ "version": "3.4.35",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
+ "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/connect-history-api-fallback": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz",
- "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==",
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz",
+ "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==",
"dev": true,
"dependencies": {
"@types/express-serve-static-core": "*",
@@ -492,9 +461,9 @@
}
},
"node_modules/@types/eslint": {
- "version": "8.44.3",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.3.tgz",
- "integrity": "sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==",
+ "version": "8.4.10",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz",
+ "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==",
"dev": true,
"dependencies": {
"@types/estree": "*",
@@ -502,9 +471,9 @@
}
},
"node_modules/@types/eslint-scope": {
- "version": "3.7.5",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.5.tgz",
- "integrity": "sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==",
+ "version": "3.7.4",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
+ "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
"dev": true,
"dependencies": {
"@types/eslint": "*",
@@ -512,33 +481,32 @@
}
},
"node_modules/@types/estree": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz",
- "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==",
+ "version": "0.0.51",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
+ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
"dev": true
},
"node_modules/@types/express": {
- "version": "4.17.18",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.18.tgz",
- "integrity": "sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==",
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz",
+ "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==",
"dev": true,
"dependencies": {
"@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.33",
+ "@types/express-serve-static-core": "^4.17.31",
"@types/qs": "*",
"@types/serve-static": "*"
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "4.17.37",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz",
- "integrity": "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==",
+ "version": "4.17.32",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz",
+ "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==",
"dev": true,
"dependencies": {
"@types/node": "*",
"@types/qs": "*",
- "@types/range-parser": "*",
- "@types/send": "*"
+ "@types/range-parser": "*"
}
},
"node_modules/@types/html-minifier-terser": {
@@ -547,16 +515,10 @@
"integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
"dev": true
},
- "node_modules/@types/http-errors": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz",
- "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==",
- "dev": true
- },
"node_modules/@types/http-proxy": {
- "version": "1.17.12",
- "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz",
- "integrity": "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==",
+ "version": "1.17.9",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz",
+ "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==",
"dev": true,
"dependencies": {
"@types/node": "*"
@@ -587,46 +549,46 @@
}
},
"node_modules/@types/json-schema": {
- "version": "7.0.13",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz",
- "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==",
+ "version": "7.0.11",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
"dev": true
},
"node_modules/@types/lodash": {
- "version": "4.14.199",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz",
- "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==",
+ "version": "4.14.191",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz",
+ "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==",
"dev": true
},
"node_modules/@types/lodash-es": {
- "version": "4.17.9",
- "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.9.tgz",
- "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==",
+ "version": "4.17.6",
+ "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.6.tgz",
+ "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
"dev": true,
"dependencies": {
"@types/lodash": "*"
}
},
"node_modules/@types/mime": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
- "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
+ "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==",
"dev": true
},
"node_modules/@types/node": {
- "version": "10.12.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
- "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ=="
+ "version": "11.11.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz",
+ "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ=="
},
"node_modules/@types/offscreencanvas": {
- "version": "2019.7.1",
- "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.1.tgz",
- "integrity": "sha512-+HSrJgjBW77ALieQdMJvXhRZUIRN1597L+BKvsyeiIlHHERnqjcuOLyodK3auJ3Y3zRezNKtKAhuQWYJfEgFHQ=="
+ "version": "2019.7.0",
+ "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz",
+ "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg=="
},
"node_modules/@types/qs": {
- "version": "6.9.8",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz",
- "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==",
+ "version": "6.9.7",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
+ "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
"dev": true
},
"node_modules/@types/range-parser": {
@@ -642,88 +604,76 @@
"dev": true
},
"node_modules/@types/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==",
+ "version": "7.3.13",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
+ "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
"dev": true
},
- "node_modules/@types/send": {
- "version": "0.17.2",
- "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz",
- "integrity": "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==",
- "dev": true,
- "dependencies": {
- "@types/mime": "^1",
- "@types/node": "*"
- }
- },
"node_modules/@types/serve-index": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.2.tgz",
- "integrity": "sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig==",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==",
"dev": true,
"dependencies": {
"@types/express": "*"
}
},
"node_modules/@types/serve-static": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz",
- "integrity": "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==",
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==",
"dev": true,
"dependencies": {
- "@types/http-errors": "*",
"@types/mime": "*",
"@types/node": "*"
}
},
"node_modules/@types/sockjs": {
- "version": "0.3.34",
- "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.34.tgz",
- "integrity": "sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g==",
+ "version": "0.3.33",
+ "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
+ "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/ws": {
- "version": "8.5.6",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.6.tgz",
- "integrity": "sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==",
+ "version": "8.5.4",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
+ "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/yargs": {
- "version": "17.0.25",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.25.tgz",
- "integrity": "sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg==",
+ "version": "17.0.22",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz",
+ "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==",
"dev": true,
"dependencies": {
"@types/yargs-parser": "*"
}
},
"node_modules/@types/yargs-parser": {
- "version": "21.0.1",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz",
- "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==",
+ "version": "21.0.0",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
+ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
- "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.1.tgz",
+ "integrity": "sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==",
"dev": true,
"dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/type-utils": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
+ "@typescript-eslint/scope-manager": "5.48.1",
+ "@typescript-eslint/type-utils": "5.48.1",
+ "@typescript-eslint/utils": "5.48.1",
"debug": "^4.3.4",
- "graphemer": "^1.4.0",
"ignore": "^5.2.0",
"natural-compare-lite": "^1.4.0",
+ "regexpp": "^3.2.0",
"semver": "^7.3.7",
"tsutils": "^3.21.0"
},
@@ -745,14 +695,14 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
- "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.1.tgz",
+ "integrity": "sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
+ "@typescript-eslint/scope-manager": "5.48.1",
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/typescript-estree": "5.48.1",
"debug": "^4.3.4"
},
"engines": {
@@ -772,13 +722,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
- "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz",
+ "integrity": "sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0"
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/visitor-keys": "5.48.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -789,13 +739,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
- "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz",
+ "integrity": "sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.48.1",
+ "@typescript-eslint/utils": "5.48.1",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
},
@@ -816,9 +766,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
- "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.1.tgz",
+ "integrity": "sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -829,13 +779,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
- "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz",
+ "integrity": "sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0",
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/visitor-keys": "5.48.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -856,18 +806,18 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
- "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.1.tgz",
+ "integrity": "sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==",
"dev": true,
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
+ "@typescript-eslint/scope-manager": "5.48.1",
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/typescript-estree": "5.48.1",
"eslint-scope": "^5.1.1",
+ "eslint-utils": "^3.0.0",
"semver": "^7.3.7"
},
"engines": {
@@ -882,12 +832,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
- "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz",
+ "integrity": "sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/types": "5.48.1",
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
@@ -1006,155 +956,155 @@
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
},
"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.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
+ "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
"dev": true,
"dependencies": {
- "@webassemblyjs/helper-numbers": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ "@webassemblyjs/helper-numbers": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
}
},
"node_modules/@webassemblyjs/floating-point-hex-parser": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
- "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
+ "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
"dev": true
},
"node_modules/@webassemblyjs/helper-api-error": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
- "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
+ "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
"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.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
+ "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
"dev": true
},
"node_modules/@webassemblyjs/helper-numbers": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
- "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
+ "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
"dev": true,
"dependencies": {
- "@webassemblyjs/floating-point-hex-parser": "1.11.6",
- "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/floating-point-hex-parser": "1.11.1",
+ "@webassemblyjs/helper-api-error": "1.11.1",
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
- "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
+ "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
"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.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
+ "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6"
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1"
}
},
"node_modules/@webassemblyjs/ieee754": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
- "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
+ "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
"dev": true,
"dependencies": {
"@xtuc/ieee754": "^1.2.0"
}
},
"node_modules/@webassemblyjs/leb128": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
- "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
+ "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
"dev": true,
"dependencies": {
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webassemblyjs/utf8": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
- "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
+ "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
"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.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
+ "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@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/ast": "1.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/helper-wasm-section": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1",
+ "@webassemblyjs/wasm-opt": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.1",
+ "@webassemblyjs/wast-printer": "1.11.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.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
+ "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/ieee754": "1.11.1",
+ "@webassemblyjs/leb128": "1.11.1",
+ "@webassemblyjs/utf8": "1.11.1"
}
},
"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.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
+ "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
"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.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.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.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
+ "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-api-error": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-api-error": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/ieee754": "1.11.1",
+ "@webassemblyjs/leb128": "1.11.1",
+ "@webassemblyjs/utf8": "1.11.1"
}
},
"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.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
+ "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/ast": "1.11.1",
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webpack-cli/configtest": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
- "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz",
+ "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==",
"dev": true,
"engines": {
"node": ">=14.15.0"
@@ -1165,9 +1115,9 @@
}
},
"node_modules/@webpack-cli/info": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
- "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz",
+ "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==",
"dev": true,
"engines": {
"node": ">=14.15.0"
@@ -1178,9 +1128,9 @@
}
},
"node_modules/@webpack-cli/serve": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
- "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz",
+ "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==",
"dev": true,
"engines": {
"node": ">=14.15.0"
@@ -1233,9 +1183,9 @@
}
},
"node_modules/acorn": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
- "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "version": "8.8.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
+ "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -1245,9 +1195,9 @@
}
},
"node_modules/acorn-import-assertions": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
- "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
+ "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
"dev": true,
"peerDependencies": {
"acorn": "^8"
@@ -1424,16 +1374,15 @@
"dev": true
},
"node_modules/assert": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz",
- "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz",
+ "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "is-nan": "^1.3.2",
- "object-is": "^1.1.5",
- "object.assign": "^4.1.4",
- "util": "^0.12.5"
+ "es6-object-assign": "^1.1.0",
+ "is-nan": "^1.2.1",
+ "object-is": "^1.0.1",
+ "util": "^0.12.0"
}
},
"node_modules/async": {
@@ -1541,9 +1490,9 @@
}
},
"node_modules/bip174": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bip174/-/bip174-2.1.1.tgz",
- "integrity": "sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/bip174/-/bip174-2.1.0.tgz",
+ "integrity": "sha512-lkc0XyiX9E9KiVAS1ZiOqK1xfiwvf4FXDDdkDq5crcDzOq+xGytY+14qCsqz7kCiy8rpN1CRNfacRhf9G3JNSA==",
"engines": {
"node": ">=8.0.0"
}
@@ -1570,12 +1519,20 @@
"resolved": "https://registry.npmjs.org/bip32-path/-/bip32-path-0.4.2.tgz",
"integrity": "sha512-ZBMCELjJfcNMkz5bDuJ1WrYvjlhEF5k6mQ8vUr4N7MbVRsXei7ZOg8VhhwMfNiW68NWmLkgkc6WvTickrLGprQ=="
},
+ "node_modules/bip32/node_modules/@types/node": {
+ "version": "10.12.18",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
+ "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ=="
+ },
"node_modules/bip39": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz",
- "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz",
+ "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==",
"dependencies": {
- "@noble/hashes": "^1.2.0"
+ "@types/node": "11.11.6",
+ "create-hash": "^1.1.0",
+ "pbkdf2": "^3.0.9",
+ "randombytes": "^2.0.1"
}
},
"node_modules/bip66": {
@@ -1675,25 +1632,10 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true
},
- "node_modules/body-parser/node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dev": true,
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/bonjour-service": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz",
- "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.0.tgz",
+ "integrity": "sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==",
"dev": true,
"dependencies": {
"array-flatten": "^2.1.2",
@@ -1836,9 +1778,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.21.11",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.11.tgz",
- "integrity": "sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ==",
+ "version": "4.21.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
+ "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
"dev": true,
"funding": [
{
@@ -1848,17 +1790,13 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001538",
- "electron-to-chromium": "^1.4.526",
- "node-releases": "^2.0.13",
- "update-browserslist-db": "^1.0.13"
+ "caniuse-lite": "^1.0.30001400",
+ "electron-to-chromium": "^1.4.251",
+ "node-releases": "^2.0.6",
+ "update-browserslist-db": "^1.0.9"
},
"bin": {
"browserslist": "cli.js"
@@ -1996,9 +1934,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001539",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001539.tgz",
- "integrity": "sha512-hfS5tE8bnNiNvEOEkm8HElUHroYwlqMMENEzELymy77+tJ6m+gA2krtHl5hxJaj71OlpC2cHZbdSMX1/YEqEkA==",
+ "version": "1.0.30001443",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001443.tgz",
+ "integrity": "sha512-jUo8svymO8+Mkj3qbUbVjR8zv8LUGpGkUM/jKvc9SO2BvjCI980dp9fQbf/dyLs6RascPzgR4nhAKFA4OHeSaA==",
"dev": true,
"funding": [
{
@@ -2008,10 +1946,6 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
}
]
},
@@ -2040,14 +1974,14 @@
}
},
"node_modules/chart.js": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.0.tgz",
- "integrity": "sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.2.1.tgz",
+ "integrity": "sha512-6YbpQ0nt3NovAgOzbkSSeeAQu/3za1319dPUQTXn9WcOpywM8rGKxJHrhS8V8xEkAlk8YhEfjbuAPfUyp6jIsw==",
"dependencies": {
"@kurkle/color": "^0.3.0"
},
"engines": {
- "pnpm": ">=7"
+ "pnpm": "^7.0.0"
}
},
"node_modules/chokidar": {
@@ -2123,9 +2057,9 @@
}
},
"node_modules/clean-css": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz",
- "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.0.tgz",
+ "integrity": "sha512-2639sWGa43EMmG7fn8mdVuBSs6HuWaSor+ZPoFWzenBc6oN+td8YhTfghWXZ25G1NiiSvz8bOFBS7PdSbTiqEA==",
"dev": true,
"dependencies": {
"source-map": "~0.6.0"
@@ -2173,9 +2107,9 @@
"dev": true
},
"node_modules/colorette": {
- "version": "2.0.20",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
+ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
"dev": true
},
"node_modules/commander": {
@@ -2281,9 +2215,9 @@
}
},
"node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"dev": true,
"engines": {
"node": ">= 0.6"
@@ -2328,15 +2262,43 @@
"webpack": "^5.1.0"
}
},
+ "node_modules/copy-webpack-plugin/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
"node_modules/copy-webpack-plugin/node_modules/globby": {
- "version": "13.2.2",
- "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz",
- "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==",
+ "version": "13.1.3",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz",
+ "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==",
"dev": true,
"dependencies": {
"dir-glob": "^3.0.1",
- "fast-glob": "^3.3.0",
- "ignore": "^5.2.4",
+ "fast-glob": "^3.2.11",
+ "ignore": "^5.2.0",
"merge2": "^1.4.1",
"slash": "^4.0.0"
},
@@ -2347,6 +2309,31 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/copy-webpack-plugin/node_modules/schema-utils": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+ "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.8.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
"node_modules/copy-webpack-plugin/node_modules/slash": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
@@ -2456,9 +2443,9 @@
}
},
"node_modules/css-declaration-sorter": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz",
- "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz",
+ "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==",
"dev": true,
"engines": {
"node": "^10 || ^12 || >=14"
@@ -2468,15 +2455,15 @@
}
},
"node_modules/css-loader": {
- "version": "6.8.1",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz",
- "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==",
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz",
+ "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==",
"dev": true,
"dependencies": {
"icss-utils": "^5.1.0",
- "postcss": "^8.4.21",
+ "postcss": "^8.4.19",
"postcss-modules-extract-imports": "^3.0.0",
- "postcss-modules-local-by-default": "^4.0.3",
+ "postcss-modules-local-by-default": "^4.0.0",
"postcss-modules-scope": "^3.0.0",
"postcss-modules-values": "^4.0.0",
"postcss-value-parser": "^4.2.0",
@@ -2537,6 +2524,89 @@
}
}
},
+ "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker": {
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.3.tgz",
+ "integrity": "sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "jest-util": "^29.4.3",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+ "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.8.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/css-minimizer-webpack-plugin/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
"node_modules/css-select": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
@@ -2718,20 +2788,6 @@
"node": ">= 10"
}
},
- "node_modules/define-data-property": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz",
- "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/define-lazy-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
@@ -2742,12 +2798,11 @@
}
},
"node_modules/define-properties": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
"dev": true,
"dependencies": {
- "define-data-property": "^1.0.1",
"has-property-descriptors": "^1.0.0",
"object-keys": "^1.1.1"
},
@@ -2768,9 +2823,9 @@
}
},
"node_modules/des.js": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz",
- "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
+ "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
"dev": true,
"dependencies": {
"inherits": "^2.0.1",
@@ -2829,9 +2884,9 @@
"dev": true
},
"node_modules/dns-packet": {
- "version": "5.6.1",
- "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
- "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz",
+ "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==",
"dev": true,
"dependencies": {
"@leichtgewicht/ip-codec": "^2.0.1"
@@ -2954,9 +3009,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.4.529",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.529.tgz",
- "integrity": "sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A==",
+ "version": "1.4.284",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
+ "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
"dev": true
},
"node_modules/elliptic": {
@@ -3003,9 +3058,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.12.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
+ "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.4",
@@ -3016,9 +3071,9 @@
}
},
"node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
+ "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
"dev": true,
"engines": {
"node": ">=0.12"
@@ -3028,9 +3083,9 @@
}
},
"node_modules/envinfo": {
- "version": "7.10.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
- "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==",
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
+ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
"dev": true,
"bin": {
"envinfo": "dist/cli.js"
@@ -3040,9 +3095,15 @@
}
},
"node_modules/es-module-lexer": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz",
- "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==",
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
+ "dev": true
+ },
+ "node_modules/es6-object-assign": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
+ "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==",
"dev": true
},
"node_modules/escalade": {
@@ -3073,47 +3134,49 @@
}
},
"node_modules/eslint": {
- "version": "8.50.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz",
- "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==",
+ "version": "8.31.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz",
+ "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==",
"dev": true,
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.2",
- "@eslint/js": "8.50.0",
- "@humanwhocodes/config-array": "^0.11.11",
+ "@eslint/eslintrc": "^1.4.1",
+ "@humanwhocodes/config-array": "^0.11.8",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.12.4",
+ "ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
+ "eslint-scope": "^7.1.1",
+ "eslint-utils": "^3.0.0",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.4.0",
+ "esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
"file-entry-cache": "^6.0.1",
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
"globals": "^13.19.0",
- "graphemer": "^1.4.0",
+ "grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0",
+ "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"is-path-inside": "^3.0.3",
+ "js-sdsl": "^4.1.4",
"js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
"lodash.merge": "^4.6.2",
"minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
+ "optionator": "^0.9.1",
+ "regexpp": "^3.2.0",
"strip-ansi": "^6.0.1",
+ "strip-json-comments": "^3.1.0",
"text-table": "^0.2.0"
},
"bin": {
@@ -3139,22 +3202,46 @@
"node": ">=8.0.0"
}
},
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "node_modules/eslint-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
"dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^2.0.0"
+ },
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=5"
+ }
+ },
+ "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
@@ -3162,9 +3249,6 @@
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/estraverse": {
@@ -3177,14 +3261,14 @@
}
},
"node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
+ "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
"dev": true,
"dependencies": {
- "acorn": "^8.9.0",
+ "acorn": "^8.8.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "eslint-visitor-keys": "^3.3.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -3194,9 +3278,9 @@
}
},
"node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
"dev": true,
"dependencies": {
"estraverse": "^5.1.0"
@@ -3386,21 +3470,6 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true
},
- "node_modules/express/node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dev": true,
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -3408,9 +3477,9 @@
"dev": true
},
"node_modules/fast-glob": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
- "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
@@ -3509,24 +3578,6 @@
"webpack": "^4.0.0 || ^5.0.0"
}
},
- "node_modules/file-loader/node_modules/schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
"node_modules/file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
@@ -3646,29 +3697,28 @@
}
},
"node_modules/flat-cache": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz",
- "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
"dev": true,
"dependencies": {
- "flatted": "^3.2.7",
- "keyv": "^4.5.3",
+ "flatted": "^3.1.0",
"rimraf": "^3.0.2"
},
"engines": {
- "node": ">=12.0.0"
+ "node": "^10.12.0 || >=12.0.0"
}
},
"node_modules/flatted": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
- "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
"dev": true
},
"node_modules/follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
"dev": true,
"funding": [
{
@@ -3727,9 +3777,9 @@
}
},
"node_modules/fs-monkey": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz",
- "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
+ "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==",
"dev": true
},
"node_modules/fs.realpath": {
@@ -3738,20 +3788,6 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -3759,14 +3795,13 @@
"dev": true
},
"node_modules/get-intrinsic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
- "has-proto": "^1.0.1",
"has-symbols": "^1.0.3"
},
"funding": {
@@ -3874,9 +3909,9 @@
"dev": true
},
"node_modules/globals": {
- "version": "13.22.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz",
- "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==",
+ "version": "13.19.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
+ "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -3921,15 +3956,15 @@
}
},
"node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
"dev": true
},
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "node_modules/grapheme-splitter": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
+ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
"dev": true
},
"node_modules/handle-thing": {
@@ -3971,18 +4006,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
@@ -4039,12 +4062,11 @@
}
},
"node_modules/hdkey": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-2.1.0.tgz",
- "integrity": "sha512-i9Wzi0Dy49bNS4tXXeGeu0vIcn86xXdPQUpEYg+SO1YiO8HtomjmmRMaRyqL0r59QfcD4PfVbSF3qmsWFwAemA==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-2.0.1.tgz",
+ "integrity": "sha512-c+tl9PHG9/XkGgG0tD7CJpRVaE0jfZizDNmnErUAKQ4EjQSOcOUcV3EN9ZEZS8pZ4usaeiiK0H7stzuzna8feA==",
"dependencies": {
"bs58check": "^2.1.2",
- "ripemd160": "^2.0.2",
"safe-buffer": "^5.1.1",
"secp256k1": "^4.0.0"
}
@@ -4081,9 +4103,9 @@
}
},
"node_modules/hpack.js/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"dev": true,
"dependencies": {
"core-util-is": "~1.0.0",
@@ -4111,20 +4133,10 @@
}
},
"node_modules/html-entities": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz",
- "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/mdevils"
- },
- {
- "type": "patreon",
- "url": "https://patreon.com/mdevils"
- }
- ]
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz",
+ "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==",
+ "dev": true
},
"node_modules/html-loader": {
"version": "4.2.0",
@@ -4147,14 +4159,14 @@
}
},
"node_modules/html-minifier-terser": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz",
- "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.1.0.tgz",
+ "integrity": "sha512-BvPO2S7Ip0Q5qt+Y8j/27Vclj6uHC6av0TMoDn7/bJPhMWHI2UtR2e/zEgJn3/qYAmxumrGp9q4UHurL6mtW9Q==",
"dev": true,
"dependencies": {
"camel-case": "^4.1.2",
- "clean-css": "~5.3.2",
- "commander": "^10.0.0",
+ "clean-css": "5.2.0",
+ "commander": "^9.4.1",
"entities": "^4.4.0",
"param-case": "^3.0.4",
"relateurl": "^0.2.7",
@@ -4168,18 +4180,18 @@
}
},
"node_modules/html-minifier-terser/node_modules/commander": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
- "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
"dev": true,
"engines": {
- "node": ">=14"
+ "node": "^12.20.0 || >=14"
}
},
"node_modules/html-webpack-plugin": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz",
- "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==",
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz",
+ "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==",
"dev": true,
"dependencies": {
"@types/html-minifier-terser": "^6.0.0",
@@ -4199,6 +4211,18 @@
"webpack": "^5.20.0"
}
},
+ "node_modules/html-webpack-plugin/node_modules/clean-css": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz",
+ "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==",
+ "dev": true,
+ "dependencies": {
+ "source-map": "~0.6.0"
+ },
+ "engines": {
+ "node": ">= 10.0"
+ }
+ },
"node_modules/html-webpack-plugin/node_modules/commander": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
@@ -4484,9 +4508,9 @@
}
},
"node_modules/ipaddr.js": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz",
- "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz",
+ "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==",
"dev": true,
"engines": {
"node": ">= 10"
@@ -4533,9 +4557,9 @@
}
},
"node_modules/is-core-module": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
- "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+ "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
@@ -4666,12 +4690,16 @@
}
},
"node_modules/is-typed-array": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
- "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
+ "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
"dev": true,
"dependencies": {
- "which-typed-array": "^1.1.11"
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -4728,12 +4756,12 @@
}
},
"node_modules/jest-util": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
- "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz",
+ "integrity": "sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.6.3",
+ "@jest/types": "^29.4.3",
"@types/node": "*",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
@@ -4745,18 +4773,17 @@
}
},
"node_modules/jest-worker": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"dev": true,
"dependencies": {
"@types/node": "*",
- "jest-util": "^29.7.0",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">= 10.13.0"
}
},
"node_modules/jest-worker/node_modules/supports-color": {
@@ -4775,9 +4802,19 @@
}
},
"node_modules/jquery": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
- "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg=="
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz",
+ "integrity": "sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg=="
+ },
+ "node_modules/js-sdsl": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz",
+ "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==",
+ "dev": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/js-sdsl"
+ }
},
"node_modules/js-tokens": {
"version": "4.0.0",
@@ -4801,12 +4838,6 @@
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
"integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
},
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
- },
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -4846,15 +4877,6 @@
"graceful-fs": "^4.1.6"
}
},
- "node_modules/keyv": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz",
- "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==",
- "dev": true,
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -4864,16 +4886,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/launch-editor": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz",
- "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==",
- "dev": true,
- "dependencies": {
- "picocolors": "^1.0.0",
- "shell-quote": "^1.7.3"
- }
- },
"node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -4995,9 +5007,9 @@
}
},
"node_modules/magic-string": {
- "version": "0.30.3",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz",
- "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
+ "version": "0.30.1",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz",
+ "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
},
@@ -5005,6 +5017,11 @@
"node": ">=12"
}
},
+ "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
"node_modules/make-dir": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
@@ -5055,12 +5072,12 @@
}
},
"node_modules/memfs": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz",
- "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==",
+ "version": "3.4.13",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz",
+ "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==",
"dev": true,
"dependencies": {
- "fs-monkey": "^1.0.4"
+ "fs-monkey": "^1.0.3"
},
"engines": {
"node": ">= 4.0.0"
@@ -5176,9 +5193,9 @@
}
},
"node_modules/mini-css-extract-plugin": {
- "version": "2.7.6",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz",
- "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==",
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz",
+ "integrity": "sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==",
"dev": true,
"dependencies": {
"schema-utils": "^4.0.0"
@@ -5194,6 +5211,59 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/mini-css-extract-plugin/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+ "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.8.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
"node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -5243,21 +5313,21 @@
"multicast-dns": "cli.js"
}
},
+ "node_modules/multimap": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz",
+ "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==",
+ "dev": true
+ },
"node_modules/nan": {
- "version": "2.18.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz",
- "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w=="
+ "version": "2.17.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
+ "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ=="
},
"node_modules/nanoid": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
- "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -5317,9 +5387,9 @@
}
},
"node_modules/node-gyp-build": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz",
- "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==",
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz",
+ "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==",
"bin": {
"node-gyp-build": "bin.js",
"node-gyp-build-optional": "optional.js",
@@ -5366,16 +5436,15 @@
}
},
"node_modules/node-polyfill-webpack-plugin/node_modules/readable-stream": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz",
- "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz",
+ "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==",
"dev": true,
"dependencies": {
"abort-controller": "^3.0.0",
"buffer": "^6.0.3",
"events": "^3.3.0",
- "process": "^0.11.10",
- "string_decoder": "^1.3.0"
+ "process": "^0.11.10"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -5394,9 +5463,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.13",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
+ "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==",
"dev": true
},
"node_modules/normalize-path": {
@@ -5454,9 +5523,9 @@
}
},
"node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -5487,24 +5556,6 @@
"node": ">= 0.4"
}
},
- "node_modules/object.assign": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
- "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/obuf": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
@@ -5557,9 +5608,9 @@
}
},
"node_modules/open": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
- "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
+ "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
"dev": true,
"dependencies": {
"define-lazy-prop": "^2.0.0",
@@ -5698,9 +5749,9 @@
}
},
"node_modules/parse-uri": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/parse-uri/-/parse-uri-1.0.8.tgz",
- "integrity": "sha512-SXjDldaQ7dvRBqU9m6HFcfaJZf0enJk+LD+whx+Fq3Jp9AzYEIsor5WUYxdVwW/GyN7TTNna3SGqYdww0AbTuQ==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/parse-uri/-/parse-uri-1.0.7.tgz",
+ "integrity": "sha512-eWuZCMKNlVkXrEoANdXxbmqhu2SQO9jUMCSpdbJDObin0JxISn6e400EWsSRbr/czdKvWKkhZnMKEGUwf/Plmg==",
"dev": true,
"engines": {
"node": ">= 0.10"
@@ -5795,7 +5846,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
"integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
- "dev": true,
"dependencies": {
"create-hash": "^1.1.2",
"create-hmac": "^1.1.4",
@@ -5935,9 +5985,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.30",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz",
- "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==",
+ "version": "8.4.21",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
+ "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
"funding": [
{
"type": "opencollective",
@@ -5946,14 +5996,10 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "nanoid": "^3.3.6",
+ "nanoid": "^3.3.4",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
@@ -6167,9 +6213,9 @@
}
},
"node_modules/postcss-modules-local-by-default": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz",
- "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
+ "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
"dev": true,
"dependencies": {
"icss-utils": "^5.0.0",
@@ -6395,9 +6441,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.13",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
- "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+ "version": "6.0.11",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
+ "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
"dev": true,
"dependencies": {
"cssesc": "^3.0.0",
@@ -6454,9 +6500,9 @@
}
},
"node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.2.tgz",
+ "integrity": "sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==",
"dev": true,
"bin": {
"prettier": "bin-prettier.js"
@@ -6536,9 +6582,9 @@
"dev": true
},
"node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
+ "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==",
"dev": true,
"engines": {
"node": ">=6"
@@ -6566,9 +6612,9 @@
"integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw=="
},
"node_modules/qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"dev": true,
"dependencies": {
"side-channel": "^1.0.4"
@@ -6580,6 +6626,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
+ "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
"node_modules/querystring-es3": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
@@ -6661,9 +6717,9 @@
}
},
"node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -6697,6 +6753,18 @@
"node": ">= 10.13.0"
}
},
+ "node_modules/regexpp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ }
+ },
"node_modules/relateurl": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
@@ -6735,12 +6803,12 @@
"dev": true
},
"node_modules/resolve": {
- "version": "1.22.6",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",
- "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==",
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
"dev": true,
"dependencies": {
- "is-core-module": "^2.13.0",
+ "is-core-module": "^2.9.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -6899,58 +6967,23 @@
"dev": true
},
"node_modules/schema-utils": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
- "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+ "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"dev": true,
"dependencies": {
- "@types/json-schema": "^7.0.9",
- "ajv": "^8.9.0",
- "ajv-formats": "^2.1.1",
- "ajv-keywords": "^5.1.0"
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
},
"engines": {
- "node": ">= 12.13.0"
+ "node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
}
},
- "node_modules/schema-utils/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/schema-utils/node_modules/ajv-keywords": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
- "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3"
- },
- "peerDependencies": {
- "ajv": "^8.8.2"
- }
- },
- "node_modules/schema-utils/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- },
"node_modules/secp256k1": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz",
@@ -7043,9 +7076,9 @@
"dev": true
},
"node_modules/serialize-javascript": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
- "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
+ "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
"dev": true,
"dependencies": {
"randombytes": "^2.1.0"
@@ -7201,15 +7234,6 @@
"node": ">=8"
}
},
- "node_modules/shell-quote": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
- "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -7492,13 +7516,13 @@
}
},
"node_modules/terser": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz",
- "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==",
+ "version": "5.16.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz",
+ "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==",
"dev": true,
"dependencies": {
- "@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.8.2",
+ "@jridgewell/source-map": "^0.3.2",
+ "acorn": "^8.5.0",
"commander": "^2.20.0",
"source-map-support": "~0.5.20"
},
@@ -7510,16 +7534,16 @@
}
},
"node_modules/terser-webpack-plugin": {
- "version": "5.3.9",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
- "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+ "version": "5.3.6",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz",
+ "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==",
"dev": true,
"dependencies": {
- "@jridgewell/trace-mapping": "^0.3.17",
+ "@jridgewell/trace-mapping": "^0.3.14",
"jest-worker": "^27.4.5",
"schema-utils": "^3.1.1",
- "serialize-javascript": "^6.0.1",
- "terser": "^5.16.8"
+ "serialize-javascript": "^6.0.0",
+ "terser": "^5.14.1"
},
"engines": {
"node": ">= 10.13.0"
@@ -7543,53 +7567,6 @@
}
}
},
- "node_modules/terser-webpack-plugin/node_modules/jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
- "dev": true,
- "dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -7678,9 +7655,9 @@
}
},
"node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
+ "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
"dev": true
},
"node_modules/tsutils": {
@@ -7759,9 +7736,9 @@
"integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g=="
},
"node_modules/typescript": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
- "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
+ "version": "4.9.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
+ "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
"dev": true,
"peer": true,
"bin": {
@@ -7769,7 +7746,7 @@
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=14.17"
+ "node": ">=4.2.0"
}
},
"node_modules/universalify": {
@@ -7791,9 +7768,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
+ "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
"dev": true,
"funding": [
{
@@ -7803,10 +7780,6 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
@@ -7814,7 +7787,7 @@
"picocolors": "^1.0.0"
},
"bin": {
- "update-browserslist-db": "cli.js"
+ "browserslist-lint": "cli.js"
},
"peerDependencies": {
"browserslist": ">= 4.21.0"
@@ -7830,19 +7803,19 @@
}
},
"node_modules/url": {
- "version": "0.11.3",
- "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz",
- "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==",
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
"dev": true,
"dependencies": {
- "punycode": "^1.4.1",
- "qs": "^6.11.2"
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
}
},
"node_modules/url/node_modules/punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
"dev": true
},
"node_modules/util": {
@@ -7945,9 +7918,9 @@
}
},
"node_modules/vue-router": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
- "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.4.tgz",
+ "integrity": "sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ==",
"dependencies": {
"@vue/devtools-api": "^6.5.0"
},
@@ -7981,22 +7954,22 @@
}
},
"node_modules/webpack": {
- "version": "5.88.2",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz",
- "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==",
+ "version": "5.76.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz",
+ "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==",
"dev": true,
"dependencies": {
"@types/eslint-scope": "^3.7.3",
- "@types/estree": "^1.0.0",
- "@webassemblyjs/ast": "^1.11.5",
- "@webassemblyjs/wasm-edit": "^1.11.5",
- "@webassemblyjs/wasm-parser": "^1.11.5",
+ "@types/estree": "^0.0.51",
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/wasm-edit": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.1",
"acorn": "^8.7.1",
- "acorn-import-assertions": "^1.9.0",
+ "acorn-import-assertions": "^1.7.6",
"browserslist": "^4.14.5",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.15.0",
- "es-module-lexer": "^1.2.1",
+ "enhanced-resolve": "^5.10.0",
+ "es-module-lexer": "^0.9.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
@@ -8005,9 +7978,9 @@
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
"neo-async": "^2.6.2",
- "schema-utils": "^3.2.0",
+ "schema-utils": "^3.1.0",
"tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.3.7",
+ "terser-webpack-plugin": "^5.1.3",
"watchpack": "^2.4.0",
"webpack-sources": "^3.2.3"
},
@@ -8028,17 +8001,17 @@
}
},
"node_modules/webpack-cli": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
- "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz",
+ "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==",
"dev": true,
"dependencies": {
"@discoveryjs/json-ext": "^0.5.0",
- "@webpack-cli/configtest": "^2.1.1",
- "@webpack-cli/info": "^2.0.2",
- "@webpack-cli/serve": "^2.0.5",
+ "@webpack-cli/configtest": "^2.0.1",
+ "@webpack-cli/info": "^2.0.1",
+ "@webpack-cli/serve": "^2.0.1",
"colorette": "^2.0.14",
- "commander": "^10.0.1",
+ "commander": "^9.4.1",
"cross-spawn": "^7.0.3",
"envinfo": "^7.7.3",
"fastest-levenshtein": "^1.0.12",
@@ -8073,12 +8046,12 @@
}
},
"node_modules/webpack-cli/node_modules/commander": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
- "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
"dev": true,
"engines": {
- "node": ">=14"
+ "node": "^12.20.0 || >=14"
}
},
"node_modules/webpack-dev-middleware": {
@@ -8104,10 +8077,63 @@
"webpack": "^4.0.0 || ^5.0.0"
}
},
+ "node_modules/webpack-dev-middleware/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/webpack-dev-middleware/node_modules/schema-utils": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+ "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.8.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
"node_modules/webpack-dev-server": {
- "version": "4.15.1",
- "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz",
- "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==",
+ "version": "4.11.1",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz",
+ "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==",
"dev": true,
"dependencies": {
"@types/bonjour": "^3.5.9",
@@ -8116,7 +8142,7 @@
"@types/serve-index": "^1.9.1",
"@types/serve-static": "^1.13.10",
"@types/sockjs": "^0.3.33",
- "@types/ws": "^8.5.5",
+ "@types/ws": "^8.5.1",
"ansi-html-community": "^0.0.8",
"bonjour-service": "^1.0.11",
"chokidar": "^3.5.3",
@@ -8129,7 +8155,6 @@
"html-entities": "^2.3.2",
"http-proxy-middleware": "^2.0.3",
"ipaddr.js": "^2.0.1",
- "launch-editor": "^2.6.0",
"open": "^8.0.9",
"p-retry": "^4.5.0",
"rimraf": "^3.0.2",
@@ -8139,7 +8164,7 @@
"sockjs": "^0.3.24",
"spdy": "^4.0.2",
"webpack-dev-middleware": "^5.3.1",
- "ws": "^8.13.0"
+ "ws": "^8.4.2"
},
"bin": {
"webpack-dev-server": "bin/webpack-dev-server.js"
@@ -8155,18 +8180,68 @@
"webpack": "^4.37.0 || ^5.0.0"
},
"peerDependenciesMeta": {
- "webpack": {
- "optional": true
- },
"webpack-cli": {
"optional": true
}
}
},
+ "node_modules/webpack-dev-server/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/webpack-dev-server/node_modules/schema-utils": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+ "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.8.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
"node_modules/webpack-merge": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz",
- "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
+ "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==",
"dev": true,
"dependencies": {
"clone-deep": "^4.0.1",
@@ -8185,24 +8260,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/webpack/node_modules/schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
"node_modules/websocket-driver": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
@@ -8242,16 +8299,17 @@
}
},
"node_modules/which-typed-array": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",
- "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
+ "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
"dev": true,
"dependencies": {
"available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.2",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.10"
},
"engines": {
"node": ">= 0.4"
@@ -8269,9 +8327,9 @@
}
},
"node_modules/wildcard": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
- "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
+ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
"dev": true
},
"node_modules/wrappy": {
@@ -8281,9 +8339,9 @@
"dev": true
},
"node_modules/ws": {
- "version": "8.14.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
- "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==",
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz",
+ "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==",
"dev": true,
"engines": {
"node": ">=10.0.0"
diff --git a/package.json b/package.json
index d03ee93bc..8fff19a54 100644
--- a/package.json
+++ b/package.json
@@ -42,6 +42,7 @@
"html-loader": "^4.2.0",
"html-webpack-plugin": "^5.5.0",
"mini-css-extract-plugin": "^2.7.2",
+ "multimap": "^1.1.0",
"node-polyfill-webpack-plugin": "^2.0.1",
"prettier": "^2.8.1",
"resource-loader": "^4.0.0-rc4",
diff --git a/scripts/Activity.vue b/scripts/Activity.vue
index 5dd19cae1..f4107178e 100644
--- a/scripts/Activity.vue
+++ b/scripts/Activity.vue
@@ -2,6 +2,7 @@
import { ref, computed, watch } from 'vue';
import { getNetwork, HistoricalTxType } from './network.js';
import { wallet } from './wallet.js';
+import { mempool } from './global.js';
import { cChainParams } from './chain_params.js';
import { translation } from './i18n.js';
import { Database } from './database.js';
@@ -57,6 +58,12 @@ const txMap = computed(() => {
async function update(fNewOnly = false, sync = true) {
const cNet = getNetwork();
+ // If mempool is not loaded yet do not update the activity GUI
+ // or we might end up in a state where many of our addresses are considered invalid
+ if (!mempool.isLoaded) {
+ return;
+ }
+
if (!cNet) return;
// Prevent the user from spamming refreshes
diff --git a/scripts/WalletBalance.vue b/scripts/WalletBalance.vue
index 96201c714..60bfe750a 100644
--- a/scripts/WalletBalance.vue
+++ b/scripts/WalletBalance.vue
@@ -55,7 +55,7 @@ async function reload() {
}
getEventEmitter().on('balance-update', async () => {
- balance.value = mempool.getBalance();
+ balance.value = mempool.balance;
currency.value = strCurrency.toUpperCase();
price.value = await cMarket.getPrice(strCurrency);
displayDecimals.value = nDisplayDecimals;
diff --git a/scripts/bitTrx.js b/scripts/bitTrx.js
index fc7662dd2..af788fe02 100644
--- a/scripts/bitTrx.js
+++ b/scripts/bitTrx.js
@@ -26,18 +26,11 @@ export default class bitjs {
inputs = [];
outputs = [];
locktime = 0;
- addinput({
- txid,
- index,
- script,
- sequence,
- path = wallet.getDerivationPath(),
- }) {
+ addinput({ txid, index, script, sequence }) {
const o = {};
o.outpoint = { hash: txid, index: index };
o.script = hexToBytes(script); //push previous output pubkey script
o.sequence = sequence || (this.locktime == 0 ? 4294967295 : 0);
- o.path = path;
return this.inputs.push(o);
}
@@ -199,10 +192,13 @@ export default class bitjs {
}
/* sign an input */
- async signinput(index, masterKey, sigHashType, txType = 'pubkey') {
- const strWIF = await masterKey.getPrivateKey(
- this.inputs[index].path
- );
+ async signinput(index, wallet, sigHashType, txType = 'pubkey') {
+ const masterKey = wallet.getMasterKey();
+ const path = wallet.getPath(this.inputs[index].script);
+ if (path === null) {
+ throw new Error('Path not found');
+ }
+ const strWIF = await masterKey.getPrivateKey(path);
const bPubkeyBytes = hexToBytes(
deriveAddress({
pkBytes: parseWIF(strWIF),
@@ -240,12 +236,12 @@ export default class bitjs {
}
/* sign inputs */
- async sign(masterKey, sigHashType, txType) {
+ async sign(wallet, sigHashType, txType) {
const shType = sigHashType || 1;
let i;
const len = this.inputs.length;
for (i = 0; i < len; i++) {
- await this.signinput(i, masterKey, shType, txType);
+ await this.signinput(i, wallet, shType, txType);
}
return this.serialize();
}
diff --git a/scripts/charting.js b/scripts/charting.js
index 1bb847bf3..532d6b35a 100644
--- a/scripts/charting.js
+++ b/scripts/charting.js
@@ -8,9 +8,11 @@ import {
Tooltip,
} from 'chart.js';
import { cChainParams, COIN } from './chain_params.js';
-import { doms, isMasternodeUTXO, mempool } from './global.js';
+import { doms, mempool } from './global.js';
import { Database } from './database.js';
import { translation } from './i18n.js';
+import { UTXO_WALLET_STATE } from './mempool.js';
+import { COutpoint } from './mempool.js';
Chart.register(
Colors,
@@ -43,19 +45,21 @@ async function getWalletDataset() {
const arrBreakdown = [];
// Public (Available)
- if (mempool.getBalance() > 0) {
+ const spendable_bal = mempool.balance;
+ if (spendable_bal > 0) {
arrBreakdown.push({
type: translation.chartPublicAvailable,
- balance: mempool.getBalance() / COIN,
+ balance: spendable_bal / COIN,
colour: 'rgba(127, 17, 224, 1)',
});
}
// Staking (Locked)
- if (mempool.getDelegatedBalance() > 0) {
+ const spendable_cold_bal = mempool.coldBalance;
+ if (spendable_cold_bal > 0) {
arrBreakdown.push({
type: 'Staking',
- balance: mempool.getDelegatedBalance() / COIN,
+ balance: spendable_cold_bal / COIN,
colour: 'rgba(42, 27, 66, 1)',
});
}
@@ -63,25 +67,19 @@ async function getWalletDataset() {
const masternode = await (await Database.getInstance()).getMasternode();
// Masternode (Locked)
- (
- await Promise.all(
- mempool.getConfirmed().map(async (cUTXO) => {
- return {
- UTXO: cUTXO,
- isMnUTXO: isMasternodeUTXO(cUTXO, masternode),
- };
- })
- )
- )
- .filter(({ isMnUTXO }) => isMnUTXO)
- .forEach(({ UTXO }) =>
+ if (masternode) {
+ const mnOp = new COutpoint({
+ txid: masternode.collateralTxId,
+ n: masternode.outidx,
+ });
+ if (mempool.hasUTXO(mnOp, UTXO_WALLET_STATE.SPENDABLE, true)) {
arrBreakdown.push({
type: 'Masternode',
- balance: UTXO.sats / COIN,
+ balance: cChainParams.current.collateralInSats / COIN,
colour: 'rgba(19, 13, 30, 1)',
- })
- );
-
+ });
+ }
+ }
return arrBreakdown;
}
diff --git a/scripts/global.js b/scripts/global.js
index 47f1d201a..26b78f83b 100644
--- a/scripts/global.js
+++ b/scripts/global.js
@@ -1,4 +1,4 @@
-import { Mempool } from './mempool.js';
+import { COutpoint, Mempool, UTXO_WALLET_STATE } from './mempool.js';
import Masternode from './masternode.js';
import { ALERTS, tr, start as i18nStart, translation } from './i18n.js';
import * as jdenticon from 'jdenticon';
@@ -8,6 +8,7 @@ import {
importWallet,
decryptWallet,
getNewAddress,
+ Wallet,
} from './wallet.js';
import { LegacyMasterKey } from './masterkey.js';
import { getNetwork, HistoricalTxType } from './network.js';
@@ -665,7 +666,7 @@ export async function updatePriceDisplay(domValue, fCold = false) {
}
export function getBalance(updateGUI = false) {
- const nBalance = mempool.getBalance();
+ const nBalance = mempool.balance;
const nCoins = nBalance / COIN;
// Update the GUI too, if chosen
@@ -683,7 +684,7 @@ export function getBalance(updateGUI = false) {
}
export function getStakingBalance(updateGUI = false) {
- const nBalance = mempool.getDelegatedBalance();
+ const nBalance = mempool.coldBalance;
const nCoins = nBalance / COIN;
if (updateGUI) {
@@ -1093,6 +1094,10 @@ export async function importMasternode() {
createAlert('warning', ALERTS.MN_BAD_IP, 5000);
return;
}
+ if (!mnPrivKey) {
+ createAlert('warning', ALERTS.MN_BAD_PRIVKEY, 5000);
+ return;
+ }
let collateralTxId;
let outidx;
@@ -1102,20 +1107,21 @@ export async function importMasternode() {
if (!wallet.isHD()) {
// Find the first UTXO matching the expected collateral size
- const cCollaUTXO = mempool
- .getConfirmed()
- .find(
- (cUTXO) => cUTXO.sats === cChainParams.current.collateralInSats
- );
-
+ const cCollaUTXO = (
+ await mempool.getUTXOs({
+ filter: UTXO_WALLET_STATE.SPENDABLE,
+ onlyConfirmed: true,
+ })
+ ).find(
+ (cUTXO) => cUTXO.value === cChainParams.current.collateralInSats
+ );
+ const balance = getBalance(false);
// If there's no valid UTXO, exit with a contextual message
if (!cCollaUTXO) {
- if (getBalance(false) < cChainParams.current.collateralInSats) {
+ if (balance < cChainParams.current.collateralInSats) {
// Not enough balance to create an MN UTXO
const amount =
- (cChainParams.current.collateralInSats -
- getBalance(false)) /
- COIN;
+ (cChainParams.current.collateralInSats - balance) / COIN;
const ticker = cChainParams.current.TICKER;
createAlert(
'warning',
@@ -1142,20 +1148,28 @@ export async function importMasternode() {
return;
}
- collateralTxId = cCollaUTXO.id;
- outidx = cCollaUTXO.vout;
+ collateralTxId = cCollaUTXO.outpoint.txid;
+ outidx = cCollaUTXO.outpoint.n;
collateralPrivKeyPath = 'legacy';
} else {
const path = doms.domMnTxId.value;
- const masterUtxo = mempool
- .getConfirmed()
- .findLast((u) => u.path === path); // first UTXO for each address in HD
+ let masterUtxo;
+ const utxos = await mempool.getUTXOs({
+ filter: UTXO_WALLET_STATE.SPENDABLE,
+ onlyConfirmed: true,
+ });
+ for (const u of utxos) {
+ if (wallet.getPath(u.script) === path) {
+ masterUtxo = u;
+ }
+ }
+
// sanity check:
- if (masterUtxo.sats !== cChainParams.current.collateralInSats) {
+ if (masterUtxo.value !== cChainParams.current.collateralInSats) {
return createAlert('warning', ALERTS.MN_COLLAT_NOT_SUITABLE, 10000);
}
- collateralTxId = masterUtxo.id;
- outidx = masterUtxo.vout;
+ collateralTxId = masterUtxo.outpoint.txid;
+ outidx = masterUtxo.outpoint.n;
collateralPrivKeyPath = path;
}
doms.domMnTxId.value = '';
@@ -1497,7 +1511,6 @@ export async function sweepAddress(arrUTXOs, sweepingMasterKey, nFixedFee = 0) {
txid: cUTXO.id,
index: cUTXO.vout,
script: cUTXO.script,
- path: cUTXO.path,
});
}
@@ -1511,7 +1524,9 @@ export async function sweepAddress(arrUTXOs, sweepingMasterKey, nFixedFee = 0) {
cTx.addoutput(strAddress, (nTotal - nFee) / COIN);
// Sign using the given Master Key, then broadcast the sweep, returning the TXID (or a failure)
- const sign = await signTransaction(cTx, sweepingMasterKey);
+ const sweepingWallet = new Wallet(0, false);
+ await sweepingWallet.setMasterKey(sweepingMasterKey);
+ const sign = await signTransaction(cTx, sweepingWallet);
return await getNetwork().sendTransaction(sign);
}
@@ -2272,7 +2287,7 @@ export async function updateMasternodeTab() {
return;
}
- if (!mempool.getConfirmed().length) {
+ if (!mempool.isLoaded) {
doms.domMnTextErrors.innerHTML =
'Your wallet is empty or still loading, re-open the tab in a few seconds!';
return;
@@ -2283,11 +2298,11 @@ export async function updateMasternodeTab() {
let cMasternode = await database.getMasternode();
// If the collateral is missing (spent, or switched wallet) then remove the current MN
if (cMasternode) {
- if (
- !mempool
- .getConfirmed()
- .find((utxo) => isMasternodeUTXO(utxo, cMasternode))
- ) {
+ const op = new COutpoint({
+ txid: cMasternode.collateralTxId,
+ n: cMasternode.outidx,
+ });
+ if (!mempool.hasUTXO(op, UTXO_WALLET_STATE.SPENDABLE, true)) {
database.removeMasternode();
cMasternode = null;
}
@@ -2301,11 +2316,15 @@ export async function updateMasternodeTab() {
doms.masternodeLegacyAccessText;
doms.domMnTxId.style.display = 'none';
// Find the first UTXO matching the expected collateral size
- const cCollaUTXO = mempool
- .getConfirmed()
- .find(
- (cUTXO) => cUTXO.sats === cChainParams.current.collateralInSats
- );
+ const cCollaUTXO = (
+ await mempool.getUTXOs({
+ filter: UTXO_WALLET_STATE.SPENDABLE,
+ onlyConfirmed: true,
+ })
+ ).find(
+ (cUTXO) => cUTXO.value === cChainParams.current.collateralInSats
+ );
+
const balance = getBalance(false);
if (cCollaUTXO) {
if (cMasternode) {
@@ -2338,9 +2357,12 @@ export async function updateMasternodeTab() {
const mapCollateralAddresses = new Map();
// Aggregate all valid Masternode collaterals into a map of Address <--> Collateral
- for (const cUTXO of mempool.getConfirmed()) {
- if (cUTXO.sats !== cChainParams.current.collateralInSats) continue;
- mapCollateralAddresses.set(cUTXO.path, cUTXO);
+ for (const cUTXO of await mempool.getUTXOs({
+ filter: UTXO_WALLET_STATE.SPENDABLE,
+ onlyConfirmed: true,
+ })) {
+ if (cUTXO.value !== cChainParams.current.collateralInSats) continue;
+ mapCollateralAddresses.set(wallet.getPath(cUTXO.script), cUTXO);
}
const fHasCollateral = mapCollateralAddresses.size > 0;
diff --git a/scripts/mempool.js b/scripts/mempool.js
index da6b73b16..5455afb1a 100644
--- a/scripts/mempool.js
+++ b/scripts/mempool.js
@@ -1,381 +1,354 @@
import { getNetwork } from './network.js';
-import { getBalance, isMasternodeUTXO, getStakingBalance } from './global.js';
-import { sleep } from './misc.js';
-import { debug } from './settings.js';
+import {
+ activityDashboard,
+ getStakingBalance,
+ stakingDashboard,
+} from './global.js';
import { getEventEmitter } from './event_bus.js';
+import Multimap from 'multimap';
+import { wallet } from './wallet.js';
+import { COIN } from './chain_params.js';
-/**
- * @typedef {Object} cIn - An input of a Tx
- * @property {string} txid - The transaction ID
- * @property {number} vout - The output index
- */
-
-/** An Unspent Transaction Output, used as Inputs of future transactions */
-export class UTXO {
+export class CTxOut {
/**
- * @param {Object} UTXO
- * @param {String} UTXO.id - Transaction ID
- * @param {String} UTXO.path - If applicable, the HD Path of the owning address
- * @param {Number} UTXO.sats - Satoshi value in this UTXO
- * @param {String} UTXO.script - HEX encoded spending script
- * @param {Array?} UTXO.vin - The inputs of the transaction, if any
- * @param {Number} UTXO.vout - Output position of this transaction
- * @param {Number} UTXO.height - Block height of the UTXO
- * @param {Number} UTXO.status - UTXO status enum state
- * @param {boolean} UTXO.isDelegate - Whether the UTXO is a cold stake delegation
- * @param {boolean} UTXO.isReward - Whether the UTXO is a reward
+ * @param {Object} CTxOut
+ * @param {COutpoint} CTxOut.outpoint - COutpoint of the CTxOut
+ * @param {String} CTxOut.script - Redeem script, in HEX
+ * @param {Number} CTxOut.value - Value in satoshi
*/
- constructor({
- id,
- path,
- sats,
- script,
- vin = [],
- vout,
- height,
- status,
- isDelegate = false,
- isReward = false,
- } = {}) {
- /** Transaction ID
+ constructor({ outpoint, script, value } = {}) {
+ /** COutpoint of the CTxOut
+ * @type {COutpoint} */
+ this.outpoint = outpoint;
+ /** Redeem script, in hex
* @type {String} */
- this.id = id;
-
- /** HD Path of the owning address
- * @type {String} */
- this.path = path;
-
- /** Satoshi value in this UTXO
- * @type {Number} */
- this.sats = sats;
-
- /** HEX encoded spending script
- * @type {String} */
this.script = script;
-
- /** The inputs of the transaction, if any
- * @type {Array} */
- this.vin = vin;
-
- /** Output position of this transaction
+ /** Value in satoshi
* @type {Number} */
- this.vout = vout;
-
- /** Block height of the UTXO
- * @type {Number} */
- this.height = height;
-
- /** UTXO status enum state
- * @type {Number} */
- this.status = status;
-
- /** Whether it's a delegation UTXO
- * @type {boolean} */
- this.isDelegate = isDelegate;
-
- /** Whether it's a reward UTXO
- * @type {boolean} */
- this.isReward = isReward;
+ this.value = value;
}
-
+}
+export class CTxIn {
/**
- * Check for equality between this UTXO and another UTXO
- * @param {UTXO} cUTXO - UTXO to compare against
- * @returns {Boolean} `true` if equal, `false` if unequal
+ * @param {Object} CTxIn
+ * @param {COutpoint} CTxIn.outpoint - Outpoint of the UTXO that the vin spends
+ * @param {String} CTxIn.scriptSig - Script used to spend the corresponding UTXO, in hex
*/
- equalsUTXO(cUTXO) {
- return (
- this.id === cUTXO.id &&
- this.vout === cUTXO.vout &&
- this.status === cUTXO.status
- );
+ constructor({ outpoint, scriptSig } = {}) {
+ /** Outpoint of the UTXO that the vin spends
+ * @type {COutpoint} */
+ this.outpoint = outpoint;
+ /** Script used to spend the corresponding UTXO, in hex
+ * @type {String} */
+ this.scriptSig = scriptSig;
}
}
-/** A Mempool instance, stores and handles UTXO data for the wallet */
-export class Mempool {
- constructor() {
- /**
- * An array of all known UTXOs
- * @type {Array}
- */
- this.UTXOs = [];
- this.subscribeToNetwork();
- }
-
- /** The CONFIRMED state (UTXO is spendable) */
- static CONFIRMED = 0;
-
- /** The REMOVED state (UTXO was spent and will be removed soon) */
- static REMOVED = 1;
-
- /** The PENDING state (standard UTXO is in mempool, pending confirmation) */
- static PENDING = 2;
-
+export class Transaction {
/**
- * Fetch a UTXO by ID and Index
- * @param {string} id - Transaction ID of the UTXO
- * @param {number} out - Output position of the UTXO
+ * @param {Object} Transaction
+ * @param {String} Transaction.txid - Transaction ID
+ * @param {Number} Transaction.blockHeight - Block height of the transaction (-1 if is pending)
+ * @param {Array} Transaction.vin - Inputs of the transaction
+ * @param {Array} Transaction.vout - Outputs of the transaction
*/
- getUTXO(id, out) {
- return this.UTXOs.find(
- (cUTXO) => cUTXO.id === id && cUTXO.vout === out
- );
+ constructor({ txid, blockHeight, vin, vout } = {}) {
+ /** Transaction ID
+ * @type {String} */
+ this.txid = txid;
+ /** Block height of the transaction (-1 if is pending)
+ * @param {Number} */
+ this.blockHeight = blockHeight;
+ /** Inputs of the transaction
+ * @type {Array}*/
+ this.vin = vin;
+ /** Outputs of the transaction
+ * @type {Array}*/
+ this.vout = vout;
}
-
- /**
- * Remove a UTXO after a set amount of time
- * @param {Number} nBlocks - Estimated blocks to wait
- * @param {UTXO} cUTXO - UTXO to remove
- */
- async removeWithDelay(nBlocks, cUTXO) {
- await sleep(nBlocks * 60 * 1000);
- this.removeUTXO(cUTXO);
+ isConfirmed() {
+ return this.blockHeight != -1;
}
-
+}
+/** An Unspent Transaction Output, used as Inputs of future transactions */
+export class COutpoint {
/**
- * Check if an exact UTXO match can be found in our wallet
- * @param {Object} UTXO
- * @param {String} UTXO.id - Transaction ID
- * @param {Number} UTXO.vout - Output position of this transaction
- * @param {Number} [UTXO.status] - UTXO status enum state. If it's undefined, it will ignore it.
- * @returns {Boolean} `true` or `false`
+ * @param {Object} COutpoint
+ * @param {String} COutpoint.txid - Transaction ID
+ * @param {Number} COutpoint.n - Outpoint position in the corresponding transaction
*/
- isAlreadyStored({ id, vout, status }) {
- return this.UTXOs.some(
- (cUTXO) =>
- cUTXO.id === id &&
- cUTXO.vout === vout &&
- (!status || cUTXO.status === status)
- );
+ constructor({ txid, n } = {}) {
+ /** Transaction ID
+ * @type {String} */
+ this.txid = txid;
+ /** Outpoint position in the corresponding transaction
+ * @type {Number} */
+ this.n = n;
}
+}
+
+export const UTXO_WALLET_STATE = {
+ NOT_MINE: 0, // Don't have the key to spend this utxo
+ SPENDABLE: 1, // Have the key to spend this (P2PKH) utxo
+ SPENDABLE_COLD: 2, // Have the key to spend this (P2CS) utxo
+ COLD_RECEIVED: 4, // Have the staking key of this (P2CS) utxo
+ SPENDABLE_TOTAL: 1 | 2,
+};
+/** A Mempool instance, stores and handles UTXO data for the wallet */
+export class Mempool {
/**
- * Fetches an array of UTXOs filtered by their state
- * @param {Number} nState - Specific UTXO state
- * @returns {Array} `array` - An array of UTXOs
+ * @type {boolean}
*/
- getUTXOsByState(nState) {
- return this.UTXOs.filter((cUTXO) => cUTXO.status === nState);
- }
-
+ #isLoaded = false;
/**
- * Removes a UTXO from a specific state
- * @param {UTXO} cNewUTXO - Pending UTXO to remove
- * @param {Number} nState - Specific state of this UTXO to search for
+ * @type {number} - Our Public balance in Satoshis
*/
- removeFromState(cNewUTXO, nState) {
- const arrPendingUTXOs = this.getUTXOsByState(nState);
- // Loop each pending UTXO
- for (const cUTXO of arrPendingUTXOs) {
- // Search for matching ID + output number
- if (cUTXO.id === cNewUTXO.id && cUTXO.vout === cNewUTXO.vout) {
- // Nuke it from orbit
- this.removeUTXO(cUTXO);
- break;
- }
- }
- }
-
+ #balance = 0;
/**
- * Add a new UTXO to the wallet
- * @param {UTXO} UTXO
+ * @type {number} - Our Cold Staking balance in Satoshis
*/
- addUTXO({
- id,
- path,
- sats,
- script,
- vin,
- vout,
- height,
- status,
- isDelegate,
- isReward,
- }) {
- const newUTXO = new UTXO({
- id,
- path,
- sats,
- script,
- vin,
- vout,
- height,
- status,
- isDelegate,
- isReward,
- });
-
- if (this.isAlreadyStored({ id, vout })) {
- this.updateUTXO({ id, vout });
- } else {
- // If this new UTXO is a reward with one vin (i.e: a Stake), we'll backtrace the input
- if (isReward && vin?.length === 1) {
- const cStakeInput = this.getUTXO(vin[0].txid, vin[0].vout);
-
- // And if the input is in our wallet, remove it
- if (cStakeInput) {
- this.removeUTXO(cStakeInput);
- }
- }
- this.UTXOs.push(newUTXO);
- }
-
- // Re-render the Balance UIs
- getEventEmitter().emit('balance-update', getBalance(true));
- getStakingBalance(true);
- }
-
+ #coldBalance = 0;
/**
- * Update an existing UTXO, by confirming its pending status
- * The UTXO must be in
- * @param {Object} UTXO - Object to be deconstructed
- * @param {String} UTXO.id - Transaction id
- * @param {Number} UTXO.vout - vout
+ * @type {Number}
+ * The maximum block height that we received with the call 'utxos'
+ * We don't want to receive anymore transactions which are below this block
*/
- updateUTXO({ id, vout }) {
- if (debug) {
- console.assert(
- this.isAlreadyStored({ id, vout }),
- 'Debug Mode: updateUTXO must be called with an existing UTXO'
- );
- }
- const cUTXO = this.UTXOs.find(
- (utxo) => utxo.id === id && utxo.vout == vout
- );
- switch (cUTXO.status) {
- case Mempool.PENDING:
- cUTXO.status = Mempool.CONFIRMED;
- break;
- }
- getBalance(true);
- getStakingBalance(true);
+ #syncHeight = -1;
+ constructor() {
+ /**
+ * Multimap txid -> spent Coutpoint
+ * @type {Multimap}
+ */
+ this.spent = new Multimap();
+ /**
+ * A map of all known transactions
+ * @type {Map}
+ */
+ this.txmap = new Map();
+ this.subscribeToNetwork();
}
- /**
- * Remove a UTXO completely from our wallet
- * @param {UTXO} cUTXO - UTXO to remove
- */
- removeUTXO(cUTXO) {
- this.UTXOs = this.UTXOs.filter((utxo) => !utxo.equalsUTXO(cUTXO));
+ reset() {
+ this.#isLoaded = false;
+ this.txmap = new Map();
+ this.spent = new Multimap();
+ }
+ get balance() {
+ return this.#balance;
+ }
+ get coldBalance() {
+ return this.#coldBalance;
+ }
+ get isLoaded() {
+ return this.#isLoaded;
}
/**
- * Remove a UTXO completely from our wallet, with a 12 minute delay given his id, path and vout
- * @param {Object} UTXO
- * @param {String} UTXO.id - Transaction ID
- * @param {Number} UTXO.vout - Output position of this transaction
+ * Subscribes to network events
+ * @param {Network} network
*/
- autoRemoveUTXO({ id, vout }) {
- for (const cUTXO of this.UTXOs) {
- // Loop given + internal UTXOs to find a match, then start the delayed removal
- if (cUTXO.id === id && cUTXO.vout === vout) {
- cUTXO.status = Mempool.REMOVED;
- this.removeWithDelay(12, cUTXO);
+ subscribeToNetwork() {
+ getEventEmitter().on('utxo', async (utxos) => {
+ //Should not really happen
+ if (this.#isLoaded) {
+ console.error(
+ 'ERROR! Event UTXO called on already loaded mempool'
+ );
return;
}
- }
- console.error(
- 'Mempool: Failed to find UTXO ' +
- id +
- ' (' +
- vout +
- ') for auto-removal!'
- );
- }
-
- /**
- * Remove many UTXOs completely from our wallet, with a 12 minute delay
- * @param {Array} arrUTXOs - UTXOs to remove
- */
- autoRemoveUTXOs(arrUTXOs) {
- for (const cNewUTXO of arrUTXOs) {
- for (const cUTXO of this.UTXOs) {
- // Loop given + internal UTXOs to find a match, then start the delayed removal
- if (cUTXO.equalsUTXO(cNewUTXO)) {
- cUTXO.status = Mempool.REMOVED;
- this.removeWithDelay(12, cUTXO);
- break;
+ getEventEmitter().emit('sync-status', 'start');
+ for (const utxo of utxos) {
+ this.#syncHeight = Math.max(this.#syncHeight, utxo.height);
+ if (this.txmap.has(utxo.txid)) {
+ continue;
+ }
+ // If the UTXO is new, we'll process it and add it internally
+ const tx = await getNetwork().getTxFullInfo(utxo.txid);
+ this.txmap.set(tx.txid, this.parseTransaction(tx));
+ //Little hack: sadly we don't have ALL the wallet txs
+ //So what we do: we put in spent state all the vouts that are not in the currrent utxos list.
+ for (const vout of tx.vout) {
+ const op = new COutpoint({ txid: tx.txid, n: vout.n });
+ const isMyUTXO = utxos.some(
+ (x) => x.txid == op.txid && x.vout == op.n
+ );
+ if (!isMyUTXO && !this.isSpent(op)) {
+ this.spent.set(tx.txid, op);
+ }
}
}
- }
- }
-
- /**
- * Fetches an array of confirmed UTXOs, an easier alias to {@link getUTXOsByState}
- * @returns {Array} `array` - An array of UTXOs
- */
- getConfirmed() {
- return this.getUTXOsByState(Mempool.CONFIRMED);
+ this.#isLoaded = true;
+ this.#balance = this.getBalance(UTXO_WALLET_STATE.SPENDABLE);
+ this.#coldBalance = this.getBalance(
+ UTXO_WALLET_STATE.SPENDABLE_COLD
+ );
+ getEventEmitter().emit('balance-update');
+ getStakingBalance(true);
+ activityDashboard.update();
+ stakingDashboard.update();
+ getEventEmitter().emit('sync-status', 'stop');
+ });
+ getEventEmitter().on('recent_txs', async (txs) => {
+ // Don't process recent_txs if mempool is not loaded yet
+ if (!this.#isLoaded) {
+ return;
+ }
+ getEventEmitter().emit('sync-status', 'start');
+ for (const tx of txs) {
+ // Do not accept any tx which is below the syncHeight
+ if (this.#syncHeight >= tx.blockHeight) {
+ continue;
+ }
+ if (
+ !this.txmap.has(tx.txid) ||
+ !this.txmap.get(tx.txid).isConfirmed()
+ ) {
+ const fullTx = this.parseTransaction(
+ await getNetwork().getTxFullInfo(tx.txid)
+ );
+ await this.updateMempool(fullTx);
+ }
+ }
+ getEventEmitter().emit('sync-status', 'stop');
+ });
}
-
/**
- * Get standard, non delegated, UTXOs
- * @returns {Array} Non delegated utxos
+ * An Outpoint to check
+ * @param {COutpoint} op
*/
- getStandardUTXOs() {
- return this.UTXOs.filter(
- (cUTXO) => cUTXO.status !== Mempool.REMOVED && !cUTXO.isDelegate
- );
+ isSpent(op) {
+ return this.spent.get(op.txid)?.some((x) => x.n == op.n);
}
/**
- * Get delegated UTXOs
- * @returns {Array} Delegated UTXOs
+ * Get the total wallet balance
+ * @param {UTXO_WALLET_STATE} filter the filter you want to apply
*/
- getDelegatedUTXOs() {
- return this.UTXOs.filter(
- (cUTXO) => cUTXO.status !== Mempool.REMOVED && cUTXO.isDelegate
- );
+ getBalance(filter) {
+ let totBalance = 0;
+ for (const [_, tx] of this.txmap) {
+ for (const vout of tx.vout) {
+ if (this.isSpent(vout.outpoint)) {
+ continue;
+ }
+ const UTXO_STATE = wallet.isMyVout(vout.script);
+ if ((UTXO_STATE & filter) == 0) {
+ continue;
+ }
+ totBalance += vout.value;
+ }
+ }
+ return totBalance;
}
-
/**
- * Returns the real-time balance of the wallet (all addresses)
- * @returns {Number} Balance in satoshis
+ * Outpoint that we want to fetch
+ * @param {COutpoint} op
+ * @param {UTXO_WALLET_STATE} filter the filter you want to apply
+ * @param {Boolean} onlyConfirmed consider only confirmed transactions
*/
- getBalance() {
- // Fetch 'standard' balances: the sum of all Confirmed or Unconfirmed transactions (excluding Masternode collaterals)
- return this.getStandardUTXOs()
- .filter((cUTXO) => !isMasternodeUTXO(cUTXO)) // TODO: add masternode
- .reduce((a, b) => a + b.sats, 0);
+ hasUTXO(op, filter, onlyConfirmed) {
+ // If the outpoint is spent return false
+ if (this.isSpent(op)) {
+ return false;
+ }
+ // If we don't have the outpoint return false
+ if (!this.txmap.has(op.txid)) {
+ return false;
+ }
+ const tx = this.txmap.get(op.txid);
+ // Check if the tx is confirmed
+ if (onlyConfirmed && !tx.isConfirmed()) {
+ return false;
+ }
+ const vout = tx.vout[op.n];
+ const UTXO_STATE = wallet.isMyVout(vout.script);
+ // Check if the UTXO has the state we wanted
+ if ((UTXO_STATE & filter) == 0) {
+ return false;
+ }
+ return true;
}
/**
- * Returns if a UTXO is valid
- * @param {UTXO} cUTXO - UTXO
- * @returns {Boolean} `true` if the reward UTXO is spendable, `false` if not
+ * Get a list of UTXOs
+ * @param {Object} o
+ * @param {Number} o.filter enum element of UTXO_WALLET_STATE
+ * @param {Number | null} o.target PIVs in satoshi that we want to spend
+ * @param {Boolean} o.onlyConfirmed Consider only confirmed transactions
+ * @returns {CTxOut[]} Array of fetched UTXOs
*/
- static isValidUTXO(cUTXO) {
- if (cUTXO.isReward) {
- return getNetwork().cachedBlockCount - cUTXO.height > 100;
- } else {
- return true;
+ getUTXOs({ filter, target, onlyConfirmed = false }) {
+ let totFound = 0;
+ let utxos = [];
+ for (const [_, tx] of this.txmap) {
+ if (onlyConfirmed && !tx.isConfirmed()) {
+ continue;
+ }
+ for (const vout of tx.vout) {
+ if (this.isSpent(vout.outpoint)) {
+ continue;
+ }
+ const UTXO_STATE = wallet.isMyVout(vout.script);
+ if ((UTXO_STATE & filter) == 0) {
+ continue;
+ }
+ utxos.push(vout);
+ // Return early if you found enough PIVs (11/10 is to make sure to pay fee)
+ totFound += vout.value;
+ if (target && totFound > (11 / 10) * target) {
+ return utxos;
+ }
+ }
}
+ return utxos;
}
/**
- * Returns the real-time delegated balance of the wallet (all addresses)
- * @returns {Number} Delegated balance in satoshis
+ * @param {Object} tx - tx object fetched from the explorer
+ * @returns {Transaction} transaction parsed
*/
- getDelegatedBalance() {
- return this.getDelegatedUTXOs().reduce((a, b) => a + b.sats, 0);
+ parseTransaction(tx) {
+ const vout = [];
+ const vin = [];
+ for (const out of tx.vout) {
+ vout.push(
+ new CTxOut({
+ outpoint: new COutpoint({ txid: tx.txid, n: out.n }),
+ script: out.scriptPubKey.hex,
+ value: out.value * COIN,
+ })
+ );
+ }
+ for (const inp of tx.vin) {
+ const op = new COutpoint({ txid: inp.txid, n: inp.vout });
+ vin.push(new CTxIn({ outpoint: op, scriptSig: inp.scriptSig.hex }));
+ }
+ return new Transaction({
+ txid: tx.txid,
+ blockHeight:
+ getNetwork().cachedBlockCount -
+ (tx.confirmations - 1) -
+ tx.confirmations,
+ vin,
+ vout,
+ });
}
-
/**
- * Subscribes to network events
- * @param {Network} network
+ * Update the mempool status
+ * @param {Transaction} tx
*/
- subscribeToNetwork() {
- getEventEmitter().on('utxo', async (utxos) => {
- for (const utxo of utxos) {
- // If we have the UTXO, we update it's confirmation status
- if (this.isAlreadyStored({ id: utxo.txid, vout: utxo.vout })) {
- this.updateUTXO({ id: utxo.txid, vout: utxo.vout });
- continue;
- }
- // If the UTXO is new, we'll process it and add it internally
- this.addUTXO(await getNetwork().getUTXOFullInfo(utxo));
+ updateMempool(tx) {
+ this.txmap.set(tx.txid, tx);
+ for (const vin of tx.vin) {
+ const op = vin.outpoint;
+ if (!this.isSpent(op)) {
+ this.spent.set(op.txid, op);
}
- });
+ }
+ this.#balance = this.getBalance(UTXO_WALLET_STATE.SPENDABLE);
+ this.#coldBalance = this.getBalance(UTXO_WALLET_STATE.SPENDABLE_COLD);
+ getEventEmitter().emit('balance-update');
+ getStakingBalance(true);
}
}
diff --git a/scripts/network.js b/scripts/network.js
index 4947b034b..5df80943c 100644
--- a/scripts/network.js
+++ b/scripts/network.js
@@ -10,6 +10,7 @@ import {
fAutoSwitch,
} from './settings.js';
import { ALERTS } from './i18n.js';
+import { mempool } from './global.js';
/**
* @typedef {Object} XPUBAddress
@@ -195,6 +196,7 @@ export class ExplorerNetwork extends Network {
this.arrTxHistory = [];
this.historySyncing = false;
+ this.utxoFetched = false;
}
error() {
@@ -210,7 +212,6 @@ export class ExplorerNetwork extends Network {
async getBlockCount() {
try {
- getEventEmitter().emit('sync-status', 'start');
const { backend } = await (
await retryWrapper(fetchBlockbook, `/api/v2/api`)
).json();
@@ -227,8 +228,6 @@ export class ExplorerNetwork extends Network {
} catch (e) {
this.error();
throw e;
- } finally {
- getEventEmitter().emit('sync-status', 'stop');
}
return this.blocks;
}
@@ -248,6 +247,10 @@ export class ExplorerNetwork extends Network {
* @returns {Promise>} Resolves when it has finished fetching UTXOs
*/
async getUTXOs(strAddress = '') {
+ // If getUTXOs has been already called return
+ if (this.utxoFetched && !strAddress) {
+ return;
+ }
// Don't fetch UTXOs if we're already scanning for them!
if (!strAddress) {
if (!this.wallet || !this.wallet.isLoaded()) return;
@@ -260,9 +263,22 @@ export class ExplorerNetwork extends Network {
const arrUTXOs = await (
await retryWrapper(fetchBlockbook, `/api/v2/utxo/${publicKey}`)
).json();
-
+ // Update the maximum path
+ for (const utxo of arrUTXOs) {
+ if (utxo.path) {
+ this.lastWallet = Math.max(
+ parseInt(utxo.path.split('/')[5]),
+ this.lastWallet
+ );
+ }
+ }
// If using MPW's wallet, then sync the UTXOs in MPW's state
- if (!strAddress) getEventEmitter().emit('utxo', arrUTXOs);
+ // This check is a temporary fix to the toggle explorer call
+ if (this === getNetwork())
+ if (!strAddress) {
+ this.utxoFetched = true;
+ getEventEmitter().emit('utxo', arrUTXOs);
+ }
// Return the UTXOs for additional utility use
return arrUTXOs;
@@ -273,52 +289,6 @@ export class ExplorerNetwork extends Network {
this.isSyncing = false;
}
}
- /**
- * Fetches UTXOs full info
- * @param {Object} cUTXO - object-formatted UTXO
- * @returns {Promise} Promise that resolves with the full info of the UTXO
- */
- async getUTXOFullInfo(cUTXO) {
- const cTx = await (
- await retryWrapper(
- fetchBlockbook,
- `/api/v2/tx-specific/${cUTXO.txid}`
- )
- ).json();
- const cVout = cTx.vout[cUTXO.vout];
-
- let path;
- if (cUTXO.path) {
- path = cUTXO.path.split('/');
- path[2] =
- (this.wallet.isHardwareWallet()
- ? cChainParams.current.BIP44_TYPE_LEDGER
- : cChainParams.current.BIP44_TYPE) + "'";
- this.lastWallet = Math.max(parseInt(path[5]), this.lastWallet);
- path = path.join('/');
- }
-
- const isColdStake = cVout.scriptPubKey.type === 'coldstake';
- const isStandard = cVout.scriptPubKey.type === 'pubkeyhash';
- const isReward = cTx.vout[0].scriptPubKey.hex === '';
- // We don't know what this is
- if (!isColdStake && !isStandard) {
- return null;
- }
-
- return new UTXO({
- id: cUTXO.txid,
- path,
- sats: Math.round(cVout.value * COIN),
- script: cVout.scriptPubKey.hex,
- vin: cTx?.vin || [],
- vout: cVout.n,
- height: this.cachedBlockCount - (cTx.confirmations - 1),
- status: cTx.confirmations < 1 ? Mempool.PENDING : Mempool.CONFIRMED,
- isDelegate: isColdStake,
- isReward,
- });
- }
/**
* Fetch an XPub's basic information
@@ -428,7 +398,11 @@ export class ExplorerNetwork extends Network {
cData.transactions || [],
mapPaths
);
-
+ if (cRecentTXs.transactions)
+ getEventEmitter().emit(
+ 'recent_txs',
+ cRecentTXs.transactions
+ );
// Process Recent TXs, then add them manually on the basis that they are NOT already known in history
const arrRecentTXs = this.toHistoricalTXs(
cRecentTXs.transactions || [],
@@ -593,6 +567,14 @@ export class ExplorerNetwork extends Network {
return await req.json();
}
+ async getTxFullInfo(txHash) {
+ const req = await retryWrapper(
+ fetchBlockbook,
+ `/api/v2/tx-specific/${txHash}`
+ );
+ return await req.json();
+ }
+
// PIVX Labs Analytics: if you are a user, you can disable this FULLY via the Settings.
// ... if you're a developer, we ask you to keep these stats to enhance upstream development,
// ... but you are free to completely strip MPW of any analytics, if you wish, no hard feelings.
diff --git a/scripts/promos.js b/scripts/promos.js
index 9a422e646..ebf75efcb 100644
--- a/scripts/promos.js
+++ b/scripts/promos.js
@@ -14,6 +14,7 @@ import { createAndSendTransaction } from './transactions.js';
import { wallet } from './wallet.js';
import { LegacyMasterKey } from './masterkey.js';
import { deriveAddress } from './encoding.js';
+import { getP2PKHScript } from './script.js';
/** The fee in Sats to use for Creating or Redeeming PIVX Promos */
export const PROMO_FEE = 10000;
@@ -85,20 +86,16 @@ export class PromoWallet {
// Check for UTXOs on the explorer
const arrSimpleUTXOs = await getNetwork().getUTXOs(this.address);
- // Either format the simple UTXOs, or additionally sync the full UTXOs with scripts
+ // Generate the UTXO with scripts
this.utxos = [];
for (const cUTXO of arrSimpleUTXOs) {
- if (fFull) {
- this.utxos.push(await getNetwork().getUTXOFullInfo(cUTXO));
- } else {
- this.utxos.push({
- id: cUTXO.txid,
- sats: parseInt(cUTXO.value),
- vout: cUTXO.vout,
- });
- }
+ this.utxos.push({
+ id: cUTXO.txid,
+ sats: parseInt(cUTXO.value),
+ vout: cUTXO.vout,
+ script: getP2PKHScript(this.address),
+ });
}
-
// Unlock, mark as synced and return the UTXO set
this.fLock = false;
this.fSynced = true;
diff --git a/scripts/script.js b/scripts/script.js
index b34678887..0fae18fa4 100644
--- a/scripts/script.js
+++ b/scripts/script.js
@@ -1,3 +1,11 @@
+import bs58 from 'bs58';
+import { cChainParams } from './chain_params.js';
+import { bytesToHex, dSHA256 } from './utils.js';
+
+export const P2PK_START_INDEX = 3;
+export const OWNER_START_INDEX = 6;
+export const COLD_START_INDEX = 28;
+
export const OP = {
// push value
0: 0x00,
@@ -163,3 +171,74 @@ export function getScriptForBurn(data) {
// Return the burn script
return cScript;
}
+
+/**
+ * Is a given script pay to public key hash?
+ * @param {Uint8Array} dataBytes - script as byte aray
+ * @returns {Boolean} True if the given script is P2PKH
+ */
+export function isP2PKH(dataBytes) {
+ return (
+ dataBytes.length >= 25 &&
+ dataBytes[0] == OP['DUP'] &&
+ dataBytes[1] == OP['HASH160'] &&
+ dataBytes[2] == 0x14 &&
+ dataBytes[23] == OP['EQUALVERIFY'] &&
+ dataBytes[24] == OP['CHECKSIG']
+ );
+}
+
+/**
+ * Is a given script pay to cold stake?
+ * @param {Uint8Array} dataBytes - script as byte aray
+ * @returns {Boolean} True if the given script is P2CS
+ */
+export function isP2CS(dataBytes) {
+ return (
+ dataBytes.length >= 51 &&
+ dataBytes[0] == OP['DUP'] &&
+ dataBytes[1] == OP['HASH160'] &&
+ dataBytes[2] == OP['ROT'] &&
+ dataBytes[3] == OP['IF'] &&
+ (dataBytes[4] == OP['CHECKCOLDSTAKEVERIFY'] ||
+ dataBytes[4] == OP['CHECKCOLDSTAKEVERIFY_LOF']) &&
+ dataBytes[5] == 0x14 &&
+ dataBytes[26] == OP['ELSE'] &&
+ dataBytes[27] == 0x14 &&
+ dataBytes[48] == OP['ENDIF'] &&
+ dataBytes[49] == OP['EQUALVERIFY'] &&
+ dataBytes[50] == OP['CHECKSIG']
+ );
+}
+/**
+ * Generate base58 encoded address from a public key hash
+ * @param {Uint8Array} pkhBytes - public key hash
+ * @returns {String} Base58 encoded address
+ */
+export function getAddressFromPKH(pkhBytes) {
+ const buffer = new Uint8Array([
+ cChainParams.current.PUBKEY_ADDRESS,
+ ...pkhBytes,
+ ]);
+ const checksum = dSHA256(buffer);
+ return bs58.encode([
+ ...Array.from(buffer),
+ ...Array.from(checksum.slice(0, 4)),
+ ]);
+}
+/**
+ * Generate the P2KH Script from the corresponding public key
+ * @param {string} pubKey - public key encoded with base58
+ * @return {string} Script in HEX
+ */
+export function getP2PKHScript(pubKey) {
+ const pkh = Uint8Array.from(bs58.decode(pubKey).slice(1, 21));
+ let dataBytes = [];
+ dataBytes.push(OP['DUP']);
+ dataBytes.push(OP['HASH160']);
+ dataBytes.push(0x14);
+ dataBytes = dataBytes.concat(Array.prototype.slice.call(pkh));
+ dataBytes.push(OP['EQUALVERIFY']);
+ dataBytes.push(OP['CHECKSIG']);
+ return bytesToHex(dataBytes);
+}
diff --git a/scripts/settings.js b/scripts/settings.js
index 2ebdd5f46..4e7683220 100644
--- a/scripts/settings.js
+++ b/scripts/settings.js
@@ -518,6 +518,7 @@ export async function toggleTestnet() {
// Check if the new network has an Account
const cNewDB = await Database.getInstance();
const cNewAccount = await cNewDB.getAccount();
+ mempool.reset();
if (cNewAccount?.publicKey) {
// Import the new wallet (overwriting the existing in-memory wallet)
await importWallet({ newWif: cNewAccount.publicKey });
@@ -548,8 +549,6 @@ export async function toggleTestnet() {
doms.domImportWallet.style.display = 'none';
}
- mempool.UTXOs = [];
-
getEventEmitter().emit('balance-update');
getStakingBalance(true);
await updateEncryptionGUI(wallet.isLoaded());
diff --git a/scripts/transactions.js b/scripts/transactions.js
index 776ef85c4..e68ac0b88 100644
--- a/scripts/transactions.js
+++ b/scripts/transactions.js
@@ -13,7 +13,13 @@ import {
import { cHardwareWallet, strHardwareName } from './ledger.js';
import { wallet, getNewAddress } from './wallet.js';
import { HdMasterKey } from './masterkey.js';
-import { Mempool, UTXO } from './mempool.js';
+import {
+ COutpoint,
+ CTxIn,
+ CTxOut,
+ Transaction,
+ UTXO_WALLET_STATE,
+} from './mempool.js';
import { getNetwork } from './network.js';
import { cChainParams, COIN, COIN_DECIMALS } from './chain_params.js';
import {
@@ -296,15 +302,10 @@ export async function createAndSendTransaction({
// Compute change (or lack thereof)
const nChange = cCoinControl.nValue - (nFee + amount);
- const [changeAddress, changeAddressPath] = await getNewAddress({
+ const [changeAddress, _] = await getNewAddress({
verify: wallet.isHardwareWallet(),
});
- /**
- * Array containing known UTXOs we can spend after the transaction is complete
- * @type{Array}
- */
- const knownUTXOs = [];
/**
* Array containing the transaction outputs, useful for showing confirmation screen
*/
@@ -328,17 +329,6 @@ export async function createAndSendTransaction({
cTx.addoutput(changeAddress, nChange / COIN);
outputs.push([changeAddress, nChange / COIN]);
}
- knownUTXOs.push(
- new UTXO({
- id: null, // We still don't know the txid
- path: changeAddressPath,
- script: cTx.outputs[0].script,
- sats: nChange,
- vout: 0,
- status: Mempool.PENDING,
- isDelegate: delegateChange && nChange > 1.01 * COIN,
- })
- );
} else {
// We're sending alot! So we deduct the fee from the send amount. There's not enough change to pay it with!
amount -= nFee;
@@ -358,22 +348,6 @@ export async function createAndSendTransaction({
// Create the Delegation output
cTx.addcoldstakingoutput(strOwnerAddress, address, amount / COIN);
outputs.push([strOwnerAddress, address, amount / COIN]);
-
- // If the owner address is internal, then we add it to our mempool to be instantly re-spendable and show in our balance
- // ... otherwise, it is considered an outgoing (external) transaction
- if (strOwnerPath) {
- knownUTXOs.push(
- new UTXO({
- id: null,
- path: strOwnerPath,
- script: cTx.outputs[cTx.outputs.length - 1].script,
- sats: amount,
- vout: cTx.outputs.length - 1,
- status: Mempool.PENDING,
- isDelegate: true,
- })
- );
- }
} else if (isProposal) {
cTx.addproposaloutput(address, amount / COIN);
} else {
@@ -402,40 +376,36 @@ export async function createAndSendTransaction({
const result = await getNetwork().sendTransaction(sign);
// Update the mempool
if (result) {
- // Remove spent inputs
- for (const tx of cTx.inputs) {
- mempool.autoRemoveUTXO({
- id: tx.outpoint.hash,
- path: tx.path,
- vout: tx.outpoint.index,
- });
- }
-
const futureTxid = bytesToHex(dSHA256(hexToBytes(sign)).reverse());
-
- for (const utxo of knownUTXOs) {
- utxo.id = futureTxid;
- mempool.addUTXO(utxo);
- }
-
- if (!isDelegation && !isProposal) {
- const path = wallet.isOwnAddress(address);
-
- // If the tx was sent to yourself, add it to the mempool
- if (path) {
- const vout = nChange > 0 ? 1 : 0;
- mempool.addUTXO(
- new UTXO({
- id: futureTxid,
- path,
- sats: amount,
- vout,
- script: bytesToHex(cTx.outputs[vout].script),
- status: Mempool.PENDING,
- })
- );
- }
- }
+ // Build Transaction object
+ const vin = cTx.inputs.map(
+ (inp) =>
+ new CTxIn({
+ outpoint: new COutpoint({
+ txid: inp.outpoint.hash,
+ n: inp.outpoint.index,
+ }),
+ scriptSig: bytesToHex(inp.script),
+ })
+ );
+ const vout = cTx.outputs.map(
+ (out, i) =>
+ new CTxOut({
+ outpoint: new COutpoint({
+ txid: futureTxid,
+ n: i,
+ }),
+ script: bytesToHex(out.script),
+ value: Number(out.value),
+ })
+ );
+ const parsedTx = new Transaction({
+ txid: futureTxid,
+ blockHeight: -1,
+ vin: vin,
+ vout: vout,
+ });
+ mempool.updateMempool(parsedTx);
}
return { ok: !!result, txid: result };
}
@@ -479,11 +449,7 @@ export async function createMasternode() {
export async function signTransaction(cTx, wallet, outputs, undelegate) {
if (!wallet.isHardwareWallet()) {
- return await cTx.sign(
- wallet.getMasterKey(),
- 1,
- undelegate ? 'coldstake' : undefined
- );
+ return await cTx.sign(wallet, 1, undelegate ? 'coldstake' : undefined);
}
// Format the inputs how the Ledger SDK prefers
const arrInputs = [];
@@ -494,7 +460,11 @@ export async function signTransaction(cTx, wallet, outputs, undelegate) {
await cHardwareWallet.splitTransaction(cInputFull.hex),
cInput.outpoint.index,
]);
- arrAssociatedKeysets.push(cInput.path);
+ const path = wallet.getPath(cInput.script);
+ if (path === null) {
+ console.error('ERROR: PATH IS NULL');
+ }
+ arrAssociatedKeysets.push(path);
}
const cLedgerTx = await cHardwareWallet.splitTransaction(cTx.serialize());
const strOutputScriptHex = await cHardwareWallet
@@ -538,9 +508,13 @@ async function chooseUTXOs(
// Select the UTXO type bucket
//const arrUTXOs
- const arrUTXOs = fColdOnly
- ? mempool.getDelegatedUTXOs()
- : mempool.getStandardUTXOs();
+ const filter = fColdOnly
+ ? UTXO_WALLET_STATE.SPENDABLE_COLD
+ : UTXO_WALLET_STATE.SPENDABLE;
+ const arrUTXOs = mempool.getUTXOs({
+ filter: filter,
+ target: nTotalSatsRequired,
+ });
// Select and return UTXO pointers (filters applied)
const cCoinControl = { nValue: 0, nChange: 0, arrSelectedUTXOs: [] };
@@ -548,9 +522,6 @@ async function chooseUTXOs(
for (let i = 0; i < arrUTXOs.length; i++) {
const cUTXO = arrUTXOs[i];
- if (!Mempool.isValidUTXO(cUTXO)) {
- continue;
- }
// Don't spend locked Masternode collaterals
if (isMasternodeUTXO(cUTXO, masternode)) continue; //CHANGE THIS
@@ -573,18 +544,18 @@ async function chooseUTXOs(
}
// Does the UTXO meet size requirements?
- if (cUTXO.sats < nMinInputSize) continue;
+ if (cUTXO.value < nMinInputSize) continue;
// Push UTXO and cache new total value
cCoinControl.arrSelectedUTXOs.push(cUTXO);
- cCoinControl.nValue += cUTXO.sats;
+ cCoinControl.nValue += cUTXO.value;
console.log(
'Coin Control: Selected input ' +
- cUTXO.id.substr(0, 6) +
+ cUTXO.outpoint.txid.substr(0, 6) +
'(' +
- cUTXO.vout +
+ cUTXO.outpoint.n +
')... (Added ' +
- cUTXO.sats / COIN +
+ cUTXO.value / COIN +
' ' +
cChainParams.current.TICKER +
' - Total: ' +
@@ -594,10 +565,9 @@ async function chooseUTXOs(
// Stuff UTXO into the TX
cTx.addinput({
- txid: cUTXO.id,
- index: cUTXO.vout,
+ txid: cUTXO.outpoint.txid,
+ index: cUTXO.outpoint.n,
script: cUTXO.script,
- path: cUTXO.path,
});
}
diff --git a/scripts/wallet.js b/scripts/wallet.js
index 2a9b7486c..ea4a88d17 100644
--- a/scripts/wallet.js
+++ b/scripts/wallet.js
@@ -18,7 +18,6 @@ import {
import {
refreshChainData,
setDisplayForAllWalletOptions,
- getBalance,
getStakingBalance,
} from './global.js';
import { ALERTS, tr, translation } from './i18n.js';
@@ -28,8 +27,17 @@ import { Database } from './database.js';
import { guiRenderCurrentReceiveModal } from './contacts-book.js';
import { Account } from './accounts.js';
import { debug, fAdvancedMode } from './settings.js';
-
+import { bytesToHex, hexToBytes } from './utils.js';
import { strHardwareName, getHardwareWalletKeys } from './ledger.js';
+import { UTXO_WALLET_STATE } from './mempool.js';
+import {
+ isP2CS,
+ isP2PKH,
+ getAddressFromPKH,
+ COLD_START_INDEX,
+ P2PK_START_INDEX,
+ OWNER_START_INDEX,
+} from './script.js';
import { getEventEmitter } from './event_bus.js';
export let fWalletLoaded = false;
@@ -56,8 +64,19 @@ export class Wallet {
* @type {Map}
*/
#ownAddresses = new Map();
- constructor(nAccount) {
+ /**
+ * Map public key hash -> Address
+ * @type {Map}
+ */
+ #knownPKH = new Map();
+ /**
+ * True if this is the global wallet, false otherwise
+ * @type {Boolean}
+ */
+ #isMainWallet;
+ constructor(nAccount, isMainWallet) {
this.#nAccount = nAccount;
+ this.#isMainWallet = isMainWallet;
}
getMasterKey() {
@@ -128,8 +147,10 @@ export class Wallet {
*/
async setMasterKey(mk) {
this.#masterKey = mk;
- // Update the network master key
- await getNetwork().setWallet(this);
+ // If this is the global wallet update the network master key
+ if (this.#isMainWallet) {
+ await getNetwork().setWallet(this);
+ }
}
/**
@@ -246,7 +267,6 @@ export class Wallet {
this.#ownAddresses.set(address, value);
return value;
}
-
this.#ownAddresses.set(address, null);
return null;
}
@@ -265,12 +285,58 @@ export class Wallet {
getKeyToExport() {
return this.#masterKey?.getKeyToExport(this.#nAccount);
}
+
+ //Get path from a script
+ getPath(script) {
+ const dataBytes = hexToBytes(script);
+ // At the moment we support only P2PKH and P2CS
+ const iStart = isP2PKH(dataBytes) ? P2PK_START_INDEX : COLD_START_INDEX;
+ const address = this.getAddressFromPKHCache(
+ bytesToHex(dataBytes.slice(iStart, iStart + 20))
+ );
+ return this.isOwnAddress(address);
+ }
+
+ isMyVout(script) {
+ let address;
+ const dataBytes = hexToBytes(script);
+ if (isP2PKH(dataBytes)) {
+ address = this.getAddressFromPKHCache(
+ bytesToHex(
+ dataBytes.slice(P2PK_START_INDEX, P2PK_START_INDEX + 20)
+ )
+ );
+ if (this.isOwnAddress(address)) {
+ return UTXO_WALLET_STATE.SPENDABLE;
+ }
+ } else if (isP2CS(dataBytes)) {
+ for (let i = 0; i < 2; i++) {
+ const iStart = i == 0 ? OWNER_START_INDEX : COLD_START_INDEX;
+ address = this.getAddressFromPKHCache(
+ bytesToHex(dataBytes.slice(iStart, iStart + 20))
+ );
+ if (this.isOwnAddress(address)) {
+ return i == 0
+ ? UTXO_WALLET_STATE.COLD_RECEIVED
+ : UTXO_WALLET_STATE.SPENDABLE_COLD;
+ }
+ }
+ }
+ return UTXO_WALLET_STATE.NOT_MINE;
+ }
+ // Avoid calculating over and over the same getAddressFromPKH by saving the result in a map
+ getAddressFromPKHCache(pkh_hex) {
+ if (!this.#knownPKH.has(pkh_hex)) {
+ this.#knownPKH.set(pkh_hex, getAddressFromPKH(hexToBytes(pkh_hex)));
+ }
+ return this.#knownPKH.get(pkh_hex);
+ }
}
/**
* @type{Wallet}
*/
-export const wallet = new Wallet(0); // For now we are using only the 0-th account, (TODO: update once account system is done)
+export const wallet = new Wallet(0, true); // For now we are using only the 0-th account, (TODO: update once account system is done)
/**
* Import a wallet (with it's private, public or encrypted data)