From e8816a02b444abaa98acb18daf6d939e6ff5e881 Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Mon, 8 Jul 2024 15:29:36 +0800 Subject: [PATCH 1/9] added modal to adapter --- packages/networks/solana/src/browser/adapters/Web3Modal.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/networks/solana/src/browser/adapters/Web3Modal.ts b/packages/networks/solana/src/browser/adapters/Web3Modal.ts index 61f4f88..f1b6989 100644 --- a/packages/networks/solana/src/browser/adapters/Web3Modal.ts +++ b/packages/networks/solana/src/browser/adapters/Web3Modal.ts @@ -20,6 +20,7 @@ export interface Web3ModalConfig extends Web3ModalOptions { export interface Web3ModalAdapterInterface extends Omit, 'connect'> { + modal?: Web3ModalType connect: ( provider?: ProviderInterface, config?: Web3ModalConfig | object @@ -34,9 +35,9 @@ interface Chain { chainId: string } -let modal: Web3ModalType let currentNetwork: Chain let clickedAnyWallet = false +let modal: Web3ModalType | undefined let walletProvider: WalletProvider | undefined let connectRejectMethod: (reason?: any) => void let connectResolveMethod: (value: WalletProvider | PromiseLike) => void @@ -88,7 +89,7 @@ const web3Modal = (config: Web3ModalConfig): Web3ModalType => { if (`solana:${currentNetwork.chainId}` !== ctx.caipChainId) { await modal - .switchNetwork({ + ?.switchNetwork({ id: `solana:${currentNetwork.chainId}`, name: currentNetwork.name }) @@ -112,6 +113,7 @@ const web3Modal = (config: Web3ModalConfig): Web3ModalType => { const Web3Modal: Web3ModalAdapterInterface = { icon, + modal, id: 'web3modal', name: 'Web3Modal', provider: walletProvider, From f54073db5ef67a9e332c3e390e4efcbbcc9767e8 Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Mon, 8 Jul 2024 17:53:17 +0800 Subject: [PATCH 2/9] updated web3modal --- .../src/browser/adapters/Web3Modal.ts | 25 ++++++++++++++++--- .../solana/src/browser/adapters/Web3Modal.ts | 13 +++++++++- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/packages/networks/evm-chains/src/browser/adapters/Web3Modal.ts b/packages/networks/evm-chains/src/browser/adapters/Web3Modal.ts index 3d6039a..b4d6ead 100644 --- a/packages/networks/evm-chains/src/browser/adapters/Web3Modal.ts +++ b/packages/networks/evm-chains/src/browser/adapters/Web3Modal.ts @@ -3,11 +3,13 @@ import { networks } from '../../index' import type { EIP1193Provider } from './EIP6963' import type { Provider } from '../../services/Provider' import type { Chain } from '@web3modal/scaffold-utils/ethers' -import type { CustomWallet, Metadata } from '@web3modal/core' import { createWeb3Modal, defaultConfig } from '@web3modal/ethers' import type { Web3Modal as Web3ModalType } from '@web3modal/ethers' import type { WalletAdapterInterface } from '@multiplechain/types' import { ErrorTypeEnum, WalletPlatformEnum } from '@multiplechain/types' +import type { CustomWallet, EventsControllerState, Metadata } from '@web3modal/core' + +type EventFunction = (newEvent: EventsControllerState, modal?: Web3ModalType) => void export interface Web3ModalConfig { projectId: string @@ -19,9 +21,15 @@ export interface Web3ModalConfig { defaultChainId?: number metadata: Metadata customWallets?: CustomWallet[] + events?: EventFunction[] +} + +export interface Web3ModalAdapterInterface + extends WalletAdapterInterface { + modal?: Web3ModalType } -let modal: Web3ModalType +let modal: Web3ModalType | undefined let walletProvider: EIP1193Provider | undefined const chains: Chain[] = networks @@ -66,6 +74,14 @@ const web3Modal = (config: Web3ModalConfig): Web3ModalType => { } }) + if (config.events !== undefined) { + config.events.forEach((event) => { + modal?.subscribeEvents((newEvent: EventsControllerState) => { + event(newEvent, modal) + }) + }) + } + modal.subscribeEvents(async (event) => { if (event.data.event === 'SELECT_WALLET') { clickedAnyWallet = true @@ -86,7 +102,7 @@ const web3Modal = (config: Web3ModalConfig): Web3ModalType => { } if (currentNetwork.chainId !== chainId) { - await modal.switchNetwork(currentNetwork.chainId).catch(() => { + await modal?.switchNetwork(currentNetwork.chainId).catch(() => { connectRejectMethod(new Error(ErrorTypeEnum.WALLET_CONNECT_REJECTED)) }) } @@ -97,7 +113,8 @@ const web3Modal = (config: Web3ModalConfig): Web3ModalType => { return modal } -const Web3Modal: WalletAdapterInterface = { +const Web3Modal: Web3ModalAdapterInterface = { + modal, id: 'web3modal', name: 'Web3Modal', icon: icons.web3modal, diff --git a/packages/networks/solana/src/browser/adapters/Web3Modal.ts b/packages/networks/solana/src/browser/adapters/Web3Modal.ts index f1b6989..803f6b0 100644 --- a/packages/networks/solana/src/browser/adapters/Web3Modal.ts +++ b/packages/networks/solana/src/browser/adapters/Web3Modal.ts @@ -1,7 +1,7 @@ -import type { Metadata } from '@web3modal/core' import type { WalletProvider } from '../Wallet' import type { Provider } from '../../services/Provider' import { solana, solanaDevnet } from '@web3modal/solana/chains' +import type { EventsControllerState, Metadata } from '@web3modal/core' import { ErrorTypeEnum, WalletPlatformEnum } from '@multiplechain/types' import type { ProviderInterface, WalletAdapterInterface } from '@multiplechain/types' import { @@ -14,8 +14,11 @@ import { const icon = 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKIHdpZHRoPSI0MDAuMDAwMDAwcHQiIGhlaWdodD0iNDAwLjAwMDAwMHB0IiB2aWV3Qm94PSIwIDAgNDAwLjAwMDAwMCA0MDAuMDAwMDAwIgogcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCI+Cgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCw0MDAuMDAwMDAwKSBzY2FsZSgwLjEwMDAwMCwtMC4xMDAwMDApIgpmaWxsPSIjMDAwMDAwIiBzdHJva2U9Im5vbmUiPgo8cGF0aCBkPSJNMCAyMDAwIGwwIC0yMDAwIDIwMDAgMCAyMDAwIDAgMCAyMDAwIDAgMjAwMCAtMjAwMCAwIC0yMDAwIDAgMAotMjAwMHogbTIyNjQgNzM2IGMxMjQgLTMyIDI2MSAtOTggMzYzIC0xNzUgOTEgLTY5IDE3MyAtMTUzIDE3MyAtMTc4IDAgLTE3Ci0xODcgLTIwMiAtMjA1IC0yMDMgLTYgMCAtMzEgMjEgLTU1IDQ2IC0yMjcgMjM0IC01NjkgMjk5IC04NTcgMTY0IC03OSAtMzYKLTEzMSAtNzMgLTIxMyAtMTQ5IC0zNiAtMzMgLTcyIC02MCAtODAgLTYxIC0yMCAwIC0yMDAgMTgxIC0yMDAgMjAyIDAgMjQgNDkKNzggMTM2IDE0OCAxMzYgMTA5IDI4MSAxNzkgNDQxIDIxNSAxMDYgMjMgMTE5IDI0IDI2MyAyMCAxMDQgLTMgMTU4IC0xMCAyMzQKLTI5eiBtLTEyODQgLTYwMyBjMTQgLTkgMTMwIC0xMjAgMjU4IC0yNDYgbDIzMyAtMjMxIDU3IDU1IGMzMSAyOSAxNDUgMTQxCjI1MyAyNDYgMTEwIDEwOSAyMDMgMTkzIDIxMyAxOTMgMjAgMCAzOSAtMTggNTIyIC00OTAgMyAtMiA3OCA2OCAxNjcgMTU2IDI3MAoyNjYgMzQ0IDMzNCAzNjIgMzM0IDEwIDAgNTcgLTM5IDEwNiAtODcgNjcgLTY1IDg5IC05MyA4OSAtMTEzIDAgLTIxIC02NiAtOTAKLTM0MSAtMzYwIC0xODggLTE4NCAtMzUwIC0zMzkgLTM2MCAtMzQ0IC0xMSAtNSAtMjcgLTUgLTM4IDAgLTExIDUgLTEyOCAxMTYKLTI2MSAyNDcgLTEzMyAxMzEgLTI0NSAyMzYgLTI0OCAyMzIgLTEzNiAtMTM4IC00OTAgLTQ3MyAtNTA4IC00NzkgLTI4IC0xMQotMTYgLTIyIC00NTEgNDA2IC0yMDMgMTk5IC0yODMgMjg0IC0yODMgMzAwIDAgMjggMTcxIDE5OCAyMDAgMTk4IDMgMCAxNyAtNwozMCAtMTd6Ii8+CjwvZz4KPC9zdmc+Cg==' +type EventFunction = (newEvent: EventsControllerState, modal?: Web3ModalType) => void + export interface Web3ModalConfig extends Web3ModalOptions { metadata: Metadata + events?: EventFunction[] } export interface Web3ModalAdapterInterface @@ -69,6 +72,14 @@ const web3Modal = (config: Web3ModalConfig): Web3ModalType => { } }) + if (config.events !== undefined) { + config.events.forEach((event) => { + modal?.subscribeEvents((newEvent: EventsControllerState) => { + event(newEvent, modal) + }) + }) + } + modal.subscribeEvents(async (event) => { if (event.data.event === 'SELECT_WALLET') { clickedAnyWallet = true From 18a113e47965143f3180a37991420e77783e43e3 Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Wed, 10 Jul 2024 10:43:42 +0800 Subject: [PATCH 3/9] fixed --- packages/networks/evm-chains/src/browser/adapters/MetaMask.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/networks/evm-chains/src/browser/adapters/MetaMask.ts b/packages/networks/evm-chains/src/browser/adapters/MetaMask.ts index 81b4572..4eda2b9 100644 --- a/packages/networks/evm-chains/src/browser/adapters/MetaMask.ts +++ b/packages/networks/evm-chains/src/browser/adapters/MetaMask.ts @@ -13,7 +13,7 @@ const MetaMask: WalletAdapterInterface = { downloadLink: 'https://metamask.io/download/', provider: window.ethereum as unknown as WindowEthereum, platforms: [WalletPlatformEnum.BROWSER, WalletPlatformEnum.MOBILE], - isDetected: () => Boolean((window?.ethereum as unknown as WindowEthereum).isMetaMask), + isDetected: () => Boolean((window?.ethereum as unknown as WindowEthereum)?.isMetaMask), createDeepLink: (url: string): string => `https://metamask.app.link/dapp/${url}`, isConnected: async () => { return Boolean( From 674f3d3886877dad1ce31e3a839a1335345b4cc3 Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Sat, 13 Jul 2024 17:29:36 +0800 Subject: [PATCH 4/9] exported network packages --- packages/networks/bitcoin/src/index.ts | 2 ++ packages/networks/evm-chains/src/index.ts | 2 ++ packages/networks/solana/src/index.ts | 3 +++ packages/networks/tron/src/index.ts | 2 ++ 4 files changed, 9 insertions(+) diff --git a/packages/networks/bitcoin/src/index.ts b/packages/networks/bitcoin/src/index.ts index be37abf..e12bd7a 100644 --- a/packages/networks/bitcoin/src/index.ts +++ b/packages/networks/bitcoin/src/index.ts @@ -1,5 +1,7 @@ export * from './services/Provider' +export * as Bitcore from 'bitcore-lib' + export * as assets from './assets/index' export * as models from './models/index' export * as services from './services/index' diff --git a/packages/networks/evm-chains/src/index.ts b/packages/networks/evm-chains/src/index.ts index ecdfeab..869ec7c 100644 --- a/packages/networks/evm-chains/src/index.ts +++ b/packages/networks/evm-chains/src/index.ts @@ -1,5 +1,7 @@ export * from './services/Provider' +export * as ethers from 'ethers' + export * as assets from './assets/index' export * as models from './models/index' export * as services from './services/index' diff --git a/packages/networks/solana/src/index.ts b/packages/networks/solana/src/index.ts index be37abf..85fdf4d 100644 --- a/packages/networks/solana/src/index.ts +++ b/packages/networks/solana/src/index.ts @@ -1,5 +1,8 @@ export * from './services/Provider' +export * as Web3 from '@solana/web3.js' +export * as splToken from '@solana/spl-token' + export * as assets from './assets/index' export * as models from './models/index' export * as services from './services/index' diff --git a/packages/networks/tron/src/index.ts b/packages/networks/tron/src/index.ts index 612a2b2..38fbe9f 100644 --- a/packages/networks/tron/src/index.ts +++ b/packages/networks/tron/src/index.ts @@ -1,5 +1,7 @@ export * from './services/Provider' +export * as TronWeb3 from 'tronweb' + export * as assets from './assets/index' export * as models from './models/index' export * as services from './services/index' From 8954dbe4bbae57c6db6d6ee1336d841c23c8fa2c Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Sat, 13 Jul 2024 17:29:47 +0800 Subject: [PATCH 5/9] updated --- packages/networks/bitcoin/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/networks/bitcoin/src/index.ts b/packages/networks/bitcoin/src/index.ts index e12bd7a..c71d679 100644 --- a/packages/networks/bitcoin/src/index.ts +++ b/packages/networks/bitcoin/src/index.ts @@ -1,6 +1,6 @@ export * from './services/Provider' -export * as Bitcore from 'bitcore-lib' +export * as bitcore from 'bitcore-lib' export * as assets from './assets/index' export * as models from './models/index' From d6775bfea53bb62ea766e90abc2723f5f9b0208f Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Fri, 19 Jul 2024 11:29:46 +0800 Subject: [PATCH 6/9] fix --- packages/networks/bitcoin/package.json | 2 +- packages/networks/bitcoin/src/assets/Coin.ts | 8 + .../networks/bitcoin/src/services/Provider.ts | 14 +- packages/networks/evm-chains/package.json | 2 +- .../evm-chains/src/models/Transaction.ts | 13 +- packages/networks/solana/package.json | 2 +- pnpm-lock.yaml | 222 ++++++++++-------- 7 files changed, 155 insertions(+), 108 deletions(-) diff --git a/packages/networks/bitcoin/package.json b/packages/networks/bitcoin/package.json index 8c6667c..babe380 100644 --- a/packages/networks/bitcoin/package.json +++ b/packages/networks/bitcoin/package.json @@ -1,6 +1,6 @@ { "name": "@multiplechain/bitcoin", - "version": "0.4.5", + "version": "0.4.6", "type": "module", "main": "dist/index.cjs", "module": "dist/index.es.js", diff --git a/packages/networks/bitcoin/src/assets/Coin.ts b/packages/networks/bitcoin/src/assets/Coin.ts index 1132e8b..12021c2 100644 --- a/packages/networks/bitcoin/src/assets/Coin.ts +++ b/packages/networks/bitcoin/src/assets/Coin.ts @@ -79,6 +79,14 @@ export class Coin implements CoinInterface { throw new Error(ErrorTypeEnum.INVALID_ADDRESS) } + // @ts-expect-error library creating error in umd + Address.prototype._classifyArguments = function (data: any, network: any, type: any) { + if (typeof data === 'string') { + // @ts-expect-error library creating error in umd + return Address._transformString(data, network, type) + } + } + const inputs = [] const transaction = new Transaction() const senderAddress = new Address(sender) diff --git a/packages/networks/bitcoin/src/services/Provider.ts b/packages/networks/bitcoin/src/services/Provider.ts index 6578023..c0f9a14 100644 --- a/packages/networks/bitcoin/src/services/Provider.ts +++ b/packages/networks/bitcoin/src/services/Provider.ts @@ -1,9 +1,12 @@ import axios from 'axios' import { checkWebSocket } from '@multiplechain/utils' -import { ErrorTypeEnum, type ProviderInterface } from '@multiplechain/types' +import { + ErrorTypeEnum, + type NetworkConfigInterface, + type ProviderInterface +} from '@multiplechain/types' -export interface BitcoinNetworkConfigInterface { - testnet: boolean +export interface BitcoinNetworkConfigInterface extends NetworkConfigInterface { blockCypherToken?: string } @@ -117,8 +120,9 @@ export class Provider implements ProviderInterface { const check = async (): Promise => { try { const status = await this.getStatus() - if (status === TransactionStatusEnum.CONFIRMED) { - resolve(TransactionStatusEnum.CONFIRMED) - return - } else if (status === TransactionStatusEnum.FAILED) { - reject(TransactionStatusEnum.FAILED) + if (status !== TransactionStatusEnum.PENDING) { + resolve(status) return } setTimeout(check, ms) @@ -223,10 +220,8 @@ export class Transaction implements TransactionInterface { */ async getStatus(): Promise { const data = await this.getData() - if (data === null) { - return TransactionStatusEnum.PENDING - } else if (data.response.blockNumber !== null && data.receipt !== null) { - if (data.receipt.status === 1) { + if (data?.response.blockNumber !== null && data?.receipt !== null) { + if (data?.receipt.status === 1) { return TransactionStatusEnum.CONFIRMED } else { return TransactionStatusEnum.FAILED diff --git a/packages/networks/solana/package.json b/packages/networks/solana/package.json index 9b2fab3..1694e05 100644 --- a/packages/networks/solana/package.json +++ b/packages/networks/solana/package.json @@ -1,6 +1,6 @@ { "name": "@multiplechain/solana", - "version": "0.4.5", + "version": "0.4.6", "type": "module", "main": "dist/index.cjs", "module": "dist/index.es.js", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0439428..1057d43 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,33 +93,33 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true - /@babel/code-frame@7.24.2: - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.24.5 + '@babel/highlight': 7.24.7 picocolors: 1.0.0 dev: true - /@babel/compat-data@7.24.4: - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + /@babel/compat-data@7.24.9: + resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.24.5: - resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} + /@babel/core@7.24.9: + resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helpers': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.9 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helpers': 7.24.8 + '@babel/parser': 7.24.8 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -129,80 +129,90 @@ packages: - supports-color dev: true - /@babel/generator@7.24.5: - resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} + /@babel/generator@7.24.9: + resolution: {integrity: sha512-G8v3jRg+z8IwY1jHFxvCNhOPYPterE4XljNgdGTYfSTtzzwjIswIzIaSPSLs3R7yFuqnqNeay5rjICfqVr+/6A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.9 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 dev: true - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + /@babel/helper-compilation-targets@7.24.8: + resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 + '@babel/compat-data': 7.24.9 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.2 lru-cache: 5.1.1 semver: 6.3.1 dev: true - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 dev: true - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + /@babel/helper-function-name@7.24.7: + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 dev: true - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + /@babel/helper-hoist-variables@7.24.7: + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.9 dev: true - /@babel/helper-module-imports@7.24.3: - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color dev: true - /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} + /@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9): + resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color dev: true - /@babel/helper-simple-access@7.24.5: - resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color dev: true - /@babel/helper-split-export-declaration@7.24.5: - resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} + /@babel/helper-split-export-declaration@7.24.7: + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.9 dev: true /@babel/helper-string-parser@7.24.1: @@ -210,6 +220,11 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} @@ -220,27 +235,29 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers@7.24.5: - resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.24.8: + resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 dev: true - /@babel/highlight@7.24.5: - resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.0 @@ -259,30 +276,38 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.5 dev: true - /@babel/template@7.24.0: - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + /@babel/parser@7.24.8: + resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.9 + dev: true + + /@babel/template@7.24.7: + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 dev: true - /@babel/traverse@7.24.5: - resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} + /@babel/traverse@7.24.8: + resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -307,6 +332,15 @@ packages: to-fast-properties: 2.0.0 dev: true + /@babel/types@7.24.9: + resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + dev: true + /@es-joy/jsdoccomment@0.43.1: resolution: {integrity: sha512-I238eDtOolvCuvtxrnqtlBaw0BwdQuYqK7eA6XIonicMdOOOb75mqdIzkGDUbS04+1Di007rgm9snFRNeVrOog==} engines: {node: '>=16'} @@ -1712,15 +1746,15 @@ packages: pako: 1.0.11 dev: true - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + /browserslist@4.23.2: + resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001615 - electron-to-chromium: 1.4.754 + caniuse-lite: 1.0.30001642 + electron-to-chromium: 1.4.828 node-releases: 2.0.14 - update-browserslist-db: 1.0.14(browserslist@4.23.0) + update-browserslist-db: 1.1.0(browserslist@4.23.2) dev: true /buffer-xor@1.0.3: @@ -1770,8 +1804,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001615: - resolution: {integrity: sha512-1IpazM5G3r38meiae0bHRnPhz+CBQ3ZLqbQMtrg+AsTPKAXgW38JNsXkyZ+v8waCsDmPq87lmfun5Q2AGysNEQ==} + /caniuse-lite@1.0.30001642: + resolution: {integrity: sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==} dev: true /chai@4.4.1: @@ -2069,8 +2103,8 @@ packages: engines: {node: '>=8'} dev: true - /electron-to-chromium@1.4.754: - resolution: {integrity: sha512-7Kr5jUdns5rL/M9wFFmMZAgFDuL2YOnanFH4OI4iFzUqyh3XOL7nAGbSlSMZdzKMIyyTpNSbqZsWG9odwLeKvA==} + /electron-to-chromium@1.4.828: + resolution: {integrity: sha512-QOIJiWpQJDHAVO4P58pwb133Cwee0nbvy/MV1CwzZVGpkH1RX33N3vsaWRCpR6bF63AAq366neZrRTu7Qlsbbw==} dev: true /elliptic@6.5.4: @@ -3186,7 +3220,7 @@ packages: resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.9 '@babel/parser': 7.24.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -3786,6 +3820,10 @@ packages: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + dev: true + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -4518,15 +4556,15 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /update-browserslist-db@1.0.14(browserslist@4.23.0): - resolution: {integrity: sha512-JixKH8GR2pWYshIPUg/NujK3JO7JiqEEUiNArE86NQyrgUuZeTlZQN3xuS/yiV5Kb48ev9K6RqNkaJjXsdg7Jw==} + /update-browserslist-db@1.1.0(browserslist@4.23.2): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.23.0 + browserslist: 4.23.2 escalade: 3.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 dev: true /uri-js@4.4.1: From 6cb8c3a897d3edb26fb6a6508ecac1ca1b03a108 Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Fri, 19 Jul 2024 12:15:20 +0800 Subject: [PATCH 7/9] fixed bitcore-lib error --- packages/networks/bitcoin/package.json | 1 + packages/networks/bitcoin/pnpm-lock.yaml | 7 ++++ packages/networks/bitcoin/src/assets/Coin.ts | 8 ----- packages/networks/bitcoin/src/index.ts | 38 ++++++++++++++++++++ 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/packages/networks/bitcoin/package.json b/packages/networks/bitcoin/package.json index babe380..df653e8 100644 --- a/packages/networks/bitcoin/package.json +++ b/packages/networks/bitcoin/package.json @@ -81,6 +81,7 @@ }, "devDependencies": { "@types/bitcore-lib": "^0.15.6", + "@types/lodash": "^4.17.7", "@types/ws": "^8.5.10" } } diff --git a/packages/networks/bitcoin/pnpm-lock.yaml b/packages/networks/bitcoin/pnpm-lock.yaml index e7d52d7..6a3d64c 100644 --- a/packages/networks/bitcoin/pnpm-lock.yaml +++ b/packages/networks/bitcoin/pnpm-lock.yaml @@ -28,6 +28,9 @@ devDependencies: '@types/bitcore-lib': specifier: ^0.15.6 version: 0.15.6 + '@types/lodash': + specifier: ^4.17.7 + version: 4.17.7 '@types/ws': specifier: ^8.5.10 version: 8.5.10 @@ -135,6 +138,10 @@ packages: '@types/node': 20.12.7 dev: true + /@types/lodash@4.17.7: + resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} + dev: true + /@types/node@20.12.7: resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} dependencies: diff --git a/packages/networks/bitcoin/src/assets/Coin.ts b/packages/networks/bitcoin/src/assets/Coin.ts index 12021c2..1132e8b 100644 --- a/packages/networks/bitcoin/src/assets/Coin.ts +++ b/packages/networks/bitcoin/src/assets/Coin.ts @@ -79,14 +79,6 @@ export class Coin implements CoinInterface { throw new Error(ErrorTypeEnum.INVALID_ADDRESS) } - // @ts-expect-error library creating error in umd - Address.prototype._classifyArguments = function (data: any, network: any, type: any) { - if (typeof data === 'string') { - // @ts-expect-error library creating error in umd - return Address._transformString(data, network, type) - } - } - const inputs = [] const transaction = new Transaction() const senderAddress = new Address(sender) diff --git a/packages/networks/bitcoin/src/index.ts b/packages/networks/bitcoin/src/index.ts index c71d679..862ba34 100644 --- a/packages/networks/bitcoin/src/index.ts +++ b/packages/networks/bitcoin/src/index.ts @@ -1,3 +1,6 @@ +import lodash from 'lodash' +import { Address, PublicKey, Script } from 'bitcore-lib' + export * from './services/Provider' export * as bitcore from 'bitcore-lib' @@ -8,3 +11,38 @@ export * as services from './services/index' export * as utils from './utils' export * as types from '@multiplechain/types' + +declare module 'bitcore-lib' { + interface Address { + _classifyArguments: (data: any, network: any, type: any) => any + } +} + +Address.prototype._classifyArguments = function (data: any, network: any, type: any) { + /* jshint maxcomplexity: 10 */ + // transform and validate input data + if ( + (data instanceof Buffer || data instanceof Uint8Array) && + (data.length === 20 || data.length === 32) + ) { + // @ts-expect-error exists + return Address._transformHash(data, network, type) + } else if ((data instanceof Buffer || data instanceof Uint8Array) && data.length >= 21) { + // @ts-expect-error exists + return Address._transformBuffer(data, network, type) + } else if (data instanceof PublicKey) { + // @ts-expect-error exists + return Address._transformPublicKey(data, network, type) + } else if (data instanceof Script) { + // @ts-expect-error exists + return Address._transformScript(data, network) + } else if (typeof data === 'string') { + // @ts-expect-error exists + return Address._transformString(data, network, type) + } else if (lodash.isObject(data) === true) { + // @ts-expect-error exists + return Address._transformObject(data) + } else { + throw new TypeError('First argument is an unrecognized data format.') + } +} From bb33a4e02cde73f7b18e1a4e0eda74407581e006 Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Fri, 19 Jul 2024 12:15:36 +0800 Subject: [PATCH 8/9] updated ws url --- .env.example | 4 ++-- packages/networks/solana/tests/setup.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 799d0b8..07ea7f4 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,6 @@ # EVM Chains -EVM_RPC_URL='https://sepolia.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161' -EVM_WS_URL='wss://sepolia.infura.io/ws/v3/9aa3d95b3bc440fa88ea12eaa4456161' +EVM_RPC_URL='https://ethereum-sepolia-rpc.publicnode.com' +EVM_WS_URL='wss://ethereum-sepolia-rpc.publicnode.com' # Assets EVM_COIN_TRANSFER_TEST_IS_ACTIVE=false diff --git a/packages/networks/solana/tests/setup.ts b/packages/networks/solana/tests/setup.ts index bccbd25..e2bfe20 100644 --- a/packages/networks/solana/tests/setup.ts +++ b/packages/networks/solana/tests/setup.ts @@ -7,7 +7,7 @@ try { } catch (e) { provider = new Provider({ testnet: true, - wsUrl: 'wss://alien-wild-fire.solana-devnet.quiknode.pro/ad7c4490b11cd2134e022052f0b2779acb8998ad/' + wsUrl: 'wss://methodical-greatest-orb.solana-devnet.quiknode.pro/c7b6d81c0b58136705b99397e0f396dcee01f748/' }) } From 2f8db90e74980a03358bb7093bbd966defb48a98 Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Fri, 19 Jul 2024 12:19:10 +0800 Subject: [PATCH 9/9] fixed lint error --- packages/networks/bitcoin/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/networks/bitcoin/src/index.ts b/packages/networks/bitcoin/src/index.ts index 862ba34..5de3d60 100644 --- a/packages/networks/bitcoin/src/index.ts +++ b/packages/networks/bitcoin/src/index.ts @@ -39,7 +39,7 @@ Address.prototype._classifyArguments = function (data: any, network: any, type: } else if (typeof data === 'string') { // @ts-expect-error exists return Address._transformString(data, network, type) - } else if (lodash.isObject(data) === true) { + } else if (lodash.isObject(data)) { // @ts-expect-error exists return Address._transformObject(data) } else {