Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 115 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,101 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [11.3.0]

### Added

- Add default JSON-RPC generics that extend `Json` to `Json` ([#241](https://github.com/MetaMask/utils/pull/241))

### Changed

- Deprecate `Keyring` types ([#236](https://github.com/MetaMask/utils/pull/236))
- These should now be imported from `@metamask/keyring-utils`.

## [11.2.0]

### Added

- Add optional `signEip7702Authorization` method to `Keyring` type ([#231](https://github.com/MetaMask/utils/pull/231))

## [11.1.0]

### Added

- Add additional CAIP-19 types (`CaipAsset{Namespace,Reference,TokenId}` support ([#227](https://github.com/MetaMask/utils/pull/227))
- Add CAIP-19 `CaipAssetTypeOrId` ([#229](https://github.com/MetaMask/utils/pull/229))
- This one combines both `CaipAssetType` and `CaipAssetId` to avoid relying on `superstruct.union`, resulting in better error messages.
- Add `definePattern` superstruct helper ([#228](https://github.com/MetaMask/utils/pull/228))
- Allow to define a `superstruct.pattern` while naming the struct and enforcing its type.

### Changed

- Use named structs for all CAIP types ([#228](https://github.com/MetaMask/utils/pull/228))

## [11.0.1]

### Fixed

- Improve error message for invalid JSON values ([#224](https://github.com/MetaMask/utils/pull/224))

## [11.0.0]

### Changed

- **BREAKING:** `generateRandomMnemonic` now returns `Promise<void>` instead of `void` ([#222](https://github.com/MetaMask/utils/pull/222))

## [10.0.1]

### Added

- Add Solana CAIP namespace ([#219](https://github.com/MetaMask/utils/pull/219))

## [10.0.0]

### Changed

- **BREAKING:** Drop support for Node.js versions 16, 21 ([#212](https://github.com/MetaMask/utils/pull/212))
- Improve JSON validation performance ([#218](https://github.com/MetaMask/utils/pull/218))

## [9.3.0]

### Added

- Add support for CAIP-19 ([#183](https://github.com/MetaMask/utils/pull/183))
- Add `Bip122` member to `KnownCaipNamespace` ([#213](https://github.com/MetaMask/utils/pull/213))

## [9.2.1]

### Fixed

- Fix wrong types for CAIP-2 and CAIP-10 structs ([#210](https://github.com/MetaMask/utils/pull/210))

## [9.2.0]

### Added

- Add `Wallet` member to `KnownCaipNamespace` enum ([#207](https://github.com/MetaMask/utils/pull/207))

## [9.1.0]

### Added

- Add `PublicInterface` type ([#197](https://github.com/MetaMask/utils/pull/197))

## [9.0.0]

### Changed

- **BREAKING:** The return types of functions `getChecksumAddress`, `numberToHex`, `bigIntToHex` are narrowed from `string` to `Hex` ([#193](https://github.com/MetaMask/utils/pull/193))

### Fixed

- Bump `@metamask/superstruct` from `^3.0.0` to `^3.1.0` ([#194](https://github.com/MetaMask/utils/pull/194))
- If `@metamask/utils` `<=8.5.0` is used with `@metamask/superstruct` `>=3.1.0` the following error may be encountered:
```ts
Expand All @@ -68,10 +104,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
This can be resolved by updating `@metamask/utils` to `>=9.0.0`.

## [8.5.0]

### Changed

- Bump dependency `semver` from `^5.7.1` to `^7.6.0` ([#181](https://github.com/MetaMask/utils/pull/181)).

### Fixed

- Replace dependency `superstruct` `^1.0.3` with ESM-compatible `@metamask/superstruct` `^3.0.0` ([#185](https://github.com/MetaMask/utils/pull/185)).
- This fixes the issue of this package being unusable by any TypeScript project that uses `Node16` or `NodeNext` as its `moduleResolution` option.
- Produce and export ESM-compatible TypeScript type declaration files in addition to CommonJS-compatible declaration files ([#182](https://github.com/MetaMask/utils/pull/182))
Expand All @@ -80,38 +119,51 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Previously, the build tool we used to generate JavaScript files extracted common code to "chunk" files. While this was intended to make this package more tree-shakeable, it also made debugging more difficult for our development teams. These chunk files are no longer present.

## [8.4.0]

### Added

- Add `toCaipChainId` utility function ([#175](https://github.com/MetaMask/utils/pull/175))
- Add `KnownCaipNamespace` enum ([#175](https://github.com/MetaMask/utils/pull/175))

### Changed

- Update docs for `createDeferredPromise` to caution against using `suppressUnhandledRejection` ([#174](https://github.com/MetaMask/utils/pull/174))

### Fixed

- Fix `createSandbox` to assign a unique name to the sandbox directory, so that it can be used in multiple concurrently running Jest tests ([#171](https://github.com/MetaMask/utils/pull/171))

## [8.3.0]

### Added

- Add `createDeferredPromise` ([#164](https://github.com/MetaMask/utils/pull/164))

## [8.2.1]

### Fixed

- Fix issue with source maps where line numbers were incorrect for src/error.ts ([#156](https://github.com/MetaMask/utils/pull/156))

## [8.2.0]

### Added

- Add struct utils for validating JSON objects with optional values ([#136](https://github.com/MetaMask/utils/pull/136))
- Add filesystem utils ([#148](https://github.com/MetaMask/utils/pull/148))
- Add error utils ([#146](https://github.com/MetaMask/utils/pull/146), [#151](https://github.com/MetaMask/utils/pull/151))
- Add base64 encoding and decoding functions ([#145](https://github.com/MetaMask/utils/pull/145))

### Changed

- Use `tsup` for bundling ([#144](https://github.com/MetaMask/utils/pull/144))
- This makes the package fully compliant with ES modules.
- Bump `@ethereumjs/tx` from `4.1.2` to `4.2.0` ([#133](https://github.com/MetaMask/utils/pull/133))

## [8.1.0]

### Changed

- Make types for JSON-RPC-related structs more accurate ([#134](https://github.com/MetaMask/utils/pull/134))
- Aligning `JsonRpcParams` to be optional, yet not `undefined`.
- Updated types:
Expand All @@ -121,65 +173,90 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `JsonRpcRequestStruct`

## [8.0.0]

### Changed

- **BREAKING:** `JsonRpcParams` type no longer accepts `undefined` as value, as `undefined` is not a valid JSON type ([#130](https://github.com/MetaMask/utils/pull/130))

## [7.1.0]

### Added

- Add CAIP-2 and CAIP-10 types ([#116](https://github.com/MetaMask/utils/pull/116))

## [7.0.0]

### Added

- Add `getKnownPropertyNames` function ([#111](https://github.com/MetaMask/utils/pull/111))

### Changed

- **BREAKING:** Build the package as both CJS and ESM ([#115](https://github.com/MetaMask/utils/pull/115), [#124](https://github.com/MetaMask/utils/pull/124))
- It's no longer possible to import from the `dist` folder. Everything must be imported from `@metamask/utils`.
- Bump `semver` to `^7.5.4` ([#123](https://github.com/MetaMask/utils/pull/123))

## [6.2.0]

### Added

- Add address related utils ([#112](https://github.com/MetaMask/utils/pull/112))
- `isValidHexAddress` has been added to check the validity of an hex address
- `getChecksumAddress` has been added to calculate the ERC-55 mixed-case checksum of an hex address
- `isValidChecksumAddress` has been added to check the validity of an ERC-55 mixed-case checksum address

## [6.1.0]

### Added

- Add optional `destroy` method to `Keyring` type ([#108](https://github.com/MetaMask/utils/pull/108))

## [6.0.1]

### Fixed

- Strip `__proto__` and `constructor` JSON properties in `getSafeJson` ([#105](https://github.com/MetaMask/utils/pull/105))

## [6.0.0]

### Changed

- **BREAKING:** Bump minimum Node version to 16 ([#102](https://github.com/MetaMask/utils/pull/102))
- **BREAKING:** Target `ES2020` ([#102](https://github.com/MetaMask/utils/pull/102))

### Fixed

- Fix JSON validation security issue ([#103](https://github.com/MetaMask/utils/pull/103))
- This adds a new function `getSafeJson` which validates and returns sanitized JSON.

## [5.0.2]

### Changed

- The `Keyring` exposes a new optional method `init` ([#99](https://github.com/MetaMask/utils/pull/99))

### Fixed

- Bump `@ethereumjs/tx` to `4.1.2` to address runtime compatibility issues ([#100](https://github.com/MetaMask/utils/pull/100))

## [5.0.1]

### Fixed

- Keep original type when using `hasProperty` if defined ([#94](https://github.com/MetaMask/utils/pull/94))

## [5.0.0]

### Changed

- **BREAKING:** Update `Keyring` type ([#89](https://github.com/MetaMask/utils/pull/89))
- The `Keyring` class now uses the data types `TypedTransaction` and `TxData` from `@ethereumjs/tx` (`v4.1.1`).
- The `Keyring` now exposes a new optional method called `generateRandomMnemonic`.

## [4.0.0]

### Changed

- Export new modules (`keyring`, `transaction-types`, and `encryption-types`) ([#86](https://github.com/MetaMask/utils/pull/86))
- **BREAKING:** Improve JSON validation ([#85](https://github.com/MetaMask/utils/pull/85))
- Fixes edge cases in our JSON validation logic.
Expand All @@ -188,76 +265,104 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- To get the size of a JSON value, you can use the `getJsonSize` function.

## [3.6.0]

### Added

- Add `Keyring` types ([#74](https://github.com/MetaMask/utils/pull/74))
- New data types added. These are `Keyring`, `Transaction` (`LegacyTransaction`, `EIP2930Transaction`, `EIP1559Transaction`), `SignedTransaction`, `Signature`, and `Eip1024EncryptedData`.
- New data types added. These are `Keyring`, `Transaction` (`LegacyTransaction`, `EIP2930Transaction`, `EIP1559Transaction`), `SignedTransaction`, `Signature`, and `Eip1024EncryptedData`.

## [3.5.0]

### Changed

- Improve the `hasProperty` function ([#79](https://github.com/MetaMask/utils/pull/79), [#80](https://github.com/MetaMask/utils/pull/80))
- This function now acts as a type guard, informing TypeScript that the property exists.
- The function is now compatible with more types of objects, such as Errors and class instances.

## [3.4.1]

### Fixed

- Bump `superstruct` to `^1.0.3` ([#71](https://github.com/MetaMask/utils/pull/71))

## [3.4.0]

### Added

- Add types and utility functions for validating versions and checksums ([#67](https://github.com/MetaMask/utils/pull/67), [#69](https://github.com/MetaMask/utils/pull/69))

### Fixed

- JSON-RPC types now have a default generic `Params` value ([#54](https://github.com/MetaMask/utils/pull/54))

## [3.3.1]

### Fixed

- JSON-RPC parameters are now properly cast to Json upon validation ([#51](https://github.com/MetaMask/utils/pull/51))

## [3.3.0]

### Added

- Add more assertion utils ([#49](https://github.com/MetaMask/utils/pull/49))
- Add JSON-RPC error validation functions ([#46](https://github.com/MetaMask/utils/pull/46))
- Add convenience function for creating a `DataView` ([#45](https://github.com/MetaMask/utils/pull/45))

### Fixed

- Update JSON validation logic ([#47](https://github.com/MetaMask/utils/pull/47))
- Validation would previously allow for `undefined` values, which is not a standard JSON type

## [3.2.0]

### Added

- Add `PendingJsonRpcResponse` type ([#43](https://github.com/MetaMask/utils/pull/43))
- Add utils for converting between numbers and hex ([#41](https://github.com/MetaMask/utils/pull/41))
- Add coercion utils ([#38](https://github.com/MetaMask/utils/pull/38))

## [3.1.0]

### Added

- Add assertion utils ([#33](https://github.com/MetaMask/utils/pull/33))
- Add util functions for encoding and decoding bytes ([#34](https://github.com/MetaMask/utils/pull/34))

### Fixed

- Make JSON-RPC error `data` property optional ([#31](https://github.com/MetaMask/utils/pull/31))
- Don't include test files in dist folder ([#35](https://github.com/MetaMask/utils/pull/35))
- Fix typo in README ([#28](https://github.com/MetaMask/utils/pull/28))

## [3.0.3]

### Fixed

- Allow omitting JSON-RPC params when params can be undefined ([#29](https://github.com/MetaMask/utils/pull/29))

## [3.0.2]

### Fixed

- Bump `superstruct` to ^0.16.5 ([#26](https://github.com/MetaMask/utils/pull/26))
- `superstruct`s 0.16.1 through 0.16.4 were not compatible with Node 14; this restores that compatibility.

## [3.0.1]

### Fixed

- Promote `@types/debug` from development dependencies to production dependencies ([#23](https://github.com/MetaMask/utils/pull/23))

## [3.0.0]

### Added

- Add logging functions ([#20](https://github.com/MetaMask/utils/pull/20))
- Add frozen collections (implemented in [#5](https://github.com/MetaMask/utils/pull/5) but exported in [#19](https://github.com/MetaMask/utils/pull/19))

### Changed

- **BREAKING:** Improve types and type validation ([#19](https://github.com/MetaMask/utils/pull/19))
- Various type changes have been made that might be breaking:
- The `JsonRpcRequest` and `JsonRpcNotification` types now include a generic constraint requiring that the `Params` type extends the `JsonRpcParams` type.
Expand All @@ -280,23 +385,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `JsonStruct`

## [2.1.0]

### Added

- Add JSON storage validation and limit utilities ([#14](https://github.com/MetaMask/utils/pull/14))
- Adds a new function `validateJsonAndGetSize`.

## [2.0.0]

### Added

- Add more JSON utils ([#8](https://github.com/MetaMask/utils/pull/8))

### Changed

- **BREAKING:** Refactor and expand time utils ([#9](https://github.com/MetaMask/utils/pull/9))
- Adds a new function, `inMilliseconds`, and moves the time constants into a TypeScript `enum`.

## [1.0.0]

### Added

- Initial release

[Unreleased]: https://github.com/MetaMask/utils/compare/v11.2.0...HEAD
[Unreleased]: https://github.com/MetaMask/utils/compare/v11.3.0...HEAD
[11.3.0]: https://github.com/MetaMask/utils/compare/v11.2.0...v11.3.0
[11.2.0]: https://github.com/MetaMask/utils/compare/v11.1.0...v11.2.0
[11.1.0]: https://github.com/MetaMask/utils/compare/v11.0.1...v11.1.0
[11.0.1]: https://github.com/MetaMask/utils/compare/v11.0.0...v11.0.1
Expand Down
Loading
Loading