Skip to content
This repository has been archived by the owner on Feb 12, 2024. It is now read-only.

Releases: ipfs/js-ipfs

v0.35.0

12 Apr 14:23
Compare
Choose a tag to compare

Small, acyclic and flexible, just the way you like it

🔦 Highlights

✂️ Huge bundle size cuts!

One of the biggest goals for JS IPFS is to enable the distributed web in the browser. Part of that is being a good web citizen and minimising the amount of code we ship, to ensure IPFS downloads quicker, npm install's quicker, loads quicker and utilizes fewer resources. It's especially important on resource constrained mobiles and IoT devices.

The good news you want to hear is that we’ve now chopped around 50% off the bundle size of JS IPFS since 0.33, that’s a reduction of nearly half of the code we were previously shipping! This is an amazing improvement and a great reason to upgrade.

🌳 DAG HTTP API

The HTTP API now has endpoints for DAG operations like get, put and resolve. Hooray! It was actually super easy so we just decided to do it spontaneously. I know, we're so zany.

On a more serious note, this brings JS IPFS another step closer to feature parity with Go IPFS. We're pushing forwards with this in every release 🚀 - stay tuned!

🙉 Multiple address listening for API and Gateway servers

The HTTP API and the HTTP Gateway started by your IPFS node can now listen on multiple addresses. It's a backward compatible change, all you have to do is change the value of Addresses.API or Addresses.Gateway in your JSON config file to be an array of multiaddrs instead of a single string multiaddr. Here's an example:

{
  "Addresses": {
    "API": [
      "/ip4/127.0.0.1/tcp/5001",
      "/ip6/::1/tcp/5002"
    ],
    "Gateway": [
      "/ip4/127.0.0.1/tcp/8080",
      "/ip6/::1/tcp/8080"
    ]
  }
}

🔭 Recursive DNS link lookups

DNS link TXT records like dnslink=/ipns/domain.com can now be recursively resolved until they hit an IPFS hash like /ipfs/QmHash. Even better, that's the new default. 👌

🏗 API Changes

  • CLI
    • The global flag --local was renamed to --offline
    • Added flag --enable-preload to jsipfs daemon command to allow users to enable or disable content preloading
  • Core
    • ipfs.util.isIPFS and ipfs.util.crypto have moved to static exports and should now be accessed like:

      const { isIPFS, crypto } = require('ipfs')
    • ipfs.types.* have moved to static exports and should now be accessed like:

      const { Buffer, CID, multiaddr, multibase, multihash, PeerId, PeerInfo } = require('ipfs')
    • ipfs.resolve now supports resolving to the middle of an IPLD block instead of erroring. Given:

      b = {"c": "some value"}
      a = {"b": {"/": cidOf(b) }}

      ipfs resolve /ipld/cidOf(a)/b/c should return /ipld/cidOf(b)/c. That is, it resolves the path as much as it can. Previously it would simply fail with an error.

    • ipfs.dns now resolves recursively by default, set the recursive options to false to prevent this behaviour

  • HTTP API
    • Added the following DAG endpoints:
      • /api/v0/dag/put
      • /api/v0/dag/get
      • /api/v0/dag/resolve

❤️ Huge thank you to everyone that made this release possible

In alphabetical order, here are all the humans that contributed to the release:

Read more

v0.35.0-rc.7

12 Apr 13:37
Compare
Choose a tag to compare
v0.35.0-rc.7 Pre-release
Pre-release

Bug Fixes

BREAKING CHANGES

  • Browser application bundles now include only ipld-dag-pb, ipld-dag-cbor and ipld-raw IPLD codecs. Other codecs should be added manually, see https://github.com/ipfs/js-ipfs/blob/master/README.md#optionsipld for details.

  • In Node.js require('ipfs')

    • all IPLD formats included
  • In browser application bundle require('ipfs') bundled with webpack/browserify/etc.

    • only ipld-dag-pb, ipld-dag-cbor and ipld-raw included
  • CDN bundle <script src="https://unpkg.com/ipfs/dist/index.min.js"></script>

    • all IPLD formats included

Co-Authored-By: hugomrdias [email protected]

v0.35.0-rc.6

11 Apr 15:05
Compare
Choose a tag to compare
v0.35.0-rc.6 Pre-release
Pre-release

Bug Fixes

  • avoid logging http errors when its logger is not on (#1977) (20beea2)

Features

v0.35.0-rc.5

04 Apr 12:08
Compare
Choose a tag to compare
v0.35.0-rc.5 Pre-release
Pre-release

Bug Fixes

Features

v0.35.0-rc.4

28 Mar 22:50
Compare
Choose a tag to compare
v0.35.0-rc.4 Pre-release
Pre-release

Bug Fixes

Code Refactoring

Performance Improvements

BREAKING CHANGES

  • Constructor config validation is now a bit more strict - it does not allow null values or unknown properties.

v0.35.0-rc.3

21 Mar 22:17
Compare
Choose a tag to compare
v0.35.0-rc.3 Pre-release
Pre-release

Bug Fixes

v0.35.0-rc.2

21 Mar 20:12
Compare
Choose a tag to compare
v0.35.0-rc.2 Pre-release
Pre-release
chore: release version v0.35.0-rc.2

v0.35.0-rc.1

20 Mar 16:53
Compare
Choose a tag to compare
v0.35.0-rc.1 Pre-release
Pre-release

Bug Fixes

Features

Performance Improvements

v0.35.0-rc.0

06 Mar 12:50
Compare
Choose a tag to compare
v0.35.0-rc.0 Pre-release
Pre-release

Bug Fixes

Code Refactoring

Features

  • add --enable-preload to enable/disable preloading for daemons (#1909) (9470900)
  • limit connections number (#1872) (bebce7f)

BREAKING CHANGES

  • ipfs.util.isIPFS and ipfs.util.crypto have moved to static exports and should be accessed via const { isIPFS, crypto } = require('ipfs').

The modules available under ipfs.types.* have also become static exports.

License: MIT
Signed-off-by: Alan Shaw [email protected]

  • ipfs.resolve now supports resolving to the middle of an IPLD block instead of erroring.

Given:

b = {"c": "some value"}
a = {"b": {"/": cidOf(b) }}

ipfs resolve /ipld/cidOf(a)/b/c should return /ipld/cidOf(b)/c. That is, it resolves the path as much as it can.

Previously it would simply fail with an error.

License: MIT
Signed-off-by: Alan Shaw [email protected]

v0.34.4

24 Jan 17:23
Compare
Choose a tag to compare

Features

  • support _dnslink subdomain specified dnslinks (#1843) (a17253e)