Skip to content

fission-codes/get-ipfs

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Get IPFS

NPM License Build Status Maintainability Built by FISSION Discord Discourse

A one-stop shop for loading an ipfs instance into a webpage.

Attempts to load ipfs in the following order and returns the result in a Promise:

  1. window.ipfs.enable: the current window.ipfs api. Available if the user is using Opera or has the ipfs-companion extension installed.
  2. window.ipfs: the old window.ipfs api. Does not include enabling permissions all at once.
  3. js-ipfs: an in-browser ipfs node that communicates via WebRTC/Websockets. The js-ipfs code is only loaded if required. Can be configured using the jsIpfs setting.

Usage

import getIpfs from 'get-ipfs'

const ipfs = await getIpfs(config)

Config

{
  // `permissions` are enabled if the browser is ipfs-capable (Opera or extension)
  // passed to `window.ipfs.enable` if available
  // prevents a permission dialog from appearing for every action
  permissions: ['id', 'version', 'add', 'cat', 'dag', 'swarm'],

  // `peers` is a list of peer multiaddrs to connect to on load
  // to work with the `js-ipfs` fallback, these must have available websocket ports
  peers: [],

  // `browserPeers` is a list of peer multiaddrs to connect to only on fallback to an in-browser js-ipfs daemon
  // note: these must be secure websocket or WebRTC addresses
  browserPeers: [],

  // `localPeers` is a list of peer multiaddrs to connect to if using a local ipfs daemon (through ipfs companion for instance)
  localPeers: [],

  // (optional) Configure how to load js-ipfs. By default this'll be an unpkg url that points to the latest minified distribution.
  jsIpfs: "https://unpkg.com/ipfs@latest/dist/index.min.js",
  jsIpfs: async () => await import("ipfs"),
  jsIpfs: () => Promise.resolve(Ipfs)
}

Testing

Tests coming soon!!

  • Run npm i
  • Run tests with: npm run test
  • Continuously watch with npm run test:watch

Notes

This repo currently makes use of types from typestub-ipfs.

Give your support here for types to be merged into js-ipfs or DefinitelyTyped.

This repo is similar to ipfs-provider. One big difference is that ipfs-provider doesn't use ES6 syntax so it can't be used without a module bundler.

About

Utility to get a contextual js-ipfs instance, with graceful web fallbacks

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published