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

get-ipfs

v1.2.0

Published

Utility to get js-ipfs with fallbacks

Downloads

35

Readme

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.