diff --git a/README.md b/README.md index 0507120487..af89084433 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@
-
+
@@ -204,7 +204,7 @@ Creates and returns an instance of an IPFS node. Use the `options` argument to s
- `repo` (string or [`ipfs.Repo`](https://github.com/ipfs/js-ipfs-repo) instance): The file path at which to store the IPFS node’s data. Alternatively, you can set up a customized storage system by providing an [`ipfs.Repo`](https://github.com/ipfs/js-ipfs-repo) instance. (Default: `'~/.jsipfs'` in Node.js, `'ipfs'` in browsers.)
Example:
-
+
```js
// Store data outside your user directory
const node = new IPFS({ repo: '/var/ipfs/data' })
@@ -213,13 +213,13 @@ Creates and returns an instance of an IPFS node. Use the `options` argument to s
- `init` (boolean or object): Initialize the repo when creating the IPFS node. (Default: `true`)
If you have already initialized a repo before creating your IPFS node (e.g. you are loading a repo that was saved to disk from a previous run of your program), you must make sure to set this to `false`. Note that *initializing* a repo is different from creating an instance of [`ipfs.Repo`](https://github.com/ipfs/js-ipfs-repo). The IPFS constructor sets many special properties when initializing a repo, so you should usually not try and call `repoInstance.init()` yourself.
-
+
Instead of a boolean, you may provide an object with custom initialization options. All properties are optional:
-
+
- `init.emptyRepo` (boolean) Whether to remove built-in assets, like the instructional tour and empty mutable file system, from the repo. (Default: `false`)
- `init.bits` (number) Number of bits to use in the generated key pair. (Default: `2048`)
- `init.pass` (string) A passphrase to encrypt keys. You should generally use the top-level `pass` option instead of the `init.pass` option (this one will take its value from the top-level option if not set).
-
+
- `start` (boolean): If `false`, do not automatically start the IPFS node. Instead, you’ll need to manually call `node.start()` yourself. (Default: `true`)
- `pass` (string): A passphrase to encrypt/decrypt your keys.
@@ -233,9 +233,9 @@ Creates and returns an instance of an IPFS node. Use the `options` argument to s
- `hop` (object)
- `enabled` (boolean): Make this node a relay (other nodes can connect *through* it). (Default: `false`)
- `active` (boolean): Make this an *active* relay node. Active relay nodes will attempt to dial a destination peer even if that peer is not yet connected to the relay. (Default: `false`)
-
+
- `config` (object) Modify the default IPFS node config. Find the Node.js defaults at [`src/core/runtime/config-nodejs.js`](https://github.com/ipfs/js-ipfs/tree/master/src/core/runtime/config-nodejs.js) and the browser defaults at [`src/core/runtime/config-browser.js`](https://github.com/ipfs/js-ipfs/tree/master/src/core/runtime/config-browser.js). This object will be *merged* with the default config; it will not replace it.
-
+
- `libp2p` (object) add custom modules to the libp2p stack of your node
- `modules` (object):
- `transport` (Array<[libp2p.Transport](https://github.com/libp2p/interface-transport)>): An array of additional Libp2p transport instances to use. See [libp2p/interface-transport](https://github.com/libp2p/interface-transport) for details.
@@ -315,12 +315,12 @@ This method is asynchronous. There are several ways to be notified when the node
const node = new IPFS()
node.on('ready', () => {
console.log('Node is ready to use!')
-
+
// Stop with a promise:
node.stop()
.then(() => console.log('Node stopped!'))
.catch(error => console.error('Node failed to stop cleanly!', error))
-
+
// OR use a callback:
node.stop(error => {
if (error) {
@@ -329,7 +329,7 @@ node.on('ready', () => {
}
console.log('Node stopped!')
})
-
+
// OR use events:
node.on('error', error => console.error('Something went terribly wrong!', error))
node.stop()
@@ -355,7 +355,7 @@ The core API is grouped into several areas:
- [`ipfs.files.catPullStream(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/FILES.md#catpullstream)
- [`ipfs.files.get(ipfsPath, [options], [callback])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/FILES.md#get)
- [`ipfs.files.getReadableStream(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/FILES.md#getreadablestream)
- - [`ipfs.files.getPullStream(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/FILES.md#getpullstream)
+ - [`ipfs.files.getPullStream(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/FILES.md#getpullstream)
- [block](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/BLOCK.md)
- [`ipfs.block.get(cid, [options, callback])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/BLOCK.md#get)
@@ -368,7 +368,7 @@ The core API is grouped into several areas:
- [`ipfs.dag.put(dagNode, options, callback)`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/DAG.md#dagput)
- [`ipfs.dag.get(cid [, path, options], callback)`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/DAG.md#dagget)
- [`ipfs.dag.tree(cid [, path, options], callback)`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/DAG.md#dagtree)
-
+
- [object](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/OBJECT.md).
- [`ipfs.object.new([template][, callback])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/OBJECT.md#objectnew)
- [`ipfs.object.put(obj, [options, callback])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/OBJECT.md#objectput)
@@ -399,12 +399,12 @@ The core API is grouped into several areas:
- `ipfs.bootstrap.list`
- `ipfs.bootstrap.add`
- `ipfs.bootstrap.rm`
-
+
- [bitswap](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/)
- `ipfs.bitswap.wantlist()`
- `ipfs.bitswap.stat()`
- `ipfs.bitswap.unwant()`
-
+
- [dht (not implemented, yet!)](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/)
- [pubsub](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/PUBSUB.md)
@@ -413,12 +413,12 @@ The core API is grouped into several areas:
- [`ipfs.pubsub.publish(topic, data, callback)`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/PUBSUB.md#pubsubpublish)
- [`ipfs.pubsub.ls(topic, callback)`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/PUBSUB.md#pubsubls)
- [`ipfs.pubsub.peers(topic, callback)`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/PUBSUB.md#pubsubpeers)
-
+
- [libp2p](https://github.com/libp2p/interface-libp2p). Every IPFS instance also exposes the libp2p SPEC at `ipfs.libp2p`. The formal interface for this SPEC hasn't been defined by you can find documentation at its implementations:
- [Node.js bundle](./src/core/runtime/libp2p-nodejs.js)
- [Browser Bundle](./src/core/runtime/libp2p-browser.js)
- [libp2p baseclass](https://github.com/libp2p/js-libp2p)
-
+
- [swarm](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/SWARM.md)
- [`ipfs.swarm.addrs([callback])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/SWARM.md#addrs)
- [`ipfs.swarm.connect(addr, [callback])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/SWARM.md#connect)
@@ -448,7 +448,7 @@ The core API is grouped into several areas:
- [`ipfs.stats.bwPullStream([options]) -> Pull Stream`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/STATS.md#bwpullstream)
- [`ipfs.stats.bwReadableStream([options]) -> Readable Stream`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/STATS.md#bwreadablestream)
- [`ipfs.stats.repo([options, callback])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/STATS.md#repo)
-
+
- [config](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/CONFIG.md)
- [`ipfs.config.get([key, callback])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/CONFIG.md#configget)
- [`ipfs.config.set(key, value, [callback])`](https://github.com/ipfs/interface-ipfs-core/tree/master/SPEC/CONFIG.md#configset)
@@ -655,55 +655,62 @@ $ curl --silent localhost:5002/api/v0/id | jq .ID
"Qmbd5jx8YF1QLhvwfLbCTWXGyZLyEJHrPbtbpRESvYs4FS"
```
-## Packages
-| Package | Version | Deps | DevDeps | Travis | Circle | AppVeyor | Coverage |
-|---------|---------|------|---------|--------|--------|----------|----------|
-| **API Specs** |
-| [`interface-ipfs-core`](https://github.com/ipfs/interface-ipfs-core) | [](//github.com/ipfs/interface-ipfs-core/releases) | [](https://david-dm.org/ipfs/interface-ipfs-core) | [](https://david-dm.org/ipfs/interface-ipfs-core?type=dev) | [](https://travis-ci.org/ipfs/interface-ipfs-core) | | | |
-| [`http-api-spec`](https://github.com/ipfs/http-api-spec) | | |
-| [`cli spec`](https://github.com/ipfs/specs/tree/master/public-api/cli) | | | |
-| **Repo** |
-| [`ipfs-repo`](//github.com/ipfs/js-ipfs-repo) | [](//github.com/ipfs/js-ipfs-repo/releases) | [](https://david-dm.org/ipfs/js-ipfs-repo) | [](https://david-dm.org/ipfs/js-ipfs-repo?type=dev) | [](https://travis-ci.org/ipfs/js-ipfs-repo) | [](https://circleci.com/gh/ipfs/js-ipfs-repo) |  | [](https://coveralls.io/github/ipfs/js-ipfs-repo?branch=master) |
-| **DAG** |
-| [`ipld-resolver`](https://github.com/ipld/js-ipld-resolver) | [](//github.com/ipld/js-ipfs-repo/releases) | [](https://david-dm.org/ipld/js-ipld-resolver) | [](https://david-dm.org/ipld/js-ipld-resolver?type=dev) | [](https://travis-ci.org/ipld/js-ipld-resolver) | [](https://circleci.com/gh/ipld/js-ipld-resolver) |  | [](https://coveralls.io/github/ipld/js-ipld-resolver?branch=master) |
-| [`ipld-dag-pb`](https://github.com/ipld/js-ipld-dag-pb) | [](//github.com/ipld/js-ipld-dag-pb/releases) | [](https://david-dm.org/ipld/js-ipld-dag-pb) | [](https://david-dm.org/ipld/js-ipld-dag-pb?type=dev) | [](https://travis-ci.org/ipld/js-ipld-dag-pb) | [](https://circleci.com/gh/ipld/js-ipld-dag-pb) |  | [](https://coveralls.io/github/ipld/js-ipld-dag-pb?branch=master) |
-| [`ipld-dag-cbor`](https://github.com/ipld/js-ipld-dag-cbor) | [](//github.com/ipld/js-ipld-dag-cbor/releases) | [](https://david-dm.org/ipld/js-ipld-dag-cbor) | [](https://david-dm.org/ipld/js-ipld-dag-cbor?type=dev) | [](https://travis-ci.org/ipld/js-ipld-dag-cbor) | [](https://circleci.com/gh/ipld/js-ipld-dag-cbor) |  | [](https://coveralls.io/github/ipld/js-ipld-dag-pb?branch=master) |
-| **Files** |
-| [`ipfs-unixfs-engine`](//github.com/ipfs/js-ipfs-unixfs-engine) | [](//github.com/ipfs/js-ipfs-unixfs-engine/releases) | [](https://david-dm.org/ipfs/js-ipfs-unixfs-engine) | [](https://david-dm.org/ipfs/js-ipfs-unixfs-engine?type=dev) | [](https://travis-ci.org/ipfs/js-ipfs-unixfs-engine) | [](https://circleci.com/gh/ipfs/js-ipfs-unixfs-engine) |  | [](https://coveralls.io/github/ipfs/js-ipfs-unixfs-engine?branch=master) |
-| **Exchange** |
-| [`ipfs-block-service`](//github.com/ipfs/js-ipfs-block-service) | [](//github.com/ipfs/js-ipfs-block-service/releases) | [](https://david-dm.org/ipfs/js-ipfs-block-service) | [](https://david-dm.org/ipfs/js-ipfs-block-service?type=dev) | [](https://travis-ci.org/ipfs/js-ipfs-block-service) | [](https://circleci.com/gh/ipfs/js-ipfs-block-service) |  | [](https://coveralls.io/github/ipfs/js-ipfs-block-service?branch=master) |
-| [`ipfs-bitswap`](//github.com/ipfs/js-ipfs-bitswap) | [](//github.com/ipfs/js-ipfs-bitswap/releases) | [](https://david-dm.org/ipfs/js-ipfs-bitswap) | [](https://david-dm.org/ipfs/js-ipfs-bitswap?type=dev) | [](https://travis-ci.org/ipfs/js-ipfs-bitswap) | [](https://circleci.com/gh/ipfs/js-ipfs-bitswap) |  | [](https://coveralls.io/github/ipfs/js-ipfs-bitswap?branch=master) |
-| **Swarm/libp2p** |
-| [`js-libp2p`](https://github.com/libp2p/js-libp2p) | [](//github.com/libp2p/js-libp2p/releases) | [](https://david-dm.org/libp2p/js-libp2p) | [](https://david-dm.org/libp2p/js-libp2p?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p) | [](https://circleci.com/gh/libp2p/js-libp2p) |  | [](https://coveralls.io/github/libp2p/js-libp2p?branch=master) |
-| [`js-libp2p-circuit`](https://github.com/libp2p/js-libp2p-circuit) | [](//github.com/libp2p/js-libp2p-circuit/releases) | [](https://david-dm.org/libp2p/js-libp2p-circuit) | [](https://david-dm.org/libp2p/js-libp2p-circuit?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-circuit) | [](https://circleci.com/gh/libp2p/js-libp2p-circuit) |  | [](https://coveralls.io/github/libp2p/js-libp2p-circuit?branch=master) |
-| [`js-libp2p-floodsub`](https://github.com/libp2p/js-libp2p-floodsub) | [](//github.com/libp2p/js-libp2p-floodsub/releases) | [](https://david-dm.org/libp2p/js-libp2p-floodsub) | [](https://david-dm.org/libp2p/js-libp2p-floodsub?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-floodsub) | [](https://circleci.com/gh/libp2p/js-libp2p-floodsub) |  | [](https://coveralls.io/github/libp2p/js-libp2p-floodsub?branch=master) |
-| [`js-libp2p-kad-dht`](https://github.com/libp2p/js-libp2p-kad-dht) | [](//github.com/libp2p/js-libp2p-kad-dht/releases) | [](https://david-dm.org/libp2p/js-libp2p-kad-dht) | [](https://david-dm.org/libp2p/js-libp2p-kad-dht?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-kad-dht) | [](https://circleci.com/gh/libp2p/js-libp2p-kad-dht) |  | [](https://coveralls.io/github/libp2p/js-libp2p-kad-dht?branch=master) |
-| [`js-libp2p-mdns`](https://github.com/libp2p/js-libp2p-mdns) | [](//github.com/libp2p/js-libp2p-mdns/releases) | [](https://david-dm.org/libp2p/js-libp2p-mdns) | [](https://david-dm.org/libp2p/js-libp2p-mdns?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-mdns) | [](https://circleci.com/gh/libp2p/js-libp2p-mdns) |  | [](https://coveralls.io/github/libp2p/js-libp2p-mdns?branch=master) |
-| [`js-libp2p-multiplex`](https://github.com/libp2p/js-libp2p-multiplex) | [](//github.com/libp2p/js-libp2p-multiplex/releases) | [](https://david-dm.org/libp2p/js-libp2p-multiplex) | [](https://david-dm.org/libp2p/js-libp2p-multiplex?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-multiplex) | [](https://circleci.com/gh/libp2p/js-libp2p-multiplex) |  |  |
-| [`js-libp2p-railing`](https://github.com/libp2p/js-libp2p-railing) | [](//github.com/libp2p/js-libp2p-railing/releases) | [](https://david-dm.org/libp2p/js-libp2p-railing) | [](https://david-dm.org/libp2p/js-libp2p-railing?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-railing) | [](https://circleci.com/gh/libp2p/js-libp2p-railing) |  | [](https://coveralls.io/github/libp2p/js-libp2p-railing?branch=master) |
-| [`js-libp2p-secio`](https://github.com/libp2p/js-libp2p-secio) | [](//github.com/libp2p/js-libp2p-secio/releases) | [](https://david-dm.org/libp2p/js-libp2p-secio) | [](https://david-dm.org/libp2p/js-libp2p-secio?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-secio) | [](https://circleci.com/gh/libp2p/js-libp2p-secio) |  | [](https://coveralls.io/github/libp2p/js-libp2p-secio?branch=master) |
-| [`js-libp2p-tcp`](https://github.com/libp2p/js-libp2p-tcp) | [](//github.com/libp2p/js-libp2p-tcp/releases) | [](https://david-dm.org/libp2p/js-libp2p-tcp) | [](https://david-dm.org/libp2p/js-libp2p-tcp?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-tcp) | [](https://circleci.com/gh/libp2p/js-libp2p-tcp) |  | [](https://coveralls.io/github/libp2p/js-libp2p-tcp?branch=master) |
-| [`js-libp2p-webrtc-star`](https://github.com/libp2p/js-libp2p-webrtc-star) | [](//github.com/libp2p/js-libp2p-webrtc-star/releases) | [](https://david-dm.org/libp2p/js-libp2p-webrtc-star) | [](https://david-dm.org/libp2p/js-libp2p-webrtc-star?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-webrtc-star) | [](https://circleci.com/gh/libp2p/js-libp2p-webrtc-star) |  | [](https://coveralls.io/github/libp2p/js-libp2p-webrtc-star?branch=master) |
-| [`js-libp2p-websocket-star`](https://github.com/libp2p/js-libp2p-websocket-star) | [](//github.com/libp2p/js-libp2p-websocket-star/releases) | [](https://david-dm.org/libp2p/js-libp2p-websocket-star) | [](https://david-dm.org/libp2p/js-libp2p-websocket-star?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-websocket-star) | [](https://circleci.com/gh/libp2p/js-libp2p-websocket-star) |  | [](https://coveralls.io/github/libp2p/js-libp2p-websocket-star?branch=master) |
-| [`js-libp2p-websockets`](https://github.com/libp2p/js-libp2p-websockets) | [](//github.com/libp2p/js-libp2p-websockets/releases) | [](https://david-dm.org/libp2p/js-libp2p-websockets) | [](https://david-dm.org/libp2p/js-libp2p-websockets?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-websockets) | [](https://circleci.com/gh/libp2p/js-libp2p-websockets) |  | [](https://coveralls.io/github/libp2p/js-libp2p-websockets?branch=master) |
-| **Data Types** |
-| [`ipfs-block`](//github.com/ipfs/js-ipfs-block) | [](//github.com/ipfs/js-ipfs-block/releases) | [](https://david-dm.org/ipfs/js-ipfs-block) | [](https://david-dm.org/ipfs/js-ipfs-block?type=dev) | [](https://travis-ci.org/ipfs/js-ipfs-block) | [](https://circleci.com/gh/ipfs/js-ipfs-block) |  | [](https://coveralls.io/github/ipfs/js-ipfs-block?branch=master) |
-| [`ipfs-unixfs`](//github.com/ipfs/js-ipfs-unixfs) | [](//github.com/ipfs/js-ipfs-unixfs/releases) | [](https://david-dm.org/ipfs/js-ipfs-unixfs) | [](https://david-dm.org/ipfs/js-ipfs-unixfs?type=dev) | [](https://travis-ci.org/ipfs/js-ipfs-unixfs) | [](https://circleci.com/gh/ipfs/js-ipfs-unixfs) |  | [](https://coveralls.io/github/ipfs/js-ipfs-unixfs?branch=master) |
-| [`peer-id`](//github.com/libp2p/js-peer-id) | [](//github.com/libp2p/js-peer-id/releases) | [](https://david-dm.org/libp2p/js-peer-id) | [](https://david-dm.org/libp2p/js-peer-id?type=dev) | [](https://travis-ci.org/libp2p/js-peer-id) | [](https://circleci.com/gh/libp2p/js-peer-id) |  | [](https://coveralls.io/github/libp2p/js-peer-id?branch=master) |
-| [`peer-info`](//github.com/libp2p/js-peer-info) | [](//github.com/libp2p/js-peer-info/releases) | [](https://david-dm.org/libp2p/js-peer-info) | [](https://david-dm.org/libp2p/js-peer-info?type=dev) | [](https://travis-ci.org/libp2p/js-peer-info) | [](https://circleci.com/gh/libp2p/js-peer-info) |  | [](https://coveralls.io/github/libp2p/js-peer-info?branch=master) |
-| [`multiaddr`](//github.com/multiformats/js-multiaddr) | [](//github.com/multiformats/js-multiaddr/releases) | [](https://david-dm.org/multiformats/js-multiaddr) | [](https://david-dm.org/multiformats/js-multiaddr?type=dev) | [](https://travis-ci.org/multiformats/js-multiaddr) | [](https://circleci.com/gh/multiformats/js-multiaddr) |  | [](https://coveralls.io/github/multiformats/js-multiaddr?branch=master) |
-| [`multihashes`](//github.com/multiformats/js-multihash) | [](//github.com/multiformats/js-multihash/releases) | [](https://david-dm.org/multiformats/js-multihash) | [](https://david-dm.org/multiformats/js-multihash?type=dev) | [](https://travis-ci.org/multiformats/js-multihash) | [](https://circleci.com/gh/multiformats/js-multihash) |  | [](https://coveralls.io/github/multiformats/js-multihash?branch=master) |
-| **Generics/Utils** |
-| [`ipfs-api`](//github.com/ipfs/js-ipfs-api) | [](//github.com/ipfs/js-ipfs-api/releases) | [](https://david-dm.org/ipfs/js-ipfs-api) | [](https://david-dm.org/ipfs/js-ipfs-api?type=dev) | [](https://travis-ci.org/ipfs/js-ipfs-api) | [](https://circleci.com/gh/ipfs/js-ipfs-api) |  | [](https://coveralls.io/github/ipfs/js-ipfs-api?branch=master) |
-| [`ipfs-multipart`](//github.com/xicombd/ipfs-multipart) | [](//github.com/xicombd/ipfs-multipart/releases) | [](https://david-dm.org/xicombd/ipfs-multipart) | [](https://david-dm.org/xicombd/ipfs-multipart?type=dev) | [](https://travis-ci.org/xicombd/ipfs-multipart) | |  | [](https://coveralls.io/github/xicombd/ipfs-multipart?branch=master) |
-| [`is-ipfs`](https://github.com/ipfs/is-ipfs) | [](//github.com/ipfs/is-ipfs/releases) | [](https://david-dm.org/ipfs/is-ipfs) | [](https://david-dm.org/ipfs/is-ipfs?type=dev) | [](https://travis-ci.org/ipfs/is-ipfs) | |  | [](https://coveralls.io/github/ipfs/is-ipfs?branch=master) |
-| [`multihashing`](//github.com/multiformats/js-multihashing) | [](//github.com/multiformats/js-multihashing/releases) | [](https://david-dm.org/multiformats/js-multihashing) | [](https://david-dm.org/multiformats/js-multihashing?type=dev) | [](https://travis-ci.org/multiformats/js-multihashing) | [](https://circleci.com/gh/jbenet/js-multihashing) |  | [](https://coveralls.io/github/jbenet/js-multihashing?branch=master) |
-| [`mafmt`](//github.com/whyrusleeping/js-mafmt) | [](//github.com/whyrusleeping/js-mafmt/releases) | [](https://david-dm.org/whyrusleeping/js-mafmt) | [](https://david-dm.org/whyrusleeping/js-mafmt?type=dev) | [](https://travis-ci.org/whyrusleeping/js-mafmt) | [](https://circleci.com/gh/whyrusleeping/js-mafmt) |  | [](https://coveralls.io/github/whyrusleeping/js-mafmt?branch=master) |
-| **Crypto**
-| [`libp2p-crypto`](https://github.com/libp2p/js-libp2p-crypto) | [](//github.com/libp2p/js-libp2p-crypto/releases) | [](https://david-dm.org/libp2p/js-libp2p-crypto) | [](https://david-dm.org/libp2p/js-libp2p-crypto?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-crypto) | [](https://circleci.com/gh/libp2p/js-libp2p-crypto) |  | [](https://coveralls.io/github/libp2p/js-libp2p-crypto?branch=master) |
-| [`libp2p-keychain`](https://github.com/libp2p/js-libp2p-keychain) | [](//github.com/libp2p/js-libp2p-keychain/releases) | [](https://david-dm.org/libp2p/js-libp2p-keychain) | [](https://david-dm.org/libp2p/js-libp2p-keychain?type=dev) | [](https://travis-ci.org/libp2p/js-libp2p-keychain) | [](https://circleci.com/gh/libp2p/js-libp2p-keychain) |  | [](https://coveralls.io/github/libp2p/js-libp2p-keychain?branch=master) |
+## Packages
+Listing of the main packages used in the IPFS ecosystem. There are also three
+specifications worth linking here:
+
+- [`interface-ipfs-core`](https://github.com/ipfs/interface-ipfs-core)
+- [`http-api-spec`](https://github.com/ipfs/http-api-spec)
+- [`cli spec`](https://github.com/ipfs/specs/tree/master/public-api/cli)
+
+
+| Package | Version | Deps | CI | Coverage |
+| ---------|---------|---------|---------|--------- |
+| **Files** |
+| [`ipfs-unixfs-engine`](//github.com/ipfs/js-ipfs-unixfs-engine) | [](//github.com/ipfs/js-ipfs-unixfs-engine/releases) | [](https://david-dm.org/ipfs/js-ipfs-unixfs-engine) | [](https://ci.ipfs.team/job/ipfs/job/js-ipfs-unixfs-engine/job/master/) | [](https://codecov.io/gh/ipfs/js-ipfs-unixfs-engine) |
+| **DAG** |
+| [`ipld`](//github.com/ipld/js-ipld) | [](//github.com/ipld/js-ipld/releases) | [](https://david-dm.org/ipld/js-ipld) | [](https://ci.ipfs.team/job/ipld/job/js-ipld/job/master/) | [](https://codecov.io/gh/ipld/js-ipld) |
+| [`ipld-dag-pb`](//github.com/ipld/js-ipld-dag-pb) | [](//github.com/ipld/js-ipld-dag-pb/releases) | [](https://david-dm.org/ipld/js-ipld-dag-pb) | [](https://ci.ipfs.team/job/ipld/job/js-ipld-dag-pb/job/master/) | [](https://codecov.io/gh/ipld/js-ipld-dag-pb) |
+| [`ipld-dag-cbor`](//github.com/ipld/js-ipld-dag-cbor) | [](//github.com/ipld/js-ipld-dag-cbor/releases) | [](https://david-dm.org/ipld/js-ipld-dag-cbor) | [](https://ci.ipfs.team/job/ipld/job/js-ipld-dag-cbor/job/master/) | [](https://codecov.io/gh/ipld/js-ipld-dag-cbor) |
+| **Repo** |
+| [`ipfs-repo`](//github.com/ipfs/js-ipfs-repo) | [](//github.com/ipfs/js-ipfs-repo/releases) | [](https://david-dm.org/ipfs/js-ipfs-repo) | [](https://ci.ipfs.team/job/ipfs/job/js-ipfs-repo/job/master/) | [](https://codecov.io/gh/ipfs/js-ipfs-repo) |
+| **Exchange** |
+| [`ipfs-block-service`](//github.com/ipfs/js-ipfs-block-service) | [](//github.com/ipfs/js-ipfs-block-service/releases) | [](https://david-dm.org/ipfs/js-ipfs-block-service) | [](https://ci.ipfs.team/job/ipfs/job/js-ipfs-block-service/job/master/) | [](https://codecov.io/gh/ipfs/js-ipfs-block-service) |
+| [`ipfs-bitswap`](//github.com/ipfs/js-ipfs-bitswap) | [](//github.com/ipfs/js-ipfs-bitswap/releases) | [](https://david-dm.org/ipfs/js-ipfs-bitswap) | [](https://ci.ipfs.team/job/ipfs/job/js-ipfs-bitswap/job/master/) | [](https://codecov.io/gh/ipfs/js-ipfs-bitswap) |
+| **libp2p** |
+| [`libp2p`](//github.com/libp2p/js-libp2p) | [](//github.com/libp2p/js-libp2p/releases) | [](https://david-dm.org/libp2p/js-libp2p) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p) |
+| [`libp2p-circuit`](//github.com/libp2p/js-libp2p-circuit) | [](//github.com/libp2p/js-libp2p-circuit/releases) | [](https://david-dm.org/libp2p/js-libp2p-circuit) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-circuit/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-circuit) |
+| [`libp2p-floodsub`](//github.com/libp2p/js-libp2p-floodsub) | [](//github.com/libp2p/js-libp2p-floodsub/releases) | [](https://david-dm.org/libp2p/js-libp2p-floodsub) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-floodsub/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-floodsub) |
+| [`libp2p-kad-dht`](//github.com/libp2p/js-libp2p-kad-dht) | [](//github.com/libp2p/js-libp2p-kad-dht/releases) | [](https://david-dm.org/libp2p/js-libp2p-kad-dht) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-kad-dht/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-kad-dht) |
+| [`libp2p-mdns`](//github.com/libp2p/js-libp2p-mdns) | [](//github.com/libp2p/js-libp2p-mdns/releases) | [](https://david-dm.org/libp2p/js-libp2p-mdns) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-mdns/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-mdns) |
+| [`libp2p-mplex`](//github.com/libp2p/js-libp2p-mplex) | [](//github.com/libp2p/js-libp2p-mplex/releases) | [](https://david-dm.org/libp2p/js-libp2p-mplex) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-mplex/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-mplex) |
+| [`libp2p-railing`](//github.com/libp2p/js-libp2p-railing) | [](//github.com/libp2p/js-libp2p-railing/releases) | [](https://david-dm.org/libp2p/js-libp2p-railing) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-railing/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-railing) |
+| [`libp2p-secio`](//github.com/libp2p/js-libp2p-secio) | [](//github.com/libp2p/js-libp2p-secio/releases) | [](https://david-dm.org/libp2p/js-libp2p-secio) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-secio/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-secio) |
+| [`libp2p-tcp`](//github.com/libp2p/js-libp2p-tcp) | [](//github.com/libp2p/js-libp2p-tcp/releases) | [](https://david-dm.org/libp2p/js-libp2p-tcp) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-tcp/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-tcp) |
+| [`libp2p-webrtc-star`](//github.com/libp2p/js-libp2p-webrtc-star) | [](//github.com/libp2p/js-libp2p-webrtc-star/releases) | [](https://david-dm.org/libp2p/js-libp2p-webrtc-star) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-webrtc-star/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-webrtc-star) |
+| [`libp2p-websocket-star`](//github.com/libp2p/js-libp2p-websocket-star) | [](//github.com/libp2p/js-libp2p-websocket-star/releases) | [](https://david-dm.org/libp2p/js-libp2p-websocket-star) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-websocket-star/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-websocket-star) |
+| [`libp2p-websockets`](//github.com/libp2p/js-libp2p-websockets) | [](//github.com/libp2p/js-libp2p-websockets/releases) | [](https://david-dm.org/libp2p/js-libp2p-websockets) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-websockets/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-websockets) |
+| **Data Types** |
+| [`ipfs-block`](//github.com/ipfs/js-ipfs-block) | [](//github.com/ipfs/js-ipfs-block/releases) | [](https://david-dm.org/ipfs/js-ipfs-block) | [](https://ci.ipfs.team/job/ipfs/job/js-ipfs-block/job/master/) | [](https://codecov.io/gh/ipfs/js-ipfs-block) |
+| [`ipfs-unixfs`](//github.com/ipfs/js-ipfs-unixfs) | [](//github.com/ipfs/js-ipfs-unixfs/releases) | [](https://david-dm.org/ipfs/js-ipfs-unixfs) | [](https://ci.ipfs.team/job/ipfs/job/js-ipfs-unixfs/job/master/) | [](https://codecov.io/gh/ipfs/js-ipfs-unixfs) |
+| [`peer-id`](//github.com/libp2p/js-peer-id) | [](//github.com/libp2p/js-peer-id/releases) | [](https://david-dm.org/libp2p/js-peer-id) | [](https://ci.ipfs.team/job/libp2p/job/js-peer-id/job/master/) | [](https://codecov.io/gh/libp2p/js-peer-id) |
+| [`peer-info`](//github.com/libp2p/js-peer-info) | [](//github.com/libp2p/js-peer-info/releases) | [](https://david-dm.org/libp2p/js-peer-info) | [](https://ci.ipfs.team/job/libp2p/job/js-peer-info/job/master/) | [](https://codecov.io/gh/libp2p/js-peer-info) |
+| [`multiaddr`](//github.com/multiformats/js-multiaddr) | [](//github.com/multiformats/js-multiaddr/releases) | [](https://david-dm.org/multiformats/js-multiaddr) | [](https://ci.ipfs.team/job/multiformats/job/js-multiaddr/job/master/) | [](https://codecov.io/gh/multiformats/js-multiaddr) |
+| [`multihashes`](//github.com/multiformats/js-multihash) | [](//github.com/multiformats/js-multihash/releases) | [](https://david-dm.org/multiformats/js-multihash) | [](https://ci.ipfs.team/job/multiformats/job/js-multihash/job/master/) | [](https://codecov.io/gh/multiformats/js-multihash) |
+| **Crypto** |
+| [`libp2p-crypto`](//github.com/libp2p/js-libp2p-crypto) | [](//github.com/libp2p/js-libp2p-crypto/releases) | [](https://david-dm.org/libp2p/js-libp2p-crypto) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-crypto/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-crypto) |
+| [`libp2p-keychain`](//github.com/libp2p/js-libp2p-keychain) | [](//github.com/libp2p/js-libp2p-keychain/releases) | [](https://david-dm.org/libp2p/js-libp2p-keychain) | [](https://ci.ipfs.team/job/libp2p/job/js-libp2p-keychain/job/master/) | [](https://codecov.io/gh/libp2p/js-libp2p-keychain) |
+| **Generics/Utils** |
+| [`ipfs-api`](//github.com/ipfs/js-ipfs-api) | [](//github.com/ipfs/js-ipfs-api/releases) | [](https://david-dm.org/ipfs/js-ipfs-api) | [](https://ci.ipfs.team/job/ipfs/job/js-ipfs-api/job/master/) | [](https://codecov.io/gh/ipfs/js-ipfs-api) |
+| [`ipfs-multipart`](//github.com/ipfs/ipfs-multipart) | [](//github.com/ipfs/ipfs-multipart/releases) | [](https://david-dm.org/ipfs/ipfs-multipart) | [](https://ci.ipfs.team/job/ipfs/job/ipfs-multipart/job/master/) | [](https://codecov.io/gh/ipfs/ipfs-multipart) |
+| [`is-ipfs`](//github.com/ipfs/is-ipfs) | [](//github.com/ipfs/is-ipfs/releases) | [](https://david-dm.org/ipfs/is-ipfs) | [](https://ci.ipfs.team/job/ipfs/job/is-ipfs/job/master/) | [](https://codecov.io/gh/ipfs/is-ipfs) |
+| [`multihashing`](//github.com/multiformats/js-multihashing) | [](//github.com/multiformats/js-multihashing/releases) | [](https://david-dm.org/multiformats/js-multihashing) | [](https://ci.ipfs.team/job/multiformats/job/js-multihashing/job/master/) | [](https://codecov.io/gh/multiformats/js-multihashing) |
+| [`mafmt`](//github.com/multiformats/js-mafmt) | [](//github.com/multiformats/js-mafmt/releases) | [](https://david-dm.org/multiformats/js-mafmt) | [](https://ci.ipfs.team/job/multiformats/job/js-mafmt/job/master/) | [](https://codecov.io/gh/multiformats/js-mafmt) |
## Development
diff --git a/ci/Dockerfile b/ci/Dockerfile
deleted file mode 100644
index ca3744e377..0000000000
--- a/ci/Dockerfile
+++ /dev/null
@@ -1 +0,0 @@
-FROM quay.io/ipfs/js-base:6.9.4
diff --git a/ci/jenkins b/ci/jenkins
deleted file mode 100644
index a059bb79dd..0000000000
--- a/ci/jenkins
+++ /dev/null
@@ -1 +0,0 @@
-javascript
diff --git a/circle.yml b/circle.yml
deleted file mode 100644
index 0c02b8f7d6..0000000000
--- a/circle.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-# Warning: This file is automatically synced from https://github.com/ipfs/ci-sync so if you want to change it, please change it there and ask someone to sync all repositories.
-machine:
- node:
- version: 8.11.1
-
-test:
- post:
- - npm run coverage -- --upload --providers coveralls
-
-dependencies:
- pre:
- - google-chrome --version
- - curl -L -o google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- - sudo dpkg -i google-chrome.deb || true
- - sudo apt-get update
- - sudo apt-get install -f
- - sudo apt-get install --only-upgrade lsb-base
- - sudo dpkg -i google-chrome.deb
- - google-chrome --version
diff --git a/scripts/generate-package-table-for-readme.js b/scripts/generate-package-table-for-readme.js
new file mode 100755
index 0000000000..6111c10570
--- /dev/null
+++ b/scripts/generate-package-table-for-readme.js
@@ -0,0 +1,115 @@
+#! /usr/bin/env node
+
+// This script generates the table of packages you can see in the readme
+
+// Columns to show at the header of the table
+const columns = [
+ 'Package',
+ 'Version',
+ 'Deps',
+ 'CI',
+ 'Coverage'
+]
+
+// Headings are a string
+// Arrays are packages. Index 0 is the GitHub repo and index 1 is the npm package
+const rows = [
+ 'Files',
+ ['ipfs/js-ipfs-unixfs-engine', 'ipfs-unixfs-engine'],
+
+ 'DAG',
+ ['ipld/js-ipld', 'ipld'],
+ ['ipld/js-ipld-dag-pb', 'ipld-dag-pb'],
+ ['ipld/js-ipld-dag-cbor', 'ipld-dag-cbor'],
+
+ 'Repo',
+ ['ipfs/js-ipfs-repo', 'ipfs-repo'],
+
+ 'Exchange',
+ ['ipfs/js-ipfs-block-service', 'ipfs-block-service'],
+ ['ipfs/js-ipfs-bitswap', 'ipfs-bitswap'],
+
+ 'libp2p',
+ ['libp2p/js-libp2p', 'libp2p'],
+ ['libp2p/js-libp2p-circuit', 'libp2p-circuit'],
+ ['libp2p/js-libp2p-floodsub', 'libp2p-floodsub'],
+ ['libp2p/js-libp2p-kad-dht', 'libp2p-kad-dht'],
+ ['libp2p/js-libp2p-mdns', 'libp2p-mdns'],
+ ['libp2p/js-libp2p-mplex', 'libp2p-mplex'],
+ ['libp2p/js-libp2p-railing', 'libp2p-railing'],
+ ['libp2p/js-libp2p-secio', 'libp2p-secio'],
+ ['libp2p/js-libp2p-tcp', 'libp2p-tcp'],
+ ['libp2p/js-libp2p-webrtc-star', 'libp2p-webrtc-star'],
+ ['libp2p/js-libp2p-websocket-star', 'libp2p-websocket-star'],
+ ['libp2p/js-libp2p-websockets', 'libp2p-websockets'],
+
+ 'Data Types',
+ ['ipfs/js-ipfs-block', 'ipfs-block'],
+ ['ipfs/js-ipfs-unixfs', 'ipfs-unixfs'],
+ ['libp2p/js-peer-id', 'peer-id'],
+ ['libp2p/js-peer-info', 'peer-info'],
+ ['multiformats/js-multiaddr', 'multiaddr'],
+ ['multiformats/js-multihash', 'multihashes'],
+
+ 'Crypto',
+ ['libp2p/js-libp2p-crypto', 'libp2p-crypto'],
+ ['libp2p/js-libp2p-keychain', 'libp2p-keychain'],
+
+ 'Generics/Utils',
+ ['ipfs/js-ipfs-api', 'ipfs-api'],
+ ['ipfs/ipfs-multipart', 'ipfs-multipart'],
+ ['ipfs/is-ipfs', 'is-ipfs'],
+ ['multiformats/js-multihashing', 'multihashing'],
+ ['multiformats/js-mafmt', 'mafmt']
+]
+
+const isItemPackage = (item) => {
+ return Array.isArray(item)
+}
+
+const packageBadges = [
+ // Package
+ (gh, npm) => `[\`${npm}\`](//github.com/${gh})`,
+ // Version
+ (gh, npm) => `[](//github.com/${gh}/releases)`,
+ // Deps
+ (gh, npm) => `[](https://david-dm.org/${gh})`,
+ // CI
+ (gh, npm) => {
+ // Need to fix the path for jenkins links, as jenkins adds `/job/` between everything
+ const jenkinsPath = gh.split('/').join('/job/')
+ return `[](https://ci.ipfs.team/job/${jenkinsPath}/job/master/)`
+ },
+ // Coverage
+ (gh, npm) => `[](https://codecov.io/gh/${gh})`
+]
+
+// Creates the table row for a package
+const generatePackageRow = (item) => {
+ const row = packageBadges.map((func) => {
+ // First string is GitHub path, second is npm package name
+ return func(item[0], item[1])
+ }).join(' | ')
+ const fullRow = `| ${row} |`
+ return fullRow
+}
+
+// Generates a row for the table, depending if it's a package or a heading
+const generateRow = (item) => {
+ if (isItemPackage(item)) {
+ return generatePackageRow(item)
+ } else {
+ return `| **${item}** |`
+ }
+}
+
+const header = `| ${columns.join(' | ')} |`
+const hr = `| ${columns.map(() => '---------').join('|')} |`
+
+const toPrint = [
+ header,
+ hr,
+ rows.map((row) => generateRow(row)).join('\n')
+]
+
+toPrint.forEach((t) => console.log(t))