Neat! Pickled Muskrat!

    @findeth/abi
    TypeScript icon, indicating that this package has built-in type declarations

    0.7.1 • Public • Published

    @findeth/abi

    Version License GitHub CI codecov

    @findeth/abi is a zero-dependencies ABI encoder and decoder library for FindETH. It supports both Node.js and web browsers. This library is experimental, and may not work with all contract interfaces. It is used in the FindETH applications, that can be found here:

    Currently, most types (except fixed-point numbers (fixed<M>x<N>), and fixed-length arrays type<M>) are supported.

    Note: This is a work-in-progress version of FindETH, and is not production-ready. For the current version of FindETH, please refer to this repository. The public API may change in minor releases below 1.0.0 (though this is unlikely).


    Installation

    You can install @findeth/abi with Yarn (recommended) or NPM:

    $ yarn add @findeth/abi
    
    $ npm install @findeth/abi
    

    Note: If you are using TypeScript, @findeth/abi requires TypeScript 4.1 or newer. This is used for automatically inferring the types of the input and output, based on the specified types.

    Getting Started

    You can use the encode and decode functions to encode and decode ABI respectively.

    Encode

    The encode function takes an array of ABI types (e.g., ["string", "uint256"]) and an array of values to encode. For example:

    import { encode, toHex } from "@findeth/abi";
    
    const buffer = encode(["string", "uint256"], ["foo bar", 12345]);
    console.log(toHex(buffer));
    
    // 000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000030390000000000000000000000000000000000000000000000000000000000000007666f6f2062617200000000000000000000000000000000000000000000000000

    Decode

    The decode function takes an array of ABI types, and a buffer (Uint8Array) to decode. Note that Node.js Buffers are compatible with Uint8Array, but in order to maintain full compatibility with web browsers (without the need for polyfills), this library does not use Buffer. Example:

    import { decode, fromHex } from "@findeth/abi";
    
    const value = fromHex("000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000030390000000000000000000000000000000000000000000000000000000000000007666f6f2062617200000000000000000000000000000000000000000000000000");
    console.log(decode(["string", "uint256"], value));
    
    // ["foo bar", 12345n]

    Development

    Install dependencies with yarn:

    $ yarn
    

    To run automated tests, use the test script:

    $ yarn test
    

    To build the library, use the build script:

    $ yarn build
    

    Install

    npm i @findeth/abi

    DownloadsWeekly Downloads

    4,936

    Version

    0.7.1

    License

    MIT

    Unpacked Size

    209 kB

    Total Files

    167

    Last publish

    Collaborators

    • mrten