Sets Schema
The @metameta/metasets-schema
package includes a JSON schema for V1 sets, and TypeScript utilities for working with sets.
💾 Installation
npm install @web3-set-theory/schema
yarn add @web3-set-theory/schema
git clone https://github.com/web3-set-theory/schema
💻 Developer Experience
The module is built using TSDX zero-config CLI which includes:
- Typescript
- Rollup
- Jest
- Prettier
- ESLint
Validating Sets
JSON Schema $id
The JSON schema ID is https://metametaprotocol.com/set.smartcontract.schema.json
Validating Sets
This package does not include code for token list validation. You can easily do this by including a library such as ajv to perform the validation against the JSON schema. The schema is exported from the package for ease of use.
import Ajv from 'ajv';
import { smartcontract } from '@metameta-protocol/metasets-schema'
const ajv = new Ajv({ allErrors: true });
const validate = ajv.compile(smartcontract);
const response = await fetch('https://metameta.com/guide/defi-kickstart.json')
const listData = await response.json()
const valid = validate(listData)
if (!valid) {
// oh no!
}
Creating Sets
Manual
The best way to manually author token lists is to use an editor that supports JSON schema validation. Most popular code editors do, such as IntelliJ or VSCode. Other editors can be found here.
In order for your set to be able to be used, it must pass all JSON schema validation specific to that type.
Semantic versioning
Sets include a version
field, which follows semantic versioning.
Each set will have specific rules defining versioning but generally a good rule of thumb is...
- Increment major version when an Entity is removed
- Increment minor version when an Entity is added
- Increment patch version when an Entity already on the list have minor details changed that don't effect the set outcome.