https://github.com/fission-codes/get-ipfs
Utility to get a contextual js-ipfs instance, with graceful web fallbacks
https://github.com/fission-codes/get-ipfs
ipfs ipfs-web utility
Last synced: 5 months ago
JSON representation
Utility to get a contextual js-ipfs instance, with graceful web fallbacks
- Host: GitHub
- URL: https://github.com/fission-codes/get-ipfs
- Owner: fission-codes
- License: apache-2.0
- Archived: true
- Created: 2019-08-21T19:56:47.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2022-06-10T00:41:50.000Z (almost 3 years ago)
- Last Synced: 2024-12-22T20:58:51.498Z (6 months ago)
- Topics: ipfs, ipfs-web, utility
- Language: TypeScript
- Homepage:
- Size: 393 KB
- Stars: 22
- Watchers: 5
- Forks: 1
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- License: LICENSE
Awesome Lists containing this project
README

# Get IPFS
[](https://www.npmjs.com/package/get-ipfs)
[](https://github.com/fission-suite/blob/master/LICENSE)
[](https://travis-ci.org/fission-suite/get-ipfs)
[](https://codeclimate.com/github/fission-suite/get-ipfs/maintainability)
[](https://fission.codes)
[](https://discord.gg/zAQBDEq)
[](https://talk.fission.codes)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
```js
import getIpfs from 'get-ipfs'const ipfs = await getIpfs(config)
```### Config
```js
{
// `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](https://github.com/beenotung/typestub-ipfs).
Give your support [here](https://github.com/ipfs/js-ipfs/issues/1166) for types to be merged into `js-ipfs` or `DefinitelyTyped`.
This repo is similar to [ipfs-provider](https://github.com/ipfs-shipyard/ipfs-provider). One big difference is that `ipfs-provider` doesn't use ES6 syntax so it can't be used without a module bundler.