diff --git a/assets/logos/beacon_logo.svg b/assets/logos/beacon_logo.svg new file mode 100644 index 000000000..591a2efa4 --- /dev/null +++ b/assets/logos/beacon_logo.svg @@ -0,0 +1,6 @@ + + beacon_logo + + + + diff --git a/assets/logos/ios-fireblocks.svg b/assets/logos/ios-fireblocks.svg new file mode 100644 index 000000000..f3b07191a --- /dev/null +++ b/assets/logos/ios-fireblocks.svg @@ -0,0 +1,11 @@ + + + FireBlocks Navy + + + + + + + + \ No newline at end of file diff --git a/examples/abstracted-account.html b/examples/abstracted-account.html index 9dbee4762..cf6bde37a 100644 --- a/examples/abstracted-account.html +++ b/examples/abstracted-account.html @@ -412,8 +412,6 @@ // Send response back to DApp client.respond(response) - } else if (message.type === beacon.BeaconMessageType.ProofOfEventChallengeRecorded) { - console.log('Proof of event challenge has been recorded') } else if (message.type === beacon.BeaconMessageType.ProofOfEventChallengeRequest) { const isAccepted = window.confirm( 'Do you want to accept the Proof Of Event Challenge ?' diff --git a/examples/dapp.html b/examples/dapp.html index 473dee826..c0fe55f13 100644 --- a/examples/dapp.html +++ b/examples/dapp.html @@ -54,13 +54,18 @@



- + +





+ +



@@ -147,6 +152,7 @@ el.innerText = `'debug' ${name} ${method} ${args.join(', ')}` el.setAttribute('style', 'background-color: blue') document.getElementById('logger-output').appendChild(el) + console.debug('LOGGER', name, method, ...args) } log(name, method, ...args) { @@ -154,6 +160,7 @@ el.innerText = `'log' ${name} ${method} ${args.join(', ')}` el.setAttribute('style', 'background-color: green') document.getElementById('logger-output').appendChild(el) + console.log('LOGGER', name, method, ...args) } warn(name, method, ...args) { @@ -161,6 +168,7 @@ el.innerText = `'warn' ${name} ${method} ${args.join(', ')}` el.setAttribute('style', 'background-color: orange') document.getElementById('logger-output').appendChild(el) + console.warn('LOGGER', name, method, ...args) } error(name, method, ...args) { @@ -168,6 +176,7 @@ el.innerText = `'error' ${name} ${method} ${args.join(', ')}` el.setAttribute('style', 'background-color: red') document.getElementById('logger-output').appendChild(el) + console.error('LOGGER', name, method, ...args) } time(start, label) { @@ -175,6 +184,7 @@ el.innerText = `'time' ${start} ${label}` el.setAttribute('style', 'background-color: grey') document.getElementById('logger-output').appendChild(el) + console.time(label) } timeLog(method, ...args) { @@ -182,6 +192,7 @@ el.innerText = `'timeLog' ${method} ${args.join(', ')}` el.setAttribute('style', 'background-color: grey') document.getElementById('logger-output').appendChild(el) + console.timeLog(method, ...args) } } @@ -224,7 +235,8 @@ featuredWallets: ['kukai', 'metamask', 'airgap'], network: { type: beacon.NetworkType.GHOSTNET - } + }, + enableMetrics: true // matrixNodes: ['test.papers.tech', 'test2.papers.tech', 'matrix.papers.tech'] // matrixNodes: ['beacon-node-0.papers.tech:8448'] // matrixNodes: ['matrix.papers.tech'] @@ -238,6 +250,9 @@ document.getElementById('activeAccount').innerText = activeAccount.address document.getElementById('activeAccountNetwork').innerText = activeAccount.network.type document.getElementById('activeAccountTransport').innerText = activeAccount.origin.type + let btn = document.getElementById('disconnect') + btn.style.opacity = '1' + btn.disabled = false if ( activeAccount.walletType !== 'account_abstracted' && @@ -245,7 +260,11 @@ ) return - const btn = document.getElementById('requestProofOfEventChallenge') + btn = document.getElementById('requestProofOfEventChallenge') + btn.style.opacity = '1' + btn.disabled = false + + btn = document.getElementById('requestSimulatedProofOfEventChallenge') btn.style.opacity = '1' btn.disabled = false } else { @@ -374,14 +393,30 @@ dAppChallengeId: 'my-id', payload: JSON.stringify({ timestamp: Date.now() }) }) - .then(() => { - console.log('ProofOfEventChallenge approved') + .then((response) => { + console.log(`ProofOfEventChallenge ${response.isAccepted ? 'accepted' : 'refused'}`) + }) + .catch((error) => { + console.log('error during Proof Of Event Challenge', error) + }) + } - const promise = client.getProofOfEventChallenge('my-id') + // disconnect + const disconnect = () => { + client + .disconnect() + .then(() => console.log('disconnected.')) + .catch((err) => console.error(err.message)) - promise.then(() => { - alert('Proof of event verified') - }) + } + + const requestSimulatedProofOfEventChallenge = () => { + client + .requestSimulatedProofOfEventChallenge({ + payload: JSON.stringify({ timestamp: Date.now() }) + }) + .then((response) => { + console.log('SimulatedProofOfEventChallenge response', response) }) .catch((error) => { console.log('error during Proof Of Event Challenge', error) @@ -419,11 +454,23 @@ requestPermissionAndSign() }) + // Add event listener to the button + document.getElementById('disconnect').addEventListener('click', () => { + disconnect() + }) + // Add event listener to the button document.getElementById('requestProofOfEventChallenge').addEventListener('click', () => { requestProofOfEventChallenge() }) + // Add event listener to the button + document + .getElementById('requestSimulatedProofOfEventChallenge') + .addEventListener('click', () => { + requestSimulatedProofOfEventChallenge() + }) + // Add event listener to the button document.getElementById('reset').addEventListener('click', () => { if (document.getElementById('reset').attributes.getNamedItem('disabled') === 'true') { diff --git a/lerna.json b/lerna.json index 773339901..a10292583 100644 --- a/lerna.json +++ b/lerna.json @@ -1,4 +1,4 @@ { - "version": "4.1.2", + "version": "4.2.0", "$schema": "node_modules/lerna/schemas/lerna-schema.json" } diff --git a/package-lock.json b/package-lock.json index b97f507e7..2570b7385 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,9 +22,9 @@ "@airgap/beacon-ui": "file:packages/beacon-ui", "@airgap/beacon-utils": "file:packages/beacon-utils", "@airgap/beacon-wallet": "file:packages/beacon-wallet", - "@walletconnect/sign-client": "^2.10.6", - "@walletconnect/types": "^2.10.6", - "@walletconnect/utils": "^2.10.6", + "@walletconnect/sign-client": "2.11.2", + "@walletconnect/types": "2.11.2", + "@walletconnect/utils": "2.11.2", "@web3modal/standalone": "2.0.0", "stream-browserify": "^3.0.0" }, @@ -141,25 +141,25 @@ "link": true }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/cli": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.4.tgz", - "integrity": "sha512-j3luA9xGKCXVyCa5R7lJvOMM+Kc2JEnAEIgz2ggtjQ/j5YUVgfsg/WsG95bbsgq7YLHuiCOzMnoSasuY16qiCw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.1.tgz", + "integrity": "sha512-HbmrtxyFUr34LwAlV9jS+sSIjUp4FpdtIMGwgufY3AsxrIfsh/HxlMTywsONAZsU0RMYbZtbZFpUCrSGs7o0EA==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.25", "commander": "^4.0.1", "convert-source-map": "^2.0.0", "fs-readdir-recursive": "^1.1.0", @@ -183,43 +183,43 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.1.tgz", + "integrity": "sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", - "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", + "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.1", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.5", - "@babel/parser": "^7.23.5", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5", + "@babel/helpers": "^7.24.1", + "@babel/parser": "^7.24.1", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -235,14 +235,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", + "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", "dev": true, "dependencies": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -274,14 +274,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -290,9 +290,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", - "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz", + "integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -300,7 +300,7 @@ "@babel/helper-function-name": "^7.23.0", "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -330,9 +330,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", + "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -392,12 +392,12 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -435,9 +435,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -461,13 +461,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -514,9 +514,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -555,37 +555,38 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", - "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz", + "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -595,12 +596,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -610,14 +611,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/plugin-transform-optional-chaining": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -627,13 +628,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", + "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -718,12 +719,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -733,12 +734,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -772,12 +773,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -889,12 +890,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -920,12 +921,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -935,13 +936,13 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", + "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -953,13 +954,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { @@ -970,12 +971,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -985,12 +986,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz", + "integrity": "sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1000,13 +1001,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", + "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1016,13 +1017,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz", + "integrity": "sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1033,18 +1034,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", - "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", + "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -1056,13 +1056,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1072,12 +1072,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", + "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1087,13 +1087,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1103,12 +1103,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1118,12 +1118,12 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1134,13 +1134,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", "dev": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1150,12 +1150,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1166,12 +1166,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1181,14 +1182,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1198,12 +1199,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1214,12 +1215,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1229,12 +1230,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1245,12 +1246,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1260,13 +1261,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1276,13 +1277,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-simple-access": "^7.22.5" }, "engines": { @@ -1293,14 +1294,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { @@ -1311,13 +1312,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1343,12 +1344,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1358,12 +1359,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1374,12 +1375,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1390,16 +1391,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", + "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1409,13 +1409,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1425,12 +1425,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1441,12 +1441,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", + "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -1458,12 +1458,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", + "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1473,13 +1473,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1489,14 +1489,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", + "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1507,12 +1507,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1522,12 +1522,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1538,12 +1538,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1553,12 +1553,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1568,12 +1568,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { @@ -1584,12 +1584,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1599,12 +1599,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1614,12 +1614,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", + "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1629,15 +1629,15 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz", - "integrity": "sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz", + "integrity": "sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-typescript": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1647,12 +1647,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1662,13 +1662,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1678,13 +1678,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1694,13 +1694,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1710,26 +1710,26 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz", - "integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.3.tgz", + "integrity": "sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/compat-data": "^7.24.1", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.1", + "@babel/plugin-syntax-import-attributes": "^7.24.1", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1741,58 +1741,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.4", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.5", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.3", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.1", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.24.1", + "@babel/plugin-transform-block-scoped-functions": "^7.24.1", + "@babel/plugin-transform-block-scoping": "^7.24.1", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-class-static-block": "^7.24.1", + "@babel/plugin-transform-classes": "^7.24.1", + "@babel/plugin-transform-computed-properties": "^7.24.1", + "@babel/plugin-transform-destructuring": "^7.24.1", + "@babel/plugin-transform-dotall-regex": "^7.24.1", + "@babel/plugin-transform-duplicate-keys": "^7.24.1", + "@babel/plugin-transform-dynamic-import": "^7.24.1", + "@babel/plugin-transform-exponentiation-operator": "^7.24.1", + "@babel/plugin-transform-export-namespace-from": "^7.24.1", + "@babel/plugin-transform-for-of": "^7.24.1", + "@babel/plugin-transform-function-name": "^7.24.1", + "@babel/plugin-transform-json-strings": "^7.24.1", + "@babel/plugin-transform-literals": "^7.24.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-member-expression-literals": "^7.24.1", + "@babel/plugin-transform-modules-amd": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-modules-systemjs": "^7.24.1", + "@babel/plugin-transform-modules-umd": "^7.24.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.23.4", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-new-target": "^7.24.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.1", + "@babel/plugin-transform-object-super": "^7.24.1", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.1", + "@babel/plugin-transform-parameters": "^7.24.1", + "@babel/plugin-transform-private-methods": "^7.24.1", + "@babel/plugin-transform-private-property-in-object": "^7.24.1", + "@babel/plugin-transform-property-literals": "^7.24.1", + "@babel/plugin-transform-regenerator": "^7.24.1", + "@babel/plugin-transform-reserved-words": "^7.24.1", + "@babel/plugin-transform-shorthand-properties": "^7.24.1", + "@babel/plugin-transform-spread": "^7.24.1", + "@babel/plugin-transform-sticky-regex": "^7.24.1", + "@babel/plugin-transform-template-literals": "^7.24.1", + "@babel/plugin-transform-typeof-symbol": "^7.24.1", + "@babel/plugin-transform-unicode-escapes": "^7.24.1", + "@babel/plugin-transform-unicode-property-regex": "^7.24.1", + "@babel/plugin-transform-unicode-regex": "^7.24.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -1818,16 +1818,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", - "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", + "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-typescript": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1843,9 +1843,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", - "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", + "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -1855,34 +1855,34 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1890,9 +1890,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.23.4", @@ -2334,9 +2334,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2376,13 +2376,13 @@ "dev": true }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -2403,9 +2403,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "node_modules/@hutson/parse-repository-url": { @@ -2417,11 +2417,6 @@ "node": ">=6.9.0" } }, - "node_modules/@ioredis/commands": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", - "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2617,6 +2612,12 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -3189,45 +3190,45 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "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.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" } }, "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.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -3237,9 +3238,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -3554,6 +3555,26 @@ "node": ">=8" } }, + "node_modules/@lerna/create/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/@lerna/create/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -3582,9 +3603,9 @@ } }, "node_modules/@lerna/create/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -3617,6 +3638,28 @@ "node": ">=8" } }, + "node_modules/@lerna/create/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/@lerna/create/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/@lerna/create/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/@lerna/create/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -3624,9 +3667,9 @@ "dev": true }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.2.tgz", - "integrity": "sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", + "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" }, "node_modules/@lit/reactive-element": { "version": "1.6.3", @@ -3637,13 +3680,13 @@ } }, "node_modules/@motionone/animation": { - "version": "10.16.3", - "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.16.3.tgz", - "integrity": "sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==", + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.17.0.tgz", + "integrity": "sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==", "dependencies": { - "@motionone/easing": "^10.16.3", - "@motionone/types": "^10.16.3", - "@motionone/utils": "^10.16.3", + "@motionone/easing": "^10.17.0", + "@motionone/types": "^10.17.0", + "@motionone/utils": "^10.17.0", "tslib": "^2.3.1" } }, @@ -3653,14 +3696,14 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@motionone/dom": { - "version": "10.16.4", - "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.16.4.tgz", - "integrity": "sha512-HPHlVo/030qpRj9R8fgY50KTN4Ko30moWRTA3L3imrsRBmob93cTYmodln49HYFbQm01lFF7X523OkKY0DX6UA==", - "dependencies": { - "@motionone/animation": "^10.16.3", - "@motionone/generators": "^10.16.4", - "@motionone/types": "^10.16.3", - "@motionone/utils": "^10.16.3", + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.17.0.tgz", + "integrity": "sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==", + "dependencies": { + "@motionone/animation": "^10.17.0", + "@motionone/generators": "^10.17.0", + "@motionone/types": "^10.17.0", + "@motionone/utils": "^10.17.0", "hey-listen": "^1.0.8", "tslib": "^2.3.1" } @@ -3671,11 +3714,11 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@motionone/easing": { - "version": "10.16.3", - "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.16.3.tgz", - "integrity": "sha512-HWTMZbTmZojzwEuKT/xCdvoMPXjYSyQvuVM6jmM0yoGU6BWzsmYMeB4bn38UFf618fJCNtP9XeC/zxtKWfbr0w==", + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.17.0.tgz", + "integrity": "sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==", "dependencies": { - "@motionone/utils": "^10.16.3", + "@motionone/utils": "^10.17.0", "tslib": "^2.3.1" } }, @@ -3685,12 +3728,12 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@motionone/generators": { - "version": "10.16.4", - "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.16.4.tgz", - "integrity": "sha512-geFZ3w0Rm0ZXXpctWsSf3REGywmLLujEjxPYpBR0j+ymYwof0xbV6S5kGqqsDKgyWKVWpUInqQYvQfL6fRbXeg==", + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.17.0.tgz", + "integrity": "sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==", "dependencies": { - "@motionone/types": "^10.16.3", - "@motionone/utils": "^10.16.3", + "@motionone/types": "^10.17.0", + "@motionone/utils": "^10.17.0", "tslib": "^2.3.1" } }, @@ -3714,16 +3757,16 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@motionone/types": { - "version": "10.16.3", - "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.16.3.tgz", - "integrity": "sha512-W4jkEGFifDq73DlaZs3HUfamV2t1wM35zN/zX7Q79LfZ2sc6C0R1baUHZmqc/K5F3vSw3PavgQ6HyHLd/MXcWg==" + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.0.tgz", + "integrity": "sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==" }, "node_modules/@motionone/utils": { - "version": "10.16.3", - "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.16.3.tgz", - "integrity": "sha512-WNWDksJIxQkaI9p9Z9z0+K27xdqISGNFy1SsWVGaiedTHq0iaT6iZujby8fT/ZnZxj1EOaxJtSfUPCFNU5CRoA==", + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.17.0.tgz", + "integrity": "sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==", "dependencies": { - "@motionone/types": "^10.16.3", + "@motionone/types": "^10.17.0", "hey-listen": "^1.0.8", "tslib": "^2.3.1" } @@ -3737,6 +3780,7 @@ "version": "10.16.4", "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.4.tgz", "integrity": "sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==", + "deprecated": "Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion", "dependencies": { "@motionone/dom": "^10.16.4", "tslib": "^2.3.1" @@ -3815,9 +3859,9 @@ } }, "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -3864,9 +3908,9 @@ } }, "node_modules/@npmcli/git/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4470,9 +4514,9 @@ } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", - "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", + "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", "cpu": [ "arm64" ], @@ -4489,9 +4533,9 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", - "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", + "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", "cpu": [ "arm64" ], @@ -4508,9 +4552,9 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", - "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", + "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", "cpu": [ "x64" ], @@ -4527,9 +4571,9 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", - "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", + "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", "cpu": [ "x64" ], @@ -4546,9 +4590,9 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", - "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", + "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", "cpu": [ "arm" ], @@ -4565,9 +4609,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", - "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", + "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", "cpu": [ "arm64" ], @@ -4584,9 +4628,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", - "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", + "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", "cpu": [ "arm64" ], @@ -4603,9 +4647,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", - "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", + "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", "cpu": [ "x64" ], @@ -4622,9 +4666,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", - "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", + "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", "cpu": [ "x64" ], @@ -4641,9 +4685,9 @@ } }, "node_modules/@parcel/watcher-wasm": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.3.0.tgz", - "integrity": "sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.1.tgz", + "integrity": "sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==", "bundleDependencies": [ "napi-wasm" ], @@ -4666,9 +4710,9 @@ "license": "MIT" }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", - "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", + "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", "cpu": [ "arm64" ], @@ -4685,9 +4729,9 @@ } }, "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", - "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", + "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", "cpu": [ "ia32" ], @@ -4704,9 +4748,9 @@ } }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", - "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", + "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", "cpu": [ "x64" ], @@ -5192,9 +5236,9 @@ } }, "node_modules/@sigstore/sign/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -5301,9 +5345,9 @@ "dev": true }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -5508,9 +5552,9 @@ } }, "node_modules/@stablelib/utf8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/utf8/-/utf8-1.0.1.tgz", - "integrity": "sha512-FrYD1xadah/TtAP6VJ04lDD5h9rdDj/d8wH/jMYTtHqZBv9z2btdvEU8vTxdjdkFmo1b/BH+t3R1wi/mYhCCNg==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/utf8/-/utf8-1.0.2.tgz", + "integrity": "sha512-sDL1aB2U8FIpj7SjQJMxbOFIFkKvDKQGPHSrYejHZhtLNSK3qHe6ZIfa0woWkOiaJsdYslFzrc0VWXJZHmSIQQ==" }, "node_modules/@stablelib/wipe": { "version": "1.0.1", @@ -5574,9 +5618,9 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.10.tgz", + "integrity": "sha512-PiaIWIoPvO6qm6t114ropMCagj6YAF24j9OkCA2mJDXFnlionEwhsBCJ8yek4aib575BI3OkART/90WsgHgLWw==", "dev": true }, "node_modules/@tsconfig/node12": { @@ -5657,9 +5701,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -5676,9 +5720,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -5694,9 +5738,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", - "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.14.tgz", + "integrity": "sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==", "dev": true }, "node_modules/@types/chai-as-promised": { @@ -5718,9 +5762,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.44.8", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", - "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", + "version": "8.56.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz", + "integrity": "sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==", "dev": true, "dependencies": { "@types/estree": "*", @@ -5744,17 +5788,17 @@ "dev": true }, "node_modules/@types/filesystem": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.35.tgz", - "integrity": "sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.36.tgz", + "integrity": "sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==", "dependencies": { "@types/filewriter": "*" } }, "node_modules/@types/filewriter": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.32.tgz", - "integrity": "sha512-Kpi2GXQyYJdjL8mFclL1eDgihn1SIzorMZjD94kdPZh9E4VxGOeyjPxi5LpsM4Zku7P0reqegZTt2GxhmA9VBg==" + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.33.tgz", + "integrity": "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==" }, "node_modules/@types/har-format": { "version": "1.2.15", @@ -5786,9 +5830,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.10", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", - "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -5850,9 +5894,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@types/sinon": { @@ -5975,9 +6019,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6120,9 +6164,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6178,9 +6222,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6216,9 +6260,9 @@ } }, "node_modules/@walletconnect/core": { - "version": "2.10.6", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.10.6.tgz", - "integrity": "sha512-Z4vh4ZdfcoQjgPEOxeuF9HUZCVLtV3MgRbS/awLIj/omDrFnOwlBhxi5Syr4Y8muVGC0ocRetQYHae0/gX5crQ==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.11.2.tgz", + "integrity": "sha512-bB4SiXX8hX3/hyBfVPC5gwZCXCl+OPj+/EDVM71iAO3TDsh78KPbrVAbDnnsbHzZVHlsMohtXX3j5XVsheN3+g==", "dependencies": { "@walletconnect/heartbeat": "1.2.1", "@walletconnect/jsonrpc-provider": "1.0.13", @@ -6231,9 +6275,10 @@ "@walletconnect/relay-auth": "^1.0.4", "@walletconnect/safe-json": "^1.0.2", "@walletconnect/time": "^1.0.2", - "@walletconnect/types": "2.10.6", - "@walletconnect/utils": "2.10.6", + "@walletconnect/types": "2.11.2", + "@walletconnect/utils": "2.11.2", "events": "^3.3.0", + "isomorphic-unfetch": "3.1.0", "lodash.isequal": "4.5.0", "uint8arrays": "^3.1.0" } @@ -6363,18 +6408,18 @@ } }, "node_modules/@walletconnect/sign-client": { - "version": "2.10.6", - "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.10.6.tgz", - "integrity": "sha512-EvUWjaZBQu2yKnH5/5F2qzbuiIuUN9ZgrNKgvXkw5z1Dq5RJCks0S9/MFlKH/ZSGqXnLl7uAzBXtoX4sMgbCMA==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.11.2.tgz", + "integrity": "sha512-MfBcuSz2GmMH+P7MrCP46mVE5qhP0ZyWA0FyIH6/WuxQ6G+MgKsGfaITqakpRPsykWOJq8tXMs3XvUPDU413OQ==", "dependencies": { - "@walletconnect/core": "2.10.6", + "@walletconnect/core": "2.11.2", "@walletconnect/events": "^1.0.1", "@walletconnect/heartbeat": "1.2.1", "@walletconnect/jsonrpc-utils": "1.0.8", "@walletconnect/logger": "^2.0.1", "@walletconnect/time": "^1.0.2", - "@walletconnect/types": "2.10.6", - "@walletconnect/utils": "2.10.6", + "@walletconnect/types": "2.11.2", + "@walletconnect/utils": "2.11.2", "events": "^3.3.0" } }, @@ -6387,9 +6432,9 @@ } }, "node_modules/@walletconnect/types": { - "version": "2.10.6", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.10.6.tgz", - "integrity": "sha512-WgHfiTG1yakmxheaBRiXhUdEmgxwrvsAdOIWaMf/spvrzVKYh6sHI3oyEEky5qj5jjiMiyQBeB57QamzCotbcQ==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.11.2.tgz", + "integrity": "sha512-p632MFB+lJbip2cvtXPBQslpUdiw1sDtQ5y855bOlAGquay+6fZ4h1DcDePeKQDQM3P77ax2a9aNPZxV6y/h1Q==", "dependencies": { "@walletconnect/events": "^1.0.1", "@walletconnect/heartbeat": "1.2.1", @@ -6400,9 +6445,9 @@ } }, "node_modules/@walletconnect/utils": { - "version": "2.10.6", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.10.6.tgz", - "integrity": "sha512-oRsWWhN2+hi3aiDXrQEOfysz6FHQJGXLsNQPVt+WIBJplO6Szmdau9dbleD88u1iiT4GKPqE0R9FOYvvPm1H/w==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.11.2.tgz", + "integrity": "sha512-LyfdmrnZY6dWqlF4eDrx5jpUwsB2bEPjoqR5Z6rXPiHJKUOdJt7az+mNOn5KTSOlRpd1DmozrBrWr+G9fFLYVw==", "dependencies": { "@stablelib/chacha20poly1305": "1.0.1", "@stablelib/hkdf": "1.0.1", @@ -6412,7 +6457,7 @@ "@walletconnect/relay-api": "^1.0.9", "@walletconnect/safe-json": "^1.0.2", "@walletconnect/time": "^1.0.2", - "@walletconnect/types": "2.10.6", + "@walletconnect/types": "2.11.2", "@walletconnect/window-getters": "^1.0.1", "@walletconnect/window-metadata": "^1.0.1", "detect-browser": "5.3.0", @@ -6468,9 +6513,9 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", @@ -6490,9 +6535,9 @@ "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { @@ -6513,15 +6558,15 @@ "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { @@ -6549,28 +6594,28 @@ "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -6578,24 +6623,24 @@ } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -6604,12 +6649,12 @@ } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -6710,6 +6755,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@yarnpkg/parsers/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/@yarnpkg/parsers/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -6742,9 +6793,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "bin": { "acorn": "bin/acorn" }, @@ -6956,25 +7007,6 @@ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -7021,13 +7053,16 @@ "dev": true }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7049,15 +7084,16 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -7077,16 +7113,17 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -7132,17 +7169,18 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -7162,15 +7200,14 @@ } }, "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "minimalistic-assert": "^1.0.0" } }, "node_modules/asn1.js/node_modules/bn.js": { @@ -7251,10 +7288,13 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -7263,11 +7303,11 @@ } }, "node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -7286,15 +7326,15 @@ } }, "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", "dev": true }, "node_modules/babel-plugin-jsx-dom-expressions": { - "version": "0.37.9", - "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.37.9.tgz", - "integrity": "sha512-6w+zs2i14fVanj4e1hXCU5cp+x0U0LJ5jScknpMZZUteHhwFRGJflHMVJ+xAcW7ku41FYjr7DgtK9mnc2SXlJg==", + "version": "0.37.19", + "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.37.19.tgz", + "integrity": "sha512-nef2eLpWBgFggwrYwN6O3dNKn3RnlX6n4DIamNEAeHwp03kVQUaKUiLaEPnHPJHwxie1KwPelyIY9QikU03vUA==", "dev": true, "dependencies": { "@babel/helper-module-imports": "7.18.6", @@ -7320,13 +7360,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", + "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.6.1", "semver": "^6.3.1" }, "peerDependencies": { @@ -7334,37 +7374,37 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", + "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.6.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-preset-solid": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.8.6.tgz", - "integrity": "sha512-Ened42CHjU4EFkvNeS042/3Pm21yvMWn8p4G4ddzQTlKaMwSGGD1VciA/e7EshBVHJCcBj9vHiUd/r3A4qLPZA==", + "version": "1.8.16", + "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.8.16.tgz", + "integrity": "sha512-b4HFg/xaKM+H3Tu5iUlZ/43TJOZnhi85xrm3JrXDQ0s4cmtmU37bXXYzb2m55G4QKiFjxLAjvb7sUorPrAMs5w==", "dev": true, "dependencies": { - "babel-plugin-jsx-dom-expressions": "^0.37.9" + "babel-plugin-jsx-dom-expressions": "^0.37.19" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -7376,6 +7416,13 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/bare-events": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", + "dev": true, + "optional": true + }, "node_modules/base-x": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", @@ -7404,9 +7451,9 @@ ] }, "node_modules/basic-ftp": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", - "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -7419,11 +7466,14 @@ "dev": true }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bl": { @@ -7662,37 +7712,24 @@ } }, "node_modules/browserify-sign": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", "dev": true, "dependencies": { "bn.js": "^5.2.1", "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", + "elliptic": "^6.5.5", + "hash-base": "~3.0", "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", "safe-buffer": "^5.2.1" }, "engines": { - "node": ">= 4" - } - }, - "node_modules/browserify-sign/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==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "node": ">= 0.12" } }, "node_modules/browserify-zlib": { @@ -7715,9 +7752,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -7734,8 +7771,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -7854,9 +7891,9 @@ } }, "node_modules/builtins/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -8010,14 +8047,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8076,9 +8118,9 @@ "dev": true }, "node_modules/caniuse-lite": { - "version": "1.0.30001566", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", - "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==", + "version": "1.0.30001600", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", + "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==", "dev": true, "funding": [ { @@ -8158,15 +8200,9 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -8179,6 +8215,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -8238,9 +8277,9 @@ } }, "node_modules/citty": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.5.tgz", - "integrity": "sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", "dependencies": { "consola": "^3.2.3" } @@ -8288,43 +8327,159 @@ } }, "node_modules/clipboardy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", - "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", + "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==", "dependencies": { - "arch": "^2.2.0", - "execa": "^5.1.1", - "is-wsl": "^2.2.0" + "execa": "^8.0.1", + "is-wsl": "^3.1.0", + "is64bit": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/clipboardy/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=16.17" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/clipboardy/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/clipboardy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/clipboardy/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -8424,14 +8579,6 @@ "node": ">=0.10.0" } }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cmd-shim": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", @@ -8686,9 +8833,9 @@ } }, "node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -8807,12 +8954,12 @@ "hasInstallScript": true }, "node_modules/core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", + "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", "dev": true, "dependencies": { - "browserslist": "^4.22.1" + "browserslist": "^4.23.0" }, "funding": { "type": "opencollective", @@ -8908,48 +9055,6 @@ "node-fetch": "^2.6.12" } }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/cross-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/cross-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/cross-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -8963,6 +9068,19 @@ "node": ">= 8" } }, + "node_modules/crossws": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.2.4.tgz", + "integrity": "sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==", + "peerDependencies": { + "uWebSockets.js": "*" + }, + "peerDependenciesMeta": { + "uWebSockets.js": { + "optional": true + } + } + }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -9160,9 +9278,9 @@ } }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/dargs": { "version": "7.0.0", @@ -9180,9 +9298,9 @@ "dev": true }, "node_modules/data-uri-to-buffer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz", - "integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, "engines": { "node": ">= 14" @@ -9202,6 +9320,57 @@ "node": ">=14" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -9215,6 +9384,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -9335,17 +9505,20 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-lazy-prop": { @@ -9384,9 +9557,9 @@ } }, "node_modules/defu": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz", - "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==" + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" }, "node_modules/degenerator": { "version": "5.0.1", @@ -9416,14 +9589,6 @@ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, - "node_modules/denque": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", - "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "engines": { - "node": ">=0.10" - } - }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -9456,9 +9621,9 @@ } }, "node_modules/destr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", - "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", + "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==" }, "node_modules/detect-browser": { "version": "5.3.0", @@ -9678,9 +9843,9 @@ } }, "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.2.tgz", + "integrity": "sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==", "dev": true, "engines": { "node": ">=12" @@ -9714,14 +9879,14 @@ } }, "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" + "stream-shift": "^1.0.2" } }, "node_modules/duplexify/node_modules/readable-stream": { @@ -9759,15 +9924,15 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.601", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.601.tgz", - "integrity": "sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA==", + "version": "1.4.715", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz", + "integrity": "sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==", "dev": true }, "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", + "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", "dev": true, "dependencies": { "bn.js": "^4.11.9", @@ -9799,7 +9964,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -9809,7 +9973,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -9827,9 +9990,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -9900,50 +10063,57 @@ } }, "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz", + "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -9952,21 +10122,54 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", - "dev": true - }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.2.tgz", + "integrity": "sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==", + "dev": true + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -10362,9 +10565,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -10497,9 +10700,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -10697,9 +10900,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -10999,9 +11202,9 @@ "dev": true }, "node_modules/fast-redact": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", - "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", "engines": { "node": ">=6" } @@ -11022,9 +11225,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -11202,15 +11405,15 @@ } }, "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.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "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.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -11441,16 +11644,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11495,14 +11702,15 @@ } }, "node_modules/get-port-please": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.1.tgz", - "integrity": "sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz", + "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==" }, "node_modules/get-stream": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true, "engines": { "node": ">=10" }, @@ -11511,13 +11719,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -11527,52 +11736,20 @@ } }, "node_modules/get-uri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz", - "integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", "dev": true, "dependencies": { "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.0", + "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4", - "fs-extra": "^8.1.0" + "fs-extra": "^11.2.0" }, "engines": { "node": ">= 14" } }, - "node_modules/get-uri/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/get-uri/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/get-uri/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/git-raw-commits": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz", @@ -11641,9 +11818,9 @@ } }, "node_modules/git-semver-tags/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -11814,18 +11991,20 @@ "dev": true }, "node_modules/h3": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.9.0.tgz", - "integrity": "sha512-+F3ZqrNV/CFXXfZ2lXBINHi+rM4Xw3CDC5z2CDK3NMPocjonKipGLLDSkrqY9DOrioZNPTIdDMWfQKm//3X2DA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.11.1.tgz", + "integrity": "sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==", "dependencies": { "cookie-es": "^1.0.0", - "defu": "^6.1.3", - "destr": "^2.0.2", + "crossws": "^0.2.2", + "defu": "^6.1.4", + "destr": "^2.0.3", "iron-webcrypto": "^1.0.0", + "ohash": "^1.1.3", "radix3": "^1.1.0", - "ufo": "^1.3.2", + "ufo": "^1.4.0", "uncrypto": "^0.1.3", - "unenv": "^1.7.4" + "unenv": "^1.9.0" } }, "node_modules/handlebars": { @@ -11919,21 +12098,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "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==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { "node": ">= 0.4" @@ -11955,12 +12134,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -11976,31 +12155,17 @@ "dev": true }, "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" }, "engines": { "node": ">=4" } }, - "node_modules/hash-base/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==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -12037,9 +12202,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { "function-bind": "^1.1.2" @@ -12188,6 +12353,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "engines": { "node": ">=10.17.0" } @@ -12271,9 +12437,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -12480,9 +12646,9 @@ } }, "node_modules/init-package-json/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -12513,9 +12679,9 @@ "dev": true }, "node_modules/inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.3.tgz", + "integrity": "sha512-1aVsPEsJWMJq/pdMU61CDlm1URcW702MTB4w9/zUjMus6H/Py8o7g68Pr9D4I6QluWGt/KdmswuRhaA05xVR1w==", "dev": true, "dependencies": { "source-map": "~0.5.3" @@ -12645,12 +12811,12 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", + "es-errors": "^1.3.0", "hasown": "^2.0.0", "side-channel": "^1.0.4" }, @@ -12667,39 +12833,23 @@ "node": ">=10.13.0" } }, - "node_modules/ioredis": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz", - "integrity": "sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==", + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, "dependencies": { - "@ioredis/commands": "^1.1.1", - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.4", - "denque": "^2.1.0", - "lodash.defaults": "^4.2.0", - "lodash.isarguments": "^3.1.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": ">=12.22.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ioredis" + "node": ">= 12" } }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, "node_modules/iron-webcrypto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz", - "integrity": "sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.1.0.tgz", + "integrity": "sha512-5vgYsCakNlaQub1orZK5QmNYhwYtcllTkZBp5sfIaCqY93Cf6l+v2rtE+E4TMbcfjxDMCdrO8wmp7+ZvhDECLA==", "funding": { "url": "https://github.com/sponsors/brc-dd" } @@ -12721,14 +12871,16 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12865,6 +13017,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -12884,6 +13051,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, "bin": { "is-docker": "cli.js" }, @@ -12942,6 +13110,37 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -12964,9 +13163,9 @@ "dev": true }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -13066,12 +13265,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13090,6 +13292,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, "engines": { "node": ">=8" } @@ -13137,12 +13340,12 @@ } }, "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.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -13206,6 +13409,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, "dependencies": { "is-docker": "^2.0.0" }, @@ -13213,6 +13417,20 @@ "node": ">=8" } }, + "node_modules/is64bit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is64bit/-/is64bit-2.0.0.tgz", + "integrity": "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==", + "dependencies": { + "system-architecture": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -13233,6 +13451,15 @@ "node": ">=0.10.0" } }, + "node_modules/isomorphic-unfetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", + "dependencies": { + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" + } + }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -13358,9 +13585,9 @@ } }, "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -13414,9 +13641,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -13985,6 +14212,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/jsdom": { "version": "22.1.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", @@ -14037,9 +14270,9 @@ } }, "node_modules/jsdom/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.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -14160,9 +14393,9 @@ } }, "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true }, "node_modules/keyv": { @@ -14435,6 +14668,26 @@ "node": ">=8" } }, + "node_modules/lerna/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/lerna/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -14463,9 +14716,9 @@ } }, "node_modules/lerna/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -14498,6 +14751,28 @@ "node": ">=8" } }, + "node_modules/lerna/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/lerna/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/lerna/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/lerna/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -14567,9 +14842,9 @@ } }, "node_modules/libnpmaccess/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -14679,9 +14954,9 @@ } }, "node_modules/libnpmpublish/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -14742,26 +15017,27 @@ } }, "node_modules/listhen": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.5.5.tgz", - "integrity": "sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA==", - "dependencies": { - "@parcel/watcher": "^2.3.0", - "@parcel/watcher-wasm": "2.3.0", - "citty": "^0.1.4", - "clipboardy": "^3.0.0", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.7.2.tgz", + "integrity": "sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==", + "dependencies": { + "@parcel/watcher": "^2.4.1", + "@parcel/watcher-wasm": "^2.4.1", + "citty": "^0.1.6", + "clipboardy": "^4.0.0", "consola": "^3.2.3", - "defu": "^6.1.2", - "get-port-please": "^3.1.1", - "h3": "^1.8.1", + "crossws": "^0.2.0", + "defu": "^6.1.4", + "get-port-please": "^3.1.2", + "h3": "^1.10.2", "http-shutdown": "^1.2.2", - "jiti": "^1.20.0", - "mlly": "^1.4.2", + "jiti": "^1.21.0", + "mlly": "^1.6.1", "node-forge": "^1.3.1", - "pathe": "^1.1.1", - "std-env": "^3.4.3", - "ufo": "^1.3.0", - "untun": "^0.1.2", + "pathe": "^1.1.2", + "std-env": "^3.7.0", + "ufo": "^1.4.0", + "untun": "^0.1.3", "uqr": "^0.1.2" }, "bin": { @@ -14770,10 +15046,9 @@ } }, "node_modules/listhen/node_modules/@parcel/watcher": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", - "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", - "hasInstallScript": true, + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", @@ -14788,24 +15063,27 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.3.0", - "@parcel/watcher-darwin-arm64": "2.3.0", - "@parcel/watcher-darwin-x64": "2.3.0", - "@parcel/watcher-freebsd-x64": "2.3.0", - "@parcel/watcher-linux-arm-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-musl": "2.3.0", - "@parcel/watcher-linux-x64-glibc": "2.3.0", - "@parcel/watcher-linux-x64-musl": "2.3.0", - "@parcel/watcher-win32-arm64": "2.3.0", - "@parcel/watcher-win32-ia32": "2.3.0", - "@parcel/watcher-win32-x64": "2.3.0" + "@parcel/watcher-android-arm64": "2.4.1", + "@parcel/watcher-darwin-arm64": "2.4.1", + "@parcel/watcher-darwin-x64": "2.4.1", + "@parcel/watcher-freebsd-x64": "2.4.1", + "@parcel/watcher-linux-arm-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-musl": "2.4.1", + "@parcel/watcher-linux-x64-glibc": "2.4.1", + "@parcel/watcher-linux-x64-musl": "2.4.1", + "@parcel/watcher-win32-arm64": "2.4.1", + "@parcel/watcher-win32-ia32": "2.4.1", + "@parcel/watcher-win32-x64": "2.4.1" } }, "node_modules/listhen/node_modules/node-addon-api": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", - "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==" + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", + "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", + "engines": { + "node": "^16 || ^18 || >= 20" + } }, "node_modules/lit": { "version": "2.6.1", @@ -14926,11 +15204,6 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", @@ -14943,11 +15216,6 @@ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "dev": true }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", @@ -15100,9 +15368,9 @@ "dev": true }, "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -15485,6 +15753,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "engines": { "node": ">=6" } @@ -15700,14 +15969,14 @@ "dev": true }, "node_modules/mlly": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", - "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", + "integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==", "dependencies": { - "acorn": "^8.10.0", - "pathe": "^1.1.1", + "acorn": "^8.11.3", + "pathe": "^1.1.2", "pkg-types": "^1.0.3", - "ufo": "^1.3.0" + "ufo": "^1.3.2" } }, "node_modules/mocha": { @@ -15759,6 +16028,33 @@ "node": ">=6" } }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/mocha/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -15916,7 +16212,8 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/multiformats": { "version": "9.9.0", @@ -16000,25 +16297,25 @@ } }, "node_modules/nise": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.5.tgz", - "integrity": "sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", "dev": true, "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" } }, - "node_modules/nise/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", "dev": true, "dependencies": { - "type-detect": "4.0.8" + "@sinonjs/commons": "^3.0.0" } }, "node_modules/node-addon-api": { @@ -16028,10 +16325,9 @@ "dev": true }, "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -16048,27 +16344,24 @@ } }, "node_modules/node-fetch-native": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.1.tgz", - "integrity": "sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==" + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==" }, "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -16108,9 +16401,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", - "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "dev": true, "bin": { "node-gyp-build": "bin.js", @@ -16131,9 +16424,9 @@ } }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -16218,9 +16511,9 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -16292,9 +16585,9 @@ } }, "node_modules/npm-install-checks/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -16363,9 +16656,9 @@ } }, "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -16511,9 +16804,9 @@ } }, "node_modules/npm-pick-manifest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -16786,9 +17079,9 @@ } }, "node_modules/npm-registry-fetch/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -16879,6 +17172,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "dependencies": { "path-key": "^3.0.0" }, @@ -17403,14 +17697,15 @@ } }, "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -17420,26 +17715,28 @@ } }, "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -17449,15 +17746,20 @@ } }, "node_modules/ofetch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz", - "integrity": "sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.4.tgz", + "integrity": "sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==", "dependencies": { - "destr": "^2.0.1", - "node-fetch-native": "^1.4.0", - "ufo": "^1.3.0" + "destr": "^2.0.3", + "node-fetch-native": "^1.6.3", + "ufo": "^1.5.3" } }, + "node_modules/ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==" + }, "node_modules/omggif": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", @@ -17481,6 +17783,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -17821,9 +18124,9 @@ } }, "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "dependencies": { "agent-base": "^7.1.0", @@ -17834,9 +18137,9 @@ } }, "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "dependencies": { "agent-base": "^7.0.2", @@ -17861,13 +18164,12 @@ } }, "node_modules/pac-resolver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", - "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, "dependencies": { "degenerator": "^5.0.0", - "ip": "^1.1.8", "netmask": "^2.0.2" }, "engines": { @@ -18118,9 +18420,9 @@ } }, "node_modules/pacote/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -18235,16 +18537,20 @@ } }, "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", "dev": true, "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/parse-bmfont-ascii": { @@ -18260,13 +18566,13 @@ "dev": true }, "node_modules/parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", + "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", "dev": true, "dependencies": { "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" + "xml2js": "^0.5.0" } }, "node_modules/parse-headers": { @@ -18402,9 +18708,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -18420,18 +18726,9 @@ } }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/path-to-regexp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", "dev": true }, "node_modules/path-type": { @@ -18459,9 +18756,9 @@ } }, "node_modules/pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" }, "node_modules/pathval": { "version": "1.1.1", @@ -18498,6 +18795,7 @@ "version": "2.9.3", "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true }, "node_modules/picocolors": { @@ -18675,10 +18973,19 @@ "node": ">=10.13.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "dev": true, "funding": [ { @@ -18697,7 +19004,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -18957,9 +19264,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.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", "dev": true, "dependencies": { "icss-utils": "^5.0.0", @@ -18974,9 +19281,9 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" @@ -19185,9 +19492,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.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -19644,9 +19951,9 @@ } }, "node_modules/proxy-agent/node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "dependencies": { "agent-base": "^7.1.0", @@ -19657,9 +19964,9 @@ } }, "node_modules/proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "dependencies": { "agent-base": "^7.0.2", @@ -19748,6 +20055,7 @@ "version": "21.2.1", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.2.1.tgz", "integrity": "sha512-bgY/lYBH3rR+m5EP1FxzY2MRMrau7Pyq+N5YlspA63sF+cBkUiTn5WZXwXm7mEHwkkOSVi5LiS74T5QIgrSklg==", + "deprecated": "< 21.8.0 is no longer supported", "dev": true, "hasInstallScript": true, "dependencies": { @@ -19955,12 +20263,12 @@ } }, "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.12.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.0.tgz", + "integrity": "sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -20042,9 +20350,9 @@ } }, "node_modules/radix3": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.0.tgz", - "integrity": "sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.1.tgz", + "integrity": "sha512-yUUd5VTiFtcMEx0qFUxGAv5gbMc1un4RvEO1JZdP7ZUl/RHygZK6PknIKntmQRZxnMY3ZXD2ISaw1ij8GYW1yg==" }, "node_modules/randombytes": { "version": "2.1.0", @@ -20285,9 +20593,9 @@ } }, "node_modules/read-package-json/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -20591,25 +20899,6 @@ "node": ">=8" } }, - "node_modules/redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "dependencies": { - "redis-errors": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -20629,9 +20918,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true }, "node_modules/regenerator-transform": { @@ -20644,14 +20933,15 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -20862,9 +21152,9 @@ } }, "node_modules/rollup-plugin-import-css": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/rollup-plugin-import-css/-/rollup-plugin-import-css-3.3.5.tgz", - "integrity": "sha512-wSfzveEzvUDlVevo70kmVD5Mk785UN55NG4C7VVnrmdE0qZ8apcVVFajyCPfFYSNxq5YkccOcrGUT2T/2HnEcQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-import-css/-/rollup-plugin-import-css-3.5.0.tgz", + "integrity": "sha512-JOVow6n00qt2C/NnsqPmIjFOfxIAudwWqC5SaC84CodMGiMFaP1gPAdgnJ8g8hcG+P85TCYp2kI98grYCEt5pg==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.4" @@ -21055,9 +21345,9 @@ } }, "node_modules/rollup-plugin-typescript2/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -21183,13 +21473,13 @@ "dev": true }, "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -21232,15 +21522,18 @@ "dev": true }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -21257,7 +21550,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "devOptional": true }, "node_modules/sax": { "version": "1.3.0", @@ -21314,11 +21607,22 @@ } }, "node_modules/seroval": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/seroval/-/seroval-0.15.1.tgz", - "integrity": "sha512-OPVtf0qmeC7RW+ScVX+7aOS+xoIM7pWcZ0jOWg2aTZigCydgRB04adfteBRbecZnnrO1WuGQ+C3tLeBBzX2zSQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.0.5.tgz", + "integrity": "sha512-TM+Z11tHHvQVQKeNlOUonOWnsNM+2IBwZ4vwoi4j3zKzIpc5IDw8WPwCfcc8F17wy6cBcJGbZbFOR0UCuTZHQA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/seroval-plugins": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.0.5.tgz", + "integrity": "sha512-8+pDC1vOedPXjKG7oz8o+iiHrtF2WswaMQJ7CKFpccvSYfrzmvKY9zOJWCg+881722wIHfwkdnRmiiDm9ym+zQ==", "engines": { "node": ">=10" + }, + "peerDependencies": { + "seroval": "^1.0" } }, "node_modules/set-blocking": { @@ -21327,29 +21631,32 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -21417,9 +21724,9 @@ } }, "node_modules/shiki": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.5.tgz", - "integrity": "sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", + "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", "dev": true, "dependencies": { "ansi-sequence-parser": "^1.1.0", @@ -21429,14 +21736,18 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -21445,7 +21756,8 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/sigstore": { "version": "1.9.0", @@ -21664,9 +21976,9 @@ } }, "node_modules/sigstore/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -21793,9 +22105,9 @@ } }, "node_modules/sinon/node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "engines": { "node": ">=0.3.1" @@ -21842,16 +22154,16 @@ } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", "dev": true, "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, @@ -21869,30 +22181,25 @@ "node": ">= 10" } }, - "node_modules/socks/node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - }, "node_modules/solid-js": { - "version": "1.8.7", - "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.7.tgz", - "integrity": "sha512-9dzrSVieh2zj3SnJ02II6xZkonR6c+j/91b7XZUNcC6xSaldlqjjGh98F1fk5cRJ8ZTkzqF5fPIWDxEOs6QZXA==", + "version": "1.8.16", + "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.16.tgz", + "integrity": "sha512-rja94MNU9flF3qQRLNsu60QHKBDKBkVE1DldJZPIfn2ypIn3NV2WpSbGTQIvsyGPBo+9E2IMjwqnqpbgfWuzeg==", "dependencies": { "csstype": "^3.1.0", - "seroval": "^0.15.1" + "seroval": "^1.0.4", + "seroval-plugins": "^1.0.3" } }, "node_modules/solid-refresh": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/solid-refresh/-/solid-refresh-0.5.3.tgz", - "integrity": "sha512-Otg5it5sjOdZbQZJnvo99TEBAr6J7PQ5AubZLNU6szZzg3RQQ5MX04oteBIIGDs0y2Qv8aXKm9e44V8z+UnFdw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/solid-refresh/-/solid-refresh-0.6.3.tgz", + "integrity": "sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==", "dev": true, "dependencies": { - "@babel/generator": "^7.21.1", - "@babel/helper-module-imports": "^7.18.6", - "@babel/types": "^7.21.2" + "@babel/generator": "^7.23.6", + "@babel/helper-module-imports": "^7.22.15", + "@babel/types": "^7.23.6" }, "peerDependencies": { "solid-js": "^1.3" @@ -21938,9 +22245,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -22008,9 +22315,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true }, "node_modules/spdx-expression-parse": { @@ -22024,9 +22331,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", "dev": true }, "node_modules/split": { @@ -22073,9 +22380,9 @@ } }, "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true }, "node_modules/ssri": { @@ -22118,11 +22425,6 @@ "node": ">=8" } }, - "node_modules/standard-as-callback": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", - "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" - }, "node_modules/static-server": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/static-server/-/static-server-2.2.1.tgz", @@ -22210,9 +22512,9 @@ } }, "node_modules/std-env": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.6.0.tgz", - "integrity": "sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==" + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" }, "node_modules/stream-browserify": { "version": "3.0.0", @@ -22273,9 +22575,9 @@ } }, "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" }, "node_modules/stream-splicer": { "version": "2.0.1", @@ -22288,13 +22590,16 @@ } }, "node_modules/streamx": { - "version": "2.15.5", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.5.tgz", - "integrity": "sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", "dev": true, "dependencies": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, "node_modules/strict-uri-encode": { @@ -22348,14 +22653,15 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -22365,28 +22671,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -22429,6 +22738,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, "engines": { "node": ">=6" } @@ -22574,6 +22884,17 @@ "acorn-node": "^1.2.0" } }, + "node_modules/system-architecture": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", + "integrity": "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -22612,9 +22933,9 @@ } }, "node_modules/tar-fs/node_modules/tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, "dependencies": { "b4a": "^1.6.4", @@ -22668,9 +22989,9 @@ } }, "node_modules/terser": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.25.0.tgz", - "integrity": "sha512-we0I9SIsfvNUMP77zC9HG+MylwYYsGFSBG8qm+13oud2Yh+O104y614FRbyjpxys16jZwot72Fpi827YvGzuqg==", + "version": "5.29.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz", + "integrity": "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -22686,16 +23007,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.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -22720,9 +23041,9 @@ } }, "node_modules/terser-webpack-plugin/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.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -22812,15 +23133,12 @@ "dev": true }, "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, "engines": { - "node": ">=8.17.0" + "node": ">=14.14" } }, "node_modules/to-fast-properties": { @@ -22907,12 +23225,12 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" @@ -22962,9 +23280,9 @@ } }, "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, "engines": { "node": ">=0.4.0" @@ -22980,9 +23298,9 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", @@ -23106,6 +23424,12 @@ "semver": "bin/semver" } }, + "node_modules/tslint/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", @@ -23336,9 +23660,9 @@ } }, "node_modules/tuf-js/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -23459,29 +23783,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -23491,16 +23816,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -23510,14 +23836,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -23606,9 +23938,9 @@ } }, "node_modules/ufo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", - "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==" + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==" }, "node_modules/uglify-js": { "version": "3.17.4", @@ -23710,14 +24042,14 @@ } }, "node_modules/unenv": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.8.0.tgz", - "integrity": "sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.9.0.tgz", + "integrity": "sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==", "dependencies": { "consola": "^3.2.3", "defu": "^6.1.3", "mime": "^3.0.0", - "node-fetch-native": "^1.4.1", + "node-fetch-native": "^1.6.1", "pathe": "^1.1.1" } }, @@ -23732,6 +24064,11 @@ "node": ">=10.0.0" } }, + "node_modules/unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -23812,35 +24149,35 @@ } }, "node_modules/unstorage": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.1.tgz", - "integrity": "sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.2.tgz", + "integrity": "sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==", "dependencies": { "anymatch": "^3.1.3", - "chokidar": "^3.5.3", - "destr": "^2.0.2", - "h3": "^1.8.2", - "ioredis": "^5.3.2", - "listhen": "^1.5.5", - "lru-cache": "^10.0.2", + "chokidar": "^3.6.0", + "destr": "^2.0.3", + "h3": "^1.11.1", + "listhen": "^1.7.2", + "lru-cache": "^10.2.0", "mri": "^1.2.0", - "node-fetch-native": "^1.4.1", + "node-fetch-native": "^1.6.2", "ofetch": "^1.3.3", - "ufo": "^1.3.1" + "ufo": "^1.4.0" }, "peerDependencies": { - "@azure/app-configuration": "^1.4.1", + "@azure/app-configuration": "^1.5.0", "@azure/cosmos": "^4.0.0", "@azure/data-tables": "^13.2.2", - "@azure/identity": "^3.3.2", - "@azure/keyvault-secrets": "^4.7.0", - "@azure/storage-blob": "^12.16.0", - "@capacitor/preferences": "^5.0.6", - "@netlify/blobs": "^6.2.0", - "@planetscale/database": "^1.11.0", - "@upstash/redis": "^1.23.4", - "@vercel/kv": "^0.2.3", - "idb-keyval": "^6.2.1" + "@azure/identity": "^4.0.1", + "@azure/keyvault-secrets": "^4.8.0", + "@azure/storage-blob": "^12.17.0", + "@capacitor/preferences": "^5.0.7", + "@netlify/blobs": "^6.5.0 || ^7.0.0", + "@planetscale/database": "^1.16.0", + "@upstash/redis": "^1.28.4", + "@vercel/kv": "^1.0.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.3.2" }, "peerDependenciesMeta": { "@azure/app-configuration": { @@ -23878,23 +24215,26 @@ }, "idb-keyval": { "optional": true + }, + "ioredis": { + "optional": true } } }, "node_modules/unstorage/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "engines": { "node": "14 || >=16.14" } }, "node_modules/untun": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/untun/-/untun-0.1.2.tgz", - "integrity": "sha512-wLAMWvxfqyTiBODA1lg3IXHQtjggYLeTK7RnSfqtOXixWJ3bAa2kK/HHmOOg19upteqO3muLvN6O/icbyQY33Q==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/untun/-/untun-0.1.3.tgz", + "integrity": "sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==", "dependencies": { - "citty": "^0.1.3", + "citty": "^0.1.5", "consola": "^3.2.3", "pathe": "^1.1.1" }, @@ -24094,9 +24434,9 @@ } }, "node_modules/vite": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", - "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", "dev": true, "dependencies": { "esbuild": "^0.18.10", @@ -24149,22 +24489,27 @@ } }, "node_modules/vite-plugin-solid": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/vite-plugin-solid/-/vite-plugin-solid-2.7.2.tgz", - "integrity": "sha512-GV2SMLAibOoXe76i02AsjAg7sbm/0lngBlERvJKVN67HOrJsHcWgkt0R6sfGLDJuFkv2aBe14Zm4vJcNME+7zw==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/vite-plugin-solid/-/vite-plugin-solid-2.10.2.tgz", + "integrity": "sha512-AOEtwMe2baBSXMXdo+BUwECC8IFHcKS6WQV/1NEd+Q7vHPap5fmIhLcAzr+DUJ04/KHx/1UBU0l1/GWP+rMAPQ==", "dev": true, "dependencies": { - "@babel/core": "^7.23.0", - "@babel/preset-typescript": "^7.23.0", - "@types/babel__core": "^7.20.2", - "babel-preset-solid": "^1.8.0", + "@babel/core": "^7.23.3", + "@types/babel__core": "^7.20.4", + "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", - "solid-refresh": "^0.5.3", - "vitefu": "^0.2.4" + "solid-refresh": "^0.6.3", + "vitefu": "^0.2.5" }, "peerDependencies": { + "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", - "vite": "^3.0.0 || ^4.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "@testing-library/jest-dom": { + "optional": true + } } }, "node_modules/vite/node_modules/@esbuild/android-arm": { @@ -24281,9 +24626,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -24312,34 +24657,34 @@ } }, "node_modules/webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.16.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -24539,16 +24884,16 @@ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -24816,9 +25161,9 @@ "dev": true }, "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "dev": true, "dependencies": { "sax": ">=0.6.0", @@ -25045,38 +25390,38 @@ }, "packages/beacon-blockchain-substrate": { "name": "@airgap/beacon-blockchain-substrate", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-ui": "4.1.2" + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-ui": "4.2.0" } }, "packages/beacon-blockchain-tezos": { "name": "@airgap/beacon-blockchain-tezos", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-ui": "4.1.2" + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-ui": "4.2.0" } }, "packages/beacon-blockchain-tezos-sapling": { "name": "@airgap/beacon-blockchain-tezos-sapling", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-ui": "4.1.2" + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-ui": "4.2.0" } }, "packages/beacon-core": { "name": "@airgap/beacon-core", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-utils": "4.1.2", + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-utils": "4.2.0", "@stablelib/ed25519": "^1.0.3", "@stablelib/nacl": "^1.0.4", "@stablelib/utf8": "^1.0.1", @@ -25086,67 +25431,67 @@ }, "packages/beacon-dapp": { "name": "@airgap/beacon-dapp", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-transport-matrix": "4.1.2", - "@airgap/beacon-transport-postmessage": "4.1.2", - "@airgap/beacon-transport-walletconnect": "4.1.2", - "@airgap/beacon-ui": "4.1.2" + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-transport-matrix": "4.2.0", + "@airgap/beacon-transport-postmessage": "4.2.0", + "@airgap/beacon-transport-walletconnect": "4.2.0", + "@airgap/beacon-ui": "4.2.0" } }, "packages/beacon-sdk": { "name": "@airgap/beacon-sdk", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { - "@airgap/beacon-blockchain-substrate": "4.1.2", - "@airgap/beacon-blockchain-tezos": "4.1.2", - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-dapp": "4.1.2", - "@airgap/beacon-transport-matrix": "4.1.2", - "@airgap/beacon-transport-postmessage": "4.1.2", - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-ui": "4.1.2", - "@airgap/beacon-utils": "4.1.2", - "@airgap/beacon-wallet": "4.1.2" + "@airgap/beacon-blockchain-substrate": "4.2.0", + "@airgap/beacon-blockchain-tezos": "4.2.0", + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-dapp": "4.2.0", + "@airgap/beacon-transport-matrix": "4.2.0", + "@airgap/beacon-transport-postmessage": "4.2.0", + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-ui": "4.2.0", + "@airgap/beacon-utils": "4.2.0", + "@airgap/beacon-wallet": "4.2.0" } }, "packages/beacon-transport-matrix": { "name": "@airgap/beacon-transport-matrix", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-utils": "4.1.2", + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-utils": "4.2.0", "axios": "^1.6.2" } }, "packages/beacon-transport-postmessage": { "name": "@airgap/beacon-transport-postmessage", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-utils": "4.1.2" + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-utils": "4.2.0" } }, "packages/beacon-transport-walletconnect": { "name": "@airgap/beacon-transport-walletconnect", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-utils": "4.1.2", - "@walletconnect/sign-client": "^2.10.6" + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-utils": "4.2.0", + "@walletconnect/sign-client": "2.11.2" } }, "packages/beacon-types": { "name": "@airgap/beacon-types", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { "@types/chrome": "0.0.246" @@ -25154,13 +25499,14 @@ }, "packages/beacon-ui": { "name": "@airgap/beacon-ui", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-transport-postmessage": "4.1.2", - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-utils": "4.1.2", + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-transport-postmessage": "4.2.0", + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-utils": "4.2.0", + "@walletconnect/utils": "2.11.2", "qrcode-svg": "^1.1.0", "solid-js": "^1.7.11" }, @@ -25182,7 +25528,7 @@ }, "packages/beacon-utils": { "name": "@airgap/beacon-utils", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { "@stablelib/ed25519": "^1.0.3", @@ -25194,12 +25540,12 @@ }, "packages/beacon-wallet": { "name": "@airgap/beacon-wallet", - "version": "4.1.2", + "version": "4.2.0", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-transport-matrix": "4.1.2", - "@airgap/beacon-transport-postmessage": "4.1.2" + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-transport-matrix": "4.2.0", + "@airgap/beacon-transport-postmessage": "4.2.0" } } } diff --git a/package.json b/package.json index 104da2b98..0077f7882 100644 --- a/package.json +++ b/package.json @@ -72,9 +72,9 @@ "@airgap/beacon-ui": "file:packages/beacon-ui", "@airgap/beacon-utils": "file:packages/beacon-utils", "@airgap/beacon-wallet": "file:packages/beacon-wallet", - "@walletconnect/sign-client": "^2.10.6", - "@walletconnect/types": "^2.10.6", - "@walletconnect/utils": "^2.10.6", + "@walletconnect/sign-client": "2.11.2", + "@walletconnect/types": "2.11.2", + "@walletconnect/utils": "2.11.2", "@web3modal/standalone": "2.0.0", "stream-browserify": "^3.0.0" }, diff --git a/packages/beacon-blockchain-substrate/package.json b/packages/beacon-blockchain-substrate/package.json index e686828f4..125f47a74 100644 --- a/packages/beacon-blockchain-substrate/package.json +++ b/packages/beacon-blockchain-substrate/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-blockchain-substrate", - "version": "4.1.2", + "version": "4.2.0", "description": "This package adds support for `substrate` based blockchains. It can be used in combination with the `@airgap/beacon-dapp` or `@airgap/beacon-wallet` packages.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,7 +34,7 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-ui": "4.1.2" + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-ui": "4.2.0" } } diff --git a/packages/beacon-blockchain-tezos-sapling/package.json b/packages/beacon-blockchain-tezos-sapling/package.json index 47e439207..fe623fdbd 100644 --- a/packages/beacon-blockchain-tezos-sapling/package.json +++ b/packages/beacon-blockchain-tezos-sapling/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-blockchain-tezos-sapling", - "version": "4.1.2", + "version": "4.2.0", "description": "This package adds support for `tezos-sapling`, the sapling integration on the Tezos blockchain. It can be used in combination with the `@airgap/beacon-dapp` or `@airgap/beacon-wallet` packages.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,7 +34,7 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-ui": "4.1.2" + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-ui": "4.2.0" } } diff --git a/packages/beacon-blockchain-tezos/package.json b/packages/beacon-blockchain-tezos/package.json index 255a5411b..7b4215183 100644 --- a/packages/beacon-blockchain-tezos/package.json +++ b/packages/beacon-blockchain-tezos/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-blockchain-tezos", - "version": "4.1.2", + "version": "4.2.0", "description": "This package adds support for the `tezos` blockchain. It can be used in combination with the `@airgap/beacon-dapp` or `@airgap/beacon-wallet` packages.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,7 +34,7 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-ui": "4.1.2" + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-ui": "4.2.0" } } diff --git a/packages/beacon-core/package.json b/packages/beacon-core/package.json index b3f74dbc8..d7760df65 100644 --- a/packages/beacon-core/package.json +++ b/packages/beacon-core/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-core", - "version": "4.1.2", + "version": "4.2.0", "description": "This package contains internal methods that are used by both the dApp and wallet client.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,8 +34,8 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-utils": "4.1.2", + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-utils": "4.2.0", "@stablelib/ed25519": "^1.0.3", "@stablelib/nacl": "^1.0.4", "@stablelib/utf8": "^1.0.1", diff --git a/packages/beacon-core/src/clients/client/ClientOptions.ts b/packages/beacon-core/src/clients/client/ClientOptions.ts index d175404c7..94ceacd39 100644 --- a/packages/beacon-core/src/clients/client/ClientOptions.ts +++ b/packages/beacon-core/src/clients/client/ClientOptions.ts @@ -37,4 +37,14 @@ export interface ClientOptions { * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] } */ matrixNodes?: NodeDistributions + + /** + * Automatically switch between apps on Mobile Devices (Enabled by Default) + */ + enableAppSwitching?: boolean + + /** + * Enable metrics tracking (Disabled by Default) + */ + enableMetrics?: boolean } diff --git a/packages/beacon-core/src/constants.ts b/packages/beacon-core/src/constants.ts index f7fec2dec..8d54253e8 100644 --- a/packages/beacon-core/src/constants.ts +++ b/packages/beacon-core/src/constants.ts @@ -1,4 +1,4 @@ -export const SDK_VERSION: string = '4.1.2' +export const SDK_VERSION: string = '4.2.0' export const BEACON_VERSION: string = '3' export const NOTIFICATION_ORACLE_URL: string = diff --git a/packages/beacon-core/src/index.ts b/packages/beacon-core/src/index.ts index fb7b18154..49878987b 100644 --- a/packages/beacon-core/src/index.ts +++ b/packages/beacon-core/src/index.ts @@ -41,6 +41,8 @@ import { windowRef } from './MockWindow' import { CommunicationClient } from './transports/clients/CommunicationClient' import { ClientEvents } from './transports/clients/ClientEvents' import { WCStorage } from './storage/WCStorage' +import { IndexedDBStorage } from './storage/IndexedDBStorage' +import { StorageValidator } from './storage/StorageValidator' // import { EncryptionType } from './types/EncryptionType' // import { EncryptionOperation } from './types/EncryptionOperation' @@ -68,7 +70,7 @@ export { export { Transport, MessageBasedClient, CommunicationClient } // Storage -export { ChromeStorage, LocalStorage, WCStorage, getStorage } +export { ChromeStorage, LocalStorage, WCStorage, IndexedDBStorage, StorageValidator, getStorage } // Managers export { PeerManager, AccountManager, AppMetadataManager, PermissionManager } diff --git a/packages/beacon-core/src/storage/IndexedDBStorage.ts b/packages/beacon-core/src/storage/IndexedDBStorage.ts index 75cd76252..ba34774b0 100644 --- a/packages/beacon-core/src/storage/IndexedDBStorage.ts +++ b/packages/beacon-core/src/storage/IndexedDBStorage.ts @@ -4,67 +4,35 @@ import { Logger } from '@airgap/beacon-core' const logger = new Logger('IndexedDBStorage') export class IndexedDBStorage extends Storage { - private readonly dbName: string = 'WALLET_CONNECT_V2_INDEXED_DB' - private readonly storeName: string = 'keyvaluestorage' - private db: IDBDatabase | null = null - - static async doesDatabaseAndTableExist(): Promise { - const targetDatabaseName = 'WALLET_CONNECT_V2_INDEXED_DB' - const targetTableName = 'keyvaluestorage' - - const databases = await indexedDB.databases() - - if (!databases.some((database) => database.name === targetDatabaseName)) { - return false // The specified database doesn't exist - } - - // Open the database to check if the table exists - return new Promise((resolve, reject) => { - const request = indexedDB.open(targetDatabaseName) - - request.onsuccess = (event) => { - const db = (event.target as IDBOpenDBRequest).result - - if (db.objectStoreNames.contains(targetTableName)) { - // The table exists in the database - resolve(true) - } else { - // The table doesn't exist in the database - resolve(false) - } - - db.close() - } - - request.onerror = (event) => { - console.error('Error opening database:', (event.target as IDBRequest).error) - reject(false) // Assume the table doesn't exist if there's an error opening the database - } - }) + constructor( + private readonly dbName: string = 'WALLET_CONNECT_V2_INDEXED_DB', + private readonly storeName: string = 'keyvaluestorage' + ) { + super() + this.init() } - openDatabase(): Promise { - return new Promise((resolve, reject) => { - const request = indexedDB.open(this.dbName, 1) + private async init() { + const request = indexedDB.open(this.dbName) - request.onupgradeneeded = (event) => { - this.db = (event.target as IDBOpenDBRequest).result + request.onupgradeneeded = (event: any) => { + const db = event.target?.result - // Create object store if it doesn't exist - if (this.db && !this.db.objectStoreNames.contains(this.storeName)) { - this.db.createObjectStore(this.storeName, { keyPath: 'id', autoIncrement: true }) - } + if (!db.objectStoreNames.contains(this.storeName)) { + db.createObjectStore(this.storeName) } + } - request.onsuccess = (event) => { - this.db = (event.target as IDBOpenDBRequest).result - resolve('Database opened successfully') - } + request.onsuccess = (event: any) => { + logger.log(`Database ${this.dbName} and store ${this.dbName} are ready for use.`) + const db = event.target?.result - request.onerror = (event) => { - reject(`Error opening database: ${(event.target as IDBOpenDBRequest).error}`) - } - }) + db.close() + } + + request.onerror = (event: any) => { + logger.error(`Error opening database ${this.dbName}:`, event.target?.error) + } } get(key: K): Promise { @@ -177,7 +145,76 @@ export class IndexedDBStorage extends Storage { throw new Error('Method not implemented.') } - clearTable(): Promise { + /** + * @returns all stored values + */ + getAll(): Promise { + return new Promise((resolve, reject) => { + const request = indexedDB.open(this.dbName) + + request.onsuccess = (event) => { + const db = (event.target as IDBOpenDBRequest).result + + const transaction = db.transaction(this.storeName, 'readonly') + const objectStore = transaction.objectStore(this.storeName) + + const getAllRequest = objectStore.getAll() + + getAllRequest.onsuccess = () => { + const results = getAllRequest.result + resolve(results) + } + + getAllRequest.onerror = (getAllEvent) => { + logger.error(`Error getting all records:`, getAllEvent.target) + reject(getAllEvent.target) + } + } + + request.onerror = (event) => { + logger.error('Error opening database:', event.target) + reject(event.target) + } + }) + } + + /** + * @returns all stored keys in store + */ + getAllKeys(): Promise { + return new Promise((resolve, reject) => { + const request = indexedDB.open(this.dbName) + + request.onsuccess = (event) => { + const db = (event.target as IDBOpenDBRequest).result + + const transaction = db.transaction(this.storeName, 'readonly') + const objectStore = transaction.objectStore(this.storeName) + + const getAllRequest = objectStore.getAllKeys() + + getAllRequest.onsuccess = () => { + const results = getAllRequest.result + resolve(results) + } + + getAllRequest.onerror = (getAllEvent) => { + logger.error(`Error getting all records:`, getAllEvent.target) + reject(getAllEvent.target) + } + } + + request.onerror = (event) => { + logger.error('Error opening database:', event.target) + reject(event.target) + } + }) + } + + /** + * @returns clears all stored entries in store + */ + clearStore(): Promise { return new Promise((resolve, reject) => { const request = indexedDB.open(this.dbName) @@ -205,4 +242,85 @@ export class IndexedDBStorage extends Storage { } }) } + /** + * it copies over all key value pairs from a source store into a target one + * @param targetDBName the name of the target DB + * @param targetStoreName the name of the target store + * @param skipKeys all the keys to ignore + */ + populateStore( + targetDBName: string, + targetStoreName: string, + skipKeys: string[] = [] + ): Promise { + return new Promise((resolve, reject) => { + // Open the source database + const openRequest = indexedDB.open(this.dbName) + + openRequest.onsuccess = (e: Event) => { + const db = (e.target as IDBOpenDBRequest).result + if (!db) { + reject(new Error('Failed to open source database.')) + return + } + + const transaction = db.transaction(this.storeName, 'readonly') + const store = transaction.objectStore(this.storeName) + + // Get all keys and values from the source store + const allRecordsRequest = store.getAll() + const allKeysRequest = store.getAllKeys() + + allRecordsRequest.onsuccess = () => { + allKeysRequest.onsuccess = () => { + const records = allRecordsRequest.result + const keys = allKeysRequest.result + + // Open the target database + const targetDBRequest = indexedDB.open(targetDBName) + + targetDBRequest.onupgradeneeded = (event: any) => { + const db = event.target?.result + + if (!db.objectStoreNames.contains(targetStoreName)) { + db.createObjectStore(targetStoreName) + } + } + + targetDBRequest.onsuccess = (e: Event) => { + const targetDB = (e.target as IDBOpenDBRequest).result + const targetTransaction = targetDB.transaction(targetStoreName, 'readwrite') + const targetStore = targetTransaction.objectStore(targetStoreName) + + // Copy each key-value pair to the target store + keys + .filter((key) => !skipKeys.includes(key.toString())) + .forEach((key, index) => { + targetStore.put(records[index], key) + }) + + targetTransaction.oncomplete = () => { + logger.log( + `Key-value pairs copied to ${targetStoreName} in ${targetDBName} successfully.` + ) + resolve() + } + + targetTransaction.onerror = () => { + reject(new Error('Error copying key-value pairs to the new database.')) + } + } + + targetDBRequest.onerror = () => { + reject(new Error('Error opening target database.')) + } + } + } + } + + openRequest.onerror = () => { + reject(new Error('Error opening source database.')) + } + }) + } } diff --git a/packages/beacon-core/src/storage/StorageValidator.ts b/packages/beacon-core/src/storage/StorageValidator.ts new file mode 100644 index 000000000..58fac0b35 --- /dev/null +++ b/packages/beacon-core/src/storage/StorageValidator.ts @@ -0,0 +1,119 @@ +import { Storage, StorageKey } from '@airgap/beacon-types' + +export class StorageValidator { + constructor(private readonly storage: Storage) {} + + private validateNumber(param: any) { + return typeof param === 'number' && !isNaN(param) + } + + private validateText(param: any) { + return typeof param === 'string' + } + + private validateBoolean(param: any) { + return typeof param === 'boolean' + } + + private validateArray(param: any) { + return Array.isArray(param) + } + private objHasProperty(obj: any, path: string) { + if (!obj) return false // Return false if the object is null or undefined + + const properties = path.split('.') // Split the path into individual properties + + let current = obj + for (const property of properties) { + // If the property doesn't exist, return false + if (!current.hasOwnProperty(property)) { + return false + } + // Move to the next level in the path + current = current[property] + } + return true + } + + private innerValidate(value: any, type: 'num' | 'str' | 'bol' | 'obj' | 'arr', prop?: string) { + if (!value) { + return true + } + + switch (type) { + case 'num': + return this.validateNumber(value) + case 'str': + return this.validateText(value) + case 'bol': + return this.validateBoolean(value) + case 'obj': + return this.objHasProperty(value, prop!) + case 'arr': + return this.validateArray(value) + default: + return false + } + } + + async validate(): Promise { + if (!this.innerValidate(await this.storage.get(StorageKey.BEACON_SDK_VERSION), 'str')) { + return false + } + if (!this.innerValidate(await this.storage.get(StorageKey.MATRIX_SELECTED_NODE), 'str')) { + return false + } + if (!this.innerValidate(await this.storage.get(StorageKey.MULTI_NODE_SETUP_DONE), 'bol')) { + return false + } + if (!this.innerValidate(await this.storage.get(StorageKey.TRANSPORT_P2P_PEERS_DAPP), 'arr')) { + return false + } + if (!this.innerValidate(await this.storage.get(StorageKey.TRANSPORT_P2P_PEERS_WALLET), 'arr')) { + return false + } + if ( + !this.innerValidate( + await this.storage.get(StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP), + 'arr' + ) + ) { + return false + } + if ( + !this.innerValidate( + await this.storage.get(StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET), + 'arr' + ) + ) { + return false + } + if ( + !this.innerValidate( + await this.storage.get(StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP), + 'arr' + ) + ) { + return false + } + if (!this.innerValidate(await this.storage.get(StorageKey.ACCOUNTS), 'arr')) { + return false + } + if (!this.innerValidate(await this.storage.get(StorageKey.APP_METADATA_LIST), 'arr')) { + return false + } + if (!this.innerValidate(await this.storage.get(StorageKey.PERMISSION_LIST), 'arr')) { + return false + } + if (!this.innerValidate(await this.storage.get(StorageKey.ACTIVE_ACCOUNT), 'str')) { + return false + } + if ( + !this.innerValidate(await this.storage.get(StorageKey.LAST_SELECTED_WALLET), 'obj', 'key') + ) { + return false + } + + return true + } +} diff --git a/packages/beacon-core/src/storage/WCStorage.ts b/packages/beacon-core/src/storage/WCStorage.ts index 6f86b08a9..f28d5266e 100644 --- a/packages/beacon-core/src/storage/WCStorage.ts +++ b/packages/beacon-core/src/storage/WCStorage.ts @@ -5,20 +5,32 @@ import { IndexedDBStorage } from './IndexedDBStorage' export class WCStorage { private readonly localStorage = new LocalStorage() private readonly indexedDB = new IndexedDBStorage() + private channel: BroadcastChannel = new BroadcastChannel('WALLET_CONNECT_V2_INDEXED_DB') + onMessageHandler: ((type: string) => void) | undefined + onErrorHandler: ((data: any) => void) | undefined constructor() { - IndexedDBStorage.doesDatabaseAndTableExist() - .then(async (exists) => { - if (exists) { - await this.indexedDB.openDatabase() - } - }) - .catch((error) => console.error(error.message)) + this.channel.onmessage = this.onMessage.bind(this) + this.channel.onmessageerror = this.onError.bind(this) + } + + private onMessage(message: MessageEvent) { + this.onMessageHandler && this.onMessageHandler(message.data.type) + } + + private onError({ data }: MessageEvent) { + this.onErrorHandler && this.onErrorHandler(data) + } + + notify(type: string) { + this.channel?.postMessage({ type }) } async hasPairings() { - if (await IndexedDBStorage.doesDatabaseAndTableExist()) { - return ((await this.indexedDB.get(StorageKey.WC_2_CORE_PAIRING)) ?? '[]') !== '[]' + const pairings = (await this.indexedDB.get(StorageKey.WC_2_CORE_PAIRING)) ?? '[]' + + if (pairings.length) { + return true } if (await LocalStorage.isSupported()) { @@ -29,8 +41,10 @@ export class WCStorage { } async hasSessions() { - if (await IndexedDBStorage.doesDatabaseAndTableExist()) { - return ((await this.indexedDB.get(StorageKey.WC_2_CLIENT_SESSION)) ?? '[]') !== '[]' + const sessions = (await this.indexedDB.get(StorageKey.WC_2_CLIENT_SESSION)) ?? '[]' + + if (sessions.length) { + return true } if (await LocalStorage.isSupported()) { @@ -40,11 +54,14 @@ export class WCStorage { return false } + backup() { + this.indexedDB + .populateStore('beacon', 'bug_report', [StorageKey.WC_2_CORE_KEYCHAIN]) + .catch((error) => console.error(error.message)) + } + async resetState() { - if (await IndexedDBStorage.doesDatabaseAndTableExist()) { - await this.indexedDB.clearTable() - return - } + await this.indexedDB.clearStore() if (await LocalStorage.isSupported()) { await Promise.all([ diff --git a/packages/beacon-core/src/transports/clients/CommunicationClient.ts b/packages/beacon-core/src/transports/clients/CommunicationClient.ts index 5e4bc2d81..740db2ad4 100644 --- a/packages/beacon-core/src/transports/clients/CommunicationClient.ts +++ b/packages/beacon-core/src/transports/clients/CommunicationClient.ts @@ -13,6 +13,12 @@ export abstract class CommunicationClient { public eventHandlers: Map = new Map() + // todo move OS + protected isMobileOS = (): boolean => + /(Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|Tablet|Windows Phone|SymbianOS|Kindle)/i.test( + navigator.userAgent + ) + /** * Get the public key */ diff --git a/packages/beacon-core/src/utils/get-sender-id.ts b/packages/beacon-core/src/utils/get-sender-id.ts index 1708ad02f..9513dee19 100644 --- a/packages/beacon-core/src/utils/get-sender-id.ts +++ b/packages/beacon-core/src/utils/get-sender-id.ts @@ -1,6 +1,8 @@ import { hash } from '@stablelib/blake2b' import * as bs58check from 'bs58check' +const isHex = (str: string): boolean => /^[A-F0-9]+$/i.test(str) + /** * @internalapi * @@ -9,6 +11,10 @@ import * as bs58check from 'bs58check' * @param publicKey */ export const getSenderId = async (publicKey: string): Promise => { + if (!isHex(publicKey)) { + console.error('PublicKey needs to be in hex format!') + } + const buffer = Buffer.from(hash(Buffer.from(publicKey, 'hex'), 5)) return bs58check.encode(buffer) diff --git a/packages/beacon-dapp/__tests__/dapp-client.spec.ts b/packages/beacon-dapp/__tests__/dapp-client.spec.ts index 05e15047a..76152995e 100644 --- a/packages/beacon-dapp/__tests__/dapp-client.spec.ts +++ b/packages/beacon-dapp/__tests__/dapp-client.spec.ts @@ -637,8 +637,8 @@ describe(`DAppClient`, () => { type: BeaconMessageType.ProofOfEventChallengeResponse, version: BEACON_VERSION, senderId: 'sender-id', - dAppChallengeId: 'my-id', - isAccepted: true + isAccepted: true, + payloadHash: 'hello world' } const connectionInfo: ConnectionContext = { @@ -658,7 +658,6 @@ describe(`DAppClient`, () => { const getActiveAccountStub = sinon.stub(dAppClient, 'getActiveAccount').resolves(account1) const input = { - dAppChallengeId: 'my-id', payload: 'my-payload' } const response = await dAppClient.requestProofOfEventChallenge(input) @@ -678,8 +677,8 @@ describe(`DAppClient`, () => { type: 'proof_of_event_challenge_response', version: BEACON_VERSION, senderId: 'sender-id', - dAppChallengeId: 'my-id', - isAccepted: true + isAccepted: true, + payloadHash: 'hello world' }) }) diff --git a/packages/beacon-dapp/package.json b/packages/beacon-dapp/package.json index 72a581105..5b117d388 100644 --- a/packages/beacon-dapp/package.json +++ b/packages/beacon-dapp/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-dapp", - "version": "4.1.2", + "version": "4.2.0", "description": "Use this package on your dApp to instanciate a DAppClient object and communicate to wallets.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -35,10 +35,10 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-transport-matrix": "4.1.2", - "@airgap/beacon-transport-postmessage": "4.1.2", - "@airgap/beacon-transport-walletconnect": "4.1.2", - "@airgap/beacon-ui": "4.1.2" + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-transport-matrix": "4.2.0", + "@airgap/beacon-transport-postmessage": "4.2.0", + "@airgap/beacon-transport-walletconnect": "4.2.0", + "@airgap/beacon-ui": "4.2.0" } } diff --git a/packages/beacon-dapp/src/beacon-message-events.ts b/packages/beacon-dapp/src/beacon-message-events.ts index 2710b9acc..d2b20e500 100644 --- a/packages/beacon-dapp/src/beacon-message-events.ts +++ b/packages/beacon-dapp/src/beacon-message-events.ts @@ -34,7 +34,12 @@ export const messageEvents: { success: BeaconEvent.UNKNOWN, error: BeaconEvent.UNKNOWN }, - [BeaconMessageType.ProofOfEventChallengeRecorded]: { + [BeaconMessageType.SimulatedProofOfEventChallengeRequest]: { + sent: BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT, + success: BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS, + error: BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR + }, + [BeaconMessageType.SimulatedProofOfEventChallengeResponse]: { sent: BeaconEvent.UNKNOWN, success: BeaconEvent.UNKNOWN, error: BeaconEvent.UNKNOWN diff --git a/packages/beacon-dapp/src/dapp-client/DAppClient.ts b/packages/beacon-dapp/src/dapp-client/DAppClient.ts index 24d00b476..d21bed1a8 100644 --- a/packages/beacon-dapp/src/dapp-client/DAppClient.ts +++ b/packages/beacon-dapp/src/dapp-client/DAppClient.ts @@ -54,19 +54,22 @@ import { PermissionResponseV3, BeaconBaseMessage, AcknowledgeResponse, - App, - DesktopApp, - ExtensionApp, - WebApp, ExtendedWalletConnectPairingResponse, ProofOfEventChallengeRequest, ProofOfEventChallengeResponse, ProofOfEventChallengeRequestInput, RequestProofOfEventChallengeInput, - ProofOfEventChallengeRecordedMessageInput, ChangeAccountRequest, PeerInfoType, - AppBase + App, + AppBase, + DesktopApp, + ExtensionApp, + WebApp, + SimulatedProofOfEventChallengeRequestInput, + SimulatedProofOfEventChallengeRequest, + SimulatedProofOfEventChallengeResponse, + RequestSimulatedProofOfEventChallengeInput // PermissionRequestV3 // RequestEncryptPayloadInput, // EncryptPayloadResponseOutput, @@ -83,7 +86,10 @@ import { getAccountIdentifier, getSenderId, Logger, - ClientEvents + ClientEvents, + StorageValidator, + SDK_VERSION, + IndexedDBStorage } from '@airgap/beacon-core' import { getAddressFromPublicKey, @@ -114,12 +120,15 @@ import { setExtensionList, setWebList, setiOSList, + getiOSList, getDesktopList, getExtensionList, getWebList, - getiOSList, isBrowser, - isDesktop + isDesktop, + isMobileOS, + isIOS, + currentOS } from '@airgap/beacon-ui' import { WalletConnectTransport } from '@airgap/beacon-transport-walletconnect' @@ -144,6 +153,18 @@ export class DAppClient extends Client { */ public readonly blockExplorer: BlockExplorer + /** + * Automatically switch between apps on Mobile Devices (Enabled by Default) + */ + private enableAppSwitching: boolean + + /** + * Enable metrics tracking (Disabled by Default) + */ + private enableMetrics?: boolean + + private userId?: string + public network: Network protected readonly events: BeaconEventHandler = new BeaconEventHandler() @@ -195,6 +216,10 @@ export class DAppClient extends Client { private readonly featuredWallets: string[] | undefined + private readonly storageValidator: StorageValidator + + private readonly bugReportStorage = new IndexedDBStorage('beacon', 'bug_report') + constructor(config: DAppClientOptions) { super({ storage: config && config.storage ? config.storage : new LocalStorage(), @@ -216,6 +241,12 @@ export class DAppClient extends Client { this.errorMessages = config.errorMessages ?? {} this.appMetadataManager = new AppMetadataManager(this.storage) + this.storageValidator = new StorageValidator(this.storage) + + this.enableAppSwitching = + config.enableAppSwitching === undefined ? true : !!config.enableAppSwitching + + this.enableMetrics = config.enableMetrics ? true : false // Subscribe to storage changes and update the active account if it changes on other tabs this.storage.subscribeToStorageChanged(async (event) => { @@ -230,6 +261,8 @@ export class DAppClient extends Client { const account = await this.getAccount(accountIdentifier) this.setActiveAccount(account) } + } else if (event.key === this.storage.getPrefixedKey(StorageKey.ENABLE_METRICS)) { + this.enableMetrics = !!(await this.storage.get(StorageKey.ENABLE_METRICS)) } } }) @@ -248,7 +281,7 @@ export class DAppClient extends Client { }) .catch(async (storageError) => { await this.setActiveAccount(undefined) - console.error(storageError) + logger.error(storageError) return undefined }) @@ -393,12 +426,83 @@ export class DAppClient extends Client { } } - this.activeAccountLoaded.then((account) => { - // we don't want the p2p to connect eagerly for logic/performance issues - if (account && account.origin.type !== 'p2p') { - this.init() + this.storageValidator + .validate() + .then(async (isValid) => { + const account = await this.activeAccountLoaded + + if (!isValid) { + const info = await this.getWalletInfo(undefined, account, false) + info.type = + info.type === 'extension' && account?.origin.type === Origin.P2P ? 'mobile' : info.type + await this.storage.set(StorageKey.LAST_SELECTED_WALLET, { + icon: info.icon ?? '', + key: info.name, + type: info.type ?? 'web', + name: info.name, + url: info.deeplink + }) + + const nowValid = await this.storageValidator.validate() + + if (!nowValid) { + this.resetInvalidState(false) + } + } + + if (account && account.origin.type !== 'p2p') { + this.init() + } + }) + .catch((err) => logger.error(err.message)) + + this.sendMetrics( + 'enable-metrics?' + this.addQueryParam('version', SDK_VERSION), + undefined, + (res) => { + if (!res.ok) { + res.status === 426 + ? console.error('Metrics are no longer supported for this version, please upgrade.') + : console.warn( + 'Network error encountered. Metrics sharing have been automatically disabled.' + ) + } + this.enableMetrics = res.ok + this.storage.set(StorageKey.ENABLE_METRICS, res.ok) + }, + () => { + this.enableMetrics = false + this.storage.set(StorageKey.ENABLE_METRICS, false) } - }) + ) + + this.initUserID().catch((err) => logger.error(err.message)) + } + + private async createStateSnapshot() { + if (!localStorage) { + return + } + const keys = Object.values(StorageKey).filter( + (key) => !key.includes('wc@2') && !key.includes('secret') && !key.includes('account') + ) as unknown as StorageKey[] + + for (const key of keys) { + this.bugReportStorage.set(key, await this.storage.get(key)) + } + } + + private async initUserID() { + const id = await this.storage.get(StorageKey.USER_ID) + + if (id) { + this.userId = id + return + } + + this.userId = await generateGUID() + + this.storage.set(StorageKey.USER_ID, this.userId) } public async initInternalTransports(): Promise { @@ -450,7 +554,7 @@ export class DAppClient extends Client { this.walletConnectTransport.setEventHandler( ClientEvents.CLOSE_ALERT, - this.hideUI.bind(this, ['alert']) + this.hideUI.bind(this, ['alert', 'toast']) ) this.walletConnectTransport.setEventHandler( ClientEvents.RESET_STATE, @@ -488,17 +592,17 @@ export class DAppClient extends Client { private async channelClosedHandler(type: TransportType) { const transport = await this.transport - if (type && transport.type !== type) { + if (transport.type !== type) { return } await this.events.emit(BeaconEvent.CHANNEL_CLOSED) this.setActiveAccount(undefined) - await this.destroy() } async destroy(): Promise { + await this.createStateSnapshot() await super.destroy() } @@ -630,11 +734,16 @@ export class DAppClient extends Client { networkType: this.network.type, abortedHandler: async () => { logger.log('init', 'ABORTED') + this.sendMetrics( + 'performance-metrics/save', + await this.buildPayload('connect', 'abort') + ) await Promise.all([ postMessageTransport.disconnect(), // p2pTransport.disconnect(), do not abort connection manually walletConnectTransport.disconnect() ]) + this._activeAccount.isResolved() && this.clearActiveAccount() this._initPromise = undefined }, disclaimerText: this.disclaimerText, @@ -660,7 +769,23 @@ export class DAppClient extends Client { const activeAccount = await this._activeAccount.promise return !activeAccount ? false - : activeAccount?.address !== account.address && !this.isGetActiveAccountHandled + : activeAccount?.address !== account?.address && !this.isGetActiveAccountHandled + } + + private async resetInvalidState(emit: boolean = true) { + this.accountManager.removeAllAccounts() + this._activeAccount = ExposedPromise.resolve(undefined) + this.storage.set(StorageKey.ACTIVE_ACCOUNT, undefined) + emit && this.events.emit(BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE) + !emit && this.hideUI(['alert']) + await Promise.all([ + this.postMessageTransport?.disconnect(), + this.walletConnectTransport?.disconnect() + ]) + this.postMessageTransport = this.p2pTransport = this.walletConnectTransport = undefined + await this.setActivePeer(undefined) + await this.setTransport(undefined) + this._initPromise = undefined } /** @@ -669,12 +794,20 @@ export class DAppClient extends Client { * @param account The account that will be set as the active account */ public async setActiveAccount(account?: AccountInfo): Promise { + if (!this.isGetActiveAccountHandled) { + console.warn( + `An active account has been received, but no active subscription was found for BeaconEvent.ACTIVE_ACCOUNT_SET. + For more information, visit: https://docs.walletbeacon.io/guides/migration-guide` + ) + } + if (account && this._activeAccount.isSettled() && (await this.isInvalidState(account))) { - await this.destroy() - await this.setActiveAccount(undefined) - await this.events.emit(BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE) + const tranport = await this.transport - return + if (tranport instanceof WalletConnectTransport && tranport.wasDisconnectedByWallet()) { + await this.resetInvalidState() + return + } } // when I'm resetting the activeAccount @@ -698,6 +831,15 @@ export class DAppClient extends Client { this._activeAccount.resolve(account) } + if (!this.isGetActiveAccountHandled && this._transport.isResolved()) { + const transport = await this.transport + + if (transport instanceof WalletConnectTransport && transport.wasDisconnectedByWallet()) { + await this.resetInvalidState() + return + } + } + if (account) { const origin = account.origin.type await this.initInternalTransports() @@ -709,6 +851,7 @@ export class DAppClient extends Client { await this.setTransport(this.p2pTransport) } else if (origin === Origin.WALLETCONNECT) { await this.setTransport(this.walletConnectTransport) + this.walletConnectTransport?.forceUpdate('INIT') } const peer = await this.getPeer(account) await this.setActivePeer(peer) @@ -762,30 +905,79 @@ export class DAppClient extends Client { await this.events.emit(BeaconEvent.SHOW_PREPARE, { walletInfo }) } - public async hideUI(elements: ('alert' | 'toast')[], type?: TransportType): Promise { - await this.events.emit(BeaconEvent.HIDE_UI, ['alert', 'toast']) + public async hideUI(elements: ('alert' | 'toast')[]): Promise { + await this.events.emit(BeaconEvent.HIDE_UI, elements) + } - if (elements.includes('alert')) { - // if the sync has been aborted - const transport = await this.transport + private async tryToAppSwitch() { + if (!isMobileOS(window) || !this.enableAppSwitching) { + return + } - if (!type || transport.type === type) { - await Promise.all([ - this.postMessageTransport?.disconnect(), - // p2pTransport.disconnect(), do not abort connection manually - this.walletConnectTransport?.disconnect() - ]) - this._initPromise = undefined - } else { - switch (type) { - case TransportType.WALLETCONNECT: - this.walletConnectTransport?.disconnect() - break - default: - this.postMessageTransport?.disconnect() - } - } + const wallet = await this.getWalletInfo() + + if (wallet.type !== 'mobile' || !wallet.deeplink) { + return + } + + const link = isIOS(window) ? wallet.deeplink : (`${wallet.deeplink}wc?uri=` as any) + + if (!link?.length) { + return } + + window.location = link + } + + private addQueryParam(paramName: string, paramValue: string): string { + return paramName + '=' + paramValue + } + + private async buildPayload( + action: 'connect' | 'message' | 'disconnect', + status: 'start' | 'abort' | 'success' | 'error' + ): Promise { + const wallet = await this.storage.get(StorageKey.LAST_SELECTED_WALLET) + const transport = this._activeAccount.isResolved() + ? (await this.getActiveAccount())?.origin.type ?? 'UNKOWN' + : 'UNKOWN' + + return { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + userId: this.userId, + os: currentOS(), + walletName: wallet?.name ?? 'init', + walletType: wallet?.type ?? 'init', + sdkVersion: SDK_VERSION, + transport, + time: new Date(), + action, + status + }) + } + } + + private sendMetrics( + uri: string, + options?: RequestInit, + thenHandler?: (res: Response) => void, + catchHandler?: (err: Error) => void + ) { + if (!this.enableMetrics) { + return + } + fetch(`https://beacon-backend.prod.gke.papers.tech/${uri}`, options) + .then((res) => thenHandler && thenHandler(res)) + .catch((err: Error) => { + console.warn('Network error encountered. Metrics sharing have been automatically disabled.') + logger.error(err.message) + this.enableMetrics = false // in the event of a network error, stop sending metrics + catchHandler && catchHandler(err) + }) } /** @@ -882,7 +1074,7 @@ export class DAppClient extends Client { [ BeaconMessageType.PermissionRequest, BeaconMessageType.ProofOfEventChallengeRequest, - BeaconMessageType.ProofOfEventChallengeRecorded + BeaconMessageType.SimulatedProofOfEventChallengeRequest ].includes(type) ) { return true @@ -965,7 +1157,6 @@ export class DAppClient extends Client { this.blockchains.delete(chainIdentifier) } - /** Generic messages */ public async permissionRequest( input: PermissionRequestV3 ): Promise> { @@ -986,14 +1177,21 @@ export class DAppClient extends Client { logger.log('REQUESTION PERMIMISSION V3', 'xxx', request) + this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'start')) + const { message: response, connectionInfo } = await this.makeRequestV3< PermissionRequestV3, BeaconMessageWrapper> - >(request).catch(async (_requestError: ErrorResponse) => { + >(request).catch(async (requestError: ErrorResponse) => { + requestError.errorType === BeaconErrorType.ABORTED_ERROR + ? this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'abort')) + : this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'error')) throw new Error('TODO') // throw await this.handleRequestError(request, requestError) }) + this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'start')) + logger.log('RESPONSE V3', response, connectionInfo) const partialAccountInfos = await blockchain.getAccountInfosFromPermissionResponse( @@ -1062,15 +1260,22 @@ export class DAppClient extends Client { accountId: activeAccount.accountIdentifier } + this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start')) + const { message: response, connectionInfo } = await this.makeRequestV3< BlockchainRequestV3, BeaconMessageWrapper> >(request).catch(async (requestError: ErrorResponse) => { console.error(requestError) + requestError.errorType === BeaconErrorType.ABORTED_ERROR + ? this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'abort')) + : this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'error')) throw new Error('TODO') // throw await this.handleRequestError(request, requestError) }) + this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success')) + await blockchain.handleResponse({ request, account: activeAccount, @@ -1113,13 +1318,20 @@ export class DAppClient extends Client { this.analytics.track('event', 'DAppClient', 'Permission requested') + this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'start')) + const { message, connectionInfo } = await this.makeRequest< PermissionRequest, PermissionResponse >(request).catch(async (requestError: ErrorResponse) => { + requestError.errorType === BeaconErrorType.ABORTED_ERROR + ? this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'abort')) + : this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'error')) throw await this.handleRequestError(request, requestError) }) + this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'success')) + logger.log('requestPermissions', '######## MESSAGE #######') logger.log('requestPermissions', message) @@ -1177,16 +1389,23 @@ export class DAppClient extends Client { const request: ProofOfEventChallengeRequestInput = { type: BeaconMessageType.ProofOfEventChallengeRequest, contractAddress: activeAccount.address, - ...input + payload: input.payload } + this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start')) + const { message, connectionInfo } = await this.makeRequest< ProofOfEventChallengeRequest, ProofOfEventChallengeResponse >(request).catch(async (requestError: ErrorResponse) => { + requestError.errorType === BeaconErrorType.ABORTED_ERROR + ? this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'abort')) + : this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'error')) throw await this.handleRequestError(request, requestError) }) + this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success')) + this.analytics.track( 'event', 'DAppClient', @@ -1194,10 +1413,6 @@ export class DAppClient extends Client { { address: activeAccount.address } ) - if (message.isAccepted) { - await this.recordProofOfEventChallenge(input) - } - await this.notifySuccess(request, { account: activeAccount, output: message, @@ -1209,27 +1424,58 @@ export class DAppClient extends Client { return message } - private async recordProofOfEventChallenge(input: RequestProofOfEventChallengeInput) { + /** + * Send a simulated proof of event request to the wallet. The wallet will either accept or decline the challenge. + * It's the same than `requestProofOfEventChallenge` but rather than executing operations on the blockchain to prove the identity, + * The wallet will return a list of operations that you'll be able to run on your side to verify the identity of the abstracted account + * It's **highly recommended** to run a proof of event challenge to check the identity of an abstracted account + * + * @param input The message details we need to prepare the SimulatedProofOfEventChallenge message. + */ + public async requestSimulatedProofOfEventChallenge( + input: RequestSimulatedProofOfEventChallengeInput + ) { const activeAccount = await this.getActiveAccount() if (!activeAccount) + throw new Error('Please request permissions before doing a proof of event challenge') + if ( + activeAccount.walletType !== 'abstracted_account' && + activeAccount.verificationType !== 'proof_of_event' + ) throw new Error( - 'Active account is undefined. Please request permissions before recording a proof of event challenge' + 'This wallet is not an abstracted account and thus cannot perform a simulated proof of event' ) - let success = true - let errorMessage = '' - - const recordedRequest: ProofOfEventChallengeRecordedMessageInput = { - type: BeaconMessageType.ProofOfEventChallengeRecorded, - dAppChallengeId: input.dAppChallengeId, - success, - errorMessage + const request: SimulatedProofOfEventChallengeRequestInput = { + type: BeaconMessageType.SimulatedProofOfEventChallengeRequest, + contractAddress: activeAccount.address, + ...input } - await this.makeRequest(recordedRequest, true).catch(async (requestError: ErrorResponse) => { - throw await this.handleRequestError(recordedRequest, requestError) + const { message, connectionInfo } = await this.makeRequest< + SimulatedProofOfEventChallengeRequest, + SimulatedProofOfEventChallengeResponse + >(request).catch(async (requestError: ErrorResponse) => { + throw await this.handleRequestError(request, requestError) }) + + this.analytics.track( + 'event', + 'DAppClient', + `Simulated proof of event challenge ${!message.errorMessage ? 'accepted' : 'refused'}`, + { address: activeAccount.address } + ) + + await this.notifySuccess(request, { + account: activeAccount, + output: message, + blockExplorer: this.blockExplorer, + connectionContext: connectionInfo, + walletInfo: await this.getWalletInfo() + }) + + return message } /** @@ -1290,13 +1536,20 @@ export class DAppClient extends Client { sourceAddress: input.sourceAddress || activeAccount.address } + this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start')) + const { message, connectionInfo } = await this.makeRequest< SignPayloadRequest, SignPayloadResponse >(request).catch(async (requestError: ErrorResponse) => { + requestError.errorType === BeaconErrorType.ABORTED_ERROR + ? this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'abort')) + : this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'error')) throw await this.handleRequestError(request, requestError) }) + this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success')) + await this.notifySuccess(request, { account: activeAccount, output: message, @@ -1392,12 +1645,19 @@ export class DAppClient extends Client { this.analytics.track('event', 'DAppClient', 'Operation requested') + this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start')) + const { message, connectionInfo } = await this.makeRequest( request ).catch(async (requestError: ErrorResponse) => { + requestError.errorType === BeaconErrorType.ABORTED_ERROR + ? this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'abort')) + : this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'error')) throw await this.handleRequestError(request, requestError) }) + this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success')) + await this.notifySuccess(request, { account: activeAccount, output: message, @@ -1438,12 +1698,19 @@ export class DAppClient extends Client { this.analytics.track('event', 'DAppClient', 'Broadcast requested') + this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start')) + const { message, connectionInfo } = await this.makeRequest( request ).catch(async (requestError: ErrorResponse) => { + requestError.errorType === BeaconErrorType.ABORTED_ERROR + ? this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'abort')) + : this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'error')) throw await this.handleRequestError(request, requestError) }) + this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success')) + await this.notifySuccess(request, { network: this.network, output: message, @@ -1626,6 +1893,13 @@ export class DAppClient extends Client { connectionContext: ConnectionContext walletInfo: WalletInfo } + | { + account: AccountInfo + output: SimulatedProofOfEventChallengeResponse + blockExplorer: BlockExplorer + connectionContext: ConnectionContext + walletInfo: WalletInfo + } | { account: AccountInfo output: OperationResponseOutput @@ -1660,7 +1934,23 @@ export class DAppClient extends Client { return await this.storage.get(StorageKey.LAST_SELECTED_WALLET) } - private async getWalletInfo(peer?: PeerInfo, account?: AccountInfo): Promise { + private async updateStorageWallet(walletInfo: WalletInfo) { + const wallet = await this.storage.get(StorageKey.LAST_SELECTED_WALLET) + + if (!wallet) { + return + } + + wallet.name = walletInfo.name + wallet.icon = walletInfo.icon ?? wallet.icon + this.storage.set(StorageKey.LAST_SELECTED_WALLET, wallet) + } + + private async getWalletInfo( + peer?: PeerInfo, + account?: AccountInfo, + readFromStorage: boolean = true + ): Promise { const selectedAccount = account ? account : await this.getActiveAccount() const selectedPeer = peer ? peer : await this.getPeer(selectedAccount) @@ -1670,11 +1960,20 @@ export class DAppClient extends Client { walletInfo = await this.appMetadataManager.getAppMetadata(selectedAccount.senderId) } + let storageWallet + + if (readFromStorage) { + storageWallet = await this.getWalletInfoFromStorage() + } + if (!walletInfo) { walletInfo = { - name: selectedPeer?.name ?? (await this.getWalletInfoFromStorage()) ?? '', - icon: selectedPeer?.icon + name: selectedPeer?.name ?? storageWallet?.key ?? '', + icon: selectedPeer?.icon ?? storageWallet?.icon, + type: storageWallet?.type } + + this.updateStorageWallet(walletInfo) } const lowerCaseCompare = (str1?: string, str2?: string): boolean => { @@ -1687,8 +1986,6 @@ export class DAppClient extends Client { const getOrgName = (name: string) => name.split(/[_\s]+/)[0] - let selectedApp: AppBase | undefined - let type: 'extension' | 'mobile' | 'web' | 'desktop' | undefined const apps: AppBase[] = [ ...getiOSList(), ...getWebList(), @@ -1699,38 +1996,46 @@ export class DAppClient extends Client { ) // TODO: Remove once all wallets send the icon? - const mobile = (apps as App[]).find((app) => app.universalLink) + const mobile = (apps as App[]).find( + (app) => app.universalLink || app.key.includes('ios') || app.key.includes('mobile') + ) const browser = (apps as WebApp[]).find((app) => app.links) const desktop = (apps as DesktopApp[]).find((app) => app.downloadLink) const extension = (apps as ExtensionApp[]).find((app) => app.id) - if (isBrowser(window) && browser) { - selectedApp = browser - type = 'web' - } else if (isDesktop(window) && desktop) { - selectedApp = desktop - type = 'desktop' - } else if (isBrowser(window) && extension) { - selectedApp = extension - type = 'extension' - } else if (mobile) { - selectedApp = mobile - type = 'mobile' - } - - if (selectedApp) { + const appTypeMap = { + extension: { app: extension, type: 'extension' }, + desktop: { app: desktop, type: 'desktop' }, + mobile: { app: mobile, type: 'mobile' }, + web: { app: browser, type: 'web' } + } + + const defaultType = (): { + app: AppBase | undefined + type: 'extension' | 'mobile' | 'web' | 'desktop' | undefined + } => { + if (isBrowser(window) && browser) return { app: browser, type: 'web' } + if (isDesktop(window) && desktop) return { app: desktop, type: 'desktop' } + if (isBrowser(window) && extension) return { app: extension, type: 'extension' } + if (mobile) return { app: mobile, type: 'mobile' } + return { app: undefined, type: undefined } + } + + const { app, type } = storageWallet ? appTypeMap[storageWallet.type] : defaultType() + + if (app) { let deeplink: string | undefined - if (selectedApp.hasOwnProperty('links')) { - deeplink = (selectedApp as WebApp).links[selectedAccount?.network.type ?? this.network.type] - } else if (selectedApp.hasOwnProperty('deepLink')) { - deeplink = (selectedApp as App).deepLink + if (app.hasOwnProperty('links')) { + deeplink = (app as WebApp).links[selectedAccount?.network.type ?? this.network.type] + } else if (app.hasOwnProperty('deepLink')) { + deeplink = (app as App).deepLink } return { - name: selectedApp?.name ?? walletInfo.name, - icon: selectedApp?.logo ?? walletInfo.icon, + name: app?.name ?? walletInfo.name, + icon: app?.logo ?? walletInfo.icon, deeplink, - type + type: type as any } } @@ -1808,18 +2113,6 @@ export class DAppClient extends Client { logger.timeLog(messageId, 'init done') logger.log('makeRequest', 'after init') - const transport = await this.transport - - if ( - transport instanceof WalletConnectTransport && - (await this.getActiveAccount()) && - !(await transport.hasPairings()) && - !(await transport.hasSessions()) - ) { - await this.channelClosedHandler(transport.type) - throw new Error('No active pairing nor session found') - } - if (await this.addRequestAndCheckIfRateLimited()) { this.events .emit(BeaconEvent.LOCAL_RATE_LIMIT_REACHED) @@ -1871,7 +2164,13 @@ export class DAppClient extends Client { logger.log('makeRequest', 'sending message', request) logger.timeLog('makeRequest', messageId, 'sending') try { - await transport.send(payload, peer) + ;(await this.transport).send(payload, peer) + if ( + request.type !== BeaconMessageType.PermissionRequest || + (this._activeAccount.isResolved() && (await this._activeAccount.promise)) + ) { + this.tryToAppSwitch() + } } catch (sendError) { this.events.emit(BeaconEvent.INTERNAL_ERROR, { text: 'Unable to send message. If this problem persists, please reset the connection and pair your wallet again.', @@ -1951,24 +2250,6 @@ export class DAppClient extends Client { throw new Error('rate limit reached') } - const transport = await this.transport - - if ( - transport instanceof WalletConnectTransport && - (await this.getActiveAccount()) && - !(await transport.hasPairings()) && - !(await transport.hasSessions()) - ) { - await this.channelClosedHandler(transport.type) - throw new Error('No active pairing nor session found') - } - - // if (!(await this.checkPermissions(requestInput.type as BeaconMessageType))) { - // this.events.emit(BeaconEvent.NO_PERMISSIONS).catch((emitError) => console.warn(emitError)) - - // throw new Error('No permissions to send this request to wallet!') - // } - if (!this.beaconId) { throw await this.sendInternalError('BeaconID not defined') } @@ -2001,7 +2282,13 @@ export class DAppClient extends Client { logger.log('makeRequest', 'sending message', request) logger.timeLog('makeRequest', messageId, 'sending') try { - await transport.send(payload, peer) + ;(await this.transport).send(payload, peer) + if ( + request.message.type !== BeaconMessageType.PermissionRequest || + (this._activeAccount.isResolved() && (await this._activeAccount.promise)) + ) { + this.tryToAppSwitch() + } } catch (sendError) { this.events.emit(BeaconEvent.INTERNAL_ERROR, { text: 'Unable to send message. If this problem persists, please reset the connection and pair your wallet again.', @@ -2041,10 +2328,13 @@ export class DAppClient extends Client { } public async disconnect() { + await this.createStateSnapshot() + this.sendMetrics('performance-metrics/save', await this.buildPayload('disconnect', 'start')) this.postMessageTransport = undefined this.p2pTransport = undefined this.walletConnectTransport = undefined await Promise.all([this.clearActiveAccount(), (await this.transport).disconnect()]) + this.sendMetrics('performance-metrics/save', await this.buildPayload('disconnect', 'success')) } /** @@ -2153,7 +2443,7 @@ export class DAppClient extends Client { logger.log('######## MESSAGE #######') logger.log('onNewAccount', message) - const walletKey = await this.storage.get(StorageKey.LAST_SELECTED_WALLET) + const walletKey = (await this.storage.get(StorageKey.LAST_SELECTED_WALLET))?.key const accountInfo: AccountInfo = { accountIdentifier: await getAccountIdentifier(address, message.network), diff --git a/packages/beacon-dapp/src/dapp-client/DAppClientOptions.ts b/packages/beacon-dapp/src/dapp-client/DAppClientOptions.ts index d3beb35ce..62584b1b4 100644 --- a/packages/beacon-dapp/src/dapp-client/DAppClientOptions.ts +++ b/packages/beacon-dapp/src/dapp-client/DAppClientOptions.ts @@ -132,4 +132,14 @@ export interface DAppClientOptions { * The wallets that will be featured in the UI. */ featuredWallets?: string[] + + /** + * Automatically switch between apps on Mobile Devices (Enabled by Default) + */ + enableAppSwitching?: boolean + + /** + * Enable metrics tracking (Disabled by Default) + */ + enableMetrics?: boolean } diff --git a/packages/beacon-dapp/src/events.ts b/packages/beacon-dapp/src/events.ts index 9c0198241..295ced685 100644 --- a/packages/beacon-dapp/src/events.ts +++ b/packages/beacon-dapp/src/events.ts @@ -27,7 +27,9 @@ import { WalletInfo, ExtendedWalletConnectPairingResponse, WalletConnectPairingRequest, - AnalyticsInterface + AnalyticsInterface, + ProofOfEventChallengeResponseOutput, + SimulatedProofOfEventChallengeResponseOutput } from '@airgap/beacon-types' import { UnknownBeaconError, @@ -39,7 +41,6 @@ import { } from '@airgap/beacon-core' import { shortenString } from './utils/shorten-string' import { isMobile } from '@airgap/beacon-ui' -import { ProofOfEventChallengeResponseOutput } from '@airgap/beacon-types' const logger = new Logger('BeaconEvents') @@ -65,6 +66,9 @@ export enum BeaconEvent { PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT = 'PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT', PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS = 'PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS', PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR = 'PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR', + SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT = 'SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT', + SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS = 'SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS', + SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR = 'SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR', OPERATION_REQUEST_SENT = 'OPERATION_REQUEST_SENT', OPERATION_REQUEST_SUCCESS = 'OPERATION_REQUEST_SUCCESS', OPERATION_REQUEST_ERROR = 'OPERATION_REQUEST_ERROR', @@ -133,6 +137,18 @@ export interface BeaconEventType { errorResponse: ErrorResponse walletInfo: WalletInfo } + [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: RequestSentInfo + [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: { + account: AccountInfo + output: SimulatedProofOfEventChallengeResponseOutput + blockExplorer: BlockExplorer + connectionContext: ConnectionContext + walletInfo: WalletInfo + } + [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: { + errorResponse: ErrorResponse + walletInfo: WalletInfo + } [BeaconEvent.OPERATION_REQUEST_SENT]: RequestSentInfo [BeaconEvent.OPERATION_REQUEST_SUCCESS]: { account: AccountInfo @@ -302,7 +318,8 @@ const showNoPermissionAlert = async (): Promise => { const showInvalidActiveAccountState = async (): Promise => { await openAlert({ title: 'Invalid state', - body: 'No subscription found for the received active account.' + body: `An active account has been received, but no active subscription was found for BeaconEvent.ACTIVE_ACCOUNT_SET. + For more information, visit: https://docs.walletbeacon.io/guides/migration-guide` }) } @@ -408,12 +425,12 @@ const showExtensionConnectedAlert = async (): Promise => { * Show a "channel closed" alert for 1.5 seconds */ const showChannelClosedAlert = async (): Promise => { - await openAlert({ - title: 'Channel closed', - body: `Your peer has closed the connection.`, - buttons: [{ text: 'Done', style: 'outline' }], - timer: 1500 - }) + // await openAlert({ + // title: 'Channel closed', + // body: `Your peer has closed the connection.`, + // buttons: [{ text: 'Done', style: 'outline' }], + // timer: 1500 + // }) } const showInternalErrorAlert = async ( @@ -499,12 +516,59 @@ const showProofOfEventChallengeSuccessAlert = async ( timer: SUCCESS_TIMER, walletInfo: data.walletInfo, state: 'finished', - actions: [ - { - text: 'Challenge Id', - actionText: output.dAppChallengeId - } - ] + actions: output.isAccepted + ? [ + { + text: `Payload hash: ${output.payloadHash}`, + actionText: 'Copy to clipboard', + actionCallback: async (): Promise => { + navigator.clipboard.writeText(output.payloadHash).then( + () => { + logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!') + }, + (err) => { + logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err) + } + ) + await closeToast() + } + } + ] + : [] + }) +} + +const showSimulatedProofOfEventChallengeSuccessAlert = async ( + data: BeaconEventType[BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS] +): Promise => { + const { output } = data + + await openToast({ + body: !output.errorMessage + ? `{{wallet}}\u00A0 has returned the list of operation` + : `{{wallet}}\u00A0 has returned an error`, + timer: SUCCESS_TIMER, + walletInfo: data.walletInfo, + state: 'finished', + actions: !output.errorMessage + ? [ + { + text: 'Operation list', + actionText: 'Copy to clipboard', + actionCallback: async (): Promise => { + navigator.clipboard.writeText(output.operationsList).then( + () => { + logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!') + }, + (err) => { + logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err) + } + ) + await closeToast() + } + } + ] + : [{ text: 'Error message', actionText: output.errorMessage }] }) } @@ -668,6 +732,10 @@ export const defaultEventCallbacks: { [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: showSentToast, [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: showProofOfEventChallengeSuccessAlert, [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: showErrorToast, + [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: showSentToast, + [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: + showSimulatedProofOfEventChallengeSuccessAlert, + [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: showErrorToast, [BeaconEvent.OPERATION_REQUEST_SENT]: showSentToast, [BeaconEvent.OPERATION_REQUEST_SUCCESS]: showOperationSuccessAlert, [BeaconEvent.OPERATION_REQUEST_ERROR]: showErrorToast, @@ -717,6 +785,15 @@ export class BeaconEventHandler { [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: [ defaultEventCallbacks.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR ], + [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: [ + defaultEventCallbacks.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT + ], + [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: [ + defaultEventCallbacks.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS + ], + [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: [ + defaultEventCallbacks.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR + ], [BeaconEvent.OPERATION_REQUEST_SENT]: [defaultEventCallbacks.OPERATION_REQUEST_SENT], [BeaconEvent.OPERATION_REQUEST_SUCCESS]: [defaultEventCallbacks.OPERATION_REQUEST_SUCCESS], [BeaconEvent.OPERATION_REQUEST_ERROR]: [defaultEventCallbacks.OPERATION_REQUEST_ERROR], @@ -746,7 +823,6 @@ export class BeaconEventHandler { [BeaconEvent.INTERNAL_ERROR]: [defaultEventCallbacks.INTERNAL_ERROR], [BeaconEvent.UNKNOWN]: [defaultEventCallbacks.UNKNOWN] } - constructor( eventsToOverride: { [key in BeaconEvent]?: { diff --git a/packages/beacon-sdk/package.json b/packages/beacon-sdk/package.json index a299450a2..71cd71b51 100644 --- a/packages/beacon-sdk/package.json +++ b/packages/beacon-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-sdk", - "version": "4.1.2", + "version": "4.2.0", "description": "The `beacon-sdk` simplifies and abstracts the communication between dApps and wallets over different transport layers.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -35,15 +35,15 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-blockchain-substrate": "4.1.2", - "@airgap/beacon-blockchain-tezos": "4.1.2", - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-dapp": "4.1.2", - "@airgap/beacon-transport-matrix": "4.1.2", - "@airgap/beacon-transport-postmessage": "4.1.2", - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-ui": "4.1.2", - "@airgap/beacon-utils": "4.1.2", - "@airgap/beacon-wallet": "4.1.2" + "@airgap/beacon-blockchain-substrate": "4.2.0", + "@airgap/beacon-blockchain-tezos": "4.2.0", + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-dapp": "4.2.0", + "@airgap/beacon-transport-matrix": "4.2.0", + "@airgap/beacon-transport-postmessage": "4.2.0", + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-ui": "4.2.0", + "@airgap/beacon-utils": "4.2.0", + "@airgap/beacon-wallet": "4.2.0" } } diff --git a/packages/beacon-transport-matrix/package.json b/packages/beacon-transport-matrix/package.json index 8a922bfb2..e42cf0e4b 100644 --- a/packages/beacon-transport-matrix/package.json +++ b/packages/beacon-transport-matrix/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-transport-matrix", - "version": "4.1.2", + "version": "4.2.0", "description": "This package contains methods to facilitate communication over the Beacon network, a decentralised P2P network that is based on the matrix protocol.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,8 +34,8 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-utils": "4.1.2", + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-utils": "4.2.0", "axios": "^1.6.2" } } diff --git a/packages/beacon-transport-postmessage/package.json b/packages/beacon-transport-postmessage/package.json index 6ec57110a..5b21144b0 100644 --- a/packages/beacon-transport-postmessage/package.json +++ b/packages/beacon-transport-postmessage/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-transport-postmessage", - "version": "4.1.2", + "version": "4.2.0", "description": "This package contains methods to facilitate communication over the postmessage interface of the browser to talk to browser extensions.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,8 +34,8 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-utils": "4.1.2" + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-utils": "4.2.0" } } diff --git a/packages/beacon-transport-walletconnect/package.json b/packages/beacon-transport-walletconnect/package.json index 81121dc6a..df78bade7 100644 --- a/packages/beacon-transport-walletconnect/package.json +++ b/packages/beacon-transport-walletconnect/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-transport-walletconnect", - "version": "4.1.2", + "version": "4.2.0", "description": "This package contains methods to facilitate communication over the WalletConnect network.", "author": "Papers AG", "homepage": "https://walletbeacon.io", @@ -34,9 +34,9 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-utils": "4.1.2", - "@walletconnect/sign-client": "^2.10.6" + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-utils": "4.2.0", + "@walletconnect/sign-client": "2.11.2" } } diff --git a/packages/beacon-transport-walletconnect/src/WalletConnectTransport.ts b/packages/beacon-transport-walletconnect/src/WalletConnectTransport.ts index 3ca6c3624..0b1e36405 100644 --- a/packages/beacon-transport-walletconnect/src/WalletConnectTransport.ts +++ b/packages/beacon-transport-walletconnect/src/WalletConnectTransport.ts @@ -64,6 +64,10 @@ export class WalletConnectTransport< return super.connect() } + wasDisconnectedByWallet() { + return !!this.client.disconnectionEvents.size + } + public async hasPairings() { return (await this.client.storage.hasPairings()) ? true @@ -76,12 +80,23 @@ export class WalletConnectTransport< : !!this.client.signClient?.session.getAll()?.length } + /** + * Forcefully updates any DApps running on the same session + * Typical use case: localStorage changes to reflect to indexDB + * @param type the message type + */ + public forceUpdate(type: string) { + this.client.storage.notify(type) + } + public async closeActiveSession(account: AccountInfo) { if (!(await this.hasPairings()) || !(await this.hasPairings())) { await this.disconnect() } else { await this.client.closeActiveSession(account.address) } + + this.forceUpdate('CLEAR_ACTIVE_ACCOUNT') } public async getPeers(): Promise { diff --git a/packages/beacon-transport-walletconnect/src/communication-client/WalletConnectCommunicationClient.ts b/packages/beacon-transport-walletconnect/src/communication-client/WalletConnectCommunicationClient.ts index b99eac3be..6567f18ab 100644 --- a/packages/beacon-transport-walletconnect/src/communication-client/WalletConnectCommunicationClient.ts +++ b/packages/beacon-transport-walletconnect/src/communication-client/WalletConnectCommunicationClient.ts @@ -8,7 +8,7 @@ import { } from '@airgap/beacon-core' import { SignClient } from '@walletconnect/sign-client' import Client from '@walletconnect/sign-client' -import { ProposalTypes, SessionTypes, SignClientTypes } from '@walletconnect/types' +import { IPairing, ProposalTypes, SessionTypes, SignClientTypes } from '@walletconnect/types' import { getSdkError } from '@walletconnect/utils' import { ActiveAccountUnspecified, @@ -43,6 +43,7 @@ import { SignPayloadRequest, SignPayloadResponse, SignPayloadResponseInput, + StorageKey, TransportType } from '@airgap/beacon-types' import { generateGUID, getAddressFromPublicKey } from '@airgap/beacon-utils' @@ -72,6 +73,21 @@ type BeaconInputMessage = | Optional | Optional +function getStringBetween(str: string | undefined, startChar: string, endChar: string): string { + if (!str || !startChar || !endChar) { + return '' + } + + const startIndex = str.indexOf(startChar) + const endIndex = str.indexOf(endChar, startIndex + 1) + + if (startIndex === -1 || endIndex === -1) { + throw new Error('String not found') + } + + return str.substring(startIndex + 1, endIndex) +} + export class WalletConnectCommunicationClient extends CommunicationClient { protected readonly activeListeners: Map void> = new Map() @@ -86,6 +102,8 @@ export class WalletConnectCommunicationClient extends CommunicationClient { private session: SessionTypes.Struct | undefined private activeAccount: string | undefined private activeNetwork: string | undefined + readonly disconnectionEvents: Set = new Set() + private pingInterval: NodeJS.Timeout | undefined /** * this queue stores each active message id @@ -97,6 +115,8 @@ export class WalletConnectCommunicationClient extends CommunicationClient { constructor(private wcOptions: { network: NetworkType; opts: SignClientTypes.Options }) { super() this.getSignClient() + this.storage.onMessageHandler = this.onStorageMessageHandler.bind(this) + this.storage.onErrorHandler = this.onStorageErrorHandler.bind(this) } static getInstance(wcOptions: { @@ -109,6 +129,10 @@ export class WalletConnectCommunicationClient extends CommunicationClient { return WalletConnectCommunicationClient.instance } + private getTopicFromSession(session: SessionTypes.Struct): string { + return session.pairingTopic?.length ? session.pairingTopic : session.topic + } + public async listenForEncryptedMessage( senderPublicKey: string, messageCallback: (message: string) => void @@ -135,6 +159,60 @@ export class WalletConnectCommunicationClient extends CommunicationClient { this.channelOpeningListeners.set('channelOpening', callbackFunction) } + /** + * WC Sign client doesn't sync between intances, meaning that a dApp signClient instance state may + * differ from a wallet state + */ + private async refreshState() { + this.clearEvents() + this.signClient = undefined + + const client = await this.getSignClient() + const sessions = client?.session.getAll() ?? [] + + try { + this.session = + sessions?.find((el) => el.topic === this.session?.topic) ?? sessions[0] ?? this.session + this.session && (this.activeAccount = this.getAccounts()[0]) + } catch (err: any) { + logger.error('refreshState', err.message) + } + } + + private clearEvents() { + this.signClient?.removeAllListeners('session_event') + this.signClient?.removeAllListeners('session_update') + this.signClient?.removeAllListeners('session_delete') + this.signClient?.removeAllListeners('session_expire') + this.signClient?.core.pairing.events.removeAllListeners('pairing_delete') + this.signClient?.core.pairing.events.removeAllListeners('pairing_expire') + } + + private onStorageMessageHandler(type: string) { + logger.debug('onStorageMessageHandler', type) + + this.refreshState() + + if (type === 'CLEAR_ACTIVE_ACCOUNT') { + if (this.messageIds.length) { + const errorResponse: any = { + type: BeaconMessageType.Disconnect, + id: this.messageIds.pop(), + errorType: BeaconErrorType.ABORTED_ERROR + } + this.session && this.notifyListeners(this.getTopicFromSession(this.session), errorResponse) + this.messageIds = [] // reset + } + this.session = undefined + this.activeAccount = undefined + return + } + } + + private onStorageErrorHandler(data: any) { + logger.error('onStorageError', data) + } + async unsubscribeFromEncryptedMessages(): Promise { // implementation } @@ -143,18 +221,36 @@ export class WalletConnectCommunicationClient extends CommunicationClient { // implementation } - private checkWalletReadiness(topic: string) { - this.signClient?.core.pairing + private ping(target: Client | IPairing, topic: string) { + target .ping({ topic }) .then(() => { if (this.messageIds.length) { this.acknowledgeRequest(this.messageIds[0]) - } else { - const fun = this.eventHandlers.get(ClientEvents.WC_ACK_NOTIFICATION) - fun && fun('pending') } }) - .catch((error) => logger.error(error.message)) + .catch((error) => { + logger.error(`ping catch handler: ${error.message}`) + }) + .then(() => { + clearInterval(this.pingInterval) + this.pingInterval = undefined + }) + } + + private checkWalletReadiness(topic: string) { + const target = this.signClient?.pairing.getAll().some((el) => el.topic === topic) + ? this.signClient?.core.pairing + : this.signClient + + if (!target || this.pingInterval) { + return + } + + this.ping(target, topic) + this.pingInterval = setInterval(() => { + this.ping(target, topic) + }, 30000) } async sendMessage(_message: string, _peer?: any): Promise { @@ -184,6 +280,9 @@ export class WalletConnectCommunicationClient extends CommunicationClient { private async fetchAccounts(topic: string, chainId: string) { const signClient = await this.getSignClient() + if (!signClient) { + return + } return signClient.request< [ { @@ -252,7 +351,7 @@ export class WalletConnectCommunicationClient extends CommunicationClient { const permissionResponse: PermissionResponseInput = { type: BeaconMessageType.PermissionResponse, appMetadata: { - senderId: session.pairingTopic, + senderId: this.getTopicFromSession(session), name: session.peer.metadata.name, icon: session.peer.metadata.icons[0] }, @@ -263,7 +362,7 @@ export class WalletConnectCommunicationClient extends CommunicationClient { walletType: 'implicit' } - this.notifyListeners(session.pairingTopic, permissionResponse) + this.notifyListeners(this.getTopicFromSession(session), permissionResponse) } async requestPermissions(message: PermissionRequest) { @@ -292,6 +391,11 @@ export class WalletConnectCommunicationClient extends CommunicationClient { */ async signPayload(signPayloadRequest: SignPayloadRequest) { const signClient = await this.getSignClient() + + if (!signClient) { + return + } + const session = this.getSession() if (!this.getPermittedMethods().includes(PermissionScopeMethods.SIGN)) { throw new MissingRequiredScope(PermissionScopeMethods.SIGN) @@ -300,7 +404,7 @@ export class WalletConnectCommunicationClient extends CommunicationClient { const account = await this.getPKH() this.validateNetworkAndAccount(network, account) - this.checkWalletReadiness(session.pairingTopic) + this.checkWalletReadiness(this.getTopicFromSession(session)) // TODO: Type signClient @@ -323,9 +427,9 @@ export class WalletConnectCommunicationClient extends CommunicationClient { id: this.messageIds.pop() } as SignPayloadResponse - this.notifyListeners(session.pairingTopic, signPayloadResponse) + this.notifyListeners(this.getTopicFromSession(session), signPayloadResponse) if (this.session && this.messageIds.length) { - this.checkWalletReadiness(this.session.pairingTopic) + this.checkWalletReadiness(this.getTopicFromSession(session)) } }) .catch(async () => { @@ -335,9 +439,9 @@ export class WalletConnectCommunicationClient extends CommunicationClient { errorType: BeaconErrorType.ABORTED_ERROR } as ErrorResponse - this.notifyListeners(session.pairingTopic, errorResponse) + this.notifyListeners(this.getTopicFromSession(session), errorResponse) if (this.session && this.messageIds.length) { - this.checkWalletReadiness(this.session.pairingTopic) + this.checkWalletReadiness(this.getTopicFromSession(session)) } }) } @@ -348,6 +452,11 @@ export class WalletConnectCommunicationClient extends CommunicationClient { */ async sendOperations(operationRequest: OperationRequest) { const signClient = await this.getSignClient() + + if (!signClient) { + return + } + const session = this.getSession() if (!this.getPermittedMethods().includes(PermissionScopeMethods.OPERATION_REQUEST)) { @@ -356,8 +465,7 @@ export class WalletConnectCommunicationClient extends CommunicationClient { const network = this.getActiveNetwork() const account = await this.getPKH() this.validateNetworkAndAccount(network, account) - - this.checkWalletReadiness(session.pairingTopic) + this.checkWalletReadiness(this.getTopicFromSession(session)) signClient .request<{ @@ -385,10 +493,10 @@ export class WalletConnectCommunicationClient extends CommunicationClient { id: this.messageIds.pop() ?? '' } - this.notifyListeners(session.pairingTopic, sendOperationResponse) + this.notifyListeners(this.getTopicFromSession(session), sendOperationResponse) if (this.session && this.messageIds.length) { - this.checkWalletReadiness(this.session.pairingTopic) + this.checkWalletReadiness(this.getTopicFromSession(session)) } }) .catch(async () => { @@ -398,65 +506,193 @@ export class WalletConnectCommunicationClient extends CommunicationClient { errorType: BeaconErrorType.ABORTED_ERROR } as ErrorResponse - this.notifyListeners(session.pairingTopic, errorResponse) + this.notifyListeners(this.getTopicFromSession(session), errorResponse) if (this.session && this.messageIds.length) { - this.checkWalletReadiness(this.session.pairingTopic) + this.checkWalletReadiness(this.getTopicFromSession(session)) } }) } + private isMobileSesion(session: SessionTypes.Struct): boolean { + const redirect = session.peer.metadata.redirect + return ( + !!redirect && + !!redirect.native && + !redirect.native.includes('http') && + !redirect.native.includes('ws') + ) + } + /** + * Function used to fix appSwitching with web wallets when pairing through 'Other wallet flow' + * @param session the newly created session + */ + private updateStorageWallet(session: SessionTypes.Struct): void { + const selectedWallet = JSON.parse(localStorage.getItem(StorageKey.LAST_SELECTED_WALLET) ?? '{}') + + if (!selectedWallet.key) { + return + } + + if (this.isMobileSesion(session)) { + selectedWallet.type = 'mobile' + } else { + selectedWallet.type = 'web' + } + + localStorage.setItem(StorageKey.LAST_SELECTED_WALLET, JSON.stringify(selectedWallet)) + } + public async init( forceNewConnection: boolean = false ): Promise<{ uri: string; topic: string } | undefined> { - const signClient = await this.getSignClient() + logger.warn('init') + this.disconnectionEvents.size && this.disconnectionEvents.clear() if (forceNewConnection) { await this.closePairings() } + const signClient = await this.getSignClient() + + if (!signClient) { + const fun = this.eventHandlers.get(ClientEvents.CLOSE_ALERT) + fun && fun() + return + } + const sessions = signClient.session.getAll() if (sessions && sessions.length > 0) { this.session = sessions[0] this.setDefaultAccountAndNetwork() + this.updateStorageWallet(this.session) return undefined } - const { uri, topic } = await signClient.core.pairing.create() - signClient.core.pairing.ping({ topic }).then(async () => { - await signClient.core.pairing.activate({ topic }) + logger.warn('before create') - // pairings don't have peer details - // therefore we must immediately open a session - // to get data required in the pairing response - try { - const session = await this.openSession(topic) + const permissionScopeParams: PermissionScopeParam = { + networks: [this.wcOptions.network], + events: [], + methods: [ + PermissionScopeMethods.GET_ACCOUNTS, + PermissionScopeMethods.OPERATION_REQUEST, + PermissionScopeMethods.SIGN + ] + } + const optionalPermissionScopeParams: PermissionScopeParam = { + networks: [this.wcOptions.network], + events: [PermissionScopeEvents.REQUEST_ACKNOWLEDGED], + methods: [] + } + + const connectParams = { + requiredNamespaces: { + [TEZOS_PLACEHOLDER]: this.permissionScopeParamsToNamespaces(permissionScopeParams) + }, + optionalNamespaces: { + [TEZOS_PLACEHOLDER]: this.permissionScopeParamsToNamespaces(optionalPermissionScopeParams) + } + } + + const { uri, approval } = await signClient.connect(connectParams) + + // Extract topic from uri. Format is wc:topic@2... + const topic = getStringBetween(uri, ':', '@') + + if (!topic) { + return + } + + let hasResponse = false + + signClient.core.pairing + .ping({ topic }) + .then(async () => { + if (!hasResponse) { + // Only show "waiting for acknowledge" message if pong arrives before response + const fun = this.eventHandlers.get(ClientEvents.WC_ACK_NOTIFICATION) + fun && fun('pending') + } + }) + .catch((err) => { + console.error('--------', err) + }) + + approval() + .then((session) => { + logger.debug('session open') + + hasResponse = true + + this.updateStorageWallet(session) const pairingResponse: ExtendedWalletConnectPairingResponse = new ExtendedWalletConnectPairingResponse( - topic, + session.topic, session.peer.metadata.name, session.peer.publicKey, '3', - topic, + session.topic, session.peer.metadata.name ) this.channelOpeningListeners.forEach((listener) => { listener(pairingResponse) }) - } catch (error: any) { - logger.error(error.message) - const fun = this.eventHandlers.get(ClientEvents.CLOSE_ALERT) - fun && fun(TransportType.WALLETCONNECT) - return - } - }) - return { uri, topic } + if (session?.controller !== this.session?.controller) { + logger.debug('Controller doesnt match, closing active session', [session.pairingTopic]) + this.activeAccount && this.closeActiveSession(this.activeAccount) + this.session = undefined // close the previous session + } + + // We need this check in the event the user aborts the sync process on the wallet side + // but there is already a connection set + this.session = this.session ?? session + logger.debug('Session is now', [session.pairingTopic]) + + this.validateReceivedNamespace(permissionScopeParams, this.session.namespaces) + }) + .catch(async (error: any) => { + hasResponse = true + if ( + !error.message || + !error.message.length || + error.message.toLowerCase().includes('expir') + ) { + const fun = this.eventHandlers.get(ClientEvents.CLOSE_ALERT) + fun && fun(TransportType.WALLETCONNECT) + return + } + + logger.error('Error happened!', [error.message]) + + if (this.activeListeners.size === 0) { + logger.debug('No active listeners', []) + const fun = this.eventHandlers.get(ClientEvents.WC_ACK_NOTIFICATION) + fun && fun('error') + } else { + const _pairingTopic = topic ?? signClient.core.pairing.getPairings()[0]?.topic + logger.debug('New pairing topic?', []) + + const errorResponse: ErrorResponseInput = { + type: BeaconMessageType.Error, + id: this.messageIds.pop(), + errorType: BeaconErrorType.ABORTED_ERROR + } as ErrorResponse + + this.notifyListeners(_pairingTopic, errorResponse) + } + }) + + logger.warn('return uri and topic') + + return { uri: uri ?? '', topic: topic } } public async close() { + this.storage.backup() await this.closePairings() } @@ -471,25 +707,37 @@ export class WalletConnectCommunicationClient extends CommunicationClient { }) signClient.on('session_update', (event) => { - this.session = signClient.session.get(event.topic) + this.disconnectionEvents.add('session_update') + const session = signClient.session.get(event.topic) + + if (!session) { + logger.warn('session_update', 'topic does not exist') + return + } + + this.session = session this.updateActiveAccount(event.params.namespaces) - this.notifyListenersWithPermissionResponse(this.session!, { + this.notifyListenersWithPermissionResponse(this.session, { type: this.wcOptions.network }) }) signClient.on('session_delete', (event) => { + this.disconnectionEvents.add('session_delete') this.disconnect(signClient, { type: 'session', topic: event.topic }) }) signClient.on('session_expire', (event) => { + this.disconnectionEvents.add('session_expire') this.disconnect(signClient, { type: 'session', topic: event.topic }) }) signClient.core.pairing.events.on('pairing_delete', (event) => { + this.disconnectionEvents.add('pairing_delete') this.disconnect(signClient, { type: 'pairing', topic: event.topic }) }) signClient.core.pairing.events.on('pairing_expire', (event) => { + this.disconnectionEvents.add('pairing_expire') this.disconnect(signClient, { type: 'pairing', topic: event.topic }) }) } @@ -501,13 +749,13 @@ export class WalletConnectCommunicationClient extends CommunicationClient { id } - this.notifyListeners(session.pairingTopic, acknowledgeResponse) + this.notifyListeners(this.getTopicFromSession(session), acknowledgeResponse) } private async updateActiveAccount(namespaces: SessionTypes.Namespaces) { try { const accounts = this.getTezosNamespace(namespaces).accounts - if (accounts.length === 1) { + if (accounts.length) { const [_namespace, chainId, addressOrPbk] = accounts[0].split(':', 3) const session = this.getSession() let publicKey: string | undefined @@ -528,7 +776,7 @@ export class WalletConnectCommunicationClient extends CommunicationClient { throw new Error('Public key for the new account not provided') } - this.notifyListeners(session.pairingTopic, { + this.notifyListeners(this.getTopicFromSession(session), { id: await generateGUID(), type: BeaconMessageType.ChangeAccountRequest, publicKey, @@ -562,7 +810,7 @@ export class WalletConnectCommunicationClient extends CommunicationClient { return } - this.notifyListeners(session.pairingTopic, { + this.notifyListeners(this.getTopicFromSession(session), { id: await generateGUID(), type: BeaconMessageType.Disconnect }) @@ -571,14 +819,14 @@ export class WalletConnectCommunicationClient extends CommunicationClient { private async onPairingClosed( signClient: Client, - pairingTopic: string + topic: string ): Promise { const session = - this.session?.pairingTopic === pairingTopic + this.session?.pairingTopic === topic ? this.session : signClient.session .getAll() - .find((session: SessionTypes.Struct) => session.pairingTopic === pairingTopic) + .find((session: SessionTypes.Struct) => session.pairingTopic === topic) if (!session) { return undefined @@ -609,7 +857,14 @@ export class WalletConnectCommunicationClient extends CommunicationClient { } try { - await signClient.core.pairing.disconnect({ topic: this.session.pairingTopic }) + // todo close the matching session and not just the first one + if (!this.session.pairingTopic) { + await signClient.core.pairing.disconnect({ + topic: signClient.core.pairing.getPairings()[0]?.topic + }) + } else { + await signClient.core.pairing.disconnect({ topic: this.session.pairingTopic }) + } } catch (error: any) { // If the pairing was already closed, `disconnect` will throw an error. logger.warn(error.message) @@ -622,6 +877,7 @@ export class WalletConnectCommunicationClient extends CommunicationClient { let _uri = '', _topic = '' try { + logger.warn('getPairingRequestInfo') const { uri, topic } = (await this.init(true)) ?? { uri: '', topic: '' } _uri = uri _topic = topic @@ -639,38 +895,66 @@ export class WalletConnectCommunicationClient extends CommunicationClient { ) } + // private async clearCache() { + // const signClient = await this.getSignClient() + // signClient?.proposal.map.clear() + // signClient?.pendingRequest.map.clear() + // signClient?.session.map.clear() + // ;(signClient?.core.expirer as Expirer).expirations.clear() + // signClient?.core.history.records.clear() + // signClient?.core.crypto.keychain.keychain.clear() + // signClient?.core.relayer.messages.messages.clear() + // signClient?.core.pairing.pairings.map.clear() + // signClient?.core.relayer.subscriber.subscriptions.clear() + // } + private async closePairings() { await this.closeSessions() const signClient = await this.getSignClient() - const pairings = signClient.pairing.getAll() ?? [] - pairings.length && - (await Promise.allSettled( - pairings.map((pairing) => signClient.core.pairing.disconnect({ topic: pairing.topic })) - )) + + if (signClient) { + const pairings = signClient.pairing.getAll() ?? [] + pairings.length && + (await Promise.allSettled( + pairings.map((pairing) => signClient.core.pairing.disconnect({ topic: pairing.topic })) + )) + } + + // await this.clearCache() await this.storage.resetState() + this.storage.notify('RESET') } private async closeSessions() { const signClient = await this.getSignClient() - const sessions = signClient.session.getAll() ?? [] - sessions.length && - (await Promise.allSettled( - sessions.map((session) => - signClient.disconnect({ - topic: (session as any).topic, - reason: { - code: 0, // TODO: Use constants - message: 'Force new connection' - } - }) - ) - )) + + if (signClient) { + const sessions = signClient.session.getAll() ?? [] + sessions.length && + (await Promise.allSettled( + sessions.map((session) => + signClient.disconnect({ + topic: (session as any).topic, + reason: { + code: 0, // TODO: Use constants + message: 'Force new connection' + } + }) + ) + )) + } this.clearState() } private async openSession(pairingTopic?: string): Promise { + logger.debug('Starting open session with', [pairingTopic]) const signClient = await this.getSignClient() + + if (!signClient) { + throw new Error('Transport error.') + } + const permissionScopeParams: PermissionScopeParam = { networks: [this.wcOptions.network], events: [], @@ -696,14 +980,19 @@ export class WalletConnectCommunicationClient extends CommunicationClient { pairingTopic: pairingTopic ?? signClient.core.pairing.getPairings()[0]?.topic } - this.checkWalletReadiness(connectParams.pairingTopic) + logger.debug('Checking wallet readiness', [pairingTopic]) - const { approval } = await signClient.connect(connectParams) + this.checkWalletReadiness(connectParams.pairingTopic) try { + logger.debug('connect', [pairingTopic]) + const { approval } = await signClient.connect(connectParams) + logger.debug('before await approal', [pairingTopic]) const session = await approval() + logger.debug('after await approal, have session', [pairingTopic]) // if I have successfully opened a session and I already have one opened if (session?.controller !== this.session?.controller) { + logger.debug('Controller doesnt match, closing active session', [pairingTopic]) this.activeAccount && this.closeActiveSession(this.activeAccount) this.session = undefined // close the previous session } @@ -711,28 +1000,47 @@ export class WalletConnectCommunicationClient extends CommunicationClient { // I still need this check in the event the user aborts the sync process on the wallet side // but there is already a connection set this.session = this.session ?? session + logger.debug('Session is now', [session.pairingTopic, pairingTopic]) + this.validateReceivedNamespace(permissionScopeParams, this.session.namespaces) } catch (error: any) { - logger.error(error.message) - if (this.activeListeners.size === 0) { - const fun = this.eventHandlers.get(ClientEvents.WC_ACK_NOTIFICATION) - fun && fun('error') + if ( + !error.message || + !error.message.length || + error.message.toLowerCase().includes('expir') + ) { + const fun = this.eventHandlers.get(ClientEvents.CLOSE_ALERT) + fun && fun(TransportType.WALLETCONNECT) } else { - const _pairingTopic = pairingTopic ?? signClient.core.pairing.getPairings()[0]?.topic - const errorResponse: ErrorResponseInput = { - type: BeaconMessageType.Error, - id: this.messageIds.pop(), - errorType: BeaconErrorType.ABORTED_ERROR - } as ErrorResponse + logger.debug('Error happened!', [pairingTopic]) + logger.error(error.message) + if (this.activeListeners.size === 0) { + logger.debug('No active listeners', [pairingTopic]) + const fun = this.eventHandlers.get(ClientEvents.WC_ACK_NOTIFICATION) + fun && fun('error') + } else { + const _pairingTopic = pairingTopic ?? signClient.core.pairing.getPairings()[0]?.topic + logger.debug('New pairing topic?', [pairingTopic]) + + const errorResponse: ErrorResponseInput = { + type: BeaconMessageType.Error, + id: this.messageIds.pop(), + errorType: BeaconErrorType.ABORTED_ERROR + } as ErrorResponse - this.notifyListeners(_pairingTopic, errorResponse) + this.notifyListeners(_pairingTopic, errorResponse) + } } } if (this.session) { + logger.debug('Have session, returning', [pairingTopic]) + return this.session } else { - throw new InvalidSession('No session set.') + logger.debug('Nope, aborting', [pairingTopic]) + + throw new InvalidSession('No session set.' + pairingTopic) } } @@ -876,6 +1184,17 @@ export class WalletConnectCommunicationClient extends CommunicationClient { const session = this.getSession() + if (this.messageIds.length) { + const errorResponse: any = { + type: BeaconMessageType.Disconnect, + id: this.messageIds.pop(), + errorType: BeaconErrorType.ABORTED_ERROR + } + + this.notifyListeners(this.getTopicFromSession(session), errorResponse) + this.messageIds = [] // reset + } + await this.signClient?.disconnect({ topic: session.topic, reason: { @@ -968,11 +1287,11 @@ export class WalletConnectCommunicationClient extends CommunicationClient { // } } - private async notifyListeners(pairingTopic: string, partialResponse: BeaconInputMessage) { + private async notifyListeners(topic: string, partialResponse: BeaconInputMessage) { const response: BeaconBaseMessage = { ...partialResponse, version: '2', - senderId: pairingTopic + senderId: topic } const serializer = new Serializer() const serialized = await serializer.serialize(response) @@ -986,10 +1305,15 @@ export class WalletConnectCommunicationClient extends CommunicationClient { return this.session } - private async getSignClient(): Promise { + private async getSignClient(): Promise { if (this.signClient === undefined) { - this.signClient = await SignClient.init(this.wcOptions.opts) - this.subscribeToSessionEvents(this.signClient) + try { + this.signClient = await SignClient.init(this.wcOptions.opts) + this.subscribeToSessionEvents(this.signClient) + } catch (error: any) { + logger.error(error.message) + return undefined + } } return this.signClient diff --git a/packages/beacon-types/package.json b/packages/beacon-types/package.json index 86b7667fc..d4c104969 100644 --- a/packages/beacon-types/package.json +++ b/packages/beacon-types/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-types", - "version": "4.1.2", + "version": "4.2.0", "description": "This package contains types that are used throughout the Beacon SDK.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", diff --git a/packages/beacon-types/src/index.ts b/packages/beacon-types/src/index.ts index f2bc74dda..2f6468f99 100644 --- a/packages/beacon-types/src/index.ts +++ b/packages/beacon-types/src/index.ts @@ -6,7 +6,8 @@ import { AppMetadata } from './types/beacon/AppMetadata' import { PermissionRequest } from './types/beacon/messages/PermissionRequest' import { ProofOfEventChallengeRequest } from './types/beacon/messages/ProofOfEventChallengeRequest' import { ProofOfEventChallengeResponse } from './types/beacon/messages/ProofOfEventChallengeResponse' -import { ProofOfEventChallengeRecordedRequest } from './types/beacon/messages/ProofOfEventChallengeRecordedRequest' +import { SimulatedProofOfEventChallengeRequest } from './types/beacon/messages/SimulatedProofOfEventChallengeRequest' +import { SimulatedProofOfEventChallengeResponse } from './types/beacon/messages/SimulatedProofOfEventChallengeResponse' import { Network } from './types/beacon/Network' import { BeaconBaseMessage } from './types/beacon/BeaconBaseMessage' import { BeaconMessageType } from './types/beacon/BeaconMessageType' @@ -53,6 +54,7 @@ import { ExtendedP2PPairingRequest, P2PPairingRequest } from './types/P2PPairing import { BeaconMessage } from './types/beacon/BeaconMessage' import { RequestPermissionInput } from './types/RequestPermissionInput' import { RequestProofOfEventChallengeInput } from './types/RequestProofOfEventChallengeInput' +import { RequestSimulatedProofOfEventChallengeInput } from './types/RequestSimulatedProofOfEventChallengeInput' import { RequestSignPayloadInput } from './types/RequestSignPayloadInput' // import { RequestEncryptPayloadInput } from './types/RequestEncryptPayloadInput' import { RequestOperationInput } from './types/RequestOperationInput' @@ -75,7 +77,8 @@ import { OperationResponseOutput, BroadcastResponseOutput, BeaconResponseOutputMessage, - ProofOfEventChallengeResponseOutput + ProofOfEventChallengeResponseOutput, + SimulatedProofOfEventChallengeResponseOutput } from './types/beacon/messages/BeaconResponseOutputMessage' import { PermissionRequestInput, @@ -85,8 +88,8 @@ import { BroadcastRequestInput, BeaconRequestInputMessage, IgnoredRequestInputProperties, - ProofOfEventChallengeRecordedMessageInput, - ProofOfEventChallengeRequestInput + ProofOfEventChallengeRequestInput, + SimulatedProofOfEventChallengeRequestInput } from './types/beacon/messages/BeaconRequestInputMessage' import { PermissionRequestOutput, @@ -96,7 +99,7 @@ import { BroadcastRequestOutput, BeaconRequestOutputMessage, ProofOfEventChallengeRequestOutput, - ProofOfEventChallengeRecordedMessageOutput + SimulatedProofOfEventChallengeRequestOutput, } from './types/beacon/messages/BeaconRequestOutputMessage' import { PermissionInfo } from './types/PermissionInfo' import { ConnectionContext } from './types/ConnectionContext' @@ -137,6 +140,29 @@ import { Extension } from './types/Extension' import { PermissionEntity } from './types/PermissionEntity' import { WalletInfo } from './types/WalletInfo' import { ChangeAccountRequest } from './types/beacon/messages/ChangeAccountRequest' +import { TezosAttestationOperation } from './types/tezos/operations/Attestation' +import { TezosAttestationWithSlotOperation } from './types/tezos/operations/AttestationWithSlot' +import { TezosDoubleAttestationEvidenceOperation } from './types/tezos/operations/DoubleAttestationEvidence' +import { TezosDoublePreEndorsementEvidenceOperation } from './types/tezos/operations/DoublePreEndorsementEvidence' +import { TezosDrainDelegateOperation } from './types/tezos/operations/DrainDelegate' +import { TezosEndorsementWithSlotOperation } from './types/tezos/operations/EndorsementWithSlot' +import { TezosFailingNoopOperation } from './types/tezos/operations/FailingNoop' +import { TezosIncreasePaidStorageOperation } from './types/tezos/operations/IncreasePaidStorage' +import { TezosPreAttestationOperation } from './types/tezos/operations/PreAttestation' +import { TezosRegisterGlobalConstantOperation } from './types/tezos/operations/RegisterGlobalConstant' +import { TezosSetDepositsLimitOperation } from './types/tezos/operations/SetDepositsLimit' +import { TezosSmartRollupAddMessagesOperation } from './types/tezos/operations/SmartRollupAddMessages' +import { TezosSmartRollupExecuteOutboxMessageOperation } from './types/tezos/operations/SmartRollupExecuteOutboxMessage' +import { TezosSmartRollupPublishOperation } from './types/tezos/operations/SmartRollupPublish' +import { TezosSmartRollupRecoverBondOperation } from './types/tezos/operations/SmartRollupRecoverBond' +import { TezosSmartRollupRefuteOperation } from './types/tezos/operations/SmartRollupRefute' +import { TezosSmartRollupTimeoutOperation } from './types/tezos/operations/SmartRollupTimeout' +import { TezosTransferTicketOperation } from './types/tezos/operations/TransferTicket' +import { TezosUpdateConsensusKeyOperation } from './types/tezos/operations/UpdateConsensusKey' +import { TezosVdfRevelationOperation } from './types/tezos/operations/VdfRevelation' +import { TezosDoublePreAttestationEvidenceOperation } from './types/tezos/operations/DoublePreAttestationEvidence' +import { TezosSmartRollupCementOperation } from './types/tezos/operations/SmartRollupCement' +import { TezosSmartRollupOriginateOperation } from './types/tezos/operations/SmartRollupOriginate' export * from './types/AnalyticsInterface' @@ -174,7 +200,30 @@ export { PartialTezosTransactionOperation, PartialTezosDelegationOperation, PartialTezosOriginationOperation, - PartialTezosRevealOperation + PartialTezosRevealOperation, + TezosAttestationOperation, + TezosPreAttestationOperation, + TezosSetDepositsLimitOperation, + TezosDoublePreAttestationEvidenceOperation, + TezosDoublePreEndorsementEvidenceOperation, + TezosAttestationWithSlotOperation, + TezosEndorsementWithSlotOperation, + TezosDoubleAttestationEvidenceOperation, + TezosFailingNoopOperation, + TezosRegisterGlobalConstantOperation, + TezosTransferTicketOperation, + TezosIncreasePaidStorageOperation, + TezosUpdateConsensusKeyOperation, + TezosDrainDelegateOperation, + TezosVdfRevelationOperation, + TezosSmartRollupOriginateOperation, + TezosSmartRollupAddMessagesOperation, + TezosSmartRollupExecuteOutboxMessageOperation, + TezosSmartRollupPublishOperation, + TezosSmartRollupCementOperation, + TezosSmartRollupRecoverBondOperation, + TezosSmartRollupRefuteOperation, + TezosSmartRollupTimeoutOperation } // Beacon @@ -212,8 +261,8 @@ export { EncryptedExtensionMessage, RequestPermissionInput, RequestProofOfEventChallengeInput, + RequestSimulatedProofOfEventChallengeInput, RequestSignPayloadInput, - ProofOfEventChallengeRecordedMessageInput, // RequestEncryptPayloadInput, RequestOperationInput, RequestBroadcastInput, @@ -221,7 +270,8 @@ export { PermissionEntity, ProofOfEventChallengeRequest, ProofOfEventChallengeResponse, - ProofOfEventChallengeRecordedRequest + SimulatedProofOfEventChallengeRequest, + SimulatedProofOfEventChallengeResponse } export { @@ -234,6 +284,7 @@ export { ErrorResponseInput, PermissionResponseOutput, ProofOfEventChallengeResponseOutput, + SimulatedProofOfEventChallengeResponseOutput, SignPayloadResponseOutput, // EncryptPayloadResponseOutput, OperationResponseOutput, @@ -241,13 +292,14 @@ export { PermissionRequestInput, SignPayloadRequestInput, ProofOfEventChallengeRequestInput, + SimulatedProofOfEventChallengeRequestInput, // EncryptPayloadRequestInput, OperationRequestInput, BroadcastRequestInput, PermissionRequestOutput, SignPayloadRequestOutput, ProofOfEventChallengeRequestOutput, - ProofOfEventChallengeRecordedMessageOutput, + SimulatedProofOfEventChallengeRequestOutput, // EncryptPayloadRequestOutput, OperationRequestOutput, BroadcastRequestOutput, diff --git a/packages/beacon-types/src/types/RequestProofOfEventChallengeInput.ts b/packages/beacon-types/src/types/RequestProofOfEventChallengeInput.ts index a74011fa2..adce8601a 100644 --- a/packages/beacon-types/src/types/RequestProofOfEventChallengeInput.ts +++ b/packages/beacon-types/src/types/RequestProofOfEventChallengeInput.ts @@ -2,6 +2,5 @@ * @category DApp */ export interface RequestProofOfEventChallengeInput { - dAppChallengeId: string payload: string } diff --git a/packages/beacon-types/src/types/RequestSimulatedProofOfEventChallengeInput.ts b/packages/beacon-types/src/types/RequestSimulatedProofOfEventChallengeInput.ts new file mode 100644 index 000000000..3b55dba79 --- /dev/null +++ b/packages/beacon-types/src/types/RequestSimulatedProofOfEventChallengeInput.ts @@ -0,0 +1,7 @@ +/** + * @category DApp + */ +export interface RequestSimulatedProofOfEventChallengeInput { + /** A custom payload than should be emitted by the list of operations returned by the dapp*/ + payload: string +} diff --git a/packages/beacon-types/src/types/beacon/BeaconMessage.ts b/packages/beacon-types/src/types/beacon/BeaconMessage.ts index daf1b45bc..df3bbdd70 100644 --- a/packages/beacon-types/src/types/beacon/BeaconMessage.ts +++ b/packages/beacon-types/src/types/beacon/BeaconMessage.ts @@ -14,7 +14,8 @@ import { ErrorResponse, ProofOfEventChallengeRequest, ProofOfEventChallengeResponse, - ProofOfEventChallengeRecordedRequest, + SimulatedProofOfEventChallengeRequest, + SimulatedProofOfEventChallengeResponse, ChangeAccountRequest } from '@airgap/beacon-types' @@ -26,7 +27,8 @@ export type BeaconMessage = | PermissionResponse | ProofOfEventChallengeRequest | ProofOfEventChallengeResponse - | ProofOfEventChallengeRecordedRequest + | SimulatedProofOfEventChallengeRequest + | SimulatedProofOfEventChallengeResponse | OperationRequest | OperationResponse | SignPayloadRequest diff --git a/packages/beacon-types/src/types/beacon/BeaconMessageType.ts b/packages/beacon-types/src/types/beacon/BeaconMessageType.ts index d71f92734..8ce321602 100644 --- a/packages/beacon-types/src/types/beacon/BeaconMessageType.ts +++ b/packages/beacon-types/src/types/beacon/BeaconMessageType.ts @@ -12,7 +12,8 @@ export enum BeaconMessageType { // EncryptPayloadResponse = 'encrypt_payload_response', ProofOfEventChallengeRequest = 'proof_of_event_challenge_request', ProofOfEventChallengeResponse = 'proof_of_event_challenge_response', - ProofOfEventChallengeRecorded = 'proof_of_event_challenge_recorded', + SimulatedProofOfEventChallengeRequest = 'simulated_proof_of_event_challenge_request', + SimulatedProofOfEventChallengeResponse = 'simulated_proof_of_event_challenge_response', OperationResponse = 'operation_response', BroadcastResponse = 'broadcast_response', Acknowledge = 'acknowledge', diff --git a/packages/beacon-types/src/types/beacon/BeaconRequestMessage.ts b/packages/beacon-types/src/types/beacon/BeaconRequestMessage.ts index 43062f7a3..0c2b19edb 100644 --- a/packages/beacon-types/src/types/beacon/BeaconRequestMessage.ts +++ b/packages/beacon-types/src/types/beacon/BeaconRequestMessage.ts @@ -4,7 +4,7 @@ import { SignPayloadRequest, BroadcastRequest, ProofOfEventChallengeRequest, - ProofOfEventChallengeRecordedRequest + SimulatedProofOfEventChallengeRequest // EncryptPayloadRequest } from '@airgap/beacon-types' @@ -18,4 +18,4 @@ export type BeaconRequestMessage = // | EncryptPayloadRequest | BroadcastRequest | ProofOfEventChallengeRequest - | ProofOfEventChallengeRecordedRequest + | SimulatedProofOfEventChallengeRequest diff --git a/packages/beacon-types/src/types/beacon/messages/BeaconRequestInputMessage.ts b/packages/beacon-types/src/types/beacon/messages/BeaconRequestInputMessage.ts index 90111708d..3bd7e05ff 100644 --- a/packages/beacon-types/src/types/beacon/messages/BeaconRequestInputMessage.ts +++ b/packages/beacon-types/src/types/beacon/messages/BeaconRequestInputMessage.ts @@ -1,9 +1,10 @@ -import { Optional, ProofOfEventChallengeRecordedRequest } from '@airgap/beacon-types' +import { Optional } from '@airgap/beacon-types' import { PermissionRequest, OperationRequest, SignPayloadRequest, ProofOfEventChallengeRequest, + SimulatedProofOfEventChallengeRequest, // EncryptPayloadRequest, BroadcastRequest } from '@airgap/beacon-types' @@ -31,8 +32,8 @@ export type ProofOfEventChallengeRequestInput = Optional< * @internalapi * @category DApp */ -export type ProofOfEventChallengeRecordedMessageInput = Optional< - ProofOfEventChallengeRecordedRequest, +export type SimulatedProofOfEventChallengeRequestInput = Optional< + SimulatedProofOfEventChallengeRequest, IgnoredRequestInputProperties > /** @@ -70,4 +71,4 @@ export type BeaconRequestInputMessage = | SignPayloadRequestInput | BroadcastRequestInput | ProofOfEventChallengeRequestInput - | ProofOfEventChallengeRecordedMessageInput + | SimulatedProofOfEventChallengeRequestInput diff --git a/packages/beacon-types/src/types/beacon/messages/BeaconRequestOutputMessage.ts b/packages/beacon-types/src/types/beacon/messages/BeaconRequestOutputMessage.ts index 65659f6e5..dbc63840b 100644 --- a/packages/beacon-types/src/types/beacon/messages/BeaconRequestOutputMessage.ts +++ b/packages/beacon-types/src/types/beacon/messages/BeaconRequestOutputMessage.ts @@ -1,7 +1,7 @@ import { Optional, - ProofOfEventChallengeRecordedRequest, - ProofOfEventChallengeRequest + ProofOfEventChallengeRequest, + SimulatedProofOfEventChallengeRequest } from '@airgap/beacon-types' import { AppMetadata, @@ -40,8 +40,8 @@ export type ProofOfEventChallengeRequestOutput = Optional< /** * @category Wallet */ -export type ProofOfEventChallengeRecordedMessageOutput = Optional< - ProofOfEventChallengeRecordedRequest, +export type SimulatedProofOfEventChallengeRequestOutput = Optional< + SimulatedProofOfEventChallengeRequest, IgnoredRequestOutputProperties > & ExtraResponseOutputProperties @@ -83,4 +83,4 @@ export type BeaconRequestOutputMessage = // | EncryptPayloadRequestOutput | BroadcastRequestOutput | ProofOfEventChallengeRequestOutput - | ProofOfEventChallengeRecordedMessageOutput + | SimulatedProofOfEventChallengeRequestOutput diff --git a/packages/beacon-types/src/types/beacon/messages/BeaconResponseInputMessage.ts b/packages/beacon-types/src/types/beacon/messages/BeaconResponseInputMessage.ts index 67dab30a9..39cacc44c 100644 --- a/packages/beacon-types/src/types/beacon/messages/BeaconResponseInputMessage.ts +++ b/packages/beacon-types/src/types/beacon/messages/BeaconResponseInputMessage.ts @@ -1,4 +1,8 @@ -import { Optional, ProofOfEventChallengeResponse } from '@airgap/beacon-types' +import { + Optional, + ProofOfEventChallengeResponse, + SimulatedProofOfEventChallengeResponse +} from '@airgap/beacon-types' import { PermissionResponse, OperationResponse, @@ -28,6 +32,13 @@ export type ProofOfEventChallengeResponseInput = Optional< ProofOfEventChallengeResponse, IgnoredResponseInputProperties > +/** + * @category Wallet + */ +export type SimulatedProofOfEventChallengeResponseInput = Optional< + SimulatedProofOfEventChallengeResponse, + IgnoredResponseInputProperties +> /** * @category Wallet */ @@ -69,3 +80,4 @@ export type BeaconResponseInputMessage = | AcknowledgeResponseInput | ErrorResponseInput | ProofOfEventChallengeResponseInput + | SimulatedProofOfEventChallengeResponseInput diff --git a/packages/beacon-types/src/types/beacon/messages/BeaconResponseOutputMessage.ts b/packages/beacon-types/src/types/beacon/messages/BeaconResponseOutputMessage.ts index 7b8fe476a..61492eb71 100644 --- a/packages/beacon-types/src/types/beacon/messages/BeaconResponseOutputMessage.ts +++ b/packages/beacon-types/src/types/beacon/messages/BeaconResponseOutputMessage.ts @@ -5,7 +5,8 @@ import { // EncryptPayloadResponse, BroadcastResponse, AccountInfo, - ProofOfEventChallengeResponse + ProofOfEventChallengeResponse, + SimulatedProofOfEventChallengeResponse } from '@airgap/beacon-types' /** @@ -27,6 +28,11 @@ export type PermissionResponseOutput = PermissionResponse & { */ export type ProofOfEventChallengeResponseOutput = ProofOfEventChallengeResponse +/** + * @category DApp + */ +export type SimulatedProofOfEventChallengeResponseOutput = SimulatedProofOfEventChallengeResponse + /** * @category DApp */ @@ -55,3 +61,4 @@ export type BeaconResponseOutputMessage = // | EncryptPayloadResponseOutput | BroadcastResponseOutput | ProofOfEventChallengeResponseOutput + | SimulatedProofOfEventChallengeResponseOutput diff --git a/packages/beacon-types/src/types/beacon/messages/ProofOfEventChallengeRecordedRequest.ts b/packages/beacon-types/src/types/beacon/messages/ProofOfEventChallengeRecordedRequest.ts deleted file mode 100644 index 4a99f3763..000000000 --- a/packages/beacon-types/src/types/beacon/messages/ProofOfEventChallengeRecordedRequest.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types' - -export interface ProofOfEventChallengeRecordedRequest extends BeaconBaseMessage { - type: BeaconMessageType.ProofOfEventChallengeRecorded - dAppChallengeId: string // dApp decided challenge identifier - success: boolean // Indicating whether the challenge is recorded successfully - errorMessage: string // Optional, error message incase of failure -} diff --git a/packages/beacon-types/src/types/beacon/messages/ProofOfEventChallengeRequest.ts b/packages/beacon-types/src/types/beacon/messages/ProofOfEventChallengeRequest.ts index 8fbf82ea1..1b929b112 100644 --- a/packages/beacon-types/src/types/beacon/messages/ProofOfEventChallengeRequest.ts +++ b/packages/beacon-types/src/types/beacon/messages/ProofOfEventChallengeRequest.ts @@ -4,5 +4,4 @@ export interface ProofOfEventChallengeRequest extends BeaconBaseMessage { type: BeaconMessageType.ProofOfEventChallengeRequest payload: string // The payload that will be emitted. contractAddress: string // The contract address of the abstracted account - dAppChallengeId: string // dApp decided challenge identifier } diff --git a/packages/beacon-types/src/types/beacon/messages/ProofOfEventChallengeResponse.ts b/packages/beacon-types/src/types/beacon/messages/ProofOfEventChallengeResponse.ts index 68ea89221..1d040b091 100644 --- a/packages/beacon-types/src/types/beacon/messages/ProofOfEventChallengeResponse.ts +++ b/packages/beacon-types/src/types/beacon/messages/ProofOfEventChallengeResponse.ts @@ -2,6 +2,6 @@ import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types' export interface ProofOfEventChallengeResponse extends BeaconBaseMessage { type: BeaconMessageType.ProofOfEventChallengeResponse - dAppChallengeId: string // dApp decided challenge identifier + payloadHash: string isAccepted: boolean // Indicating whether the challenge is accepted } diff --git a/packages/beacon-types/src/types/beacon/messages/SimulatedProofOfEventChallengeRequest.ts b/packages/beacon-types/src/types/beacon/messages/SimulatedProofOfEventChallengeRequest.ts new file mode 100644 index 000000000..ac0fd9ddc --- /dev/null +++ b/packages/beacon-types/src/types/beacon/messages/SimulatedProofOfEventChallengeRequest.ts @@ -0,0 +1,7 @@ +import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types' + +export interface SimulatedProofOfEventChallengeRequest extends BeaconBaseMessage { + type: BeaconMessageType.SimulatedProofOfEventChallengeRequest + payload: string // The payload that will be emitted. + contractAddress: string // The contract address of the abstracted account +} diff --git a/packages/beacon-types/src/types/beacon/messages/SimulatedProofOfEventChallengeResponse.ts b/packages/beacon-types/src/types/beacon/messages/SimulatedProofOfEventChallengeResponse.ts new file mode 100644 index 000000000..cea15f7e9 --- /dev/null +++ b/packages/beacon-types/src/types/beacon/messages/SimulatedProofOfEventChallengeResponse.ts @@ -0,0 +1,7 @@ +import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types' + +export interface SimulatedProofOfEventChallengeResponse extends BeaconBaseMessage { + type: BeaconMessageType.SimulatedProofOfEventChallengeResponse + operationsList: string // Base64 encoded json + errorMessage: string +} diff --git a/packages/beacon-types/src/types/storage/StorageKey.ts b/packages/beacon-types/src/types/storage/StorageKey.ts index c16cd1377..183076188 100644 --- a/packages/beacon-types/src/types/storage/StorageKey.ts +++ b/packages/beacon-types/src/types/storage/StorageKey.ts @@ -20,12 +20,14 @@ export enum StorageKey { MATRIX_PEER_ROOM_IDS = 'beacon:matrix-peer-rooms', MATRIX_SELECTED_NODE = 'beacon:matrix-selected-node', MULTI_NODE_SETUP_DONE = 'beacon:multi-node-setup', - WC_2_CORE_PAIRING = 'wc@2:core:0.3//pairing', - WC_2_CLIENT_SESSION = 'wc@2:client:0.3//session', - WC_2_CORE_KEYCHAIN = 'wc@2:core:0.3//keychain', - WC_2_CORE_MESSAGES = 'wc@2:core:0.3//messages', - WC_2_CLIENT_PROPOSAL = 'wc@2:client:0.3//proposal', - WC_2_CORE_SUBSCRIPTION = 'wc@2:core:0.3//subscription', - WC_2_CORE_HISTORY = 'wc@2:core:0.3//history', - WC_2_CORE_EXPIRER = 'wc@2:core:0.3//expirer' + USER_ID = 'beacon:user-id', + ENABLE_METRICS = 'beacon:enable_metrics', + WC_2_CORE_PAIRING = 'wc@2:core:0.3:pairing', + WC_2_CLIENT_SESSION = 'wc@2:client:0.3:session', + WC_2_CORE_KEYCHAIN = 'wc@2:core:0.3:keychain', + WC_2_CORE_MESSAGES = 'wc@2:core:0.3:messages', + WC_2_CLIENT_PROPOSAL = 'wc@2:client:0.3:proposal', + WC_2_CORE_SUBSCRIPTION = 'wc@2:core:0.3:subscription', + WC_2_CORE_HISTORY = 'wc@2:core:0.3:history', + WC_2_CORE_EXPIRER = 'wc@2:core:0.3:expirer' } diff --git a/packages/beacon-types/src/types/storage/StorageKeyReturnDefaults.ts b/packages/beacon-types/src/types/storage/StorageKeyReturnDefaults.ts index 2c60dc048..6a79a409c 100644 --- a/packages/beacon-types/src/types/storage/StorageKeyReturnDefaults.ts +++ b/packages/beacon-types/src/types/storage/StorageKeyReturnDefaults.ts @@ -28,6 +28,8 @@ export const defaultValues: StorageKeyReturnDefaults = { [StorageKey.MATRIX_SELECTED_NODE]: undefined, [StorageKey.MULTI_NODE_SETUP_DONE]: undefined, [StorageKey.WC_2_CLIENT_SESSION]: undefined, + [StorageKey.USER_ID]: undefined, + [StorageKey.ENABLE_METRICS]: undefined, [StorageKey.WC_2_CORE_PAIRING]: undefined, [StorageKey.WC_2_CORE_KEYCHAIN]: undefined, [StorageKey.WC_2_CORE_MESSAGES]: undefined, diff --git a/packages/beacon-types/src/types/storage/StorageKeyReturnType.ts b/packages/beacon-types/src/types/storage/StorageKeyReturnType.ts index 8294500e1..54e59ad42 100644 --- a/packages/beacon-types/src/types/storage/StorageKeyReturnType.ts +++ b/packages/beacon-types/src/types/storage/StorageKeyReturnType.ts @@ -23,7 +23,15 @@ export interface StorageKeyReturnType { [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP]: PostMessagePairingRequest[] [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET]: ExtendedPostMessagePairingResponse[] [StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP]: ExtendedWalletConnectPairingResponse[] - [StorageKey.LAST_SELECTED_WALLET]: string | undefined + [StorageKey.LAST_SELECTED_WALLET]: + | { + key: string + name: string + type: 'extension' | 'mobile' | 'web' | 'desktop' + icon: string + url?: string + } + | undefined [StorageKey.ACCOUNTS]: AccountInfo[] [StorageKey.ACTIVE_ACCOUNT]: AccountIdentifier | undefined [StorageKey.PUSH_TOKENS]: PushToken[] @@ -39,6 +47,8 @@ export interface StorageKeyReturnType { [StorageKey.MATRIX_PEER_ROOM_IDS]: { [key: string]: string | undefined } [StorageKey.MATRIX_SELECTED_NODE]: string | undefined [StorageKey.MULTI_NODE_SETUP_DONE]: boolean | undefined + [StorageKey.USER_ID]: string | undefined + [StorageKey.ENABLE_METRICS]: boolean | undefined [StorageKey.WC_2_CLIENT_SESSION]: string | undefined [StorageKey.WC_2_CORE_PAIRING]: string | undefined [StorageKey.WC_2_CORE_KEYCHAIN]: string | undefined diff --git a/packages/beacon-types/src/types/tezos/InlinedAttestation.ts b/packages/beacon-types/src/types/tezos/InlinedAttestation.ts new file mode 100644 index 000000000..2aa9d3503 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/InlinedAttestation.ts @@ -0,0 +1,17 @@ +import { TezosOperationType } from './OperationTypes' + +export interface InlinedAttestation { + branch: string + operations: InlinedAttestationContents + signature?: string +} + +export interface InlinedAttestationContents { + kind: InlinedAttestationKindEnum + slot?: number + round?: number + block_payload_hash?: string + level: number +} + +export type InlinedAttestationKindEnum = TezosOperationType.ATTESTATION diff --git a/packages/beacon-types/src/types/tezos/InlinedPreattestation.ts b/packages/beacon-types/src/types/tezos/InlinedPreattestation.ts new file mode 100644 index 000000000..6154fa35f --- /dev/null +++ b/packages/beacon-types/src/types/tezos/InlinedPreattestation.ts @@ -0,0 +1,15 @@ +import { TezosOperationType } from './OperationTypes' + +export interface InlinedPreattestation { + branch: string + operations: InlinedPreattestationContents + signature?: string +} + +export interface InlinedPreattestationContents { + kind: TezosOperationType.PREATTESTATION + slot: number + level: number + round: number + block_payload_hash: string +} diff --git a/packages/beacon-types/src/types/tezos/OperationTypes.ts b/packages/beacon-types/src/types/tezos/OperationTypes.ts index 41e8168dc..ab14b9258 100644 --- a/packages/beacon-types/src/types/tezos/OperationTypes.ts +++ b/packages/beacon-types/src/types/tezos/OperationTypes.ts @@ -3,15 +3,42 @@ * @category Tezos */ export enum TezosOperationType { + ORIGINATION = 'origination', + DELEGATION = 'delegation', + REVEAL = 'reveal', + TRANSACTION = 'transaction', + ACTIVATE_ACCOUNT = 'activate_account', ENDORSEMENT = 'endorsement', SEED_NONCE_REVELATION = 'seed_nonce_revelation', DOUBLE_ENDORSEMENT_EVIDENCE = 'double_endorsement_evidence', DOUBLE_BAKING_EVIDENCE = 'double_baking_evidence', - ACTIVATE_ACCOUNT = 'activate_account', PROPOSALS = 'proposals', BALLOT = 'ballot', - REVEAL = 'reveal', - TRANSACTION = 'transaction', - ORIGINATION = 'origination', - DELEGATION = 'delegation' + // --- + ATTESTATION = 'attestation', + PREATTESTATION = 'preattestation', + PREENDORSEMENT = 'preendorsement', + SET_DEPOSITS_LIMIT = 'set_deposits_limit', + DOUBLE_PREATTESTATION_EVIDENCE = 'double_preattestation_evidence', + DOUBLE_PREENDORSEMENT_EVIDENCE = 'double_preendorsement_evidence', + ATTESTATION_WITH_SLOT = 'attestation_with_slot', + ENDORSEMENT_WITH_SLOT = 'endorsement_with_slot', + DOUBLE_ATTESTATION_EVIDENCE = 'double_attestation_evidence', + FAILING_NOOP = 'failing_noop', + REGISTER_GLOBAL_CONSTANT = 'register_global_constant', + TRANSFER_TICKET = 'transfer_ticket', + INCREASE_PAID_STORAGE = 'increase_paid_storage', + UPDATE_CONSENSUS_KEY = 'update_consensus_key', + DRAIN_DELEGATE = 'drain_delegate', + VDF_REVELATION = 'vdf_revelation', + EVENT = 'event', + TICKET_UPDATES = 'ticket_updates', + SMART_ROLLUP_ORIGINATE = 'smart_rollup_originate', + SMART_ROLLUP_ADD_MESSAGES = 'smart_rollup_add_messages', + SMART_ROLLUP_EXECUTE_OUTBOX_MESSAGE = 'smart_rollup_execute_outbox_message', + SMART_ROLLUP_PUBLISH = 'smart_rollup_publish', + SMART_ROLLUP_CEMENT = 'smart_rollup_cement', + SMART_ROLLUP_RECOVER_BOND = 'smart_rollup_recover_bond', + SMART_ROLLUP_REFUTE = 'smart_rollup_refute', + SMART_ROLLUP_TIMEOUT = 'smart_rollup_timeout' } diff --git a/packages/beacon-types/src/types/tezos/PartialTezosOperation.ts b/packages/beacon-types/src/types/tezos/PartialTezosOperation.ts index c723c4718..23fe77906 100644 --- a/packages/beacon-types/src/types/tezos/PartialTezosOperation.ts +++ b/packages/beacon-types/src/types/tezos/PartialTezosOperation.ts @@ -1,4 +1,28 @@ -import { Optional } from '@airgap/beacon-types' +import { + Optional, + TezosAttestationOperation, + TezosAttestationWithSlotOperation, + TezosDoubleAttestationEvidenceOperation, + TezosDoublePreAttestationEvidenceOperation, + TezosDoublePreEndorsementEvidenceOperation, + TezosDrainDelegateOperation, + TezosEndorsementWithSlotOperation, + TezosFailingNoopOperation, + TezosIncreasePaidStorageOperation, + TezosPreAttestationOperation, + TezosRegisterGlobalConstantOperation, + TezosSetDepositsLimitOperation, + TezosSmartRollupAddMessagesOperation, + TezosSmartRollupCementOperation, + TezosSmartRollupExecuteOutboxMessageOperation, + TezosSmartRollupOriginateOperation, + TezosSmartRollupPublishOperation, + TezosSmartRollupRecoverBondOperation, + TezosSmartRollupRefuteOperation, + TezosTransferTicketOperation, + TezosUpdateConsensusKeyOperation, + TezosVdfRevelationOperation +} from '@airgap/beacon-types' import { TezosActivateAccountOperation } from './operations/ActivateAccount' import { TezosBallotOperation } from './operations/Ballot' import { TezosDelegationOperation } from './operations/Delegation' @@ -9,6 +33,7 @@ import { TezosProposalOperation } from './operations/Proposal' import { TezosRevealOperation } from './operations/Reveal' import { TezosSeedNonceRevelationOperation } from './operations/SeedNonceRevelation' import { TezosTransactionOperation } from './operations/Transaction' +import { TezosPreEndorsementOperation } from './operations/PreEndorsement' /** * @publicapi @@ -42,6 +67,110 @@ export type PartialTezosTransactionOperation = Optional< TezosTransactionOperation, omittedProperties > +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosSetDepositsLimitOperation = Optional< + TezosSetDepositsLimitOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosRegisterGlobalConstantOperation = Optional< + TezosRegisterGlobalConstantOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosTransferTicketOperation = Optional< + TezosTransferTicketOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosIncreasePaidStorageOperation = Optional< + TezosIncreasePaidStorageOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosUpdateConsensusKeyOperation = Optional< + TezosUpdateConsensusKeyOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosSmartRollupOriginateOperation = Optional< + TezosSmartRollupOriginateOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosSmartRollupAddMessagesOperation = Optional< + TezosSmartRollupAddMessagesOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosSmartRollupExecuteOutboxMessageOperation = Optional< + TezosSmartRollupExecuteOutboxMessageOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosSmartRollupPublishOperation = Optional< + TezosSmartRollupPublishOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosSmartRollupCementOperation = Optional< + TezosSmartRollupCementOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosSmartRollupRecoverBondOperation = Optional< + TezosSmartRollupRecoverBondOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosSmartRollupRefuteOperation = Optional< + TezosSmartRollupRefuteOperation, + omittedProperties +> +/** + * @internalapi + * @category Tezos + */ +export type PartialTezosSmartRollupTimeoutOperation = Optional< + TezosSmartRollupRefuteOperation, + omittedProperties +> /** * @publicapi @@ -58,3 +187,27 @@ export type PartialTezosOperation = | PartialTezosRevealOperation | TezosSeedNonceRevelationOperation | PartialTezosTransactionOperation + | TezosAttestationOperation + | TezosPreAttestationOperation + | TezosPreEndorsementOperation + | PartialTezosSetDepositsLimitOperation + | TezosDoublePreAttestationEvidenceOperation + | TezosDoublePreEndorsementEvidenceOperation + | TezosAttestationWithSlotOperation + | TezosEndorsementWithSlotOperation + | TezosDoubleAttestationEvidenceOperation + | TezosFailingNoopOperation + | PartialTezosRegisterGlobalConstantOperation + | PartialTezosTransferTicketOperation + | PartialTezosIncreasePaidStorageOperation + | PartialTezosUpdateConsensusKeyOperation + | TezosDrainDelegateOperation + | TezosVdfRevelationOperation + | PartialTezosSmartRollupOriginateOperation + | PartialTezosSmartRollupAddMessagesOperation + | PartialTezosSmartRollupExecuteOutboxMessageOperation + | PartialTezosSmartRollupPublishOperation + | PartialTezosSmartRollupCementOperation + | PartialTezosSmartRollupRecoverBondOperation + | PartialTezosSmartRollupRefuteOperation + | PartialTezosSmartRollupTimeoutOperation diff --git a/packages/beacon-types/src/types/tezos/common.ts b/packages/beacon-types/src/types/tezos/common.ts new file mode 100644 index 000000000..d43add9d3 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/common.ts @@ -0,0 +1,160 @@ +import { MichelineMichelsonV1Expression } from './MichelineMichelsonV1Expression' +import { TezosOperationType } from './OperationTypes' + +export type MetadataBalanceUpdatesKindEnum = + | 'contract' + | 'freezer' + | 'accumulator' + | 'burned' + | 'commitment' + | 'minted' + | 'staking' + +export type MetadataBalanceUpdatesOriginEnum = + | 'block' + | 'migration' + | 'subsidy' + | 'simulation' + | 'delayed_operation' + +export type MetadataBalanceUpdatesCategoryEnum = METADATA_BALANCE_UPDATES_CATEGORY + +export enum METADATA_BALANCE_UPDATES_CATEGORY { + BAKING_BONUSES = 'baking bonuses', + BAKING_REWARDS = 'baking rewards', + BLOCK_FEES = 'block fees', + BONDS = 'bonds', + BOOTSTRAP = 'bootstrap', + BURNED = 'burned', + COMMITMENT = 'commitment', + DELEGATE_DENOMINATOR = 'delegate_denominator', + DELEGATOR_NUMERATOR = 'delegator_numerator', + DEPOSITS = 'deposits', + ENDORSING_REWARDS = 'endorsing rewards', + INVOICE = 'invoice', + LOST_ENDORSING_REWARDS = 'lost endorsing rewards', + MINTED = 'minted', + NONCE_REVELATION_REWARDS = 'nonce revelation rewards', + PUNISHMENTS = 'punishments', + SMART_ROLLUP_REFUTATION_PUNISHMENTS = 'smart_rollup_refutation_punishments', + SMART_ROLLUP_REFUTATION_REWARDS = 'smart_rollup_refutation_rewards', + STORAGE_FEES = 'storage fees', + SUBSIDY = 'subsidy', + UNSTAKED_DEPOSITS = 'unstaked_deposits' +} + +export type FrozenStaker = SingleStaker | SharedStaker | Baker + +export type Staker = SingleStaker | SharedStaker + +export interface SingleStaker { + contract: string + delegate: string +} + +export interface SharedStaker { + delegate: string +} + +export interface Baker { + baker: string +} + +export type BondId = { + smart_rollup: string +} + +export type InternalOperationResultKindEnum = + | TezosOperationType.TRANSACTION + | TezosOperationType.ORIGINATION + | TezosOperationType.DELEGATION + | TezosOperationType.EVENT + +export interface TransactionOperationParameter { + entrypoint: string + value: MichelineMichelsonV1Expression +} + +export interface ScriptedContracts { + code: MichelineMichelsonV1Expression[] + storage: MichelineMichelsonV1Expression +} + +export type ContractBigMapDiff = ContractBigMapDiffItem[] + +export interface ContractBigMapDiffItem { + key_hash?: string + key?: MichelineMichelsonV1Expression + value?: MichelineMichelsonV1Expression + action?: DiffActionEnum + big_map?: string + source_big_map?: string + destination_big_map?: string + key_type?: MichelineMichelsonV1Expression + value_type?: MichelineMichelsonV1Expression +} + +export type DiffActionEnum = 'update' | 'remove' | 'copy' | 'alloc' +export type LazyStorageDiff = LazyStorageDiffBigMap | LazyStorageDiffSaplingState + +export interface LazyStorageDiffBigMap { + kind: 'big_map' + id: string + diff: LazyStorageDiffBigMapItems +} + +export interface LazyStorageDiffSaplingState { + kind: 'sapling_state' + id: string + diff: LazyStorageDiffSaplingStateItems +} + +export interface LazyStorageDiffBigMapItems { + action: DiffActionEnum + updates?: LazyStorageDiffUpdatesBigMap[] + source?: string + key_type?: MichelineMichelsonV1Expression + value_type?: MichelineMichelsonV1Expression +} + +export interface LazyStorageDiffUpdatesBigMap { + key_hash: string + key: MichelineMichelsonV1Expression + value?: MichelineMichelsonV1Expression +} + +export interface LazyStorageDiffSaplingStateItems { + action: DiffActionEnum + updates?: LazyStorageDiffUpdatesSaplingState + source?: string + memo_size?: number +} + +export interface LazyStorageDiffUpdatesSaplingState { + commitments_and_ciphertexts: CommitmentsAndCiphertexts[] + nullifiers: string[] +} + +export type CommitmentsAndCiphertexts = [string, SaplingTransactionCiphertext] + +export interface SaplingTransactionCiphertext { + cv: string + epk: string + payload_enc: string + nonce_enc: string + payload_out: string + nonce_out: string +} + +export enum PvmKind { + WASM2 = 'wasm_2_0_0', + ARITH = 'arith', + RISCV = 'riscv' +} + +export interface SmartRollupPublishCommitment { + compressed_state: string + inbox_level: number + predecessor: string + number_of_ticks: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/Attestation.ts b/packages/beacon-types/src/types/tezos/operations/Attestation.ts new file mode 100644 index 000000000..98656a4e4 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/Attestation.ts @@ -0,0 +1,10 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosAttestationOperation extends TezosBaseOperation { + kind: TezosOperationType.ATTESTATION + level: number + slot?: number + round?: number + block_payload_hash?: string +} \ No newline at end of file diff --git a/packages/beacon-types/src/types/tezos/operations/AttestationWithSlot.ts b/packages/beacon-types/src/types/tezos/operations/AttestationWithSlot.ts new file mode 100644 index 000000000..e65768d6a --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/AttestationWithSlot.ts @@ -0,0 +1,9 @@ +import { InlinedAttestation } from '../InlinedAttestation' +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosAttestationWithSlotOperation extends TezosBaseOperation { + kind: TezosOperationType.ATTESTATION_WITH_SLOT + endorsement: InlinedAttestation + slot: number +} \ No newline at end of file diff --git a/packages/beacon-types/src/types/tezos/operations/DoubleAttestationEvidence.ts b/packages/beacon-types/src/types/tezos/operations/DoubleAttestationEvidence.ts new file mode 100644 index 000000000..0ca8dfe21 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/DoubleAttestationEvidence.ts @@ -0,0 +1,10 @@ +import { InlinedAttestation } from '../InlinedAttestation' +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosDoubleAttestationEvidenceOperation extends TezosBaseOperation { + kind: TezosOperationType.DOUBLE_ATTESTATION_EVIDENCE + op1: InlinedAttestation + op2: InlinedAttestation + slot?: number +} diff --git a/packages/beacon-types/src/types/tezos/operations/DoubleEndorsementEvidence.ts b/packages/beacon-types/src/types/tezos/operations/DoubleEndorsementEvidence.ts index 07c83b4c3..ebfc3a6d1 100644 --- a/packages/beacon-types/src/types/tezos/operations/DoubleEndorsementEvidence.ts +++ b/packages/beacon-types/src/types/tezos/operations/DoubleEndorsementEvidence.ts @@ -6,7 +6,7 @@ export interface InlinedEndorsement { signature?: string } -export interface InlinedEndorsementContents { +export interface InlinedEndorsementContents extends TezosBaseOperation { kind: TezosOperationType.ENDORSEMENT level: string } diff --git a/packages/beacon-types/src/types/tezos/operations/DoublePreAttestationEvidence.ts b/packages/beacon-types/src/types/tezos/operations/DoublePreAttestationEvidence.ts new file mode 100644 index 000000000..643373aa7 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/DoublePreAttestationEvidence.ts @@ -0,0 +1,9 @@ +import { InlinedPreattestation } from '../InlinedPreattestation' +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosDoublePreAttestationEvidenceOperation extends TezosBaseOperation { + kind: TezosOperationType.DOUBLE_PREATTESTATION_EVIDENCE + op1: InlinedPreattestation + op2: InlinedPreattestation +} \ No newline at end of file diff --git a/packages/beacon-types/src/types/tezos/operations/DoublePreEndorsementEvidence.ts b/packages/beacon-types/src/types/tezos/operations/DoublePreEndorsementEvidence.ts new file mode 100644 index 000000000..9ccf955e7 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/DoublePreEndorsementEvidence.ts @@ -0,0 +1,21 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosDoublePreEndorsementEvidenceOperation extends TezosBaseOperation { + kind: TezosOperationType.DOUBLE_PREENDORSEMENT_EVIDENCE + op1: InlinedPreEndorsement + op2: InlinedPreEndorsement +} +export interface InlinedPreEndorsement { + branch: string + operations: InlinedPreEndorsementContents + signature?: string +} + +export interface InlinedPreEndorsementContents { + kind: TezosOperationType.PREENDORSEMENT + slot: number + level: number + round: number + block_payload_hash: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/DrainDelegate.ts b/packages/beacon-types/src/types/tezos/operations/DrainDelegate.ts new file mode 100644 index 000000000..e004eb4cc --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/DrainDelegate.ts @@ -0,0 +1,9 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosDrainDelegateOperation extends TezosBaseOperation { + kind: TezosOperationType.DRAIN_DELEGATE + consensus_key: string + delegate: string + destination: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/EndorsementWithSlot.ts b/packages/beacon-types/src/types/tezos/operations/EndorsementWithSlot.ts new file mode 100644 index 000000000..89a01ee4d --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/EndorsementWithSlot.ts @@ -0,0 +1,9 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' +import { InlinedEndorsement } from './DoubleEndorsementEvidence' + +export interface TezosEndorsementWithSlotOperation extends TezosBaseOperation { + kind: TezosOperationType.ENDORSEMENT_WITH_SLOT + endorsement: InlinedEndorsement + slot: number +} \ No newline at end of file diff --git a/packages/beacon-types/src/types/tezos/operations/FailingNoop.ts b/packages/beacon-types/src/types/tezos/operations/FailingNoop.ts new file mode 100644 index 000000000..3e2613c68 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/FailingNoop.ts @@ -0,0 +1,7 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosFailingNoopOperation extends TezosBaseOperation { + kind: TezosOperationType.FAILING_NOOP + arbitrary: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/IncreasePaidStorage.ts b/packages/beacon-types/src/types/tezos/operations/IncreasePaidStorage.ts new file mode 100644 index 000000000..99af85902 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/IncreasePaidStorage.ts @@ -0,0 +1,13 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosIncreasePaidStorageOperation extends TezosBaseOperation { + kind: TezosOperationType.INCREASE_PAID_STORAGE + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + amount: string + destination: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/PreAttestation.ts b/packages/beacon-types/src/types/tezos/operations/PreAttestation.ts new file mode 100644 index 000000000..67f2d2843 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/PreAttestation.ts @@ -0,0 +1,10 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosPreAttestationOperation extends TezosBaseOperation { + kind: TezosOperationType.PREATTESTATION + slot: number + level: number + round: number + block_payload_hash: string +} \ No newline at end of file diff --git a/packages/beacon-types/src/types/tezos/operations/PreEndorsement.ts b/packages/beacon-types/src/types/tezos/operations/PreEndorsement.ts new file mode 100644 index 000000000..7d045ecc1 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/PreEndorsement.ts @@ -0,0 +1,10 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosPreEndorsementOperation extends TezosBaseOperation { + kind: TezosOperationType.PREENDORSEMENT + slot: number + level: number + round: number + block_payload_hash: string +} \ No newline at end of file diff --git a/packages/beacon-types/src/types/tezos/operations/RegisterGlobalConstant.ts b/packages/beacon-types/src/types/tezos/operations/RegisterGlobalConstant.ts new file mode 100644 index 000000000..ec68dad3b --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/RegisterGlobalConstant.ts @@ -0,0 +1,13 @@ +import { MichelineMichelsonV1Expression } from '../MichelineMichelsonV1Expression' +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosRegisterGlobalConstantOperation extends TezosBaseOperation { + kind: TezosOperationType.REGISTER_GLOBAL_CONSTANT + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + value: MichelineMichelsonV1Expression +} diff --git a/packages/beacon-types/src/types/tezos/operations/SetDepositsLimit.ts b/packages/beacon-types/src/types/tezos/operations/SetDepositsLimit.ts new file mode 100644 index 000000000..66af8aa7e --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/SetDepositsLimit.ts @@ -0,0 +1,12 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosSetDepositsLimitOperation extends TezosBaseOperation { + kind: TezosOperationType.SET_DEPOSITS_LIMIT + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + limit?: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/SmartRollupAddMessages.ts b/packages/beacon-types/src/types/tezos/operations/SmartRollupAddMessages.ts new file mode 100644 index 000000000..cc72e2b60 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/SmartRollupAddMessages.ts @@ -0,0 +1,12 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosSmartRollupAddMessagesOperation extends TezosBaseOperation { + kind: TezosOperationType.SMART_ROLLUP_ADD_MESSAGES + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + message: string[] +} diff --git a/packages/beacon-types/src/types/tezos/operations/SmartRollupCement.ts b/packages/beacon-types/src/types/tezos/operations/SmartRollupCement.ts new file mode 100644 index 000000000..6df4f3ef5 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/SmartRollupCement.ts @@ -0,0 +1,12 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosSmartRollupCementOperation extends TezosBaseOperation { + kind: TezosOperationType.SMART_ROLLUP_CEMENT + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + rollup: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/SmartRollupExecuteOutboxMessage.ts b/packages/beacon-types/src/types/tezos/operations/SmartRollupExecuteOutboxMessage.ts new file mode 100644 index 000000000..4e0a437e1 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/SmartRollupExecuteOutboxMessage.ts @@ -0,0 +1,14 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosSmartRollupExecuteOutboxMessageOperation extends TezosBaseOperation { + kind: TezosOperationType.SMART_ROLLUP_EXECUTE_OUTBOX_MESSAGE + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + rollup: string + cemented_commitment: string + output_proof: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/SmartRollupOriginate.ts b/packages/beacon-types/src/types/tezos/operations/SmartRollupOriginate.ts new file mode 100644 index 000000000..d6fe2a74f --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/SmartRollupOriginate.ts @@ -0,0 +1,19 @@ +import { MichelineMichelsonV1Expression } from '../MichelineMichelsonV1Expression' +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' +import { + PvmKind, +} from '../common' + +export interface TezosSmartRollupOriginateOperation extends TezosBaseOperation { + kind: TezosOperationType.SMART_ROLLUP_ORIGINATE + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + pvm_kind: PvmKind + kernel: string + parameters_ty: MichelineMichelsonV1Expression + whitelist?: string[] +} diff --git a/packages/beacon-types/src/types/tezos/operations/SmartRollupPublish.ts b/packages/beacon-types/src/types/tezos/operations/SmartRollupPublish.ts new file mode 100644 index 000000000..15aeab4dd --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/SmartRollupPublish.ts @@ -0,0 +1,16 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' +import { + SmartRollupPublishCommitment, +} from '../common' + +export interface TezosSmartRollupPublishOperation extends TezosBaseOperation { + kind: TezosOperationType.SMART_ROLLUP_PUBLISH + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + rollup: string + commitment: SmartRollupPublishCommitment +} diff --git a/packages/beacon-types/src/types/tezos/operations/SmartRollupRecoverBond.ts b/packages/beacon-types/src/types/tezos/operations/SmartRollupRecoverBond.ts new file mode 100644 index 000000000..1c503d8b2 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/SmartRollupRecoverBond.ts @@ -0,0 +1,13 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosSmartRollupRecoverBondOperation extends TezosBaseOperation { + kind: TezosOperationType.SMART_ROLLUP_RECOVER_BOND + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + rollup: string + staker: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/SmartRollupRefute.ts b/packages/beacon-types/src/types/tezos/operations/SmartRollupRefute.ts new file mode 100644 index 000000000..f873ab8d5 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/SmartRollupRefute.ts @@ -0,0 +1,139 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosSmartRollupRefuteOperation extends TezosBaseOperation { + kind: TezosOperationType.SMART_ROLLUP_REFUTE + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + rollup: string + opponent: string + refutation: SmartRollupRefutation +} + +export type SmartRollupRefutation = SmartRollupRefutationStart | SmartRollupRefutationMove + +export interface SmartRollupRefutationStart { + refutation_kind: SmartRollupRefutationOptions.START + player_commitment_hash: string + opponent_commitment_hash: string +} + +export interface SmartRollupRefutationMove { + refutation_kind: SmartRollupRefutationOptions.MOVE + choice: string + step: SmartRollupRefutationMoveStep +} + +export enum SmartRollupRefutationOptions { + START = 'start', + MOVE = 'move' +} + +export type SmartRollupRefutationMoveStep = + | SmartRollupRefutationMoveStepDissection[] + | SmartRollupRefutationMoveStepProof + +export type SmartRollupGameStatus = + | SmartRollupRefuteGameStatusOptions.ONGOING + | SmartRollupRefuteGameStatusEnded + +export interface SmartRollupRefutationMoveStepDissection { + state?: string + tick: number +} + +export interface SmartRollupRefutationMoveStepProof { + pvm_step: string + input_proof?: SmartRollupRefutationMoveInputProof +} + +export enum SmartRollupRefuteGameStatusOptions { + ONGOING = 'ongoing', + ENDED = 'ended' +} + +export interface SmartRollupRefuteGameStatusEnded { + result: SmartRollupRefuteGameStatusResult +} + +export type SmartRollupRefutationMoveInputProof = + | SmartRollupRefutationMoveInputProofInbox + | SmartRollupRefutationMoveInputProofReveal + | SmartRollupRefutationMoveInputProofFirstInput + +export type SmartRollupRefuteGameStatusResult = + | SmartRollupRefuteGameEndedResultLoser + | SmartRollupRefuteGameEndedResultDraw + +export interface SmartRollupRefutationMoveInputProofInbox { + input_proof_kind: SmartRollupInputProofKind.INBOX_PROOF + level: number + message_counter: string + serialized_proof: string +} + +export interface SmartRollupRefutationMoveInputProofReveal { + input_proof_kind: SmartRollupInputProofKind.REVEAL_PROOF + reveal_proof: SmartRollupRefuteRevealProofOptions +} + +export interface SmartRollupRefutationMoveInputProofFirstInput { + input_proof_kind: SmartRollupInputProofKind.FIRST_INPUT +} + +export interface SmartRollupRefuteGameEndedResultLoser { + kind: SmartRollupRefuteGameEndedPlayerOutcomes.LOSER + reason: SmartRollupRefuteGameEndedReason + player: string +} + +export interface SmartRollupRefuteGameEndedResultDraw { + kind: SmartRollupRefuteGameEndedPlayerOutcomes.DRAW +} + +export enum SmartRollupInputProofKind { + INBOX_PROOF = 'inbox_proof', + REVEAL_PROOF = 'reveal_proof', + FIRST_INPUT = 'first_input' +} + +export type SmartRollupRefuteRevealProofOptions = + | SmartRollupRefuteRevealProofRaw + | SmartRollupRefuteRevealProofMetadata + | SmartRollupRefuteRevealProofDalPage + +export enum SmartRollupRefuteGameEndedPlayerOutcomes { + LOSER = 'loser', + DRAW = 'draw' +} + +export enum SmartRollupRefuteGameEndedReason { + CONFLICT_RESOLVED = 'conflict_resolved', + TIMEOUT = 'timeout' +} + +export enum SmartRollupRefuteRevealProofKind { + RAW_DATA_PROOF = 'raw_data_proof', + METADATA_PROOF = 'metadata_proof', + DAL_PAGE_PROOF = 'dal_page_proof' +} + +export interface SmartRollupRefuteRevealProofRaw { + reveal_proof_kind: SmartRollupRefuteRevealProofKind.RAW_DATA_PROOF + raw_data: string +} +export interface SmartRollupRefuteRevealProofMetadata { + reveal_proof_kind: SmartRollupRefuteRevealProofKind.METADATA_PROOF +} +export interface SmartRollupRefuteRevealProofDalPage { + reveal_proof_kind: SmartRollupRefuteRevealProofKind.DAL_PAGE_PROOF + dal_page_id: { + published_level: number + slot_index: number + page_index: number + } + dal_proof: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/SmartRollupTimeout.ts b/packages/beacon-types/src/types/tezos/operations/SmartRollupTimeout.ts new file mode 100644 index 000000000..cada059cb --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/SmartRollupTimeout.ts @@ -0,0 +1,18 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosSmartRollupTimeoutOperation extends TezosBaseOperation { + kind: TezosOperationType.SMART_ROLLUP_TIMEOUT + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + rollup: string + stakers: SmartRollupTimeoutStakers +} + +export interface SmartRollupTimeoutStakers { + alice: string + bob: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/TransferTicket.ts b/packages/beacon-types/src/types/tezos/operations/TransferTicket.ts new file mode 100644 index 000000000..e840423dd --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/TransferTicket.ts @@ -0,0 +1,18 @@ +import { MichelineMichelsonV1Expression } from '../MichelineMichelsonV1Expression' +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosTransferTicketOperation extends TezosBaseOperation { + kind: TezosOperationType.TRANSFER_TICKET + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + ticket_contents: MichelineMichelsonV1Expression + ticket_ty: MichelineMichelsonV1Expression + ticket_ticketer: string + ticket_amount: string + destination: string + entrypoint: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/UpdateConsensusKey.ts b/packages/beacon-types/src/types/tezos/operations/UpdateConsensusKey.ts new file mode 100644 index 000000000..6d88f7329 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/UpdateConsensusKey.ts @@ -0,0 +1,12 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosUpdateConsensusKeyOperation extends TezosBaseOperation { + kind: TezosOperationType.UPDATE_CONSENSUS_KEY + source: string + fee: string + counter: string + gas_limit: string + storage_limit: string + pk: string +} diff --git a/packages/beacon-types/src/types/tezos/operations/VdfRevelation.ts b/packages/beacon-types/src/types/tezos/operations/VdfRevelation.ts new file mode 100644 index 000000000..314606e01 --- /dev/null +++ b/packages/beacon-types/src/types/tezos/operations/VdfRevelation.ts @@ -0,0 +1,7 @@ +import { TezosOperationType } from '../OperationTypes' +import { TezosBaseOperation } from '../TezosBaseOperation' + +export interface TezosVdfRevelationOperation extends TezosBaseOperation { + kind: TezosOperationType.VDF_REVELATION + solution: string[] +} diff --git a/packages/beacon-ui/package.json b/packages/beacon-ui/package.json index e7264d6eb..fdb2ecd1c 100644 --- a/packages/beacon-ui/package.json +++ b/packages/beacon-ui/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-ui", - "version": "4.1.2", + "version": "4.2.0", "description": "This package contains the UI part (alerts and toasts) of the Beacon SDK.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,10 +34,11 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-core": "4.1.2", - "@airgap/beacon-transport-postmessage": "4.1.2", - "@airgap/beacon-types": "4.1.2", - "@airgap/beacon-utils": "4.1.2", + "@airgap/beacon-core": "4.2.0", + "@airgap/beacon-transport-postmessage": "4.2.0", + "@airgap/beacon-types": "4.2.0", + "@airgap/beacon-utils": "4.2.0", + "@walletconnect/utils": "2.11.2", "qrcode-svg": "^1.1.0", "solid-js": "^1.7.11" }, diff --git a/packages/beacon-ui/src/components/bug-report-form/index.tsx b/packages/beacon-ui/src/components/bug-report-form/index.tsx new file mode 100644 index 000000000..d328edd0f --- /dev/null +++ b/packages/beacon-ui/src/components/bug-report-form/index.tsx @@ -0,0 +1,248 @@ +import { IndexedDBStorage, SDK_VERSION } from '@airgap/beacon-core' +import { StorageKey } from '@airgap/beacon-types' +import { For, createEffect, createSignal } from 'solid-js' +import styles from './styles.css' +import { currentBrowser, currentOS } from '../../utils/platform' + +interface StorageObject { + [key: string]: string | null +} + +interface BugReportRequest { + userId: string + title: string + sdkVersion: string + description: string + steps: string + os: string + browser: string + localStorage: string + wcStorage: string +} + +const BugReportForm = (props: any) => { + const [title, setTitle] = createSignal('') + const [titleTouched, setTitleTouched] = createSignal(false) + const [titleErrorMsg, setTitleErrorMsg] = createSignal('') + const [description, setDescription] = createSignal('') + const [descriptionTouched, setDescriptionTouched] = createSignal(false) + const [descriptionErrorMsg, setDescriptionErrorMsg] = createSignal('') + const [steps, setSteps] = createSignal('') + const [stepsTouched, setStepsTouched] = createSignal(false) + const [stepsErrorMsg, setStepsErrorMsg] = createSignal('') + const [isFormValid, setFormValid] = createSignal(false) + const [isLoading, setIsLoading] = createSignal(false) + const [didUserAllow, setDidUserAllow] = createSignal(false) + const [status, setStatus] = createSignal<'success' | 'error' | null>(null) + const [showThankYou, setShowThankYou] = createSignal(false) + + const isTitleValid = () => { + const check = title().replace(/ /gi, '').length > 10 + const invalidText = check ? '' : 'The title must be at least 10 characters long.' + setTitleErrorMsg(invalidText) + return check + } + + const isDescriptionValid = () => { + const check = description().replace(/ /gi, '').length >= 30 + const invalidText = check ? '' : 'The description must be at least 30 characters long.' + setDescriptionErrorMsg(invalidText) + return check + } + + const areStepsValid = () => { + const check = steps().replace(/ /gi, '').length >= 30 + const invalidText = check + ? '' + : 'Write at least 30 characters to describe the steps to reproduce.' + setStepsErrorMsg(invalidText) + return check + } + + const indexDBToMetadata = async () => { + const wcResult: StorageObject = {} + const beaconResult: StorageObject = {} + const db = new IndexedDBStorage('beacon', 'bug_report') + + try { + const keys = (await db.getAllKeys()).map((key) => key.toString()) + for (const key of keys) { + if (key.includes('beacon')) { + beaconResult[key] = (await db.get(key as StorageKey)) as string + } else { + wcResult[key] = (await db.get(key as StorageKey)) as string + } + } + } catch (error: any) { + console.error(error.message) + } + + return [beaconResult, wcResult] + } + + const getUserId = (): string => { + if (!localStorage) { + return 'UNKOWN' + } + + const key = Object.keys(localStorage).find((key) => key.includes('user-id')) + + return key && key.length ? localStorage.getItem(key) ?? 'UNKOWN' : 'UNKOWN' + } + + createEffect(() => { + const titleValid = isTitleValid(), + descriptionValid = isDescriptionValid(), + stepsValid = areStepsValid(), + userAllow = didUserAllow() + setFormValid(titleValid && descriptionValid && stepsValid && userAllow) + }) + + const handleSubmit = async (event: Event) => { + event.preventDefault() + setStatus(null) + setShowThankYou(false) + setIsLoading(true) + + const [beaconState, wcState] = await indexDBToMetadata() + + const request: BugReportRequest = { + userId: + beaconState[StorageKey.USER_ID] && beaconState[StorageKey.USER_ID].length + ? beaconState[StorageKey.USER_ID] + : getUserId(), + title: title(), + sdkVersion: SDK_VERSION, + description: description(), + steps: steps(), + os: currentOS(), + browser: currentBrowser(), + localStorage: JSON.stringify(beaconState), + wcStorage: JSON.stringify(wcState) + } + + const options = { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(request) + } + + fetch('https://beacon-backend.prod.gke.papers.tech/bug-report/save', options) + .then((response) => { + if (!response.ok) { + throw new Error('Network response was not ok') + } + setStatus('success') + setTimeout(() => setShowThankYou(true), 600) + return response.json() + }) + .then((data) => { + console.log(data) + }) + .catch((error) => { + console.error('Error while sending report:', error.message) + setStatus('error') + }) + .then(() => { + setIsLoading(false) + setTimeout(() => { + props.onSubmit() + }, 5000) + }) + } + + return ( +
+
+ + { + !titleTouched() && setTitleTouched(true) + setTitle(e.currentTarget.value) + }} + class={`input-style ${titleTouched() && titleErrorMsg().length ? 'invalid' : ''}`} + /> + {titleTouched() && titleErrorMsg().length && ( + + )} +
+
+ +