Open Osub opened 1 year ago
node fetch-schema.js Failed to fetch schema from https://api.uniswap.org/v1/graphql
FetchError: request to https://api.uniswap.org/v1/graphql failed, reason: connect ETIMEDOUT 162.125.2.6:443
at ClientRequest.<anonymous> (/home/parallels/.nvm/versions/node/v14.21.1/lib/node_modules/get-graphql-schema/node_modules/node-fetch/lib/index.js:1491:11)
at ClientRequest.emit (events.js:400:28)
at TLSSocket.socketErrorListener (_http_client.js:475:9)
at TLSSocket.emit (events.js:400:28)
at emitErrorNT (internal/streams/destroy.js:106:8)
at emitErrorCloseNT (internal/streams/destroy.js:74:3)
at processTicksAndRejections (internal/process/task_queues.js:82:21) {
type: 'system',
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT'
}
I had the same problem
interface/src/graphql/data/schema.graphql
"""This directive allows results to be deferred during execution""" directive @defer on FIELD
""" Tells the service this field/object has access authorized by a Cognito User Pools token. """ directive @aws_cognito_user_pools( """List of cognito user pool groups which have access on this field""" cognito_groups: [String] ) on OBJECT | FIELD_DEFINITION
""" Tells the service which subscriptions will be published to when this mutation is called. This directive is deprecated use @aws_susbscribe directive instead. """ directive @aws_publish( """ List of subscriptions which will be published to when this mutation is called. """ subscriptions: [String] ) on FIELD_DEFINITION
"""Tells the service which mutation triggers this subscription.""" directive @aws_subscribe( """ List of mutations which will trigger this subscription when they are called. """ mutations: [String] ) on FIELD_DEFINITION
""" Tells the service this field/object has access authorized by a Lambda Authorizer. """ directive @aws_lambda on OBJECT | FIELD_DEFINITION
""" Tells the service this field/object has access authorized by an OIDC token. """ directive @aws_oidc on OBJECT | FIELD_DEFINITION
""" Tells the service this field/object has access authorized by sigv4 signing. """ directive @aws_iam on OBJECT | FIELD_DEFINITION
"""Directs the schema to enforce authorization on a field""" directive @aws_auth( """List of cognito user pool groups which have access on this field""" cognito_groups: [String] ) on FIELD_DEFINITION
""" Tells the service this field/object has access authorized by an API key. """ directive @aws_api_key on OBJECT | FIELD_DEFINITION
enum ActivityType { APPROVE CANCEL CLAIM SEND RECEIVE SWAP DEPLOYMENT UNKNOWN money market LEND BORROW REPAY WITHDRAW NFT MINT BURN Staking STAKE UNSTAKE }
type Amount implements IAmount { id: ID! currency: Currency value: Float! }
type AmountChange { id: ID! percentage: Amount absolute: Amount }
type AssetActivity { id: ID! timestamp: Int! type: ActivityType! gasUsed: Float transaction: Transaction! assetChanges: [AssetChange]! }
union AssetChange = TokenTransfer | NftTransfer | TokenApproval | NftApproval | NftApproveForAll
"""
The AWSJSON
scalar type provided by AWS AppSync, represents a JSON string that
complies with RFC 8259. Maps like
"{\"upvotes\": 10}", lists like "[1,2,3]", and scalar values like
"\"AWSJSON example string\"", "1", and "true" are accepted as
valid JSON and will automatically be parsed and loaded in the resolver mapping
templates as Maps, Lists, or Scalar values rather than as the literal input
strings. Invalid JSON strings like "{a: 1}", "{'a': 1}" and "Unquoted
string" will throw GraphQL validation errors.
"""
scalar AWSJSON
enum Chain { ARBITRUM ETHEREUM ETHEREUM_GOERLI OPTIMISM POLYGON CELO }
input ContractInput { chain: Chain! address: String }
enum Currency { USD ETH }
type Dimensions { id: ID! height: Float width: Float }
enum HighLow { HIGH LOW }
enum HistoryDuration { HOUR DAY WEEK MONTH YEAR MAX }
interface IAmount { currency: Currency value: Float! }
interface IContract { chain: Chain! address: String }
type Image { id: ID! url: String! dimensions: Dimensions }
""" TODO: deprecate this enum""" enum MarketSortableField { MARKET_CAP VOLUME }
type NftApproval { id: ID! nftStandard: NftStandard!
""" can be erc20 or erc1155""" asset: NftAsset! approvedAddress: String! }
type NftApproveForAll { id: ID! nftStandard: NftStandard!
""" can be erc721 or erc1155""" asset: NftAsset! operatorAddress: String! approved: Boolean! }
type NftAsset { id: ID! collection: NftCollection description: String imageUrl: String thumbnailUrl: String animationUrl: String smallImageUrl: String image: Image thumbnail: Image smallImage: Image originalImage: Image name: String nftContract: NftContract
""" TODO: may need to be array to support erc1155 cases. not needed at the moment so will revisit. """ ownerAddress: String tokenId: String! traits: [NftAssetTrait!] rarities: [NftAssetRarity!] listings(asc: Boolean, first: Int, last: Int, after: String, before: String): NftOrderConnection suspiciousFlag: Boolean flaggedBy: String metadataUrl: String creator: NftProfile }
type NftAssetConnection { pageInfo: PageInfo! edges: [NftAssetEdge!]! totalCount: Int }
type NftAssetEdge { cursor: String! node: NftAsset! }
input NftAssetInput { address: String! tokenId: String! }
type NftAssetRarity { id: ID! score: Float rank: Int provider: NftRarityProvider }
input NftAssetsFilterInput { tokenSearchQuery: String tokenIds: [String!] traits: [NftAssetTraitInput!] listed: Boolean minPrice: String maxPrice: String marketplaces: [NftMarketplace!] }
enum NftAssetSortableField { PRICE RARITY }
type NftAssetTrait { id: ID! name: String rarity: Float value: String }
input NftAssetTraitInput { name: String! values: [String!]! }
type NftBalance { id: ID! ownedAsset: NftAsset listedMarketplaces: [NftMarketplace!] lastPrice: TimestampedAmount listingFees: [NftFee] }
type NftBalanceConnection { pageInfo: PageInfo! edges: [NftBalanceEdge!]! }
type NftBalanceEdge { cursor: String! node: NftBalance! }
input NftBalancesFilterInput { addresses: [String!] assets: [NftAssetInput!] }
type NftCollection { id: ID! collectionId: String!
""" TODO: support querying for collection assets here assets(page: Int, pageSize: Int, orderBy: NftAssetSortableField): [NftAsset] """ bannerImageUrl: String bannerImage: Image description: String discordUrl: String homepageUrl: String imageUrl: String image: Image instagramName: String markets(currencies: [Currency!]!): [NftCollectionMarket!] name: String nftContracts: [NftContract!] openseaUrl: String traits: [NftCollectionTrait!] twitterName: String isVerified: Boolean numAssets: Int creator: NftProfile }
type NftCollectionConnection { pageInfo: PageInfo! edges: [NftCollectionEdge!]! }
type NftCollectionEdge { cursor: String! node: NftCollection! }
type NftCollectionMarket { id: ID! nftContracts: [NftContract!] floorPrice: TimestampedAmount owners: Int volume24h: Amount totalVolume: TimestampedAmount volume(duration: HistoryDuration): TimestampedAmount volumePercentChange(duration: HistoryDuration): TimestampedAmount floorPricePercentChange(duration: HistoryDuration): TimestampedAmount sales(duration: HistoryDuration): TimestampedAmount listings: TimestampedAmount marketplaces(marketplaces: [NftMarketplace!]): [NftCollectionMarketplace!] }
type NftCollectionMarketplace { id: ID! marketplace: NftMarketplace listings: Int floorPrice: Float }
input NftCollectionsFilterInput { addresses: [String!] }
type NftCollectionTrait { id: ID! name: String values: [String!] stats: [NftCollectionTraitStats!] }
type NftCollectionTraitStats { id: ID! name: String value: String assets: Int listings: Int }
type NftContract implements IContract { id: ID! address: String! chain: Chain! name: String standard: NftStandard symbol: String totalSupply: Int }
type NftFee { id: ID! payoutAddress: String! basisPoints: Int! }
enum NftMarketplace { OPENSEA LOOKSRARE X2Y2 SUDOSWAP NFTX NFT20 FOUNDATION CRYPTOPUNKS }
enum NftMarketSortableField { VOLUME FLOOR_PRICE }
type NftOrder { id: ID! address: String! tokenId: String type: OrderType! marketplace: NftMarketplace! marketplaceUrl: String! price: Amount! quantity: Int! orderHash: String status: OrderStatus! createdAt: Float! startAt: Float! endAt: Float maker: String! taker: String auctionType: String protocolParameters: AWSJSON }
type NftOrderConnection { pageInfo: PageInfo! edges: [NftOrderEdge!]! }
type NftOrderEdge { cursor: String! node: NftOrder! }
type NftProfile { id: ID! address: String! isVerified: Boolean profileImage: Image username: String }
enum NftRarityProvider { RARITY_SNIPER }
enum NftStandard { ERC721 ERC1155 NONCOMPLIANT }
type NftTransfer { id: ID! nftStandard: NftStandard! asset: NftAsset! sender: String! recipient: String! direction: TransactionDirection! }
enum OrderStatus { VALID EXECUTED CANCELLED EXPIRED }
enum OrderType { LISTING OFFER }
type PageInfo { hasPreviousPage: Boolean hasNextPage: Boolean startCursor: String endCursor: String }
type Portfolio { id: ID! ownerAddress: String! tokensTotalDenominatedValue: Amount tokensTotalDenominatedValueChange(duration: HistoryDuration): AmountChange tokensTotalDenominatedValueHistory(duration: HistoryDuration): [TimestampedAmount] tokenBalances: [TokenBalance] assetsValueUSD: Float totalValueUSD: Float assetsValue: Float totalValue: Float absoluteChange24H: Float relativeChange24H: Float
""" TODO: (michael.zhang) replace with paginated query""" nftBalances: [NftBalance] assetActivities(page: Int, pageSize: Int): [AssetActivity] }
type Query { tokens(contracts: [ContractInput!]!): [Token] tokenProjects(contracts: [ContractInput!]!): [TokenProject] topTokenProjects(orderBy: MarketSortableField!, page: Int!, pageSize: Int!, currency: Currency): [TokenProject] searchTokens(searchQuery: String!): [Token] searchTokenProjects(searchQuery: String!): [TokenProject] assetActivities(address: String!, page: Int, pageSize: Int): [AssetActivity] portfolio(ownerAddress: String!): Portfolio portfolios(ownerAddresses: [String!]!): [Portfolio] nftCollectionsById(collectionIds: [String]): [NftCollection] topTokens(chain: Chain, page: Int!, pageSize: Int!, orderBy: TokenSortableField): [Token] nftAssets(chain: Chain, address: String!, orderBy: NftAssetSortableField, asc: Boolean, filter: NftAssetsFilterInput, first: Int, last: Int, after: String, before: String): NftAssetConnection nftCollections(filter: NftCollectionsFilterInput, first: Int, last: Int, after: String, before: String): NftCollectionConnection nftBalances(chain: Chain, ownerAddress: String!, filter: NftBalancesFilterInput, first: Int, last: Int, after: String, before: String): NftBalanceConnection }
enum SafetyLevel { VERIFIED MEDIUM_WARNING STRONG_WARNING BLOCKED }
type TimestampedAmount implements IAmount { id: ID! currency: Currency value: Float! timestamp: Int! }
type Token implements IContract { id: ID! chain: Chain! address: String standard: TokenStandard decimals: Int name: String symbol: String project: TokenProject market(currency: Currency): TokenMarket }
type TokenApproval { id: ID! tokenStandard: TokenStandard!
""" can be erc20 or erc1155""" asset: Token! approvedAddress: String! quantity: String! }
type TokenBalance { id: ID! blockNumber: Int blockTimestamp: Int quantity: Float denominatedValue: Amount ownerAddress: String! token: Token tokenProjectMarket: TokenProjectMarket }
type TokenMarket { id: ID! token: Token! price: Amount totalValueLocked: Amount volume(duration: HistoryDuration!): Amount pricePercentChange(duration: HistoryDuration!): Amount priceHistory(duration: HistoryDuration!): [TimestampedAmount] priceHighLow(duration: HistoryDuration!, highLow: HighLow!): Amount }
type TokenProject { id: ID! name: String tokens: [Token!]! description: String twitterName: String homepageUrl: String logoUrl: String logo: Image smallLogo: Image isSpam: Boolean safetyLevel: SafetyLevel markets(currencies: [Currency!]!): [TokenProjectMarket] }
type TokenProjectMarket { id: ID! tokenProject: TokenProject! currency: Currency! price: Amount volume24h: Amount pricePercentChange24h: Amount marketCap: Amount fullyDilutedMarketCap: Amount priceHistory(duration: HistoryDuration!): [TimestampedAmount] volume(duration: HistoryDuration!): Amount pricePercentChange(duration: HistoryDuration!): Amount priceHighLow(duration: HistoryDuration!, highLow: HighLow!): Amount }
""" TODO: implement MARKET_CAP and VOLUME, they return mock data""" enum TokenSortableField { TOTAL_VALUE_LOCKED MARKET_CAP VOLUME }
enum TokenStandard { NATIVE ERC20 ERC1155 }
type TokenTransfer { id: ID! tokenStandard: TokenStandard! asset: Token! sender: String! recipient: String! quantity: String! direction: TransactionDirection! transactedValue: Amount }
type Transaction { id: ID! blockNumber: Int! from: String! to: String! hash: String! nonce: Int! gasLimit: Float maxFeePerGas: Float status: TransactionStatus! }
enum TransactionDirection { IN OUT SELF }
enum TransactionStatus { FAILED CONFIRMED PENDING }
Where did you find it!
get-graphql-schema https://beta.api.uniswap.org/v1/graphql -j FetchError: request to https://beta.api.uniswap.org/v1/graphql failed, reason: connect ETIMEDOUT 162.125.82.7:443 at ClientRequest.<anonymous> (/home/parallels/.nvm/versions/node/v14.21.1/lib/node_modules/get-graphql-schema/node_modules/node-fetch/lib/index.js:1491:11) at ClientRequest.emit (events.js:400:28) at TLSSocket.socketErrorListener (_http_client.js:475:9) at TLSSocket.emit (events.js:400:28) at emitErrorNT (internal/streams/destroy.js:106:8) at emitErrorCloseNT (internal/streams/destroy.js:74:3) at processTicksAndRejections (internal/process/task_queues.js:82:21) { type: 'system', errno: 'ETIMEDOUT', code: 'ETIMEDOUT' }
is there an alternative REACT_APP_AWS_API_ENDPOINT ?
What does REACT_APP_AWS_API_ENDPOINT mean?
Had you fixed this problem? would you like to sharing ? I have the same issue.
I fixed it by enable http proxy. In my case, I'm using proxy client Clashx Pro on mac and enable ’增强模式‘ to make sure node command pass through the proxy. And you can also use other tools to make the node command pass through the proxy
I fixed it by enable http proxy. In my case, I'm using proxy client Clashx Pro on mac and enable ’增强模式‘ to make sure node command pass through the proxy. And you can also use other tools to make the node command pass through the proxy
Your answer helped me, and I solved the problem by setting up the virtual network card. If you use wall-climbing software, you should have a similar setting.
Error: FetchError: request to https://api.uniswap.org/v1/graphql failed, reason: Hostname/IP does not match certificate's altnames: Host: api.uniswap.org. is not in the cert's altnames: DNS:*.facebook.com, DNS:*.facebook.net, DNS:*.fbcdn.net, DNS:*.fbsbx.com, DNS:*.m.facebook.com, DNS:*.messenger.com, DNS:*.xx.fbcdn.net, DNS:*.xy.fbcdn.net, DNS:*.xz.fbcdn.net, DNS:facebook.com, DNS:messenger.com
at ClientRequest.<anonymous> (/Users/zhangshuyao/Sites/workspace-maple/interface/node_modules/node-fetch/lib/index.js:1491:11)
at ClientRequest.emit (events.js:400:28)
at TLSSocket.socketErrorListener (_http_client.js:475:9)
at TLSSocket.emit (events.js:400:28)
at emitErrorNT (internal/streams/destroy.js:106:8)
at emitErrorCloseNT (internal/streams/destroy.js:74:3)
at processTicksAndRejections (internal/process/task_queues.js:82:21) {
type: 'system',
errno: 'ERR_TLS_CERT_ALTNAME_INVALID',
code: 'ERR_TLS_CERT_ALTNAME_INVALID'
}
at /Users/zhangshuyao/Sites/workspace-maple/interface/scripts/fetch-schema.js:16:15
at processTicksAndRejections (internal/process/task_queues.js:95:5)
Failed to fetch schema from https://api.uniswap.org/v1/graphql
interface/src/graphql/data/schema.graphql
"""This directive allows results to be deferred during execution""" directive @defer on FIELD """ Tells the service this field/object has access authorized by a Cognito User Pools token. """ directive @aws_cognito_user_pools( """List of cognito user pool groups which have access on this field""" cognito_groups: [String] ) on OBJECT | FIELD_DEFINITION """ Tells the service which subscriptions will be published to when this mutation is called. This directive is deprecated use @aws_susbscribe directive instead. """ directive @aws_publish( """ List of subscriptions which will be published to when this mutation is called. """ subscriptions: [String] ) on FIELD_DEFINITION """Tells the service which mutation triggers this subscription.""" directive @aws_subscribe( """ List of mutations which will trigger this subscription when they are called. """ mutations: [String] ) on FIELD_DEFINITION """ Tells the service this field/object has access authorized by a Lambda Authorizer. """ directive @aws_lambda on OBJECT | FIELD_DEFINITION """ Tells the service this field/object has access authorized by an OIDC token. """ directive @aws_oidc on OBJECT | FIELD_DEFINITION """ Tells the service this field/object has access authorized by sigv4 signing. """ directive @aws_iam on OBJECT | FIELD_DEFINITION """Directs the schema to enforce authorization on a field""" directive @aws_auth( """List of cognito user pool groups which have access on this field""" cognito_groups: [String] ) on FIELD_DEFINITION """ Tells the service this field/object has access authorized by an API key. """ directive @aws_api_key on OBJECT | FIELD_DEFINITION enum ActivityType { APPROVE CANCEL CLAIM SEND RECEIVE SWAP DEPLOYMENT UNKNOWN money market LEND BORROW REPAY WITHDRAW NFT MINT BURN Staking STAKE UNSTAKE } type Amount implements IAmount { id: ID! currency: Currency value: Float! } type AmountChange { id: ID! percentage: Amount absolute: Amount } type AssetActivity { id: ID! timestamp: Int! type: ActivityType! gasUsed: Float transaction: Transaction! assetChanges: [AssetChange]! } union AssetChange = TokenTransfer | NftTransfer | TokenApproval | NftApproval | NftApproveForAll """ The `AWSJSON` scalar type provided by AWS AppSync, represents a JSON string that complies with [RFC 8259](https://tools.ietf.org/html/rfc8259). Maps like "**{\\"upvotes\\": 10}**", lists like "**[1,2,3]**", and scalar values like "**\\"AWSJSON example string\\"**", "**1**", and "**true**" are accepted as valid JSON and will automatically be parsed and loaded in the resolver mapping templates as Maps, Lists, or Scalar values rather than as the literal input strings. Invalid JSON strings like "**{a: 1}**", "**{'a': 1}**" and "**Unquoted string**" will throw GraphQL validation errors. """ scalar AWSJSON enum Chain { ARBITRUM ETHEREUM ETHEREUM_GOERLI OPTIMISM POLYGON CELO } input ContractInput { chain: Chain! address: String } enum Currency { USD ETH } type Dimensions { id: ID! height: Float width: Float } enum HighLow { HIGH LOW } enum HistoryDuration { HOUR DAY WEEK MONTH YEAR MAX } interface IAmount { currency: Currency value: Float! } interface IContract { chain: Chain! address: String } type Image { id: ID! url: String! dimensions: Dimensions } """ TODO: deprecate this enum""" enum MarketSortableField { MARKET_CAP VOLUME } type NftApproval { id: ID! nftStandard: NftStandard! """ can be erc20 or erc1155""" asset: NftAsset! approvedAddress: String! } type NftApproveForAll { id: ID! nftStandard: NftStandard! """ can be erc721 or erc1155""" asset: NftAsset! operatorAddress: String! approved: Boolean! } type NftAsset { id: ID! collection: NftCollection description: String imageUrl: String thumbnailUrl: String animationUrl: String smallImageUrl: String image: Image thumbnail: Image smallImage: Image originalImage: Image name: String nftContract: NftContract """ TODO: may need to be array to support erc1155 cases. not needed at the moment so will revisit. """ ownerAddress: String tokenId: String! traits: [NftAssetTrait!] rarities: [NftAssetRarity!] listings(asc: Boolean, first: Int, last: Int, after: String, before: String): NftOrderConnection suspiciousFlag: Boolean flaggedBy: String metadataUrl: String creator: NftProfile } type NftAssetConnection { pageInfo: PageInfo! edges: [NftAssetEdge!]! totalCount: Int } type NftAssetEdge { cursor: String! node: NftAsset! } input NftAssetInput { address: String! tokenId: String! } type NftAssetRarity { id: ID! score: Float rank: Int provider: NftRarityProvider } input NftAssetsFilterInput { tokenSearchQuery: String tokenIds: [String!] traits: [NftAssetTraitInput!] listed: Boolean minPrice: String maxPrice: String marketplaces: [NftMarketplace!] } enum NftAssetSortableField { PRICE RARITY } type NftAssetTrait { id: ID! name: String rarity: Float value: String } input NftAssetTraitInput { name: String! values: [String!]! } type NftBalance { id: ID! ownedAsset: NftAsset listedMarketplaces: [NftMarketplace!] lastPrice: TimestampedAmount listingFees: [NftFee] } type NftBalanceConnection { pageInfo: PageInfo! edges: [NftBalanceEdge!]! } type NftBalanceEdge { cursor: String! node: NftBalance! } input NftBalancesFilterInput { addresses: [String!] assets: [NftAssetInput!] } type NftCollection { id: ID! collectionId: String! """ TODO: support querying for collection assets here assets(page: Int, pageSize: Int, orderBy: NftAssetSortableField): [NftAsset] """ bannerImageUrl: String bannerImage: Image description: String discordUrl: String homepageUrl: String imageUrl: String image: Image instagramName: String markets(currencies: [Currency!]!): [NftCollectionMarket!] name: String nftContracts: [NftContract!] openseaUrl: String traits: [NftCollectionTrait!] twitterName: String isVerified: Boolean numAssets: Int creator: NftProfile } type NftCollectionConnection { pageInfo: PageInfo! edges: [NftCollectionEdge!]! } type NftCollectionEdge { cursor: String! node: NftCollection! } type NftCollectionMarket { id: ID! nftContracts: [NftContract!] floorPrice: TimestampedAmount owners: Int volume24h: Amount totalVolume: TimestampedAmount volume(duration: HistoryDuration): TimestampedAmount volumePercentChange(duration: HistoryDuration): TimestampedAmount floorPricePercentChange(duration: HistoryDuration): TimestampedAmount sales(duration: HistoryDuration): TimestampedAmount listings: TimestampedAmount marketplaces(marketplaces: [NftMarketplace!]): [NftCollectionMarketplace!] } type NftCollectionMarketplace { id: ID! marketplace: NftMarketplace listings: Int floorPrice: Float } input NftCollectionsFilterInput { addresses: [String!] } type NftCollectionTrait { id: ID! name: String values: [String!] stats: [NftCollectionTraitStats!] } type NftCollectionTraitStats { id: ID! name: String value: String assets: Int listings: Int } type NftContract implements IContract { id: ID! address: String! chain: Chain! name: String standard: NftStandard symbol: String totalSupply: Int } type NftFee { id: ID! payoutAddress: String! basisPoints: Int! } enum NftMarketplace { OPENSEA LOOKSRARE X2Y2 SUDOSWAP NFTX NFT20 FOUNDATION CRYPTOPUNKS } enum NftMarketSortableField { VOLUME FLOOR_PRICE } type NftOrder { id: ID! address: String! tokenId: String type: OrderType! marketplace: NftMarketplace! marketplaceUrl: String! price: Amount! quantity: Int! orderHash: String status: OrderStatus! createdAt: Float! startAt: Float! endAt: Float maker: String! taker: String auctionType: String protocolParameters: AWSJSON } type NftOrderConnection { pageInfo: PageInfo! edges: [NftOrderEdge!]! } type NftOrderEdge { cursor: String! node: NftOrder! } type NftProfile { id: ID! address: String! isVerified: Boolean profileImage: Image username: String } enum NftRarityProvider { RARITY_SNIPER } enum NftStandard { ERC721 ERC1155 NONCOMPLIANT } type NftTransfer { id: ID! nftStandard: NftStandard! asset: NftAsset! sender: String! recipient: String! direction: TransactionDirection! } enum OrderStatus { VALID EXECUTED CANCELLED EXPIRED } enum OrderType { LISTING OFFER } type PageInfo { hasPreviousPage: Boolean hasNextPage: Boolean startCursor: String endCursor: String } type Portfolio { id: ID! ownerAddress: String! tokensTotalDenominatedValue: Amount tokensTotalDenominatedValueChange(duration: HistoryDuration): AmountChange tokensTotalDenominatedValueHistory(duration: HistoryDuration): [TimestampedAmount] tokenBalances: [TokenBalance] assetsValueUSD: Float totalValueUSD: Float assetsValue: Float totalValue: Float absoluteChange24H: Float relativeChange24H: Float """ TODO: (michael.zhang) replace with paginated query""" nftBalances: [NftBalance] assetActivities(page: Int, pageSize: Int): [AssetActivity] } type Query { tokens(contracts: [ContractInput!]!): [Token] tokenProjects(contracts: [ContractInput!]!): [TokenProject] topTokenProjects(orderBy: MarketSortableField!, page: Int!, pageSize: Int!, currency: Currency): [TokenProject] searchTokens(searchQuery: String!): [Token] searchTokenProjects(searchQuery: String!): [TokenProject] assetActivities(address: String!, page: Int, pageSize: Int): [AssetActivity] portfolio(ownerAddress: String!): Portfolio portfolios(ownerAddresses: [String!]!): [Portfolio] nftCollectionsById(collectionIds: [String]): [NftCollection] topTokens(chain: Chain, page: Int!, pageSize: Int!, orderBy: TokenSortableField): [Token] nftAssets(chain: Chain, address: String!, orderBy: NftAssetSortableField, asc: Boolean, filter: NftAssetsFilterInput, first: Int, last: Int, after: String, before: String): NftAssetConnection nftCollections(filter: NftCollectionsFilterInput, first: Int, last: Int, after: String, before: String): NftCollectionConnection nftBalances(chain: Chain, ownerAddress: String!, filter: NftBalancesFilterInput, first: Int, last: Int, after: String, before: String): NftBalanceConnection } enum SafetyLevel { VERIFIED MEDIUM_WARNING STRONG_WARNING BLOCKED } type TimestampedAmount implements IAmount { id: ID! currency: Currency value: Float! timestamp: Int! } type Token implements IContract { id: ID! chain: Chain! address: String standard: TokenStandard decimals: Int name: String symbol: String project: TokenProject market(currency: Currency): TokenMarket } type TokenApproval { id: ID! tokenStandard: TokenStandard! """ can be erc20 or erc1155""" asset: Token! approvedAddress: String! quantity: String! } type TokenBalance { id: ID! blockNumber: Int blockTimestamp: Int quantity: Float denominatedValue: Amount ownerAddress: String! token: Token tokenProjectMarket: TokenProjectMarket } type TokenMarket { id: ID! token: Token! price: Amount totalValueLocked: Amount volume(duration: HistoryDuration!): Amount pricePercentChange(duration: HistoryDuration!): Amount priceHistory(duration: HistoryDuration!): [TimestampedAmount] priceHighLow(duration: HistoryDuration!, highLow: HighLow!): Amount } type TokenProject { id: ID! name: String tokens: [Token!]! description: String twitterName: String homepageUrl: String logoUrl: String logo: Image smallLogo: Image isSpam: Boolean safetyLevel: SafetyLevel markets(currencies: [Currency!]!): [TokenProjectMarket] } type TokenProjectMarket { id: ID! tokenProject: TokenProject! currency: Currency! price: Amount volume24h: Amount pricePercentChange24h: Amount marketCap: Amount fullyDilutedMarketCap: Amount priceHistory(duration: HistoryDuration!): [TimestampedAmount] volume(duration: HistoryDuration!): Amount pricePercentChange(duration: HistoryDuration!): Amount priceHighLow(duration: HistoryDuration!, highLow: HighLow!): Amount } """ TODO: implement MARKET_CAP and VOLUME, they return mock data""" enum TokenSortableField { TOTAL_VALUE_LOCKED MARKET_CAP VOLUME } enum TokenStandard { NATIVE ERC20 ERC1155 } type TokenTransfer { id: ID! tokenStandard: TokenStandard! asset: Token! sender: String! recipient: String! quantity: String! direction: TransactionDirection! transactedValue: Amount } type Transaction { id: ID! blockNumber: Int! from: String! to: String! hash: String! nonce: Int! gasLimit: Float maxFeePerGas: Float status: TransactionStatus! } enum TransactionDirection { IN OUT SELF } enum TransactionStatus { FAILED CONFIRMED PENDING }
I use this schema and run npx graphql-codegen --config graphql.data.codegen.config.ts
but got:
✔ Parse Configuration
⚠ Generate outputs
❯ Generate to src/graphql/data/__generated__/types-and-hooks.ts
✔ Load GraphQL schemas
✔ Load GraphQL documents
✖ GraphQL Document Validation failed with 13 errors;
Error 0: Cannot query field "token" on type "Query". Did you mean "tokens"?
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/Token.ts:3:5
Error 1: Cannot query field "token" on type "Query". Did you mean "tokens"?
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/TokenPrice.ts:3:5
Error 2: Cannot query field "token" on type "Query". Did you mean "tokens"?
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/TokenSpotPrice.ts:3:5
Error 3: Field "nameQuery" is not defined by type "NftCollectionsFilterInput".
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/nft/CollectionSearch.ts:3:30
Error 4: Unknown type "NftActivityFilterInput". Did you mean "NftAssetsFilterInput", "NftBalancesFilterIn…
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/nft/NftActivity.ts:2:30
Error 5: Cannot query field "nftActivity" on type "Query".
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/nft/NftActivity.ts:3:5
Error 6: Cannot query field "nftRoute" on type "Query".
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/nft/NftUniversalRouterAddress.ts:3…
Error 7: Unknown type "NftTradeInput". Did you mean "ContractInput" or "NftAssetInput"?
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/nft/Routing.ts:5:18
Error 8: Unknown type "TokenTradeInput". Did you mean "ContractInput", "TokenMarket", "TokenProject", or …
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/nft/Routing.ts:6:20
Error 9: Cannot query field "nftRoute" on type "Query".
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/nft/Routing.ts:8:5
Error 10: Cannot query field "topCollections" on type "Query". Did you mean "nftCollections"?
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/nft/TrendingCollections.ts:3:5
Error 11: Unknown argument "chains" on field "Query.portfolios".
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/portfolios.ts:3:49
Error 12: Cannot query field "chain" on type "AssetActivity".
at /Users/zhangshuyao/Sites/workspace-maple/interface/src/graphql/data/transactions.graphql:109:3
I have the same issue. Maybe someone knows how to solve it
me too
me to
Guys, I solved this problem just by installing vpn with US location and everything is good. This only needs to be done the first time for the types to download. Then run without vpn. Working 100%
That is, you do not modify anything, you do not add anything. Just vpn and yarn/npm install
@MaksHladun thanks
I used US vpn but the fetch still didn't work
I used US vpn but the fetch still didn't work
VPN(Europe or USA)
Add on 14 row scripts/compile-ajv-validators.js this code
fs.mkdirSync(path.join(__dirname, '../src/utils/__generated__'), { recursive: true })
yarn yarn start
And it works for me.
is there an alternative REACT_APP_AWS_API_ENDPOINT ?
What does REACT_APP_AWS_API_ENDPOINT mean?