Solidity to Typescript transpiler for @taikai/dappkit with templates
$ npm install -g @taikai/dappkit-launchpad
$ dlt -f path/to/your/contract/abi.json
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
Given the ERC20 standard from @openzepplin
and its compilation json, ERC20.json
, issuing
$ dk-transpile -f ERC20.json -i ./ -c ./ -e ./ -IEC
Will 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.ts
These proxies can then be customizable and will eventually look like the one provided by @taikai/dappkit.
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 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.