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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@bonadocs/docgen

v1.0.1-alpha.3

Published

Interactive documentation generator for solidity smart contracts

Downloads

265

Readme

@bonadocs/docgen

docgen is a program that extracts documentation for a Solidity project and generates an interactive website from it using Docusaurus.

@bonadocs/docgen is based on solidity-docgen. If you already use solidity-docgen, you already know how to use @bonadocs/docgen. Hmmm, maybe 90% of it. The two main differences are:

  • @bonadocs/docgen generates a website using Docusaurus, while solidity-docgen only generates Markdown files. You can turn off the website generation if you want to use a different static site generator and only markdown files will be generated, much like solidity-docgen. If you would like to use include widgets that make your documentation interactive, then this is a great option.
  • @bonadocs/docgen generates widgets for deployed contracts, so developers can interact with the contracts directly from the documentation website. This is better than sending them off to Etherscan or worse, having them write their own scripts to interact with the contracts.

The markdown output is fully configurable through Handlebars templates, but the default templates should do a good job of displaying all of the information in the source code in Markdown format. If you don't want to generate a website, the generated Markdown files can be used with a static site generator such as Docusaurus, Vuepress, MkDocs, Jekyll (GitHub Pages), etc., in order to publish a documentation website.

Widget?

The widgets are interactive components that allow users to interact with the contracts directly from the documentation website. Widgets run simulations by default and enable developers to test without paying gas fees. Developers love to learn by doing, and this is the perfect way to let them do just that. The widgets are generated using @bonadocs/widget.

Note: widgets will only be generated for contracts with their deployment addresses specified. Refer to the configuration below

Usage

Install @bonadocs/docgen from npm.

Hardhat

Include the plugin in your Hardhat configuration.

 // hardhat.config.ts
+import '@bonadocs/docgen';

export default {
+  docgen: {
+    projectName: 'Your Protocol Name', // optional, a placeholder name will be used if omitted
+    projectDescription: 'An awesome web3 protocol.', // optional, a placeholder description will be used if omitted
+    deploymentAddresses: { // optional. If you want to generate widgets for deployed contracts
+      FirstContractName: [
+        {
+          chainId: 1, // mainnet
+          address: '0x...',
+        },
+        {
+          chainId: 42161, // arbitrum
+          address: '0x...',
+        },
+      ],
+      SecondContractName: [
+        {
+          chainId: 1, // mainnet
+          address: '0x...',
+        },
+        {
+          chainId: 42161, // arbitrum
+          address: '0x...',
+        },
+      ],
+    },
+  }, // if necessary to customize config
};

Then run with npx hardhat docgen.

As a library

import { docgen } from '@bonadocs/docgen';

abis = [
  {
    contractName: 'MyContract',
    abi: '...'
  }
]
await docgen([{ output: solcOutput }], config, abis);

solcOutput must be the standard JSON output of the compiler, with at least the ast output. There can be more than one.

config is an optional object with the values as specified below.

Config

See config.ts for the list of options and their documentation.

abis is an optional array of objects with the following properties:

  • contractName: the name of the contract
  • abi: the ABI of the contract