1.0.7 • Published 4 years ago

@wormhole-stc/abi-fetcher v1.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
4 years ago

@wormhole-stc/abi-fetcher

Usage

Install

$ pnpm i @wormhole/abi-fetcher -S

Configuration

You can create a abi-fetcher.config.js at project root path or use this commmand:

$ ./node_modules/.bin/abi-fetcher init

abi-fetcher.config.js will looks like this:

module.exports = {
  // abis file output dir
  output: '',
  // provider url
  providerUrl: 'https://barnard-seed.starcoin.org',
  // modules address and name on chain
  // example: '0x1::moduleName'
  modules: ['0x1::moduleName'],
};

After abi-fetcher.config.js has been set, then use this command to fetch all abis config:

$ ./node_modules/.bin/abi-fetcher run

As default, all abis config file will be created at ./src/abis

Plugin In Vue2/3

The plugin wrapp all function of all abi config file and gather them as map type data under global key AbiService. All wraped function whill list in console when debug be true.

Example.

Vue3(with starcoin)

// main.js
import { createApp } from 'vue';
import { providers } from '@starcoin/starcoin';
import { AbiPlugin } from 'abi-fetcher';
import { providerUrl } from './abi-fetcher.config.js';

const { JsonRpcProvider } = providers;

import App from './App.vue';

const app = createApp(App);

app.use(AbiPlugin, {
  JsonRpc: new JsonRpcProvider(providerUrl || 'https://barnard-seed.starcoin.org'),
  configUrl: import('./abis/index'), // genereta by abi-fetcher run <Promise>
  debug: process.env.NODE_ENV === 'development',
});
<!-- Component.vue -->
<template></template>
<script>
  import { getCurrentInstance, defineComponent } from 'vue';

  export default defineComponent({
    setup() {
      const { AbiService } = getCurrentInstance.appContext.config.globalProperties;
      // AbiService[moduleName][functionName](params)
    },
  });
</script>

Vue2(with starcoin)

// main.js
import Vue from 'vue';
import { providers } from '@starcoin/starcoin';
import { AbiPlugin } from 'abi-fetcher';
import { providerUrl } from './abi-fetcher.config.js';

const { JsonRpcProvider } = providers;

import App from './App.vue';

Vue.use(AbiPlugin, {
  JsonRpc: new JsonRpcProvider(providerUrl || 'https://barnard-seed.starcoin.org'),
  configUrl: import('./abis/index'), // genereta by abi-fetcher run <Promise>
  debug: process.env.NODE_ENV === 'development',
});

new Vue(App);
<!-- Component.vue -->
<template></template>
<script>
  export default {
    mounted() {
      const { AbiService } = this;
      // AbiService[moduleName][functionName](params)
    },
  };
</script>
1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago