UNPKG

alchemy-sdk

Version:
501 lines (290 loc) 20.3 kB
# Changelog for Alchemy SDK for JavaScript ## Unreleased ### Major Changes ### Minor Changes ## 3.5.1 ### Minor Changes - Added many new networks ## 3.5.0 ### Major Changes - Added a new `PricesNamespace` with three new methods: `getTokenPriceByAddress()`, `getTokenPriceBySymbol()`, `getHistoricalPriceByAddress`, and `getHistoricalPriceBySymbol()`. Access these methods via `alchemy.prices`. ## 3.4.8 ### Minor Changes - Added networks for `FLOW`. ## 3.4.7 ### Minor Changes - Added networks for `ROOTSTOCK`. ## 3.4.6 ### Minor Changes - Fixed webhook network parsing in `getAllWebhooks` method for all supported networks. ## 3.4.5 ### Minor Changes - Fixed createWebhook's `skip_empty_messages` param. ## 3.4.4 ### Minor Changes - Added networks for `WORLDCHAIN`. ## 3.4.3 ### Minor Changes - Added networks for `SONEIUM` and `BERACHAIN`. Note that these are primarily for `CoreNamespace` methods. Not all namespaces will work with these networks. ## 3.4.2 ### Minor Changes - Addressed security vulnerabilities by adding overrides for `elliptic` and `ws` dependencies. Specifically: - Updated `elliptic` to version `6.5.7` (latest) to fix vulnerabilities related to EDDSA signature length checks and ECDSA BER-encoded signatures. - Updated `ws` to version `7.5.10` to mitigate a potential DoS vulnerability. The latest major version of `ws` is `8.x`, however, `7.5.10` is the most up-to-date version compatible with `ethers v5`, which depends on `7.x` versions of `ws`. ## 3.4.1 ### Minor Changes - Fixed a bug where the `openSeaMetadata?.safelistRequestStatus` was undefined in the `Nft` object that resulted in a `Cannot read properties of undefined` error (#416) ## 3.4.0 ### Major Changes - Added networks for `SHAPE`, `LINEA`, `FANTOM`, `ZETACHAIN`, `ARBNOVA`, `BLAST`, `MANTLE`, `SCROLL`, `GNOSIS`, `BNB`, `AVAX`, `CELO`, `METIS`, `OPBNB`. Note that these are primarily for `CoreNamespace` methods. Not all namespaces will work these networks. - App IDs are now a required property when calling `NotifyNamespace.createWebhook()` with `WebhookType.GRAPHQL`. This is not a Typescript breaking change, but rather a run-time breaking change. Calling the endpoint without an App ID will now throw an error instead of returning a 503. ### Minor Changes - Fixed a bug with `NotifyNamespace.createWebhook()` when using `WebhookType.GRAPHQL`. Also added the option use `skipEmptyMessages` when creating graphQL webhooks to skip empty blocks. - Updated axios version to remove security warning (#443). ## 3.3.1 ### Minor Changes - Fixed a bug where the `openSeaMetadata?.safelistRequestStatus` was undefined in the `Nft` object that resulted in a `Cannot read properties of undefined` error (#416) - Added support `connectionInfoOverrides` field in the `Alchemy` constructor. This allows you to override the ethers.js `ConnectionInfo` object and specify custom connection information for the underlying `JsonRpcProvider`. ## 3.3.0 ### Major Changes - Added support for Zksync Mainnet and Sepolia via the `Network.ZKSYNC_MAINNET` and `Network.ZKSYNC_SEPOLIA` enums. ### Minor Changes ## 3.2.1 ### Major Changes - Added support for Arbitrum and Optimism Sepolia webhook creation. ### Minor Changes - API error messages return the actual error instead of [Object object] ## 3.2.0 ### Major Changes - Added support for Polygon Amoy network via the `Network.MATIC_AMOY` enum. ### Minor Changes ## 3.1.2 ### Major Changes ### Minor Changes - Upgraded the `axios` dependency to `v1.6.5`, fixing a vulnerable version #397. Thanks @mpsq for the contribution! ## 3.1.1 ### Major Changes ### Minor Changes - Added endpoints for `isAirdropNft()` and `reportSpam()` in `NftNamespace`. - Added a missing `marketplaceAddress` field to the `NftSale` in `NftNamespace.getNftSales()`. - Fixed an incorrect field name for `bannerImageUrl` in `OpenSeaCollectionMetadata`. Deprecated the old field name `imageBannerUrl`. - Added support for Base networks in `NotifyNamespace`. ## 3.1.0 ### Major Changes - Added support for Optimism Sepolia and Base Sepolia via the `Network.OPT_SEPOLIA` and `Network.BASE_SEPOLIA` enums. ### Minor Changes ## 3.0.0 ### Major Changes - For a full list of changes to V3 from V2, please visit: https://docs.alchemy.com/reference/alchemy-sdk-v2-to-v3-migration-guide. There, you can also find the API reference for v2 endpoints as well. V3 primarily involves changes to use the V3 NFT API. ## 2.11.0 ### Minor Changes - Added support for Arbitrum Sepolia network via the `Network.ARB_SEPOLIA` enum. ## 2.10.1 ### Major Changes ### Minor Changes - Fixed a bug in the `Log` object where the `removed` field was not included in the response. ## 2.10.0 ### Major Changes - Add support for Base ### Minor Changes ## 2.9.2 ### Major Changes - Added a new method `CoreNamespace.isContractAddress()` to easily check if an address is a contract or EOA. The method accepts a string address and returns a boolean value indicating if the given address is a contract address or not. ### Minor Changes - Fixed a bug where `GetOwnersForContractResponse` was missing the `pageKey` field. ## 2.9.1 ### Major Changes ### Minor Changes - Add the `refreshCache` parameter to NFT rarity endpoints to allow users to update stale rarity values. - Add the `includeCount` parameter to getOwnersForContract. ## 2.9.0 ### Major Changes - Fixed a bug with in `NftNamespace.getNftSales()` in which there was a typo in `decimal` field of the `NftSaleFeeData` object. The field is now correctly named `decimals`, and `decimal` is marked deprecated to avoid a breaking change. ### Minor Changes - Added redundancy to `CoreNamespace.getTokensForOwner()` to handle failures when fetching token metadata. - Added support for the `acquiredAt` field for ordered `getNftsForOwner` queries. Only available when specifying `orderBy: NftOrdering.TRANSFERTIME` in the request. - Added the `NftSaleMarketplace.BLUR` marketplace enum to the `NftNamespace.getNftSales()` method return. - Added support for the `validAt` response field to `NftNamespace.getNftSales()`. ## 2.8.3 ### Major Changes ### Minor Changes - Fixed a bug with `NotifyNamespace` when creating webhooks on ETH_SEPOLIA, OPT_GOERLI, and ARB_GOERLI. - Fixed a bug with `Wallet.populateTransaction()` where the method would never resolve. - Fixed a bug with `NftNamespace.getMintedNfts()` and `NftNamespace.getTransfersForOwner()` where the method would always throw an error for certain addresses (#318). ## 2.8.2 ### Major Changes ### Minor Changes - Moved the `exports.default` field to be the last field. This fixed a bug introduced in `2.8.1` that prevented certain frameworks from building (#313). ## 2.8.1 ### Major Changes ### Minor Changes - Fixed a bug where the SDK was not compatible with `moduleResolution: bundler` when using `typescript` at `v5.0`(#302). Thanks @florrdv! - Fixed a bug with `getTransfersForOwner()` and `getTransfersForContract()` methods in the `NftNamespace`, where some NFTs would not be returned if the NFT was transferred multiple times. ## 2.8.0 ### Major Changes Added PolygonZkEvm Mainnet and Testnet limited support to the sdk ### Minor Changes ## 2.7.0 ### Major Changes - Added `CustomGraphqlWebhook` to be used with the `NotifyNamespace`. This webhook uses graphql to track any event on every block. ### Minor Changes ## 2.6.3 ### Major Changes ### Minor Changes - Added support for a `pageKey` and `pageSize` parameter in `NftNamespace.getOwnersforNft` to allow for pagination of the results. ## 2.6.2 ### Major Changes ### Minor Changes - Added additional descriptive tokenTypes in NFT- and contract-level metadata, for contracts which don't support any NFT standard. ## 2.6.1 ### Major Changes ### Minor Changes - Added the `title` field to `ContractForOwner` to represent the title of the token held by the owner. - Fixed a bug where the `media` field in `ContractForOwner` was a `Media` object rather than a `Media[]` array. - Added support for the Eth Sepolia network via the `Network.ETH_SEPOLIA` enum. ## 2.6.0 ### Major Changes - Added the `NftMetadataUpdateWebhook` to be used with the `NotifyNamespace`. This webhook tracks all ERC721 and ERC1155 token metadata updates. ### Minor Changes ## 2.5.0 ### Major Changes - Added `TransactNamespace.simulateAssetChangesBundle()` to simulate a list of transactions in sequence and return a list of asset changes. - Added `TransactNamespace.simulateExecutionBundle()` to simulate a list of transactions in sequence and return a list of decoded logs and traces. - Added `NftNamespace.getContractMetadataBatch()` to get the metadata associated with multiple NFT contracts in a single request. ### Minor Changes - Added exports for Ethers.js types and interfaces used by the SDK. - Added the `pageSize` parameter to the `NftNamespace.getContractsForOwner()` method. ## 2.4.3 ### Major Changes ### Minor Changes - Added a missing `gas` field in the `DebugTransaction` interface to specify the gas provided for a transaction execution. - Fixed a bug with `NftNamespace.getMintedNfts()`, `NftNamespace.getTransfersForOwner()`, and `NftNamespace.getTransfersForContract()` where the method would incorrectly error if the specified address had no transfers. - Added the `BigNumber` ethers export. You can access this by importing `BigNumber` along with the other exports in the package. ## 2.4.2 ### Major Changes ### Minor Changes - Added the `CoreNamespace.getTokensForOwner()` method to get all the token balances and token metadata for a given address. - Added the `wyvern` and `cryptopunks` marketplaces in the `NftSaleMarketplace` enum to the `NftNamespace.getNftSales()` method. - Added the `blockHash` field to the `OwnedNftsResponse` returned by `NftNamespace.getNftsForOwner()` to track the block hash that the request was based on. ## 2.4.1 ### Major Changes ### Minor Changes - Added the `NftNamespace.getTransfersForOwner()` method to get all NFT transfers to or from a provided owner address. - Added the `NftNamespace.getTransfersForContract()` method to all the NFT transfers for a provided NFT contract address. - Deprecated the `GetMintedNftsResponse` interface in favor of the `TransfersNftResponse`. The `TransfersNftResponse` contains the same properties as the `GetMintedNftsResponse` and includes additional fields about the transfer. ## 2.4.0 ### Major Changes - Added `TransactNamespace.simulateAssetChanges()` to simulate a transaction and return a list of asset changes. - Added `TransactNamespace.simulateExecution()` to simulate a transaction and return a list of decoded logs and traces. ### Minor Changes ## 2.3.1 ### Major Changes ### Minor Changes - Added support for passing in a `null` `tokenId` when using NFT Webhook Filters, which allows you to listen to all token ids in a collection. - Added `NftNamespace.getMintedNfts()` to fetch all the NFTs an owner address minted, optionally filtered by a set of specific NFT contracts. - Added the option to pass in an `EventFilter` with multiple addresses to the `CoreNamespace.getLogs()` method. - Fixed a bug where the `protocolFee` was not included in the response for `NftNamespace.getNftSales()`. Deprecated the existing `marketplaceFee` property in favor of the new `protocolFee` property. ## 2.3.0 ### Major Changes - Added the `DebugNamespace` to the top-level `Alchemy` object. The `DebugNamespace` is used to replay and inspect transactions and mined blocks in greater detail. ### Minor Changes - Added the `tokenUriTimeoutInMs` option to `NftNamespace.getNftsForContract()` to specify the timeout duration for fetching an NFT's underlying metadata. - Fixed a bug where using `AlchemySubscriptions.PENDING_TRANSACTIONS` with a string array input would throw an error (#222). - Added support for the `refreshCache` option in `NftNamespace.getNftMetadata()`. This option is now available when using the `options` overload. The original method without the `options` overload is now deprecated. - Added support for the `requestTimeout` option in the `AlchemySettings` object to configure a timeout for `NftNamespace` and `NotifyNamespace` methods. Thanks @Abbaskt! - Added the `contractDeployer` and `deployedBlockNumber` into the `NftContract` object. Methods that return NFTs such as `NftNamespace.getNftsForOwner()` and `NftNamespace.getContractsForOwner()` now include this information under the `contract` field. ## 2.2.5 ### Major Changes - Added `NftNamespace.getContractsForOwner()` to fetch all NFT contracts for a specified owner address. ### Minor Changes - Fixed a bug in `NftNamespace.getNftsForOwner()` where the `openSea` metadata was not included in the returned NFT. - Marked the `NftExcludeFilters` type as deprecated. Please use `NftFilters` instead. - Added support for the `orderBy` param to `NftNamespace.getNftsForOwner()` and `NftNamespace.getContractsForOwner()`. ## 2.2.4 ### Major Changes ### Minor Changes - Fixed a bug where `newHeads` subscriptions would error and crash when reconnecting to the websocket. - Fixed a bug where certain subscriptions would not reconnect after the websocket reconnected. - Added exports for `toUtf8Bytes` and `toUtf8String` in `Utils`. ## 2.2.3 ### Major Changes ### Minor Changes - Fixed a typo with the `AlchemySettings.batchRequests` property. ## 2.2.2 (DEPRECATED) ### Major Changes ### Minor Changes - Added support for ENS resolution to the `NotifyNamespace` and `WebsocketNamespace` methods. - Added the `batchRequests` setting in `AlchemySettings`. Enabling this setting will automatically batch and send json-rpc requests to reduce network overhead. - Included new export for the `Interface` class from ethers to simplify encoding ABI when using `eth_call`. - Added support for the `NftNamespace.getNftMetadataBatch()` method to fetch metadata for multiple NFTs in a single call. - Added support for the `NftNamespace.getNftSales()` method to fetch NFT sales across different marketplaces. Thanks @xeno097! ## 2.2.1 ### Major Changes ### Minor Changes - Fixed a bug where `AlchemyConfig.getWebsocketProvider()` was not exported as a public method. This method allows you get the underlying `WebsocketProvider` that is implemented by ethers. - Added the `NftNamespace.summarizeNftAttributes()` method to get the summary of attribute prevalence for all NFTs in a contract. - Added the `NftNamespace.searchContractMetadata()` method to search for a keyword across ERC721 and ERC1155 contract metadata. - Added support for ENS resolution on several `CoreNamespace` methods. You should now be able to pass in an ENS domain into any param that requires an owner address. - Added the `CoreNamespace.resolveName()` and `CoreNamespace.lookupAddress()` methods to resolve and lookup ENS domains and their owner addresses. - Fixed a bug where the `Accept-Encoding` header was incorrectly included in requests that originated from the browser (#174). - Added the `openSea` response to `NftNamespace.getContractMetadata()`to match the REST endpoint (#162). ## 2.2.0 ### Major Changes - Added the `NotifyNamespace` to the top-level `Alchemy` object. The `NotifyNamespace` is used to perform CRUD operations on webhooks in the Notify API. - Added the `alchemy_minedTransactions` subscription event to the `WebsocketNamespace`. This subscription emits full transaction objects or hashes that are mined on the network based on provided filters. - Added the `NftNamespace.computeRarity()` method to get the rarity attributes of the provided NFT. Thanks @xeno097! ### Minor Changes ## 2.1.1 ### Minor Changes - Added the `AIDROPS` enum to `NftNamespace.getNftsForOwner()`. - Added the `spamInfo` field to the response for `getNftsForOwner()` and `getNftsForContract()`. - Fixed a bug where type declarations were not available when using `NodeNext` module resolution. Thanks @quentinverlhac! - Marked Ropsten, Rinkeby, and Kovan `Network` enums as deprecated. Please switch over to Sepolia. ## 2.1.0 ### Major Changes - POTENTIALLY BREAKING: Fixed a typing bug where the `totalSupply` field in an `NftContract` should have type `string` instead of `number`. - Updated the `Nft` class to include the contract metadata in the `Nft.contract` field. - Added commonly used utility methods from ethers.js into a top-level `Utils` export. - Added the `NftNamespace.verifyNftOwnership()` method to replace the deprecated `checkNftOwnership()` method. - Added `Contract` and `ContractFactory` exports from ethers into the top-level exports. ### Minor Changes - Added support for `withTokenBalances` in `NftNamespace.getOwnersForContract()`. - Added support for the `erc20` token type and pagination for `CoreNamespace.getTokenBalances()`. - Added `bytes` field to the `Media` object in the NFT metadata responses to indicate the size of the media in bytes. Note that the `size` field is not supported by the backend and will be removed in the next version. ## 2.0.4 ### Minor Changes - Added a `size` field to the `Media` object in the NFT metadata responses to indicate the size of the media in bytes. - Bumped `@ethersproject` dependencies to `v5.7.0` to support `safe` and `finalized` blocks. ## 2.0.3 ### Minor Changes - Added support for the `pageSize` parameter in `GetNftsForOwnerOptions` to specify the number of NFTs fetched when using `alchemy.nft.getNftsForOwner()`. - Added support for a Wallet object. This object is identical to the Ethers `Wallet` class. - Added support for Arbitrum Goerli network via the `Network.ARB_GOERLI` enum. - Added support for the AStar Mainnet network via the `Network.ASTAR_MAINNET` enum. - Added typed request/response overloads for `CoreNamespace.getAssetTransfers()` for when the `withMetadata` param is true. - Added support the `tokenUriTimeoutInMs` parameter on `getNftsForOwner()`, `getNftMetadata()`, and `getNftsForContract()`. ## 2.0.2 ### Major Changes - Added the `transact` namespace for functionality relating to sending transactions. This includes the Flashbots methods `sendPrivateTransaction` and `cancelPrivateTransaction`. ### Minor Changes - Removed the deprecated `TOKEN` enum from `AssetTransfersCategory`. - Added support for Optimism Goerli network via the `Network.OPT_GOERLI` enum. - Added the `pageSize` parameter in `GetNftsForContractOptions` to specify the number of NFTs fetched when using `alchemy.nft.getNftsForContract`. - Added correct `withMetadata` typing to `AssetTransfersResponse`. ## 2.0.1 ### Minor Changes - Added an optional `url` setting to `AlchemySettings` to allow specifying a custom hardcoded URL to send all requests to. - Fixed a bug where the SDK would incorrectly include a gzip header in browser environments ## 2.0.0 ### Major Changes - Top level package has moved from `@alch/alchemy-sdk` to `alchemy-sdk` for convenience. New command to install is `npm install alchemy-sdk` - Updated instantiation syntax: `initializeAlchemy(settings)` is now `new Alchemy(settings)` - Added three namespaces under the Alchemy object: `core`, `nft`, and `ws`. All Ethers.js provider methods and Alchemy Enhanced APIs (other than NFT) are under `core`. - Moved top-level methods under the Alchemy object. Instead of `getNftsByOwner(alchemy, 'vitalik.eth')`, now methods are called using `alchemy.nft.getNftsByOwner('vitalik.eth')` - Ethers.js Alchemy Provider methods are now directly embedded under `alchemy.core` - Ethers.js WebSocket Provider methods are now directly embedded under `alchemy.ws` - The settings object is now a config module under `alchemy.config`. - If necessary, the full Ethers.js Provider is now available under `alchemy.config.getProvider()` as a promise to reduce bundle size. - If necessary, the full WebSocket Provider is now available under `alchemy.config.getWebSocketProvider()` as a promise to reduce bundle size. - Dynamic imports for large methods (in particular, Ethers.js methods) are now supported. Initial package size for the Alchemy SDK is 20kB, and will only download Ethers.js packages when a relevant method is called. - Methods including Collection in the NFT package have been renamed to `Contract`: for instance, `getNftsForCollection` is now `getNftsForContract`.