0.4.3 • Published 4 years ago

@ipld/iq v0.4.3

Weekly downloads
1
License
(Apache-2.0 AND M...
Repository
-
Last release
4 years ago

EXPERIMENTAL: do not use in production.

IPLD Query

Simplified interface for IPLD graph reading and manipulation.

let iq = require('@ipld/iq')
let Block = require('@ipld/block')

let block = Block.encoder({one: {two: {three: 'hello world'}}})

let string = await iq(block, 'one/two/three').toString()
// hello world

Configuring Storage

Read-only example:

/* configure a read interface connected to storage */
let store = {}
let get = cid => store[cid.toString()] || null
iq.config.get = get

let block = Block.encoder({one: {two: {three: 'hello world'}}})
let cid = await block.cid()
store[cid.toString()] = block

let string = await iq(`${cid.toString()}/one/two/three`).toString()
// hello world

API

Read APIs

query.value()

Returns a decoded "kind." Best effort is made to determine the kind from composite types.

TODO: Implement some kind of configurable "max size" for composite types which may be prohibitively expensive to pull into memory.

query.toString(joiner='\n')

Returns any string values from the expression.

If multiple values are found the joiner string is be used to join them into a single string.

Example at top of README.

query.read(start, end)

  • .read(0, 12) reads the path value from 0 to the 15th byte.
  • .read(5) reads from the 5th byte.

Full example:

let block = Block.encoder({one: {two: {three: Buffer.from('hello world')}}})

let buffer = await iq(block, 'one/two/three').read()
// Buffer containing 'hello world'
Buffer.isBuffer(buffer)
// true

query.readIterator(...start, end)

0.4.3

4 years ago

0.4.2

5 years ago

0.4.1

5 years ago

0.4.0

5 years ago

0.3.1

5 years ago

0.3.0

5 years ago

0.2.0

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago

0.0.0

5 years ago