42.0.0 (2020-02-04)
There are significant and breaking API changes in this release. Please see the migration guide.
-
addresults now includemodeandmtimeproperties if they were set. -
files.chmodhas been added. See the core interface docs for info. -
files.flushnow returns the root CID for the path that was flushed (/by default) -
files.lsresults now includemodeandmtimeproperties if they were set. See the core interface docs for more info. -
files.mkdirnow acceptsmodeandmtimeoptions to allow setting mode and mtime metadata. See the core interface docs for more info. -
files.statresult now includesmodeandmtimeproperties if they were set. See the core interface docs for more info. -
files.touchhas been added. See the core interface docs for info. -
files.writenow acceptsmodeandmtimeoptions to allow setting mode and mtime metadata. See the core interface docs for more info. -
object.getnow accepts atimeoutoption. It will cause the method to throw with aTimeoutErrorif no data is received within the timeout window. It can be passed as anumberor astring. If anumberis passed it is interpreted as milliseconds, if a string is passed it is interpreted as a human readable duration. -
pin.addnow accepts atimeoutoption. It will cause the method to throw with aTimeoutErrorif no data is received within the timeout window. It can be passed as anumberor astring. If anumberis passed it is interpreted as milliseconds, if a string is passed it is interpreted as a human readable duration. -
refsnow accepts atimeoutoption. It will cause the method to throw with aTimeoutErrorif no data is received within the timeout window. It can be passed as anumberor astring. If anumberis passed it is interpreted as milliseconds, if a string is passed it is interpreted as a human readable duration.
-
Callbacks are no longer supported on any API methods. Please use a utility such as
callbackifyon API methods that return Promises to emulate previous behaviour. See the migration guide for more info. -
addnow returns an async iterable. -
addnow acceptsmodeandmtimeoptions on inputs to allow setting mode and mtime metadata for added files. See the core interface docs for more info. -
addresults now contain acidproperty (a CID instance) instead of a stringhashproperty. -
addReadableStream,addPullStreamhave been removed. Please see the migration guide for more info. -
addFromStreamhas been removed. Useaddinstead. -
addFromFshas been removed. Please use the exportedglobSourceutility and pass the result toadd. See the glob source documentation for more details and an example. -
addFromURLhas been removed. Please use the exportedurlSourceutility and pass the result toadd. See the URL source documentation for more details and an example. -
bitswap.statresult has changed -wantlistand values are now an array of CID instances andpeersis now astring[]of peer IDs. -
bitswap.wantlistnow returns an array of CID instances. -
block.rmnow returns an async iterable. -
block.rmnow yields objects of{ cid: CID, error: Error }. -
block.statresult now contains acidproperty (whose value is a CID instance) instead of akeyproperty. -
dht.findProvs,dht.provide,dht.putanddht.querynow all return an async iterable. -
dht.findPeer,dht.findProvs,dht.provide,dht.putanddht.querynow yield/return an object{ id: string, addrs: Multiaddr[] }instead of aPeerInfoinstance(s). -
files.lsPullStreamandfiles.lsReadableStreamhave been removed. Please see the migration guide for more info. -
files.lsnow returns an async iterable. -
files.lsresults now contain acidproperty (whose value is a CID instance) instead of ahashproperty. -
files.lsno longer takes alongoption (in core) - you will receive all data by default. -
files.readPullStreamandfiles.readReadableStreamhave been removed. Please see the migration guide for more info. -
files.readnow returns an async iterable. -
files.statresult now contains acidproperty (whose value is a CID instance) instead of ahashproperty. -
getnow returns an async iterable. Thecontentproperty value for objects yielded from the iterator is now an async iterable that yieldsBufferListobjects. -
idresult has changed, theaddressesproperty is now aMultiaddr[] -
name.resolvenow returns an async iterable. It yields increasingly more accurate resolved values as they are discovered until the best value is selected from the quorum of 16. The "best" resolved value is the last item yielded from the iterator. If you are interested only in this best value you could useit-lastto extract it like so:const last = require('it-last') await last(ipfs.name.resolve('/ipns/QmHash'))
-
lsnow returns an async iterable. -
lsresults now contain acidproperty (whose value is a CID instance) instead of ahashproperty. -
lsresults now includemodeandmtimeproperties if they were set. See the core interface docs for more info. -
pin.addresults now contain acidproperty (a CID instance) instead of a stringhashproperty. -
pin.lsnow returns an async iterable. -
pin.lsresults now contain acidproperty (a CID instance) instead of a stringhashproperty. -
pin.rmresults now contain acidproperty (a CID instance) instead of a stringhashproperty. -
pingnow returns an async iterable. -
refsandrefs.localnow return an async iterable. -
repo.gcnow returns an async iterable. -
stats.bwnow returns an async iterable. -
swarm.peersnow returns an array of objects with apeerproperty that is astring, instead of aPeerIdinstance. -
swarm.addrsnow returns an array of objects{ id: string, addrs: Multiaddr[] }instead ofPeerInfoinstances. -
The protocol name for peer IDs in multiaddrs has changed from 'ipfs' to 'p2p'. There's no changes to data on the wire but this change is seen when multiaddrs are converted to strings.
42.0.0-pre.0 (2020-01-23)
41.0.1 (2020-01-23)
41.0.0 (2020-01-12)
formatoption is no longer supported as everything isdag-pball of the time.
Follows on from ipfs-inactive/js-ipfs-mfs#69
40.2.1 (2020-01-09)
40.2.0 (2020-01-09)
40.1.0 (2019-12-10)
40.0.1 (2019-11-27)
40.0.0 (2019-11-22)
- async await roundup (#1173) (3e5967a), closes #1103
- convert config API to async await (#1155) (621973c)
- move files to root level (#1150) (559a97d)
- The
log.tailmethod now returns an async iterator that yields log messages. Use it like:for await (const message of ipfs.log.tail()) { console.log(message) }
- The response to a call to
log.levelnow returns an object that has camel cased keys. i.e.MessageandErrorproperties have changed tomessageanderror. - Dropped support for go-ipfs <= 0.4.4 in
swarm.peersresponse. - The signature for
ipfs.mounthas changed fromipfs.mount([ipfsPath], [ipnsPath])toipfs.mount([options]). Whereoptionsis an optional object that may contain two boolean propertiesipfsPathandipnsPath. The response object has also changed to be camel case. See https://docs.ipfs.io/reference/api/http/#api-v0-mount. - Default ping
countof 1 in client has been removed. The default ping count is now whatever the IPFS node defaults it to (currently 10). If you specifically need 1 ping message then please passcount: 1in options foripfs.ping(). - Multi parameter constructor options are no longer supported. To create a new IPFS HTTP client, pass a single parameter to the constructor. The parameter can be one of:
- String, formatted as one of:
- Multiaddr e.g. /ip4/127.0.0.1/tcp/5001
- URL e.g. http://127.0.0.1:5001
- Multiaddr instance
- Object, in format of either:
- Address and path e.g.
{ apiAddr: '/ip4/127.0.0.1/tcp/5001': apiPath: '/api/v0' }(Note:apiAddrcan also be a string in URL form or a Multiaddr instance) - Node.js style address e.g.
{ host: '127.0.0.1', port: 5001, protocol: 'http' }
- Address and path e.g.
- String, formatted as one of:
- Errors returned from request failures are now all
HTTPErrors which carry aresponseproperty. This is aResponsethat can be used to inspect all information relating to the HTTP response. This means that theerr.statusorerr.statusCodeproperty should now be accessed viaerr.response.status. - files in
src/files-regularhave moved tosrc. Thesrc/files-mfsdirectory has been renamed tosrc/files. If you were previously requiring files from these directories e.g.require('ipfs-http-client/src/files-regular/add')then please be aware that they have moved. - Kebab case options are no longer supported. Please use camel case option names as defined in the
interface-ipfs-coredocs. e.g. theallow-offlineoption toname.publishshould be passed asallowOffline.- Note that you can pass additional query string parameters in the
searchParamsoption available to all API methods.
- Note that you can pass additional query string parameters in the
39.0.2 (2019-10-23)
39.0.1 (2019-10-21)
- expose preload argument (#1129) (c82b031)
- increase default timeout and respect value passed to
ky.extend(#1130) (25b6043)
39.0.0 (2019-10-15)
38.2.0 (2019-10-06)
38.1.0 (2019-10-04)
- add methods for listing config profiles (1c3d92a)
-
Configuration profiles API has changed:
Promise<{oldCfg, newCfg}> ipfs.config.profile(name, opts) // is now Promise<{old, new}> ipfs.config.profiles.apply(name, opts)
-
Possibly contentious; Adds
callbackifyas a dependency, see ipfs/js-ipfs#2506 for discussion.
38.0.1 (2019-10-04)
- pull in preconfigured chai from interface tests (6a7eb8a)
38.0.0 (2019-09-25)
37.0.3 (2019-09-25)
37.0.2 (2019-09-20)
- only do the big file workaround in node and electron main (077c997)
37.0.1 (2019-09-17)
37.0.0 (2019-09-17)
- big downloads in electron (9c9aac8)
36.1.0 (2019-09-17)
36.0.0 (2019-09-11)
35.1.0 (2019-09-04)
35.0.0 (2019-09-04)
Kebab case options (e.g. wrap-with-directory) are no longer supported in ipfs.add. Use camel case instead (e.g. wrapWithDirectory).
34.0.0 (2019-08-29)
- browser pubsub (#1059) (3764d06)
- expose pin and preload arguments (#1079) (e3ed6e9)
- support adding files via async iterator (#1078) (377042b)
33.1.1 (2019-07-26)
33.1.0 (2019-07-11)
- changelog for 33.x does not include breaking change (cd41a16)
- invalid multipart/form-data (#948) (9e6dfe7), closes /tools.ietf.org/html/rfc7578#section-4
33.0.2 (2019-07-11)
33.0.1 (2019-07-10)
33.0.0 (2019-07-10)
- link to ipfs.io (70cdf25)
- prepare for aegir release (#1021) (806b206)
- sometimes no Addrs element is present in the response (#1037) (a74b8f7)
- package: update bignumber.js to version 9.0.0 (#1024) (a04edac)
repo.gc response objects have changed to { err, cid }, where err is an Error instance and cid is a CID instance.
32.0.1 (2019-05-21)
- error reporting for non-JSON responses (#1016) (4251c88), closes #912 #1000 #1001
- send trickle param to trigger trickle dag builder (#1015) (a28b009)
32.0.0 (2019-05-21)
- The default string encoding for version 1 CIDs has changed to
base32.
IPLD formats have been updated to the latest versions. IPLD nodes returned by ipfs.dag and ipfs.object commands have significant breaking changes. If you are using these commands in your application you are likely to encounter the following changes to dag-pb nodes (the default node type that IPFS creates):
DAGNodeproperties have been renamed as follows:data=>Datalinks=>Linkssize=>size(Note: no change)
DAGLinkproperties have been renamed as follows:cid=>Hashname=>Namesize=>Tsize
See CHANGELOGs for each IPLD format for it's respective changes, you can read more about the dag-pb changes in the CHANGELOG
License: MIT Signed-off-by: Alan Shaw alan.shaw@protocol.ai
31.1.0 (2019-05-16)
31.0.2 (2019-05-16)
31.0.1 (2019-05-15)
31.0.0 (2019-05-13)
- ipfs.refs now returns objects with camelCase properties not PascalCase properties. i.e.
{ ref, err }not{ Ref, Err }
30.1.4 (2019-04-29)
- uncaught error: stream.push() after EOF (#980) (cc677f0), closes #967
- update Babel in upload-file-via-browser example (#968) (#970) (17d49de)
30.1.3 (2019-04-11)
30.1.2 (2019-04-09)
30.1.1 (2019-03-28)
30.1.0 (2019-03-15)
30.0.0 (2019-03-13)
ipfs.util.isIPFShas moved to a static export and should be accessed viaconst { isIPFS } = require('ipfs-http-client').
The modules available under ipfs.types.* have also become static exports.
ipfs.util.crypto has been removed as it is not a dependency of ipfs-http-client so reduces the bundle size. If you need to use libp2p crypto primitives then please see the js-libp2p-crypto project for info on how to use it in your project.
Finally ipfs.util.getEndpointConfig is now a direct instance method, ipfs.getEndpointConfig
License: MIT Signed-off-by: Alan Shaw alan.shaw@protocol.ai
29.1.1 (2019-02-13)
29.1.0 (2019-01-29)
29.0.1 (2019-01-24)
29.0.0 (2019-01-15)
- All API methods that returned
big.jsinstances now returnbignumber.jsinstances.
License: MIT Signed-off-by: Alan Shaw alan.shaw@protocol.ai
28.1.2 (2019-01-14)
28.1.1 (2019-01-04)
28.1.0 (2018-12-16)
28.0.3 (2018-12-15)
28.0.2 (2018-12-14)
28.0.1 (2018-12-13)
- disable just the rule we're breaking (bed2687)
- properly serialize CID instances (45b344c)
- skip test that go-ipfs cannot pass (0e15761)
28.0.0 (2018-12-11)
-
DHT API methods renamed and return types changed
-
ipfs.dht.findprovsrenamed toipfs.dht.findProvsand returns an array of PeerInfo -
ipfs.dht.findpeerrenamed toipfs.dht.findPeerand returns a PeerInfo -
ipfs.dht.querynow returns an array of PeerId
27.1.0 (2018-12-05)
27.0.0 (2018-11-28)
- also retry with misnemed format "dag-cbor" as "cbor" (#888) (348a144)
- better input validation for add (#876) (315b7f7)
- fix log.tail by calling add after listening for events (#882) (da35b0f)
- handle peer-info validation errors (#887) (6e6d7a2), closes #885
- updates ipld-dag-pb dep to version without .cid properties (#889) (ac30a82)
- object API write methods now return CIDs (#896) (38bed14)
- rename library to ipfs-http-client (#897) (d40cb6c)
- updated files API (#878) (39f4733)
- the
ipfs-apilibrary has been renamed toipfs-http-client.
Now install via npm install ipfs-http-client.
Note that in the browser build the object attached to window is now window.IpfsHttpClient.
License: MIT Signed-off-by: Alan Shaw alan.shaw@protocol.ai
- Object API refactor.
Object API methods that write DAG nodes now return a CID instead of a DAG node. Affected methods:
ipfs.object.newipfs.object.patch.addLinkipfs.object.patch.appendDataipfs.object.patch.rmLinkipfs.object.patch.setDataipfs.object.put
Example:
// Before
const dagNode = await ipfs.object.new()// After
const cid = await ipfs.object.new() // now returns a CID
const dagNode = await ipfs.object.get(cid) // fetch the DAG node that was createdIMPORTANT: DAGNode instances, which are part of the IPLD dag-pb format have been refactored.
These instances no longer have multihash, cid or serialized properties.
This effects the following API methods that return these types of objects:
ipfs.object.getipfs.dag.get
See ipld/js-ipld-dag-pb#99 for more information.
License: MIT Signed-off-by: Alan Shaw alan.shaw@protocol.ai
- Files API methods
add*,cat*,get*have moved fromfilesto the root namespace.
Specifically, the following changes have been made:
ipfs.files.add=>ipfs.addipfs.files.addPullStream=>ipfs.addPullStreamipfs.files.addReadableStream=>ipfs.addReadableStreamipfs.files.cat=>ipfs.catipfs.files.catPullStream=>ipfs.catPullStreamipfs.files.catReadableStream=>ipfs.catReadableStreamipfs.files.get=>ipfs.getipfs.files.getPullStream=>ipfs.getPullStreamipfs.files.getReadableStream=>ipfs.getReadableStream
Additionally, addFromFs, addFromURL, addFromStream have moved from util to the root namespace:
ipfs.util.addFromFs=>ipfs.addFromFsipfs.util.addFromURL=>ipfs.addFromURLipfs.util.addFromStream=>ipfs.addFromStream
License: MIT Signed-off-by: Alan Shaw alan.shaw@protocol.ai
- Previously
swarm.peerswould throw an uncaught error if any peer in the response could not have its peerId or multiaddr validated.
This change catches errors that occur while validating the peer info. The returned array will contain an entry for every peer in the ipfs response. peer-info objects that couldn't be validated, now have an error property and a rawPeerInfo property. This at least means the count of peers in the response will be accurate, and there the info is available to the caller.
This means that callers now have to deal with peer-info objects that may
not have a peer or addr property.
Adds nock tests to exercice the code under different error conditions. Doing so uncovered a bug in our legacy go-ipfs <= 0.4.4 peer info parsing, which is also fixed. The code was trying to decapusalate the peerId from the multiaddr, but doing so trims the peerId rather than returning it.
License: MIT Signed-off-by: Oli Evans oli@tableflip.io
26.1.2 (2018-11-03)
26.1.1 (2018-11-03)
- go-ipfs 0.4.18 (9178e7d)
26.1.0 (2018-10-31)
26.0.3 (2018-10-31)
26.0.2 (2018-10-31)
- pin.ls ignored opts when hash was present (#875) (0b46750), closes /github.com/ipfs-shipyard/ipfs-companion/issues/360#issuecomment-427525801
26.0.1 (2018-10-30)
26.0.0 (2018-10-30)
- dag-cbor nodes now represent links as CID objects
The API for dag-cbor changed.
Links are no longer represented as JSON objects ({"/": "base-encoded-cid"},
but as CID objects. ipfs.dag.get() and
now always return links as CID objects. ipfs.dag.put() also expects links
to be represented as CID objects. The old-style JSON objects representation
is still supported, but deprecated.
Prior to this change:
const cid = new CID('QmXed8RihWcWFXRRmfSRG9yFjEbXNxu1bDwgCFAN8Dxcq5')
// Link as JSON object representation
const putCid = await ipfs.dag.put({link: {'/': cid.toBaseEncodedString()}})
const result = await ipfs.dag.get(putCid)
console.log(result.value)Output:
{ link:
{ '/':
<Buffer 12 20 8a…> } }Now:
const cid = new CID('QmXed8RihWcWFXRRmfSRG9yFjEbXNxu1bDwgCFAN8Dxcq5')
// Link as CID object
const putCid = await ipfs.dag.put({link: cid})
const result = await ipfs.dag.get(putCid)
console.log(result.value)Output:
{ link:
CID {
codec: 'dag-pb',
version: 0,
multihash:
<Buffer 12 20 8a…> } }See ipld/ipld#44 for more information on why this change was made.
- remove
types.dagCBORandtypes.dagPBfrom public API
If you need the ipld-dag-cbor or ipld-dag-pb module in the Browser,
you need to bundle them yourself.
25.0.0 (2018-10-15)
-
150mb bodies no longer crashing Chromium (#868) (180da77), closes #654
- add bl module to package dependencies (#853) (#854) (834934f)
- add lodash dependency (#873) (c510cb7), closes #870
24.0.2 (2018-09-21)
24.0.1 (2018-08-21)
24.0.0 (2018-08-15)
- add test data to IPFS before fetching it (#832) (b2a77d6)
- BREAKING CHANGE use data-encoding arg so data is not corrupted (#806) (553c3fb)
- dag.get return error on missing multicodec (#831) (ff7c7e5)
- remove external urls from addFromURL tests (#834) (7cf7998), closes #803
- Requires go-ipfs 0.4.17 as it allows for specifying the data encoding format when requesting object data.
23.0.0 (2018-08-06)
22.3.0 (2018-08-02)
22.2.4 (2018-07-17)
- increase browserNoActivityTimeout to account for before (328e338)
- increase timeout for .name after all (3dc4313)
- missing debug dependency fixes #809 (#810) (0f1fe95)
22.2.3 (2018-07-10)
22.2.2 (2018-07-05)
22.2.1 (2018-06-29)
22.2.0 (2018-06-29)
22.1.1 (2018-06-25)
22.1.0 (2018-06-18)
- add support for custom headers to send-request (#741) (7fb2e07)
- implement bitswap wantlist peer ID param and bitswap unwant (#761) (73a153e)
22.0.2 (2018-06-14)
22.0.1 (2018-05-30)
- configure webpack to not use esmodules in dependencies (dc14333)
- correctly differentiate pong responses (4ad25a3)
- util.addFromURL with URL-escaped file (a3bd811)
22.0.0 (2018-05-20)
- callback from unsub after stream ends (51a80f2)
- do not fail stop node if failed start node (533760f)
- ping: convert the ping messages to lowercase (632af40)
- more robust ping tests (fc6d301)
- remove .only (0e21c8a)
- result.Peers can be null, ensure callback is called (f5f2e83)
- update asserted error message (17c1f1c)
- use async/setImmediate vs process.nextTick (faa51b4)
21.0.0 (2018-05-12)
- make pubsub.unsubscribe async and alter pubsub.subscribe signature (b98f8f3)
- pubsub.unsubscribe is now async and argument order for pubsub.subscribe has changed
License: MIT Signed-off-by: Alan Shaw alan@tableflip.io
20.2.1 (2018-05-06)
20.2.0 (2018-04-30)
- adding files by pull stream (2fa16c5)
- handle request errors in addFromURL (7c5cea5)
- increase timeout for name.publish and fix setup code (ceb1106)
- ipfs add url wrap doesn't work (#750) (f6f1bf0)
20.1.0 (2018-04-30)
- adding files by pull stream (2fa16c5)
- handle request errors in addFromURL (7c5cea5)
- increase timeout for name.publish and fix setup code (ceb1106)
- ipfs add url wrap doesn't work (#750) (f6f1bf0)
20.0.1 (2018-04-12)
20.0.0 (2018-04-05)
- dag: js-ipld format resolver take the raw block (2683c7e)
- dag: path logic for DAG get was wrong (d2b203b)
- dag: use SendOneFile for dag put (9c37213)
- dag.put (9463d3a)
- dag: proper get implementation (7ba0343)
- dag: rebase, use waterfall for put (ad9eab8)
- dag: update option names to reflect go-ipfs API (9bf1c6c)
- Provide access to bundled libraries when in browser (#732) (994bdad), closes #406
- public-readonly-method-for-getting-host-and-port (41d32e3), closes #580
- Wrap with dir (#730) (160860e)
19.0.0 (2018-03-28)
- bitswap: 0.4.14 returns empty array instead of null (5e37a54)
- ping: tests were failing and there it was missing to catch when count and n are used at the same time (2181568)
18.2.1 (2018-03-22)
- add ability to files.cat with a cid instance (aeeb94e)
18.2.0 (2018-03-16)
- disable Browser test on Windows (385a6c3)
- don't create one webpack bundle for every test file (3967e96)
- last fixes for green (#719) (658bad2)
- set the FileResultStreamConverter explicitly (dfad55e), closes #696
- use a different remote server for test (1fc15a5)
- --only-hash (#717) (1137401), closes #700
- add support for ipfs files stat --with-local (#695) (b08f21a)
18.1.2 (2018-03-09)
- regression on files.add and update deps (#709) (85cc2a8)
- remove argument from .stats.bw* (#699) (f81dce5)
18.1.1 (2018-02-20)
- support recursive ipfs ls (cfe95f6)
18.1.0 (2018-02-20)
- support recursive ipfs ls (cfe95f6)
18.0.0 (2018-02-14)
- exception when dir is empty (#680) (ec04f6e)
- support all the Buffer shims and load fixtures correctly (066988f)
- update stats API (#684) (4f7999d)
- (breaking change) stats spec, spec repo, stream to value on files read (#679) (118456e)
- breaking change: use stream on stats.bw (#686) (895760e)
- ipfs.stop (5091115)
17.5.0 (2018-01-24)
17.4.0 (2018-01-24)
- integrate new ipfsd-ctl (2b1820b)
17.3.0 (2018-01-12)
17.2.7 (2018-01-11)
17.2.6 (2017-12-28)
17.2.5 (2017-12-20)
17.2.4 (2017-12-06)
17.2.3 (2017-12-05)
17.2.2 (2017-12-05)
17.2.1 (2017-12-05)
17.2.0 (2017-12-01)
17.1.3 (2017-11-23)
17.1.2 (2017-11-22)
17.1.1 (2017-11-22)
17.1.0 (2017-11-20)
17.0.1 (2017-11-20)
17.0.0 (2017-11-17)
16.0.0 (2017-11-16)
15.1.0 (2017-11-14)
15.0.2 (2017-11-13)
15.0.1 (2017-10-22)
15.0.0 (2017-10-22)
- update pin API to match interface-ipfs-core (9102643)
14.3.7 (2017-10-18)
14.3.6 (2017-10-18)
- avoid doing multiple RPC requests for files.add, fixes #522 (#595) (0ea5f57)
- report progress on ipfs add (e2d894c)
14.3.5 (2017-09-08)
14.3.4 (2017-09-07)
14.3.3 (2017-09-07)
- support options for .add / files.add (8c717b2)
14.3.2 (2017-09-04)
- new fixed aegir (93ac472)