From fc6cb561d36d08bd1df93d85d3f6645834d69f27 Mon Sep 17 00:00:00 2001 From: don mosites Date: Tue, 19 Dec 2023 22:08:05 +0100 Subject: [PATCH] collection token id to string; custom ipfs for metadata calls (#1239) --- source/balances/package.json | 4 ++-- source/pool/package.json | 8 ++++---- source/registry/package.json | 4 ++-- source/staking/package.json | 2 +- source/swap-erc20/package.json | 6 +++--- source/swap/package.json | 6 +++--- source/wrapper/package.json | 6 +++--- tools/constants/package.json | 2 +- tools/libraries/package.json | 8 ++++---- tools/metadata/index.ts | 30 ++++++++++++++---------------- tools/metadata/package.json | 6 +++--- tools/types/package.json | 2 +- tools/types/src/typescript.ts | 2 +- tools/utils/package.json | 6 +++--- 14 files changed, 45 insertions(+), 47 deletions(-) diff --git a/source/balances/package.json b/source/balances/package.json index e70e5bd1b..cfeebdb54 100644 --- a/source/balances/package.json +++ b/source/balances/package.json @@ -29,8 +29,8 @@ "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "4.1.7", - "@airswap/utils": "4.1.10", + "@airswap/constants": "4.1.8", + "@airswap/utils": "4.1.11", "prompt-confirm": "^2.0.4" }, "publishConfig": { diff --git a/source/pool/package.json b/source/pool/package.json index e421e763c..8278e8d50 100644 --- a/source/pool/package.json +++ b/source/pool/package.json @@ -31,10 +31,10 @@ "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "4.1.7", - "@airswap/metadata": "4.1.13", - "@airswap/types": "4.1.2", - "@airswap/utils": "4.1.10", + "@airswap/constants": "4.1.8", + "@airswap/metadata": "4.1.14", + "@airswap/types": "4.1.3", + "@airswap/utils": "4.1.11", "prompt-confirm": "^2.0.4" }, "publishConfig": { diff --git a/source/registry/package.json b/source/registry/package.json index 60b6937ab..90123f3a3 100644 --- a/source/registry/package.json +++ b/source/registry/package.json @@ -32,8 +32,8 @@ "access": "public" }, "devDependencies": { - "@airswap/constants": "4.1.7", - "@airswap/utils": "4.1.10", + "@airswap/constants": "4.1.8", + "@airswap/utils": "4.1.11", "prompt-confirm": "^2.0.4" } } diff --git a/source/staking/package.json b/source/staking/package.json index cc2cdcd5b..d327b2d3a 100644 --- a/source/staking/package.json +++ b/source/staking/package.json @@ -32,7 +32,7 @@ "access": "public" }, "devDependencies": { - "@airswap/utils": "4.1.10", + "@airswap/utils": "4.1.11", "prompt-confirm": "^2.0.4" } } diff --git a/source/swap-erc20/package.json b/source/swap-erc20/package.json index 53a822507..9408d20b1 100644 --- a/source/swap-erc20/package.json +++ b/source/swap-erc20/package.json @@ -29,10 +29,10 @@ "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "4.1.7", + "@airswap/constants": "4.1.8", "@airswap/staking": "4.0.5", - "@airswap/types": "4.1.2", - "@airswap/utils": "4.1.10", + "@airswap/types": "4.1.3", + "@airswap/utils": "4.1.11", "prompt-confirm": "^2.0.4" }, "publishConfig": { diff --git a/source/swap/package.json b/source/swap/package.json index a6503b013..ce388b096 100644 --- a/source/swap/package.json +++ b/source/swap/package.json @@ -32,9 +32,9 @@ "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "4.1.7", - "@airswap/types": "4.1.2", - "@airswap/utils": "4.1.10", + "@airswap/constants": "4.1.8", + "@airswap/types": "4.1.3", + "@airswap/utils": "4.1.11", "@nomicfoundation/hardhat-network-helpers": "^1.0.7" }, "publishConfig": { diff --git a/source/wrapper/package.json b/source/wrapper/package.json index 8c411bd3a..a8c0152c6 100644 --- a/source/wrapper/package.json +++ b/source/wrapper/package.json @@ -32,9 +32,9 @@ "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "4.1.7", - "@airswap/utils": "4.1.10", - "@airswap/types": "4.1.2", + "@airswap/constants": "4.1.8", + "@airswap/utils": "4.1.11", + "@airswap/types": "4.1.3", "@uniswap/v2-periphery": "^1.1.0-beta.0", "prompt-confirm": "^2.0.4" }, diff --git a/tools/constants/package.json b/tools/constants/package.json index 79f1ee152..380a4c9d6 100644 --- a/tools/constants/package.json +++ b/tools/constants/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/constants", - "version": "4.1.7", + "version": "4.1.8", "description": "AirSwap: Constants for Developers", "repository": { "type": "git", diff --git a/tools/libraries/package.json b/tools/libraries/package.json index f252985e6..438c36385 100644 --- a/tools/libraries/package.json +++ b/tools/libraries/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/libraries", - "version": "4.1.15", + "version": "4.1.16", "description": "AirSwap: Libraries for Developers", "repository": { "type": "git", @@ -27,15 +27,15 @@ }, "dependencies": { "@airswap/balances": "4.0.4", - "@airswap/constants": "4.1.7", + "@airswap/constants": "4.1.8", "@airswap/jsonrpc-client-websocket": "0.0.1", "@airswap/registry": "4.1.3", "@airswap/pool": "4.1.4", "@airswap/staking": "4.0.5", "@airswap/swap": "4.1.2", "@airswap/swap-erc20": "4.1.6", - "@airswap/types": "4.1.2", - "@airswap/utils": "4.1.10", + "@airswap/types": "4.1.3", + "@airswap/utils": "4.1.11", "@airswap/wrapper": "4.1.5", "browser-or-node": "^2.1.1", "ethers": "^5.6.9", diff --git a/tools/metadata/index.ts b/tools/metadata/index.ts index d182724c3..9f519df33 100644 --- a/tools/metadata/index.ts +++ b/tools/metadata/index.ts @@ -22,6 +22,7 @@ const AIRSWAP_LOGO_URI = 'https://storage.googleapis.com/subgraph-images/158680119781426823563.png' const AIRSWAP_SYMBOL = 'AST' const DEFAULT_NAME = 'Unknown NFT' +const DEFAULT_IPFS_URI = 'https://ipfs.io/ipfs/' import { abi as ERC165_ABI } from '@openzeppelin/contracts/build/contracts/ERC165.json' import { abi as ERC20_ABI } from '@openzeppelin/contracts/build/contracts/ERC20.json' @@ -224,7 +225,7 @@ export async function getCollectionTokenInfo( address: string, id: string ): Promise { - const tokenKind = await getTokenKind(provider, address) + const kind = await getTokenKind(provider, address) let uri = null let metadata = null @@ -232,11 +233,8 @@ export async function getCollectionTokenInfo( if (!ethers.utils.isAddress(address)) { throw new Error(`Invalid address: ${address}`) } - if (isNaN(Number(id))) { - throw new Error(`Invalid id: ${id}`) - } try { - switch (tokenKind) { + switch (kind) { case TokenKinds.ERC721: uri = await new ethers.Contract(address, ERC721_ABI, provider).tokenURI( id @@ -253,18 +251,18 @@ export async function getCollectionTokenInfo( } return { chainId: (await provider.getNetwork()).chainId, - kind: tokenKind, address: address.toLowerCase(), - id: Number(id), + kind, + id, uri, ...metadata, } } -async function fetchMetaData(url: string) { +async function fetchMetaData(url: string, ipfsUri = DEFAULT_IPFS_URI) { if (validUrl.isUri(url)) { if (url.startsWith('ipfs')) { - url = `https://cloudflare-ipfs.com/${url.replace('://', '/')}` + url = url.replace('ipfs://', ipfsUri) } const data = await (await fetch(url)).json() if (typeof data === 'string') @@ -286,11 +284,12 @@ const transformErc721TokenAttributeToCollectionTokenAttribute = ( }) const transformERC721ToCollectionToken = ( - metadata: any + metadata: any, + ipfsUri = DEFAULT_IPFS_URI ): CollectionTokenMetadata => ({ name: metadata.name || DEFAULT_NAME, description: metadata.description, - image: metadata.image?.replace('ipfs://', 'https://ipfs.io/ipfs/'), + image: metadata.image?.replace('ipfs://', ipfsUri), attributes: (metadata.attributes || []).map( transformErc721TokenAttributeToCollectionTokenAttribute ), @@ -304,15 +303,14 @@ const transformErc1155TokenAttributeToCollectionTokenAttribute = ( }) const transformERC1155ToCollectionToken = ( - metadata: any + metadata: any, + ipfsUri = DEFAULT_IPFS_URI ): CollectionTokenMetadata => ({ name: metadata.name || DEFAULT_NAME, description: metadata.description, image: - (metadata.image_url || metadata.image || '').replace( - 'ipfs://', - 'https://ipfs.io/ipfs/' - ) || undefined, + (metadata.image_url || metadata.image || '').replace('ipfs://', ipfsUri) || + undefined, attributes: (metadata.attributes || []).map( transformErc1155TokenAttributeToCollectionTokenAttribute ), diff --git a/tools/metadata/package.json b/tools/metadata/package.json index 2a614c725..0d77adf97 100644 --- a/tools/metadata/package.json +++ b/tools/metadata/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/metadata", - "version": "4.1.13", + "version": "4.1.14", "description": "AirSwap: Token Metadata for Developers", "repository": { "type": "git", @@ -20,8 +20,8 @@ "test": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts" }, "dependencies": { - "@airswap/constants": "4.1.7", - "@airswap/types": "4.1.2", + "@airswap/constants": "4.1.8", + "@airswap/types": "4.1.3", "@airswap/wrapper": "4.1.5", "@openzeppelin/contracts": "^4.8.3", "@uniswap/token-lists": "^1.0.0-beta.24", diff --git a/tools/types/package.json b/tools/types/package.json index 8cae119aa..f0494a204 100644 --- a/tools/types/package.json +++ b/tools/types/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/types", - "version": "4.1.2", + "version": "4.1.3", "description": "AirSwap: Types for Developers", "repository": { "type": "git", diff --git a/tools/types/src/typescript.ts b/tools/types/src/typescript.ts index 95d3bd69e..eb4012fc0 100644 --- a/tools/types/src/typescript.ts +++ b/tools/types/src/typescript.ts @@ -114,6 +114,6 @@ export type CollectionTokenInfo = { chainId: number kind: string address: string - id: number + id: string uri: string } & CollectionTokenMetadata diff --git a/tools/utils/package.json b/tools/utils/package.json index 866ca869c..e0ad35e4a 100644 --- a/tools/utils/package.json +++ b/tools/utils/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/utils", - "version": "4.1.10", + "version": "4.1.11", "description": "AirSwap: Utilities for Developers", "repository": { "type": "git", @@ -21,8 +21,8 @@ "test:ci": "yarn test" }, "dependencies": { - "@airswap/constants": "4.1.7", - "@airswap/types": "4.1.2", + "@airswap/constants": "4.1.8", + "@airswap/types": "4.1.3", "@metamask/eth-sig-util": "^5.0.2", "bignumber.js": "^9.0.1", "ethereumjs-util": "^7.1.5",