Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

antelope-abi2rs

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

antelope-abi2rs

Generate Rust type defenitions from Antelope ABI files

  • 0.4.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
decreased by-83.33%
Maintainers
1
Weekly downloads
 
Created
Source

antelope-abi2rs

Command line tool to generate Rust type definitions from Antelope ABI Inspired by eosio-abi2ts

Installation

npm install -g antelope-abi2rs

or

yarn global add antelope-abi2rs

Usage

$ antelope-abi2rs -h
usage: antelope-abi2rs [-h] [-v] [-i INPUT] [-p PREFIX] [-n INDENT] [-t] [-e]
                    [-a | -c | -s]
                    [output]

Positional arguments:
  output                Output file to write to instead of stdout.

Optional arguments:
  -h, --help            Show this help message and exit.
  -v, --version         Show program's version number and exit.
  -i INPUT, --input INPUT
                        Read ABI JSON from file instead of stdin.
  -p PREFIX, --prefix PREFIX
                        Prefix to add to every type.
  -n INDENT, --indent INDENT
                        How many spaces or tabs to indend with.
  -t, --use-tabs        Use tabs instead of spaces for indentation.
  -a, --pascal-case     Format types using PascalCase (default).
  -c, --camel-case      Format types using camelCase.
  -s, --snake-case      Format types using snake_case.

Example

$ antelope-abi2rs -i eosio.token.abi

// Generated by antelope-abi2rs 0.3.1 - eosio::abi/1.1

use serde::{Deserialize, Serialize};

type Asset = String;
type Name = String;
type Symbol = String;


macro_rules! impl_try_from_str {
    ($type:ty) => {
        impl TryFrom<&str> for $type {
            type Error = serde_json::Error;
            #[inline]
            fn try_from(str: &str) -> Result<Self, Self::Error> {
                serde_json::from_str(str)
            }
        }
    };
}


#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Account {
    pub balance: Asset,
}
impl_try_from_str!(Account);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Close {
    pub owner: Name,
    pub symbol: Symbol,
}
impl_try_from_str!(Close);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Create {
    pub issuer: Name,
    pub maximum_supply: Asset,
}
impl_try_from_str!(Create);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct CurrencyStats {
    pub supply: Asset,
    pub max_supply: Asset,
    pub issuer: Name,
}
impl_try_from_str!(CurrencyStats);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Issue {
    pub to: Name,
    pub quantity: Asset,
    pub memo: String,
}
impl_try_from_str!(Issue);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Open {
    pub owner: Name,
    pub symbol: Symbol,
    pub ram_payer: Name,
}
impl_try_from_str!(Open);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Retire {
    pub quantity: Asset,
    pub memo: String,
}
impl_try_from_str!(Retire);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Transfer {
    pub from: Name,
    pub to: Name,
    pub quantity: Asset,
    pub memo: String,
}
impl_try_from_str!(Transfer);

Stdin

eosc -u https://eos.greymass.com get abi eosio.evm | antelope-abi2rs src/abi.rs

Usage

for trx in block.all_transaction_traces() {
    for trace in &trx.action_traces {
        let action_trace = trace.action.as_ref().unwrap();
        if action_trace.name != "transfer" { continue; }

        match abi::Transfer::try_from(action_trace.json_data.as_str()) {
            Ok(transfer) => {
                log::info!("Transfer! {:?}", transfer)
            }
            Err(_) => continue,
        }
    }
}

Keywords

FAQs

Package last updated on 16 Jun 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc