npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

apollo-link-ethereum

v0.1.3

Published

`apollo-link-ethereum` allows you to use GraphQL to speak directly to a smart contract on the Ethereum blockchain. The package integrates with [Apollo Client](https://www.apollographql.com) as a "link". There are several "resolvers" so that you can reso

Downloads

106

Readme

Apollo Link Ethereum

apollo-link-ethereum allows you to use GraphQL to speak directly to a smart contract on the Ethereum blockchain. The package integrates with Apollo Client as a "link". There are several "resolvers" so that you can resolve web3 calls using either web3js 1.0 or Ethers.js. A separate mutations package is available to actually execute transactions.

| Package | Description | | --- | --- | | apollo-link-ethereum | The base package | | apollo-link-ethereum-resolver-ethersjs | Resolve calls using Ethers.js | | apollo-link-ethereum-mutations-ethersjs | Send transactions with Ethers.js | | apollo-link-ethereum-resolver-web3js | Resolve calls using Web3js 1.0 |

To see a simple read-only app see the apollo-link-ethereum-example. Otherwise, for a more complex application have a look at ZeppelinOS Registry.

Installation

$ yarn add apollo-link-ethereum

You'll need to either install the Ethers.js package or the Web3.js package in order to make calls to Ethereum. Currently the Ethers.js resolver is more robust.

In your app, you'll need to add the EthereumLink to your Apollo Client:

import { EthersResolver } from 'apollo-link-ethereum-resolver-ethersjs'
import { EthereumLink, AbiMapping } from 'apollo-link-ethereum'

export const abiMapping = new AbiMapping()
abiMapping.addAbi('MKR', mkrAbi) // assuming mkrAbi is an ABI
abiMapping.addAddress('MKR', 1, '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2')

const ethersProvider = new ethers.getDefaultProvider('homestead')

const ethersResolver = new EthersResolver({
  abiMapping,
  ethersProvider
})

const ethereumLink = new EthereumLink(ethersResolver)

export const apolloClient = new ApolloClient({
  cache: new InMemoryCache(),
  link: ethereumLink
})

Reference

EthereumLink

The object that determines whether queries are Ethereum queries or not. It takes a resolver as an argument. You can use either one of the Web3.js or Ethers.js resolvers.

  • new EthereumLink(resolverInstance) Creates a new EthereumLink with the given resolver.

AbiMapping

The object that stores the contract names, network addresses, and ABIs.

  • AbiMapping#addAbi(contractName, abi) Adds an ABI that can be looked up by the contract name.
  • AbiMapping#addAddress(contractName, networkId, address) Adds a network-specific address for a contract name. This is used to automatically find contract addresses given a contract name.