@dsrv/jsi
TypeScript icon, indicating that this package has built-in type declarations

0.0.2 • Public • Published

@dsrv/jsi

jsonschema interface for smartcontract

Example

const { JSI } = require("@dsrv/jsi");

const schema = {
  $schema: "http://json-schema.org/draft-07/schema#",
  title: "ExecuteMsg",
  anyOf: [{
      type: "object",
      required: ["create_poll"],
      properties: {
        create_poll: {
          type: "object",
          required: ["description"],
          properties: {
            description: {
              type: "string",
            },
            end_height: {
              type: ["integer", "null"],
              format: "uint64",
              minimum: 0.0,
            },
            quorum_percentage: {
              type: ["integer", "null"],
              format: "uint8",
              minimum: 0.0,
            },
            start_height: {
              type: ["integer", "null"],
              format: "uint64",
              minimum: 0.0,
            },
          },
        },
      },
      additionalProperties: false,
    }
  ]
}

function BuildContractMethod(name, required, properties, definitions) {
  return async function (...params) {
    JSI.verifyParameters(required, properties, definitions, params);
    // Code here..
    console.log(0, name);
    console.log(1, required);
    console.log(2, properties);
    console.log(3, definitions);
    console.log(4, params);
  };
}

const jsi = new JSI({
  Execute: {
    schema: schema,
    buildMethod: BuildContractMethod,
  },
});

jsi.Execute.create_poll("description", 99999999);

Package Sidebar

Install

npm i @dsrv/jsi

Weekly Downloads

3

Version

0.0.2

License

MIT

Unpacked Size

18.2 kB

Total Files

9

Last publish

Collaborators

  • nahee.dev
  • hqueue
  • daoauth
  • kwklly
  • sunny0529