npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

prototvm

v0.1.6

Published

## Installation

Downloads

523

Readme

ProtoTVM

Installation

npm install prototvm

Examples

message non_contract_message(address owner, uint64 id, ref_cell content);
response non_contract_response(address owner, uint64 id, ref_cell content);
custom non_contract_custom(address owner, uint64 id, ref_cell content);
error non_contract_error;
error other_none_contract_error#12ef;

contract one_contract {
    storage(uint256 seqno, address owner, dict users, cell nested_config(uint32 version, address admin));
    message set_fees_empty(); // redefinition
    message set_fees(uint16 fees, address owner, cell additional_values (int36 test, address excesses)); // example
    message set_update#a121ba(time expiration, address new_owner, dict new_owners); 
    response my_resp(address excesses, maybe_cell payload);
    custom additional_custom_fields(address owner, uint64 id, ref_cell content);
    error test;
    error test21;
    error test1003;

    error wrong_op#ffff;

    message[25000000] custom#a121ba(time expiration, address new_owner, dict new_owners, coins amount); 
    response[105000000] my_resp_2(address excesses, maybe_cell payload);

    // --- others ---

    // provide_wallet_address#2c76b973 query_id:uint64 owner_address:MsgAddress include_address:Bool = InternalMsgBody;
    message provide_wallet_address(address owner_address, bool include_address);

    // get_royalty_params#693d3950 query_id:uint64 = InternalMsgBody;
    message get_royalty_params();

    // report_royalty_params#a8cb00ad query_id:uint64 numerator:uint16 denominator:uint16 destination:MsgAddress = InternalMsgBody;
    response report_royalty_params(uint16 numerator, uint16 denominator, address destination);

    // get_static_data#2fcb26a2 query_id:uint64 = InternalMsgBody
    message get_static_data();

    // report_static_data#8b771735 query_id:uint64 index:uint256 collection:MsgAddress = InternalMsgBody;
    response report_static_data(uint256 index, address collection);
}

contract other_contract {
    message set_fees_empty(); // redefinition
    message set_fees(uint16 fees, address owner, cell additional_values (int36 test, address excesses)); // example
    message set_update#a121ba(time expiration, address new_owner, dict new_owners); 
    response my_resp(address excesses, maybe_cell payload);
    custom additional_custom_fields(address owner, uint64 id, ref_cell content);

    // Field names must be unique across all nested cell levels
    custom very_nested_custom(address owner, uint64 id, cell nested_config(int32 test1, address excesses1, cell nested_config(int32 test2, address excesses2)));
    error test;
    error test21;
    error test1003;

    error wrong_op#ffff;

    message[25000000] custom#a121ba(time expiration, address new_owner, dict new_owners, coins amount); 
    response[105000000] my_resp_2(address excesses, maybe_cell payload);

    // --- others ---

    // provide_wallet_address#2c76b973 query_id:uint64 owner_address:MsgAddress include_address:Bool = InternalMsgBody;
    message provide_wallet_address(address owner_address, bool include_address);

    // get_royalty_params#693d3950 query_id:uint64 = InternalMsgBody;
    message get_royalty_params();

    // report_royalty_params#a8cb00ad query_id:uint64 numerator:uint16 denominator:uint16 destination:MsgAddress = InternalMsgBody;
    response report_royalty_params(uint16 numerator, uint16 denominator, address destination);

    // get_static_data#2fcb26a2 query_id:uint64 = InternalMsgBody
    message get_static_data();

    // report_static_data#8b771735 query_id:uint64 index:uint256 collection:MsgAddress = InternalMsgBody;
    response report_static_data(uint256 index, address collection);
}