@quicknode/sdk 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +2 -0
  2. package/cjs/index.js +443 -190
  3. package/esm/package.json +2 -1
  4. package/esm/package.json.js +3 -0
  5. package/esm/src/api/api.js +85 -0
  6. package/esm/src/api/controllers/contracts.js +34 -0
  7. package/esm/src/api/controllers/events.js +113 -0
  8. package/esm/src/api/controllers/nfts.js +227 -0
  9. package/esm/src/api/controllers/tokens.js +93 -0
  10. package/esm/src/api/controllers/transactions.js +120 -0
  11. package/esm/src/api/controllers/utils.js +53 -0
  12. package/esm/src/api/graphql/customUrqlClient.js +23 -0
  13. package/esm/src/api/graphql/generatedTypes.js +22 -0
  14. package/esm/src/api/graphql/modifyQueryForChain.js +27 -0
  15. package/esm/src/api/graphql/schema.json.js +3 -0
  16. package/esm/src/api/index.d.ts +2681 -0
  17. package/esm/src/api/index.js +2 -0
  18. package/esm/src/api/types/chains.js +7 -0
  19. package/esm/src/api/types/contracts/getContractDetails.js +12 -0
  20. package/esm/src/api/types/events/getAll.js +7 -0
  21. package/esm/src/api/types/events/getByContract.js +12 -0
  22. package/esm/src/api/types/nfts/getByContractAddress.js +10 -0
  23. package/esm/src/api/types/nfts/getByWalletAddress.js +18 -0
  24. package/esm/src/api/types/nfts/getCollectionDetails.js +11 -0
  25. package/esm/src/api/types/nfts/getCollectionEvents.js +12 -0
  26. package/esm/src/api/types/nfts/getNFTDetails.js +9 -0
  27. package/esm/src/api/types/nfts/getNFTEvents.js +13 -0
  28. package/esm/src/api/types/nfts/getTrendingCollections.js +7 -0
  29. package/esm/src/api/types/nfts/verifyOwnershipByAddress.js +12 -0
  30. package/esm/src/api/types/tokens/getBalancesByWalletAddress.js +12 -0
  31. package/esm/src/api/types/transactions/getByHash.js +11 -0
  32. package/esm/src/api/types/transactions/getBySearch.js +7 -0
  33. package/esm/src/api/types/utils/gasPrices.js +12 -0
  34. package/esm/src/api/utils/constants.js +3 -0
  35. package/esm/src/api/utils/helpers.js +11 -0
  36. package/esm/src/api/utils/isValidENSAddress.js +21 -0
  37. package/esm/src/api/utils/postQueryFormatter.js +24 -0
  38. package/esm/src/api/utils/removeNodesAndEdges.js +51 -0
  39. package/esm/src/client/client.js +9 -0
  40. package/esm/src/client/index.js +2 -0
  41. package/esm/src/core/addOns/nftTokenV2/actions.js +107 -0
  42. package/esm/src/core/addOns/nftTokenV2/types/qn_fetchNFTCollectionDetails.js +10 -0
  43. package/esm/src/core/addOns/nftTokenV2/types/qn_fetchNFTs.js +13 -0
  44. package/esm/src/core/addOns/nftTokenV2/types/qn_fetchNFTsByCollection.js +13 -0
  45. package/esm/src/core/addOns/nftTokenV2/types/qn_getTokenMetadataByContractAddress.js +10 -0
  46. package/esm/src/core/addOns/nftTokenV2/types/qn_getTokenMetadataBySymbol.js +11 -0
  47. package/esm/src/core/addOns/nftTokenV2/types/qn_getTransactionsByAddress.js +18 -0
  48. package/esm/src/core/addOns/nftTokenV2/types/qn_getTransfersByNFT.js +12 -0
  49. package/esm/src/core/addOns/nftTokenV2/types/qn_getWalletTokenBalance.js +12 -0
  50. package/esm/src/core/addOns/nftTokenV2/types/qn_getWalletTokenTransactions.js +14 -0
  51. package/esm/src/core/addOns/nftTokenV2/types/qn_verifyNFTsOwner.js +11 -0
  52. package/esm/src/core/addOns/shared/helpers.js +10 -0
  53. package/esm/src/core/chains.js +60 -0
  54. package/esm/src/core/core.js +24 -0
  55. package/esm/src/core/index.d.ts +555 -0
  56. package/esm/src/core/index.js +2 -0
  57. package/esm/src/index.js +10 -0
  58. package/esm/src/lib/errors/QNChainNotSupported.js +7 -0
  59. package/esm/src/lib/errors/QNInputValidationError.js +10 -0
  60. package/esm/src/lib/errors/QNInvalidEnpointUrl.js +7 -0
  61. package/esm/src/lib/helpers/globalFetch.js +13 -0
  62. package/esm/src/lib/validation/ValidateInput.js +35 -0
  63. package/esm/src/lib/validation/codegenDerivedValidators.js +28 -0
  64. package/esm/src/lib/validation/validators.js +105 -0
  65. package/index.d.ts +594 -41
  66. package/package.json +26 -4
  67. package/esm/index.js +0 -1160
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+
3
+ // Below are zod enums used a validators that should be the same as the string unions generated by codegen.
4
+ // There are compile-time checks to ensure that they are the same and in sync. If you are getting a
5
+ // type error here, you need to update the the validator array to match the codegen type.
6
+ const CONTRACT_STANDARDS = ['ERC20', 'ERC721', 'ERC1155'];
7
+ const isContractStandard = z.enum(CONTRACT_STANDARDS);
8
+ const MARKETPLACES = [
9
+ 'BLUR',
10
+ 'CRYPTOPUNKS',
11
+ 'LOOKSRARE',
12
+ 'NIFTY_GATEWAY',
13
+ 'OPENSEA',
14
+ 'SEAPORT',
15
+ 'X2Y2',
16
+ 'ZEROX',
17
+ ];
18
+ const isMarketplace = z.enum(MARKETPLACES);
19
+ const TOKEN_TRANSFER_TYPES = [
20
+ 'TRANSFER',
21
+ 'MINT',
22
+ 'SALE',
23
+ 'SWAP',
24
+ 'BURN',
25
+ ];
26
+ const isTokenTransferType = z.enum(TOKEN_TRANSFER_TYPES);
27
+
28
+ export { isContractStandard, isMarketplace, isTokenTransferType };
@@ -0,0 +1,105 @@
1
+ import { z } from 'zod';
2
+ import { isContractStandard, isMarketplace, isTokenTransferType } from './codegenDerivedValidators.js';
3
+ import { supportedChains } from '../../api/types/chains.js';
4
+ import { isValidENSAddress } from '../../api/utils/isValidENSAddress.js';
5
+
6
+ const isEvmAddress = z
7
+ .string()
8
+ .length(42) // Using built-in function for better error messages
9
+ .startsWith('0x') // Using built-in function for better error messages
10
+ .regex(/^0x[a-fA-F0-9]{40}$/, 'Not a valid address');
11
+ const isENSAddress = z.string().refine((val) => isValidENSAddress(val));
12
+ const isEvmTransactionHash = z
13
+ .string()
14
+ .length(66) // Using built-in function for better error messages
15
+ .startsWith('0x') // Using built-in function for better error messages
16
+ .regex(/^0x[a-fA-F0-9]{64}$/, 'Not a valid transaction hash');
17
+ const supportedChainInput = z
18
+ .object({
19
+ chain: z.enum(supportedChains).nullish(),
20
+ })
21
+ .strict();
22
+ function fullFilters(baseType) {
23
+ return z
24
+ .object({
25
+ eq: baseType.nullish(),
26
+ gt: baseType.nullish(),
27
+ gte: baseType.nullish(),
28
+ in: z.array(baseType).nullish(),
29
+ lt: baseType.nullish(),
30
+ lte: baseType.nullish(),
31
+ notIn: z.array(baseType).nullish(),
32
+ })
33
+ .strict();
34
+ }
35
+ function limitedFilters(baseType) {
36
+ return z
37
+ .object({
38
+ eq: baseType.nullish(),
39
+ in: z.array(baseType).nullish(),
40
+ notIn: z.array(baseType).nullish(),
41
+ })
42
+ .strict();
43
+ }
44
+ const tokenEventFilters = z
45
+ .object({
46
+ blockNumber: fullFilters(z.number().positive()).nullish(),
47
+ contractAddress: limitedFilters(isEvmAddress).nullish(),
48
+ contractStandard: limitedFilters(isContractStandard).nullish(),
49
+ fromAddress: limitedFilters(isEvmAddress).nullish(),
50
+ marketplace: limitedFilters(isMarketplace).nullish(),
51
+ timestamp: fullFilters(z.string().datetime({ offset: true })).nullish(),
52
+ toAddress: limitedFilters(isEvmAddress).nullish(),
53
+ transactionHash: limitedFilters(isEvmTransactionHash).nullish(),
54
+ type: limitedFilters(isTokenTransferType).nullish(),
55
+ walletAddress: limitedFilters(isEvmAddress).nullish(),
56
+ })
57
+ .strict();
58
+ const transactionFilters = z
59
+ .object({
60
+ blockNumber: fullFilters(z.number().positive()).nullish(),
61
+ fromAddress: isEvmAddress.nullish(),
62
+ timestamp: fullFilters(z.string().datetime({ offset: true })).nullish(),
63
+ toAddress: isEvmAddress.nullish(),
64
+ })
65
+ .strict();
66
+ const gasPriceFilters = z
67
+ .object({
68
+ blockNumber: fullFilters(z.number().positive()).nullish(),
69
+ })
70
+ .strict();
71
+ const paginationParams = z
72
+ .object({
73
+ before: z.string().nullish(),
74
+ after: z.string().nullish(),
75
+ first: z.number().positive().nullish(),
76
+ })
77
+ .strict();
78
+ const baseEventsInput = z
79
+ .object({
80
+ filter: tokenEventFilters.nullish(),
81
+ })
82
+ .merge(paginationParams)
83
+ .strict();
84
+ const baseTransactionsInput = z
85
+ .object({
86
+ filter: transactionFilters.optional(),
87
+ })
88
+ .merge(paginationParams)
89
+ .strict();
90
+ const contractTokensFilter = z
91
+ .array(z
92
+ .object({
93
+ contractAddress: isEvmAddress,
94
+ tokenId: z.string().optional(),
95
+ })
96
+ .strict())
97
+ .nonempty();
98
+ const rpcPaginationParams = z
99
+ .object({
100
+ perPage: z.number().positive().nullish(),
101
+ page: z.number().positive().nullish(),
102
+ })
103
+ .strict();
104
+
105
+ export { baseEventsInput, baseTransactionsInput, contractTokensFilter, gasPriceFilters, isENSAddress, isEvmAddress, isEvmTransactionHash, paginationParams, rpcPaginationParams, supportedChainInput, tokenEventFilters, transactionFilters };