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:
window.ipfs.enable: the current
window.ipfsapi. Available if the user is using Opera or has the ipfs-companion extension installed.
window.ipfs: the old
window.ipfsapi. Does not include enabling permissions all at once.
js-ipfs: an in-browser ipfs node that communicates via WebRTC/Websockets. The
js-ipfscode is only loaded if required. Can be configured using the
const ipfs = await
// `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 actionpermissions: '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 portspeers:// `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 addressesbrowserPeers:// `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: ""jsIpfs: async await import"ipfs"Promise
Tests coming soon!!
- Run tests with:
npm run test
- Continuously watch with
npm run test:watch
This repo currently makes use of types from typestub-ipfs.
Give your support here for types to be merged into
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.