Skip to content

Latest commit

 

History

History
315 lines (260 loc) · 15.4 KB

CHANGELOG.md

File metadata and controls

315 lines (260 loc) · 15.4 KB

Changelog

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

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Added

  • Add Solana CAIP namespace (#219)

Changed

  • BREAKING: Drop support for Node.js versions 16, 21 (#212)
  • Improve JSON validation performance (#218)

Added

  • Add support for CAIP-19 (#183)
  • Add Bip122 member to KnownCaipNamespace (#213)

Fixed

  • Fix wrong types for CAIP-2 and CAIP-10 structs (#210)

Added

  • Add Wallet member to KnownCaipNamespace enum (#207)

Added

  • Add PublicInterface type (#197)

Changed

  • BREAKING: The return types of functions getChecksumAddress, numberToHex, bigIntToHex are narrowed from string to Hex (#193)

Fixed

  • Bump @metamask/superstruct from ^3.0.0 to ^3.1.0 (#194)
    • If @metamask/utils <=8.5.0 is used with @metamask/superstruct >=3.1.0 the following error may be encountered:
    error TS2742: The inferred type of 'ExampleType' cannot be named without a reference to '@metamask/utils/node_modules/@metamask/superstruct'. This is likely not portable. A type annotation is necessary.
    This can be resolved by updating @metamask/utils to >=9.0.0.

Changed

  • Bump dependency semver from ^5.7.1 to ^7.6.0 (#181).

Fixed

  • Replace dependency superstruct ^1.0.3 with ESM-compatible @metamask/superstruct ^3.0.0 (#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)
    • Previously, this package shipped with only one variant of type declaration files, and these files were only CommonJS-compatible, and the exports field in package.json linked to these files. This is an anti-pattern and was rightfully flagged by the "Are the Types Wrong?" tool as "masquerading as CJS". All of the ATTW checks now pass.
  • Remove chunk files (#182).
    • 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.

Added

  • Add toCaipChainId utility function (#175)
  • Add KnownCaipNamespace enum (#175)

Changed

  • Update docs for createDeferredPromise to caution against using suppressUnhandledRejection (#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)

Added

  • Add createDeferredPromise (#164)

Fixed

  • Fix issue with source maps where line numbers were incorrect for src/error.ts (#156)

Added

  • Add struct utils for validating JSON objects with optional values (#136)
  • Add filesystem utils (#148)
  • Add error utils (#146, #151)
  • Add base64 encoding and decoding functions (#145)

Changed

  • Use tsup for bundling (#144)
    • This makes the package fully compliant with ES modules.
  • Bump @ethereumjs/tx from 4.1.2 to 4.2.0 (#133)

Changed

  • Make types for JSON-RPC-related structs more accurate (#134)
    • Aligning JsonRpcParams to be optional, yet not undefined.
    • Updated types:
      • InferWithParams
      • JsonRpcNotificationStruct
      • JsonRpcParamsStruct
      • JsonRpcRequestStruct

Changed

  • BREAKING: JsonRpcParams type no longer accepts undefined as value, as undefined is not a valid JSON type (#130)

Added

  • Add CAIP-2 and CAIP-10 types (#116)

Added

  • Add getKnownPropertyNames function (#111)

Changed

  • BREAKING: Build the package as both CJS and ESM (#115, #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)

Added

  • Add address related utils (#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

Added

  • Add optional destroy method to Keyring type (#108)

Fixed

  • Strip __proto__ and constructor JSON properties in getSafeJson (#105)

Changed

  • BREAKING: Bump minimum Node version to 16 (#102)
  • BREAKING: Target ES2020 (#102)

Fixed

  • Fix JSON validation security issue (#103)
    • This adds a new function getSafeJson which validates and returns sanitized JSON.

Changed

  • The Keyring exposes a new optional method init (#99)

Fixed

  • Bump @ethereumjs/tx to 4.1.2 to address runtime compatibility issues (#100)

Fixed

  • Keep original type when using hasProperty if defined (#94)

Changed

  • BREAKING: Update Keyring type (#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.

Changed

  • Export new modules (keyring, transaction-types, and encryption-types) (#86)
  • BREAKING: Improve JSON validation (#85)
    • Fixes edge cases in our JSON validation logic.
    • The previous function used for JSON validation (validateJsonAndGetSize) was removed.
      • The isValidJson function now uses the new JSON validation logic.
      • To get the size of a JSON value, you can use the getJsonSize function.

Added

  • Add Keyring types (#74)
    • New data types added. These are Keyring, Transaction (LegacyTransaction, EIP2930Transaction, EIP1559Transaction), SignedTransaction, Signature, and Eip1024EncryptedData.

Changed

  • Improve the hasProperty function (#79, #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.

Fixed

  • Bump superstruct to ^1.0.3 (#71)

Added

  • Add types and utility functions for validating versions and checksums (#67, #69)

Fixed

  • JSON-RPC types now have a default generic Params value (#54)

Fixed

  • JSON-RPC parameters are now properly cast to Json upon validation (#51)

Added

  • Add more assertion utils (#49)
  • Add JSON-RPC error validation functions (#46)
  • Add convenience function for creating a DataView (#45)

Fixed

  • Update JSON validation logic (#47)
    • Validation would previously allow for undefined values, which is not a standard JSON type

Added

  • Add PendingJsonRpcResponse type (#43)
  • Add utils for converting between numbers and hex (#41)
  • Add coercion utils (#38)

Added

  • Add assertion utils (#33)
  • Add util functions for encoding and decoding bytes (#34)

Fixed

  • Make JSON-RPC error data property optional (#31)
  • Don't include test files in dist folder (#35)
  • Fix typo in README (#28)

Fixed

  • Allow omitting JSON-RPC params when params can be undefined (#29)

Fixed

  • Bump superstruct to ^0.16.5 (#26)
    • superstructs 0.16.1 through 0.16.4 were not compatible with Node 14; this restores that compatibility.

Fixed

  • Promote @types/debug from development dependencies to production dependencies (#23)

Added

  • Add logging functions (#20)
  • Add frozen collections (implemented in #5 but exported in #19)

Changed

  • BREAKING: Improve types and type validation (#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.
      • The JsonRpcSuccess and JsonRpcResponse types now include a generic contraint for the Result type, requiring that it extends the Json type.
      • Various validation functions now accept unknown parameters rather than specific types. This should not be breaking except that it may affect type inference for the parameters passed in.
    • New JSON-related functions have been added:
      • assertIsJsonRpcResponse
      • isJsonRpcResponse
      • InferWithParams
      • JsonRpcParams
    • New JSON Struct types have been added:
      • JsonRpcErrorStruct
      • JsonRpcFailureStruct
      • JsonRpcIdStruct
      • JsonRpcParamsStruct
      • JsonRpcRequestStruct
      • JsonRpcResponseStruct
      • JsonRpcSuccessStruct
      • JsonRpcVersionStruct
      • JsonStruct

Added

  • Add JSON storage validation and limit utilities (#14)
    • Adds a new function validateJsonAndGetSize.

Added

  • Add more JSON utils (#8)

Changed

  • BREAKING: Refactor and expand time utils (#9)
    • Adds a new function, inMilliseconds, and moves the time constants into a TypeScript enum.

Added

  • Initial release