0.0.19 • Published 3 years ago
@taikai/dappkit-launchpad v0.0.19
dappkit-launchpad
Solidity to Typescript transpiler for @taikai/dappkit with templates
$ npm install -g @taikai/dappkit-launchpadUsage
$ dlt -f path/to/your/contract/abi.jsonCLI usage
All non provided cli options will be overriden by their counterpart value on the json configuration, and if none exists a default will be used.
-f, --file File to parse [required]
-i, --interfaceDir directory to output interface file into
-c, --classDir directory to output class file into
-n, --name change the file name
-I, --overwriteInterface allow interface file overwrite
-C, --overwriteClass allow class file overwrite
-e, --eventsDir directory to output events to
-E, --overwriteEvent allow event interface file overwrite (events will be
spawned on same folder as interface)
-j, --json json configuration file
-p, --asPackage outputs imports from dappkit istead of source (deprecated)
-h, --help Show help Example
Given the ERC20 standard from @openzepplin and its compilation json, ERC20.json, issuing
$ dk-transpile -f ERC20.json -i ./ -c ./ -e ./ -IECWill output,
$ dk-transpile -f ERC20.json -i ./interfaces -c ./classes -e ./events -IEC
Created /interfaces/erc20.ts
Created /classes/erc20.ts
Created /events/erc20-events.tsThese proxies can then be customizable and will eventually look like the one provided by @taikai/dappkit.
Configuration
All the cli options are available as a json configuration,
| option | description | |
|---|---|---|
| asPackage | asPackage is a backwards compatability flag that should always be true and will be deprecated. | |
| templatesDir | source for the hbs templates. If you provide a custom path, you'll need to provide ALL templates | |
| paths | paths works when asPackage=false and is a backwards compatability flag, it can be ignored as it will be deprecated | |
| paths | base | dappkit base folder |
| paths | abi | where all abis are |
| paths | interfaces | where interfaces are imported from/exported to |
| paths | methods | where the methods are imported from/exported to |
| paths | events | where the events are imported from/exported to |
| output | Output controls where the generated files will be created; Leaving it empty the file will be outputted to the terminal | |
| output | interfaceDir | folder for interfaces output |
| output | classDir | folder for model extension output |
| output | eventsDir | folder for events output |
| overwrite | Which files can be overwritten if already exist | |
| overwrite | interface | |
| overwrite | class | |
| overwrite | events |
default configuration (config.mjs)
{
paths: { // import paths, ignore if asPackage: true
base: "@base", // @taikai/dappkit base folder
abi: "@abi", // @taikai/dappkit abi folder | will be rewritten if asPackage = true, path.dirname(--file)
interfaces: "@interfaces", // @taikai/dappkit interfaces folder | will be rewritten if asPackage = true, output.interfaceDir
methods: "@methods", // @taikai/dappkit methods folder | will be rewritten if asPackage = true, output.interfaceDir
events: "@events" // @taikai/dappkit events folder | will be rewritten if asPackage = true, output.eventsDir
},
output: { // where to output each file (empty defaults to console.log)
interfaceDir: "",
classDir: "",
eventsDir: ""
},
overwrite: { // which files can be overwritten
interface: false,
class: false,
events: false
},
asPackage: true, // used internally, "false" will use imports from @taikai/dappkit source
templatesDir: "./src/templates" // where to get the handlebars templates from, you'll need to provide ALL files
}Templates
Templates can essentially be used to complement customizations in a standard way, and by providing the templatesDir option on the configuration file along with all the handlebars templates this is easily achievable.