dappbot-types
Typescript bindings describing the core data types and API interactions with DappBot. Extracted into their own repository in order to :
- Guarantee consistency across multiple client and server projects
- Make the overall DappBot codebase DRYer
- Share these types with our API customers
There is full generated documentation from the source code hosted at eximchain.github.io/dappbot-types
. Briefly, the types are grouped into nested namespaces in order to minimize both collisions and stuttering. They are nested like:
DappBotTypes
: Overall namespace, package's default export
Dapp
: Interfaces, type guards, and factories related to the DappItem
data typeUser
: Interfaces, type guards, and factories related to the User
& auth data typesResponses
: Interfaces and helper functions for our API responsesMethods
: Each sub-module within here (Auth
, Payment
, Private
, Public
) contains all types related to that resource's available methods. Each method contains keys Args
, Result
, Response
, HTTP
, & Path
. The Result
corresponds to the res.data
in a successful call, Response
just wraps that shape in data
/err
.
As a consumer, you can import either import the full namespace from the top or instead use the import string to grab one of the more nested ones. All of the individual namespaces & types are declared within the spec
folder, which you can directly refer to in your import. By example, below are two ways of getting at the same type:
import Types from 'dappbot-types';
const argsFromType:Types.Methods.Auth.Login.Args = {
username : 'wuddup',
password : 'we here',
yis : 'this prop is not legal and gets an error'
}
import { Login } from 'dappbot-types/spec/methods/auth';
const argsFromAuth:Login.Args = {
username : "this object will have err because it's missing a property"
}