From eb35bb6d929ea8d66cf0cadf5ec5400b73c93c47 Mon Sep 17 00:00:00 2001 From: Tudor Morar Date: Mon, 5 Aug 2024 13:30:55 +0300 Subject: [PATCH] Gateway adapter (#35) * Work on gateway adapter * Logging in working * Create map * Edit configs * Abstract processing logic * Remove logs * Remove comment * Integrate network config * Cancel some requests * Minor fixes * Adapter for transactions working * Update CHANGELOG --- CHANGELOG.md | 3 + package.json | 3 +- src/config/config.devnet.ts | 1 + src/config/config.gateway.ts | 8 + src/config/config.mainnet.ts | 1 + src/config/config.sovereign.ts | 1 + src/config/config.testnet.ts | 1 + src/index.tsx | 1 + src/localConstants/sdkDapp.ts | 2 + src/types/sdkDapp.types.ts | 1 + .../adapter/gatewayAdapter/gatewayAdapter.ts | 39 +++ .../helpers/apiToGatewayEndpointMap.ts | 34 +++ .../helpers/arraybufferToJSON.ts | 24 ++ .../getGatewayConfigForCurrentRequest.ts | 69 ++++++ .../helpers/getGatewayResponse.ts | 50 ++++ .../helpers/jsonToArrayBuffer.ts | 6 + src/utils/adapter/gatewayAdapter/index.ts | 1 + yarn.lock | 225 +++++++++--------- 18 files changed, 356 insertions(+), 114 deletions(-) create mode 100644 src/config/config.gateway.ts create mode 100644 src/utils/adapter/gatewayAdapter/gatewayAdapter.ts create mode 100644 src/utils/adapter/gatewayAdapter/helpers/apiToGatewayEndpointMap.ts create mode 100644 src/utils/adapter/gatewayAdapter/helpers/arraybufferToJSON.ts create mode 100644 src/utils/adapter/gatewayAdapter/helpers/getGatewayConfigForCurrentRequest.ts create mode 100644 src/utils/adapter/gatewayAdapter/helpers/getGatewayResponse.ts create mode 100644 src/utils/adapter/gatewayAdapter/helpers/jsonToArrayBuffer.ts create mode 100644 src/utils/adapter/gatewayAdapter/index.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index bd39bcd5..994f4600 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- [Added gateway adapter](https://github.com/multiversx/mx-wallet-dapp/pull/35) + + ## [[1.0.1](https://github.com/multiversx/mx-lite-wallet-dapp/pull/34)] - 2024-07-18 - [Removed cross shard rounds from polling interval calculations](https://github.com/multiversx/mx-wallet-dapp/pull/34) diff --git a/package.json b/package.json index dfe785d5..055c08a0 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,12 @@ "@fortawesome/free-solid-svg-icons": "6.5.1", "@fortawesome/react-fontawesome": "0.2.0", "@multiversx/sdk-core": "13.0.1", - "@multiversx/sdk-dapp": "2.34.1", + "@multiversx/sdk-dapp": "^2.35.0-alpha.0", "@multiversx/sdk-dapp-core": "0.0.0-alpha.6", "@multiversx/sdk-dapp-form": "0.10.10", "@multiversx/sdk-js-web-wallet-io": "0.1.0", "@multiversx/sdk-network-providers": "2.2.1", + "@multiversx/sdk-wallet": "4.2.0", "@reduxjs/toolkit": "1.9.1", "axios": "1.6.5", "bignumber.js": "9.0.2", diff --git a/src/config/config.devnet.ts b/src/config/config.devnet.ts index 98389e9b..74ef87d1 100644 --- a/src/config/config.devnet.ts +++ b/src/config/config.devnet.ts @@ -3,5 +3,6 @@ import { EnvironmentsEnum } from 'types'; export * from './sharedConfig'; export const API_URL = 'https://devnet-api.multiversx.com'; +export const GATEWAY_URL = ''; // either GATEWAY_URL or API_URL must be set export const sampleAuthenticatedDomains = [API_URL]; export const environment = EnvironmentsEnum.devnet; diff --git a/src/config/config.gateway.ts b/src/config/config.gateway.ts new file mode 100644 index 00000000..a1748e78 --- /dev/null +++ b/src/config/config.gateway.ts @@ -0,0 +1,8 @@ +import { EnvironmentsEnum } from 'types'; + +export * from './sharedConfig'; + +export const API_URL = ''; // either GATEWAY_URL or API_URL must be set +export const GATEWAY_URL = 'https://devnet-gateway.multiversx.com'; +export const sampleAuthenticatedDomains = [API_URL]; +export const environment = EnvironmentsEnum.devnet; diff --git a/src/config/config.mainnet.ts b/src/config/config.mainnet.ts index 98978aa0..00d5ae6b 100644 --- a/src/config/config.mainnet.ts +++ b/src/config/config.mainnet.ts @@ -3,5 +3,6 @@ import { EnvironmentsEnum } from 'types'; export * from './sharedConfig'; export const API_URL = 'https://api.multiversx.com'; +export const GATEWAY_URL = ''; // either GATEWAY_URL or API_URL must be set export const sampleAuthenticatedDomains = [API_URL]; export const environment = EnvironmentsEnum.mainnet; diff --git a/src/config/config.sovereign.ts b/src/config/config.sovereign.ts index bf3721a0..aadd9b09 100644 --- a/src/config/config.sovereign.ts +++ b/src/config/config.sovereign.ts @@ -1,5 +1,6 @@ export * from './sharedConfig'; export const API_URL = 'https://devnet-api.multiversx.com'; // replace here with actual sovereign URL +export const GATEWAY_URL = ''; // either GATEWAY_URL or API_URL must be set export const sampleAuthenticatedDomains = [API_URL]; export const environment = 'sovereign'; diff --git a/src/config/config.testnet.ts b/src/config/config.testnet.ts index eaebf8b0..2a289a8c 100644 --- a/src/config/config.testnet.ts +++ b/src/config/config.testnet.ts @@ -3,5 +3,6 @@ import { EnvironmentsEnum } from 'types'; export * from './sharedConfig'; export const API_URL = 'https://testnet-api.multiversx.com'; +export const GATEWAY_URL = ''; // either GATEWAY_URL or API_URL must be set export const sampleAuthenticatedDomains = [API_URL]; export const environment = EnvironmentsEnum.testnet; diff --git a/src/index.tsx b/src/index.tsx index ea67c120..e9b37a86 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,6 +1,7 @@ import './styles/globals.css'; import { createRoot } from 'react-dom/client'; import { App } from './App'; +import 'utils/adapter/gatewayAdapter'; async function start() { if (import.meta.env.VITE_APP_MSW === 'true') { diff --git a/src/localConstants/sdkDapp.ts b/src/localConstants/sdkDapp.ts index 5bb68aaa..4cfdd3aa 100644 --- a/src/localConstants/sdkDapp.ts +++ b/src/localConstants/sdkDapp.ts @@ -8,7 +8,9 @@ export { } from '@multiversx/sdk-dapp/constants'; export { ACCOUNTS_ENDPOINT, + ADDRESS_ENDPOINT, TRANSACTIONS_ENDPOINT, + NETWORK_CONFIG_ENDPOINT, TOKENS_ENDPOINT, NFTS_ENDPOINT } from '@multiversx/sdk-dapp/apiCalls/endpoints'; diff --git a/src/types/sdkDapp.types.ts b/src/types/sdkDapp.types.ts index 82758d22..00363f67 100644 --- a/src/types/sdkDapp.types.ts +++ b/src/types/sdkDapp.types.ts @@ -5,6 +5,7 @@ export { } from '@multiversx/sdk-dapp/types/enums.types'; export type { AccountType } from '@multiversx/sdk-dapp/types'; export type { RouteType } from '@multiversx/sdk-dapp/types/index'; +export { matchPath } from '@multiversx/sdk-dapp/wrappers/AuthenticatedRoutesWrapper/helpers/matchPath'; export type { ServerTransactionType } from '@multiversx/sdk-dapp/types/serverTransactions.types'; export type { WithClassnameType } from '@multiversx/sdk-dapp/UI/types'; export type { diff --git a/src/utils/adapter/gatewayAdapter/gatewayAdapter.ts b/src/utils/adapter/gatewayAdapter/gatewayAdapter.ts new file mode 100644 index 00000000..7360120b --- /dev/null +++ b/src/utils/adapter/gatewayAdapter/gatewayAdapter.ts @@ -0,0 +1,39 @@ +import axios from 'axios'; +import { API_URL, GATEWAY_URL } from 'config'; +import { getGatewayConfigForCurrentRequest } from './helpers/getGatewayConfigForCurrentRequest'; +import { getGatewayResponse } from './helpers/getGatewayResponse'; + +axios.interceptors.request.use( + function (config) { + if (!config.url || (API_URL && !GATEWAY_URL)) { + return config; + } + + const newConfig = getGatewayConfigForCurrentRequest(config); + + return newConfig; + }, + function (error) { + return Promise.reject(error); + } +); + +axios.interceptors.response.use( + async function (response) { + const { config } = response; + + const isGatewayRequest = config.baseURL === GATEWAY_URL; + const url = config.url || ''; + + if (!isGatewayRequest || !url) { + return response; + } + + const gatewayResponse = await getGatewayResponse(url, response); + + return gatewayResponse; + }, + function (error) { + return Promise.reject(error); + } +); diff --git a/src/utils/adapter/gatewayAdapter/helpers/apiToGatewayEndpointMap.ts b/src/utils/adapter/gatewayAdapter/helpers/apiToGatewayEndpointMap.ts new file mode 100644 index 00000000..db9c806f --- /dev/null +++ b/src/utils/adapter/gatewayAdapter/helpers/apiToGatewayEndpointMap.ts @@ -0,0 +1,34 @@ +import { + ACCOUNTS_ENDPOINT, + ADDRESS_ENDPOINT, + TRANSACTIONS_ENDPOINT, + NETWORK_CONFIG_ENDPOINT, + NFTS_ENDPOINT, + TOKENS_ENDPOINT +} from 'localConstants/sdkDapp'; + +export const gatewayEndpoints = { + [ADDRESS_ENDPOINT]: ADDRESS_ENDPOINT, + [NETWORK_CONFIG_ENDPOINT]: NETWORK_CONFIG_ENDPOINT, + [TRANSACTIONS_ENDPOINT]: TRANSACTIONS_ENDPOINT, + [TOKENS_ENDPOINT]: null, + [NFTS_ENDPOINT]: null +}; + +export const endpointMap = { + [ACCOUNTS_ENDPOINT]: gatewayEndpoints[ADDRESS_ENDPOINT], + [NETWORK_CONFIG_ENDPOINT]: gatewayEndpoints[NETWORK_CONFIG_ENDPOINT], + [TRANSACTIONS_ENDPOINT]: gatewayEndpoints[TRANSACTIONS_ENDPOINT], + // not configured + [TOKENS_ENDPOINT]: gatewayEndpoints[TOKENS_ENDPOINT], + [NFTS_ENDPOINT]: gatewayEndpoints[NFTS_ENDPOINT] +}; + +export const apiRoutes: Record = { + [ACCOUNTS_ENDPOINT]: `/${ACCOUNTS_ENDPOINT}/:id`, + [NETWORK_CONFIG_ENDPOINT]: `/${gatewayEndpoints[NETWORK_CONFIG_ENDPOINT]}`, + [TRANSACTIONS_ENDPOINT]: `/${gatewayEndpoints[TRANSACTIONS_ENDPOINT]}`, + // not configured + [TOKENS_ENDPOINT]: `/${ACCOUNTS_ENDPOINT}/:id/${TOKENS_ENDPOINT}`, + [NFTS_ENDPOINT]: `/${ACCOUNTS_ENDPOINT}/:id/${NFTS_ENDPOINT}` +}; diff --git a/src/utils/adapter/gatewayAdapter/helpers/arraybufferToJSON.ts b/src/utils/adapter/gatewayAdapter/helpers/arraybufferToJSON.ts new file mode 100644 index 00000000..39544df8 --- /dev/null +++ b/src/utils/adapter/gatewayAdapter/helpers/arraybufferToJSON.ts @@ -0,0 +1,24 @@ +import { AxiosResponse } from 'axios'; + +export const arraybufferToJSON = async ( + response: T +) => { + const needsParsing = response.config.responseType === 'arraybuffer'; + + if (!needsParsing) { + return response.data; + } + + const decoder = new TextDecoder('utf-8'); + const text = decoder.decode(new Uint8Array(response.data)); + + try { + const data = JSON.parse(text); + return data; + } catch (e) { + // Handle JSON parse error if needed + return Promise.reject( + new Error('Failed to parse JSON from arraybuffer response.') + ); + } +}; diff --git a/src/utils/adapter/gatewayAdapter/helpers/getGatewayConfigForCurrentRequest.ts b/src/utils/adapter/gatewayAdapter/helpers/getGatewayConfigForCurrentRequest.ts new file mode 100644 index 00000000..ce5f0a7a --- /dev/null +++ b/src/utils/adapter/gatewayAdapter/helpers/getGatewayConfigForCurrentRequest.ts @@ -0,0 +1,69 @@ +import axios, { InternalAxiosRequestConfig } from 'axios'; +import { API_URL, GATEWAY_URL } from 'config'; +import { matchPath } from 'types/sdkDapp.types'; +import { apiRoutes, endpointMap } from './apiToGatewayEndpointMap'; + +export const getGatewayConfigForCurrentRequest = ( + config: InternalAxiosRequestConfig +): InternalAxiosRequestConfig => { + const newConfig = config; + + const needsGateway = + config.baseURL?.startsWith(API_URL) || config.url?.startsWith(API_URL); + + const isGatewayRequest = + needsGateway && + Object.keys(endpointMap).some((key) => config.url?.includes(key)); + + if (!isGatewayRequest) { + return config; + } + + config.baseURL = GATEWAY_URL; + const configUrl = String(config.url); + + let url = configUrl.startsWith(API_URL) + ? configUrl.replace(API_URL, '') + : configUrl; + + if ( + newConfig.method?.toLowerCase() === 'post' && + newConfig.url?.endsWith('transactions') + ) { + newConfig.url = '/transaction/send'; + return newConfig; + } + + Object.entries(endpointMap).forEach(([key, value]) => { + const matchesPath = matchPath( + apiRoutes[key as keyof typeof apiRoutes], + url + ); + + const needsReplacement = Boolean(matchesPath); + + if (!needsReplacement) { + return; + } + + if (key.includes('transactions') && url.includes('transactions')) { + const hash = config.params?.hashes; + url = `/transaction/${hash}`; + } else { + url = url.replace(`/${key}`, `/${value}`); + } + + newConfig.url = url; + + if (value === null) { + const source = axios.CancelToken.source(); + newConfig.cancelToken = source.token; + // Cancel the request + source.cancel( + `Request canceled: ${key} cannot be fetched from the gateway` + ); + } + }); + + return newConfig; +}; diff --git a/src/utils/adapter/gatewayAdapter/helpers/getGatewayResponse.ts b/src/utils/adapter/gatewayAdapter/helpers/getGatewayResponse.ts new file mode 100644 index 00000000..e6d89f71 --- /dev/null +++ b/src/utils/adapter/gatewayAdapter/helpers/getGatewayResponse.ts @@ -0,0 +1,50 @@ +import { AxiosResponse } from 'axios'; +import { NETWORK_CONFIG_ENDPOINT } from 'localConstants'; +import { matchPath } from 'types/sdkDapp.types'; +import { gatewayEndpoints } from './apiToGatewayEndpointMap'; +import { arraybufferToJSON } from './arraybufferToJSON'; +import { jsonToArrayBuffer } from './jsonToArrayBuffer'; + +export const getGatewayResponse = async ( + gatewayUrl: string, + response: AxiosResponse +): Promise> => { + if (gatewayUrl.includes('/transaction/send')) { + const transaction = await arraybufferToJSON(response); + + return { + ...response, + data: jsonToArrayBuffer(transaction.data) + }; + } + + if (gatewayUrl.includes(`/${gatewayEndpoints.address}`)) { + const account = await arraybufferToJSON(response); + + return { + ...response, + data: jsonToArrayBuffer(account.data.account) + }; + } + + if (gatewayUrl.includes(`/${gatewayEndpoints[NETWORK_CONFIG_ENDPOINT]}`)) { + const networkConfig = await arraybufferToJSON(response); + return { + ...response, + data: jsonToArrayBuffer(networkConfig.data.config) + }; + } + + const isFetchTransaction = matchPath('/transaction/:hash', gatewayUrl); + + if (Boolean(isFetchTransaction)) { + const data = await arraybufferToJSON(response); + + return { + ...response, + data: [{ ...data.data.transaction, txHash: data.data.transaction.hash }] + }; + } + + return response; +}; diff --git a/src/utils/adapter/gatewayAdapter/helpers/jsonToArrayBuffer.ts b/src/utils/adapter/gatewayAdapter/helpers/jsonToArrayBuffer.ts new file mode 100644 index 00000000..89915d1c --- /dev/null +++ b/src/utils/adapter/gatewayAdapter/helpers/jsonToArrayBuffer.ts @@ -0,0 +1,6 @@ +export const jsonToArrayBuffer = (json: Record) => { + const jsonString = JSON.stringify(json); + const encoder = new TextEncoder(); + const arrayBuffer = encoder.encode(jsonString); + return arrayBuffer; +}; diff --git a/src/utils/adapter/gatewayAdapter/index.ts b/src/utils/adapter/gatewayAdapter/index.ts new file mode 100644 index 00000000..1e75ddb5 --- /dev/null +++ b/src/utils/adapter/gatewayAdapter/index.ts @@ -0,0 +1 @@ +export * from './gatewayAdapter'; diff --git a/yarn.lock b/yarn.lock index 2951a56e..974ff6bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1327,9 +1327,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": - version "4.10.1" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz" - integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== + version "4.11.0" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz" + integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== "@eslint/eslintrc@^2.1.2": version "2.1.4" @@ -1807,12 +1807,12 @@ rxjs "6" semver "^7.3.5" -"@ledgerhq/devices@^8.0.3", "@ledgerhq/devices@^8.0.5", "@ledgerhq/devices@^8.4.0": - version "8.4.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.4.0.tgz#f3a03576d4a53d731bdaa212a00bd0adbfb86fb1" - integrity sha512-TUrMlWZJ+5AFp2lWMw4rGQoU+WtjIqlFX5SzQDL9phaUHrt4TFierAGHsaj5+tUHudhD4JhIaLI2cn1NOyq5NQ== +"@ledgerhq/devices@^8.0.3", "@ledgerhq/devices@^8.0.5", "@ledgerhq/devices@^8.4.2": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.4.2.tgz#f1c56194cf1343d56cad49c8feba92ad93432e14" + integrity sha512-oWNTp3jCMaEvRHsXNYE/yo+PFMgXAJGFHLOU1UdE4/fYkniHbD9wdxwyZrZvrxr9hNw4/9wHiThyITwPtMzG7g== dependencies: - "@ledgerhq/errors" "^6.17.0" + "@ledgerhq/errors" "^6.18.0" "@ledgerhq/logs" "^6.12.0" rxjs "^7.8.1" semver "^7.3.5" @@ -1822,10 +1822,10 @@ resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.6.tgz#f89c82c91c2930f34bc3e0d86a27ec7b6e6e4f5f" integrity sha512-D+r2B09vaRO06wfGoss+rNgwqWSoK0bCtsaJWzlD2hv1zxTtucqVtSztbRFypIqxWTCb3ix5Nh2dWHEJVTp2Xw== -"@ledgerhq/errors@^6.12.6", "@ledgerhq/errors@^6.13.0", "@ledgerhq/errors@^6.17.0": - version "6.17.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.17.0.tgz#0d56361fe6eb7de3b239e661710679f933f1fcca" - integrity sha512-xnOVpy/gUUkusEORdr2Qhw3Vd0MGfjyVGgkGR9Ck6FXE26OIdIQ3tNmG5BdZN+gwMMFJJVxxS4/hr0taQfZ43w== +"@ledgerhq/errors@^6.12.6", "@ledgerhq/errors@^6.13.0", "@ledgerhq/errors@^6.18.0": + version "6.18.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.18.0.tgz#d55d6a57430d7a86532a9033ce0b45103264c620" + integrity sha512-L3jQWAGyooxRDk/MRlW2v4Ji9+kloBtdmz9wBkHaj2j0n+05rweJSV3GHw9oye1BYMbVFqFffmT4H3hlXlCasw== "@ledgerhq/hw-transport-web-ble@6.27.17": version "6.27.17" @@ -1868,12 +1868,12 @@ events "^3.3.0" "@ledgerhq/hw-transport@^6.28.4", "@ledgerhq/hw-transport@^6.28.6": - version "6.31.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.31.0.tgz#82d8154bbcec8dc0104009a646159190fba5ae76" - integrity sha512-BY1poLk8vlJdIYngp8Zfaa/V9n14dqgt1G7iNetVRhJVFEKp9EYONeC3x6q/N7x81LUpzBk6M+T+s46Z4UiXHw== + version "6.31.2" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.31.2.tgz#79c95f7928a64a0e3b5bc4ea7b5be04b9f738322" + integrity sha512-B27UIzMzm2IXPGYnEB95R7eHxpXBkTBHh6MUJJQZVknt8LilEz1tfpTYUdzAKDGQ+Z5MZyYb01Eh3Zqm3kn3uw== dependencies: - "@ledgerhq/devices" "^8.4.0" - "@ledgerhq/errors" "^6.17.0" + "@ledgerhq/devices" "^8.4.2" + "@ledgerhq/errors" "^6.18.0" "@ledgerhq/logs" "^6.12.0" events "^3.3.0" @@ -1935,11 +1935,11 @@ webextension-polyfill "^0.10.0" "@metamask/rpc-errors@^6.2.1": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@metamask/rpc-errors/-/rpc-errors-6.3.0.tgz#adc63f3c1c50ec812d3631a471fe2beca0c3707d" - integrity sha512-B1UIG/0xWkaDs/d6xrxsRf7kmFLdk8YE0HUToaFumjwQM36AjBsqEzVyemPTQv0SIrAPFnSmkLt053JOWcu5iw== + version "6.3.1" + resolved "https://registry.yarnpkg.com/@metamask/rpc-errors/-/rpc-errors-6.3.1.tgz#d5bb4740e070c3d87e91717ff4c3c6061a081cab" + integrity sha512-ugDY7cKjF4/yH5LtBaOIKHw/AiGGSAmzptAUEiAEGr/78LwuzcXAxmzEQfSfMIfI+f9Djr8cttq1pRJJKfTuCg== dependencies: - "@metamask/utils" "^8.3.0" + "@metamask/utils" "^9.0.0" fast-safe-stringify "^2.0.6" "@metamask/safe-event-emitter@^3.0.0": @@ -1947,10 +1947,10 @@ resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.1.tgz#e89b840a7af8097a8ed4953d8dc8470d1302d3ef" integrity sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw== -"@metamask/superstruct@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@metamask/superstruct/-/superstruct-3.0.0.tgz#0200d0a627522904a7e0fd751dcc6fb863cefacb" - integrity sha512-TOm+Lt/lCJk9j/3QT2LucrPewRmqI7/GKT+blK2IIOAkBMS+9TmeNjd2Y+TlfpSSYstaYsGZyz1XwpiTCg6RLA== +"@metamask/superstruct@^3.0.0", "@metamask/superstruct@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@metamask/superstruct/-/superstruct-3.1.0.tgz#148f786a674fba3ac885c1093ab718515bf7f648" + integrity sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA== "@metamask/utils@^8.3.0": version "8.5.0" @@ -1967,6 +1967,21 @@ semver "^7.5.4" uuid "^9.0.1" +"@metamask/utils@^9.0.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-9.1.0.tgz#54e5afcec07e6032d4dd4171e862b36daa52d77e" + integrity sha512-g2REf+xSt0OZfMoNNdC4+/Yy8eP3KUqvIArel54XRFKPoXbHI6+YjFfrLtfykWBjffOp7DTfIc3Kvk5TLfuiyg== + dependencies: + "@ethereumjs/tx" "^4.2.0" + "@metamask/superstruct" "^3.1.0" + "@noble/hashes" "^1.3.1" + "@scure/base" "^1.1.3" + "@types/debug" "^4.1.7" + debug "^4.3.4" + pony-cause "^2.1.10" + semver "^7.5.4" + uuid "^9.0.1" + "@mswjs/cookies@^1.1.0": version "1.1.1" resolved "https://registry.npmjs.org/@mswjs/cookies/-/cookies-1.1.1.tgz" @@ -1986,7 +2001,7 @@ "@multiversx/sdk-bls-wasm@0.3.5": version "0.3.5" - resolved "https://registry.yarnpkg.com/@multiversx/sdk-bls-wasm/-/sdk-bls-wasm-0.3.5.tgz#2e83308fdc7a0928c6d5a7f910d796fd8eb2d90b" + resolved "https://registry.npmjs.org/@multiversx/sdk-bls-wasm/-/sdk-bls-wasm-0.3.5.tgz" integrity sha512-c0tIdQUnbBLSt6NYU+OpeGPYdL0+GV547HeHT8Xc0BKQ7Cj0v82QUoA2QRtWrR1G4MNZmLsIacZSsf6DrIS2Bw== "@multiversx/sdk-core@12.18.0": @@ -2054,10 +2069,10 @@ resolved "https://registry.npmjs.org/@multiversx/sdk-dapp-utils/-/sdk-dapp-utils-0.0.1.tgz" integrity sha512-fl3TdES93Jc4T559BI+QxNRGRUTabb7TiAXHKL9g6mbLD+silK+5euAoDpPBkbZpVFnfsXQssUVuyKBV4Ine6w== -"@multiversx/sdk-dapp@2.34.1": - version "2.34.1" - resolved "https://registry.yarnpkg.com/@multiversx/sdk-dapp/-/sdk-dapp-2.34.1.tgz#3428fff33f97d8d18607187d07177abc5c23a017" - integrity sha512-1g9BYKP1asMLMWDmhQBpOJfvNyirce5tBIDCD7Ia6wEkWKb4QbGJxgv2s4e+BSnz/plDerg+KVnwvvshNu8inA== +"@multiversx/sdk-dapp@^2.35.0-alpha.0": + version "2.35.0-alpha.0" + resolved "https://registry.yarnpkg.com/@multiversx/sdk-dapp/-/sdk-dapp-2.35.0-alpha.0.tgz#766cc813814d3c96b0956b34bd280e1d54d3867f" + integrity sha512-ZgbAYsanHRgIDFMkMSz+LYAd5hAW6Xj54C6ggTRRN9DXjmGYebGnvhgYefftTfVumYBKKhizvwAFyKYj+VFfIw== dependencies: "@lifeomic/axios-fetch" "3.0.1" "@metamask/providers" "16.0.0" @@ -2183,7 +2198,7 @@ "@multiversx/sdk-wallet@4.2.0": version "4.2.0" - resolved "https://registry.yarnpkg.com/@multiversx/sdk-wallet/-/sdk-wallet-4.2.0.tgz#00311338564abf0702b2063176f71db9585ecd06" + resolved "https://registry.npmjs.org/@multiversx/sdk-wallet/-/sdk-wallet-4.2.0.tgz" integrity sha512-EjSb9AnqMcpmDjZ7ebkUpOzpTfxj1plTuVXwZ6AaqJsdpxMfrE2izbPy18+bg5xFlr8V27wYZcW8zOhkBR50BA== dependencies: "@multiversx/sdk-bls-wasm" "0.3.5" @@ -2236,21 +2251,21 @@ "@emnapi/runtime" "^1.1.0" "@tybys/wasm-util" "^0.9.0" -"@noble/curves@1.4.0", "@noble/curves@~1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" - integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== +"@noble/curves@1.4.2", "@noble/curves@~1.4.0": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" + integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== dependencies: "@noble/hashes" "1.4.0" "@noble/ed25519@1.7.3": version "1.7.3" - resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" + resolved "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz" integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== "@noble/hashes@1.3.0": version "1.3.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz" integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== "@noble/hashes@1.4.0", "@noble/hashes@^1.3.1", "@noble/hashes@~1.4.0": @@ -3286,7 +3301,7 @@ "@types/node@11.11.6": version "11.11.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + resolved "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz" integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== "@types/node@>=13.7.0", "@types/node@^20.12.13": @@ -3760,11 +3775,16 @@ acorn-walk@^8.0.2, acorn-walk@^8.1.1: dependencies: acorn "^8.11.0" -acorn@^8.1.0, acorn@^8.11.0, acorn@^8.11.3, acorn@^8.4.1, acorn@^8.8.1, acorn@^8.9.0: +acorn@^8.1.0, acorn@^8.11.0, acorn@^8.4.1, acorn@^8.8.1, acorn@^8.9.0: version "8.12.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz" integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw== +acorn@^8.11.3: + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" @@ -4223,7 +4243,7 @@ binary-extensions@^2.0.0: bip39@3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32" + resolved "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz" integrity sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ== dependencies: "@types/node" "11.11.6" @@ -4384,7 +4404,7 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -"buffer-polyfill@npm:buffer@^6.0.3": +"buffer-polyfill@npm:buffer@^6.0.3", buffer@6.0.3, buffer@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -4397,14 +4417,6 @@ buffer-xor@^1.0.3: resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== -buffer@6.0.3, buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - buffer@^5.2.1, buffer@^5.7.1: version "5.7.1" resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" @@ -4677,9 +4689,9 @@ convert-source-map@^2.0.0: integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== cookie-es@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.1.0.tgz#68f8d9f48aeb5a534f3896f80e792760d3d20def" - integrity sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw== + version "1.2.2" + resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.2.2.tgz#18ceef9eb513cac1cb6c14bcbf8bdb2679b34821" + integrity sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg== cookie@^0.5.0: version "0.5.0" @@ -4900,7 +4912,7 @@ dateformat@^4.5.1: resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== -debug@4, debug@4.3.5, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: +debug@4, debug@4.3.5, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.5" resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== @@ -4921,6 +4933,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@~4.3.1, debug@~4.3.2: + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + dependencies: + ms "2.1.2" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" @@ -4998,7 +5017,7 @@ define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -defu@^6.1.3, defu@^6.1.4: +defu@^6.1.4: version "6.1.4" resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== @@ -5165,7 +5184,7 @@ eastasianwidth@^0.2.0: ed25519-hd-key@1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/ed25519-hd-key/-/ed25519-hd-key-1.1.2.tgz#168dcf08419694be7bba3319e7d64e4a5cfe5d44" + resolved "https://registry.npmjs.org/ed25519-hd-key/-/ed25519-hd-key-1.1.2.tgz" integrity sha512-/0y9y6N7vM6Kj5ASr9J9wcMVDTtygxSOvYX+PJiMD7VcxCx2G03V5bLRl8Dug9EgkLFsLhGqBtQWQRcElEeWTA== dependencies: bip39 "3.0.2" @@ -5174,7 +5193,7 @@ ed25519-hd-key@1.1.2: ed2curve@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d" + resolved "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz" integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ== dependencies: tweetnacl "1.x.x" @@ -5704,11 +5723,11 @@ esutils@^2.0.2: integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== ethereum-cryptography@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.2.0.tgz#06e2d9c0d89f98ffc6a83818f55bf85afecd50dc" - integrity sha512-hsm9JhfytIf8QME/3B7j4bc8V+VdTU+Vas1aJlvIS96ffoNAosudXvGoEvWmc7QZYdkC8mrMJz9r0fcbw7GyCA== + version "2.2.1" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz#58f2810f8e020aecb97de8c8c76147600b0b8ccf" + integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== dependencies: - "@noble/curves" "1.4.0" + "@noble/curves" "1.4.2" "@noble/hashes" "1.4.0" "@scure/bip32" "1.4.0" "@scure/bip39" "1.3.0" @@ -7545,7 +7564,7 @@ jsonfile@^6.0.1: keccak@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz" integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== dependencies: node-addon-api "^2.0.0" @@ -7893,7 +7912,7 @@ mitt@3.0.1: resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz" integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== -mlly@^1.6.1, mlly@^1.7.0: +mlly@^1.6.1, mlly@^1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.1.tgz#e0336429bb0731b6a8e887b438cbdae522c8f32f" integrity sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA== @@ -8036,11 +8055,11 @@ node-addon-api@^2.0.0: integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== node-addon-api@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" - integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== -node-fetch-native@^1.6.1, node-fetch-native@^1.6.2, node-fetch-native@^1.6.3: +node-fetch-native@^1.6.2, node-fetch-native@^1.6.3, node-fetch-native@^1.6.4: version "1.6.4" resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e" integrity sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ== @@ -8453,7 +8472,7 @@ pathe@^1.1.1, pathe@^1.1.2: pbkdf2@^3.0.3, pbkdf2@^3.0.9, pbkdf2@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" @@ -8532,12 +8551,12 @@ pkg-dir@^5.0.0: find-up "^5.0.0" pkg-types@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.1.tgz#07b626880749beb607b0c817af63aac1845a73f2" - integrity sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ== + version "1.1.3" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.3.tgz#161bb1242b21daf7795036803f28e30222e476e3" + integrity sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA== dependencies: confbox "^0.1.7" - mlly "^1.7.0" + mlly "^1.7.1" pathe "^1.1.2" platform@1.3.6: @@ -9415,7 +9434,7 @@ scheduler@^0.23.0: scryptsy@2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" + resolved "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz" integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== semver@7.6.0: @@ -9430,7 +9449,12 @@ semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: +semver@^7.3.5, semver@^7.5.3, semver@^7.5.4: + version "7.6.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +semver@^7.6.0: version "7.6.2" resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== @@ -9724,16 +9748,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9811,14 +9826,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -10177,7 +10185,7 @@ tty-browserify@0.0.1: tweetnacl@1.0.3, tweetnacl@1.x.x: version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== type-check@^0.4.0, type-check@~0.4.0: @@ -10262,9 +10270,9 @@ typescript@5.2.2: integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== ufo@^1.4.0, ufo@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344" - integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw== + version "1.5.4" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754" + integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ== uint8arrays@3.1.0: version "3.1.0" @@ -10309,15 +10317,15 @@ undici-types@~5.26.4: integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== unenv@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.9.0.tgz#469502ae85be1bd3a6aa60f810972b1a904ca312" - integrity sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g== + version "1.10.0" + resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.10.0.tgz#c3394a6c6e4cfe68d699f87af456fe3f0db39571" + integrity sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ== dependencies: consola "^3.2.3" - defu "^6.1.3" + defu "^6.1.4" mime "^3.0.0" - node-fetch-native "^1.6.1" - pathe "^1.1.1" + node-fetch-native "^1.6.4" + pathe "^1.1.2" unfetch@^4.2.0: version "4.2.0" @@ -10461,7 +10469,7 @@ util@^0.12.4, util@^0.12.5: uuid@8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== uuid@^9.0.1: @@ -10684,7 +10692,7 @@ word-wrap@^1.2.5: resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -10702,15 +10710,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"