Skip to content

v1.0.0

Compare
Choose a tag to compare
@hugomrdias hugomrdias released this 11 Dec 16:11
· 224 commits to main since this release

Features

BREAKING CHANGES

  • Problems:
  • Browsers tests skipped cause ctl didn't support proper connectivity to remote nodes
  • We weren't able to tell ctl to use a specific commit of http-client, js-ipfs or cli
  • Options/config between the 3 types of daemons weren't consistent
  • Ctl didn't support remote "in process" daemon
  • IPFS options were handled manually inside ctl, so any change in js-ipfs would require a PR in ctl to support the new options or change to an option

Related issues:

Improvements:

  • better errors
  • DEBUG='ipfsd-ctl:*' everywhere
  • factories for tests with good defaults
  • options are properly merged everywhere
  • safer child_process exit stop()
  • faster stop()
  • IPFS Options are now the same format as https://github.com/ipfs/js-ipfs/blob/master/README.md#ipfs-constructor
  • Ctl can init, start and set config in one cmd (at least with js-ipfs)
  • better docs and jsdocs
  • we can now be sure which http-client, ipfs or go-ipfs is being used
  • utils functions actually work in the browser now
  • works in webworkers now
  • simpler and faster overall
  • disposable node actually clean themselves in the browser
  • better tests
  • ...
  • support electron
  • test in electron

New:

  • new method createController returns a spawned controller
  • createFactory as a second parameter to override options per type

Changes:

  • create change to createFactory
  • createFactory options changed

Old

- `options` - optional object with:
  - `remote` bool - use remote endpoint to spawn the nodes.
  - `port` number - remote endpoint port. Defaults to 43134.
  - `exec` - IPFS executable path. `ipfsd-ctl` will attempt to locate it by default. If you desire to spawn js-ipfs instances in the same process, pass the ref to the module instead (e.g `exec: require('ipfs')`)
  - `type` - the daemon type, see below the options
    - `go` - spawn go-ipfs daemon
    - `js` - spawn js-ipfs daemon
    - `proc` - spawn in-process js-ipfs instance. Needs to be called also with exec. Example: `DaemonFactory.create({type: 'proc', exec: require('ipfs') })`.
  - `IpfsClient` - A custom IPFS API constructor to use instead of the packaged one

New

-   `remote` [boolean] Use remote endpoint to spawn the nodes. Defaults to `true` when not in node.
-   `test` [test=false] - Flag to activate custom config for tests.
-   `endpoint` [endpoint] - Endpoint URL to manage remote Controllers. (Defaults: 'http://localhost:43134').
-   `disposable` [Boolean] A new repo is created and initialized for each invocation, as well as cleaned up automatically once the process exits.
-   `type` [string] The daemon type, see below the options:-   go - spawn go-ipfs daemon
    -   js - spawn js-ipfs daemon
    -   proc - spawn in-process js-ipfs instance
-   `env` [Object] Additional environment variables, passed to executing shell. Only applies for Daemon controllers.
-   `args` [Array] Custom cli args.
-   `ipfsHttp` [Object] Setup IPFS HTTP client to be used by ctl.
    -   `ipfsHttp.ref` [Object] Reference to a IPFS HTTP Client object. (defaults to the local require(`ipfs-http-client`))
    -   `ipfsHttp.path` [string] Path to a IPFS HTTP Client to be required. (defaults to the local require.resolve('ipfs-http-client'))
-   `ipfsApi` [Object] Setup IPFS API to be used by ctl.
    -   `ipfsApi.ref` [Object] Reference to a IPFS API object. (defaults to the local require(`ipfs`))
    -   `ipfsApi.path` [string] Path to a IPFS API implementation to be required. (defaults to the local require.resolve('ipfs'))
-   `ipfsBin` [String] Path to a IPFS exectutable . (defaults to the local 'js-ipfs/src/bin/cli.js')
-   `ipfsOptions` [IpfsOptions] Options for the IPFS instance
  • Previous default ipfs config is only applied when test options equals true
  • defaultAddrs option was removed
  • Spawn options are the same as createFactory

Old

- `options` is an optional object the following properties:
  - `init` bool (default true) or Object - should the node be initialized
  - `initOptions` object - should be of the form `{bits: <size>}`, which sets the desired key size
  - `start` bool (default true) - should the node be started
  - `repoPath` string - the repository path to use for this node, ignored if node is disposable
  - `disposable` bool (default true) - a new repo is created and initialized for each invocation, as well as cleaned up automatically once the process exits
  - `defaultAddrs` bool (default false) - use the daemon default `Swarm` addrs
  - `args` - array of cmd line arguments to be passed to ipfs daemon
  - `config` - ipfs configuration options

NEW
Same as js-ipfs constructor https://github.com/ipfs/js-ipfs#ipfs-constructor

  • ipfsd.killProcess removed not needed anymore
  • ipfsd.getConfig removed call ipfsd.api.config.get instead
  • ipfsd.setConfig removed, call ipfsd.api.config.set instead

Read the README for documention on the new api and options