Releases: ipld/js-ipld
v0.24.1
v0.24.0
v0.23.0
Bug Fixes
- use the cleaned up IPLD Format API (108aef0)
BREAKING CHANGES
- All formats now return data according to the IPLD Data Model
The most important change is that now all formats return links as CID instances
and no longer as the JSON representation ({"/": "base-encoded-cid"}
.
v0.22.0
Bug Fixes
- add dynamically loaded format via addFormat() (95536cd)
- don't throw if it's not a proper old-style link (38be898)
- error if loadFormat() is not a function (4ad1ee4)
- use a version of typical where async iterators are supported (43176ca)
- use promisify-es6 instead of Nodes.js' promisify (79e521c)
Code Refactoring
Features
- add single item functions (945fc61)
- implementation of the new
addFormat/removeFormat()
functions (12b436b) - implementation of the new
get()
function (743e679) - implementation of the new
put()
function (8b737b1) - implementation of the new
remove()
function (08c1e0e) - implementation of the new
resolve()
function (162473b) - implementation of the new
tree()
function (9801765) - make addFormat() and removeFormat() return the instance (5f62fe0)
BREAKING CHANGES
- put/get/remove functions are renamed
This commit introduces single item functions which are called put()
/get()
,remove()
.
In order to put, get or remove multiple items you need to call
putMany()
,getMany()
/removeMany()
now.
- This replaces the
treeStream()
function.
The API docs for it:
Returns all the paths that can be resolved into.
cid
(CID
, required): the CID to get the paths from.path
(IPLD Path
, default: ''): the path to start to retrieve the other paths from.options
:recursive
(bool
, default: false): whether to get the paths recursively or not.false
resolves only the paths of the given CID.
Returns an async iterator of all the paths (as Strings) you could resolve into.
- They replace the
support.add()
andsupport.rm()
functions.
The API docs for it:
.addFormat(ipldFormatImplementation)
:
Add support for an IPLD Format
ipldFormatImplementation
(IPLD Format
, required): the implementation of an IPLD Format.
.removeFormat(codec)
:
Remove support for an IPLD Format
codec
(multicodec
, required): the codec of the IPLD Format to remove.
remove()
has a new API.
The API docs for it:
Remove IPLD Nodes by the given
cids
cids
(Iterable<CID>
): the CIDs of the IPLD Nodes that should be
removed.
Throws an error if any of the Blocks can’t be removed. This operation is
not atomic, some Blocks might have already been removed.
get()
is replacing thegetMany()
function.
The API docs for it:
Retrieve several IPLD Nodes at once.
cids
(Iterable<CID>
): the CIDs of the IPLD Nodes that should be retrieved.
Returns an async iterator with the IPLD Nodes that correspond to the given cids
.
Throws an error if a IPLD Node can’t be retrieved.
- The API of
put()
changes.
The API docs for it:
Stores the given IPLD Nodes of a recognized IPLD Format.
nodes
(Iterable<Object>
): deserialized IPLD nodes that should be inserted.format
(multicodec
, required): the multicodec of the format that IPLD Node should be encoded in.options
is applied to any of thenodes
and is an object with the following properties:hashAlg
(multicodec
, default: hash algorithm of the given multicodec): the hashing algorithm that is used to calculate the CID.cidVersion
(boolean
, default: 1): the CID version to use.onlyHash
(boolean
, default: false): if true the serialized form of the IPLD Node will not be passed to the underlying block store.
Returns an async iterator with the CIDs of the serialized IPLD Nodes.
- The
codec
parameter inoptions.loadFormat()
is a number
Instead of returnign the name of the codec as string, the codec code (a number)
is now returned.
So if you e.g. check within the function for a certain format, it changes from:
async loadFormat (codec) {
if (codec !== 'dag-cbor') …
}
To:
async loadFormat (codec) {
if (codec !== multicodec.DAG_CBOR) …
}
- your custom format loading function needs
to be an async now.
So the signature for options.loadFormat
is no longer:
function (codec, callback)
but
async functiont (codec)
resolve()
replaces parts ofget()
.
The API docs for it:
Retrieves IPLD Nodes along the
path
that is rooted atcid
.
cid
(CID
, required): the CID the resolving starts.path
(IPLD Path
, required): the path that should be resolved.
Returns an async iterator of all the IPLD Nodes that were traversed during the path resolving. Every element is an object with these fields:
remainderPath
(string
): the part of the path that wasn’t resolved yet.value
(*
): the value where the resolved path points to. If further traversing is possible, then the value is a CID object linking to another IPLD Node. If it was possible to fully resolve the path,value
is the value thepath
points to. So if you need the CID of the IPLD Node you’re currently at, just take thevalue
of the previously returned IPLD Node.
v0.21.1
v0.21.0
Code Refactoring
BREAKING CHANGES
- This module no longer exports an
inMemory
utility to create an IPLD instance that uses a block service that stores data in memory. Please use theipld-in-memory
module instead.
License: MIT
Signed-off-by: Alan Shaw [email protected]
v0.20.2
v0.20.1
v0.20.0
Bug Fixes
- updates ipld-dag-pb dep to version (add49fe), closes ipld/js-ipld-dag-pb#99 ipld/js-ipld-dag-pb#99
BREAKING CHANGES
- DAGNodes no longer have
.cid
or.multihash
properties - see