@theqrl/web3-validator
v0.2.1
Published
JSON-Schema compatible validator for web3
Downloads
10
Readme
web3-validator
This is a sub-package of web3.js.
web3-validator
contains functions for validating objects.
Installation
You can install the package either using NPM or using Yarn
Using NPM
npm install web3-validator
Using Yarn
yarn add web3-validator
Getting Started
- :writing_hand: If you have questions submit an issue or join us on Discord
Usage
You can use the the validator by importing as and using to validate;
import { validator } from '@theqrl/web3-validator';
// To validate and throw
validator.validate(['uint8', 'string'], [val1, val2]);
// To validate and return error
const errors = validator.validate(['uint8', 'string'], [val1, val2], { silent: true });
To see more examples of schema you can use to validate check following file.
Following eth types are supported to validate.
| Type | Input As | Description |
| ----- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| uint | number
, string
, HexString
| Unsigned integer, all ethereum compatible variants are also supported e.g. uint8
, uint256
. You can also use array specifiers as uint[]
or uint[2]
|
| int | number
, string
, HexString
| Signed integer, all ethereum compatible variants are also supported e.g. int8
, int256
. You can also use array specifiers as int[]
or int[2]
|
| bytes | HexString
, Uint8Array
| Raw bytes. You can also use fixed length bytes as bytes[2]
|
| string | string
| String values |
| address | string
, HexString
| Ethereum network compatible address |
| bloom | string
, HexString
| Check if a given string is a Eth bloom |
| tuple | array
| You can specify any tuple as nested arrays. e.g. ['uint', 'string']
. For a custom tuple or array tuple you can use syntax e.g. ['tuple[3]', ['uint', 'string']]
|
For the ethereum compatible data values should be passed as arrays e.g. for schema ['uint', 'string']
value should be passed as [2, 'my-string']
.
You can also pass full ABI schema for the validation. e.g.
[{ "name": "owner", "type": "address" }]
The implementation of the validator is extension of JSON-Schema-Draft07 with a custom keyword eth
. So you can use JSON-Schema compatible schema to validate any object based data as well.
Prerequisites
Package.json Scripts
| Script | Description |
| ---------------- | -------------------------------------------------- |
| clean | Uses rimraf
to remove dist/
|
| build | Uses tsc
to build package and dependent packages |
| lint | Uses eslint
to lint package |
| lint:fix | Uses eslint
to check and fix any warnings |
| format | Uses prettier
to format the code |
| test | Uses jest
to run unit tests |
| test:integration | Uses jest
to run tests under /test/integration
|
| test:unit | Uses jest
to run tests under /test/unit
|