Skip to content

hicommonwealth/edgeware-node-types

Repository files navigation

edgeware-node-types

Usage

This repo contains Typescript bindings for custom edgeware-node modules.

In order to use the standard API against Edgeware you must initialize the API's options object as follows:

import { spec } from '@edgeware/node-types';

const options: ApiOptions = {
  provider : new WsProvider('ws://localhost:9944'),
  ...spec,
};

const api = new ApiPromise(options);

You will also need to update the tsconfig.json of your project to include the following:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@polkadot/api/augment": ["./node_modules/@edgeware/node-types/interfaces/augment-api.d.ts"],
      "@polkadot/types/augment": ["./node_modules/@edgeware/node-types/interfaces/augment-types.d.ts"],
    }
  }
}

Dependencies

Your project's @polkadot-js dependency versions must match the versions used in this project, including @polkadot/api, @polkadot/keyring, and all associated packages, as well as rxjs (if using ApiRx instead of ApiPromise) and typescript. To verify the versions required, inspect the @polkadot package.json files for the version specified in this project's package.json.

Building

This project depends on the @polkadot/typegen project, which has a step-by-step guide to building this project.

The Edgeware-specific version is as follows:

  1. Ensure in package.json that @polkadot/api is set to the correct version, and that @polkadot/typegen is set to the same version as @polkadot/api. Increase the @edgeware/node-types version if necessary for publication.

  2. Ensure that all the definitions.ts files in src/interfaces are updated to the latest versions of each type, if any edgeware modules changed.

  3. Run an edgeware-node chain on localhost. Then, run ./generateMetadata.bash to update the edgeware.json file.

  4. Once you have an edgeware.json file, you can rebuild the types with:

    $ yarn generate
    $ yarn lint
    
  5. You will notice that the output of the lint command contains an error. This is because the typegen script does not handle relative paths well for custom modules that depend on each other. You will have to make a manual change to signaling/types.ts as follows:

    - import { VoteStage } from './voting';
    + import { VoteStage } from '../voting';
  6. Upgrade all spec files with any changes necessary as per the @polkadot-js changelog and the underlying Substrate version of the chain.

  7. To compile the Typescript to Javascript for npm publication, run yarn build. This command should not produce any errors and will output build files to the dist directory.

  8. Run a simple test of the newly-built API against a live edgeware node with yarn verify [mainnet | beresheet].

  9. Publish the new version with npm publish.

About

Typescript bindings for our node modules.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published