hyperlog-calendar-index
hyperlog index for recurring and one-time events
example
var hyperlog =var memdb =var xtend =var cali =var log =var cal =logloglogcal
output:
{ key: '5d368ce0cd31345a9bf9a0b2cb870460a2b1a1adbb651af1323afec1c0a1458f',
time: Tue Jan 05 2016 19:00:00 GMT+0100 (CET),
value: { title: 'hardware hack night' } }
{ key: 'c4c5ecdb896d0a13777d701e3dc8bed3e64a2b54812c9f8537c540bdef699fde',
time: Thu Jan 07 2016 19:00:00 GMT+0100 (CET),
value: { title: 'javascript study group' } }
{ key: '5d368ce0cd31345a9bf9a0b2cb870460a2b1a1adbb651af1323afec1c0a1458f',
time: Tue Jan 12 2016 19:00:00 GMT+0100 (CET),
value: { title: 'hardware hack night' } }
{ key: 'c4c5ecdb896d0a13777d701e3dc8bed3e64a2b54812c9f8537c540bdef699fde',
time: Thu Jan 14 2016 19:00:00 GMT+0100 (CET),
value: { title: 'javascript study group' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Fri Jan 15 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Sat Jan 16 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Sun Jan 17 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Mon Jan 18 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Tue Jan 19 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: '5d368ce0cd31345a9bf9a0b2cb870460a2b1a1adbb651af1323afec1c0a1458f',
time: Tue Jan 19 2016 19:00:00 GMT+0100 (CET),
value: { title: 'hardware hack night' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Wed Jan 20 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Thu Jan 21 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'c4c5ecdb896d0a13777d701e3dc8bed3e64a2b54812c9f8537c540bdef699fde',
time: Thu Jan 21 2016 19:00:00 GMT+0100 (CET),
value: { title: 'javascript study group' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Fri Jan 22 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Sat Jan 23 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Sun Jan 24 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Mon Jan 25 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Tue Jan 26 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: '5d368ce0cd31345a9bf9a0b2cb870460a2b1a1adbb651af1323afec1c0a1458f',
time: Tue Jan 26 2016 19:00:00 GMT+0100 (CET),
value: { title: 'hardware hack night' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Wed Jan 27 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Thu Jan 28 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'c4c5ecdb896d0a13777d701e3dc8bed3e64a2b54812c9f8537c540bdef699fde',
time: Thu Jan 28 2016 19:00:00 GMT+0100 (CET),
value: { title: 'javascript study group' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Fri Jan 29 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
{ key: 'b293200589c8fc5c127b9fbe5901e0c102623598a797b8a204b1d8a1439d90cd',
time: Sat Jan 30 2016 12:00:00 GMT+0100 (CET),
value: { title: 'cyberwizard institute' } }
api
var cali =
var cal = cali(opts)
opts
are:
-
opts.log
- a hyperlog to index -
opts.db
- a leveldb to use for index storage -
opts.map(row, next)
- a function that is called with eachrow
in the hyperlog and should callnext(err, doc)
with a falsy value or adoc
object: -
doc.type
-'put'
or'del'
(default: 'put') -
doc.time
- the time string of the event -
doc.created
- the time (string orDate
object) that thedoc.time
time string is relative to -
doc.value
- an additional value to associate with the event (default:{}
)
If you need to delete a record, all your map function needs to provide is a
document with: { type: 'del' }
.
The default map function is function (row) { return row.value }
.
cal.ready(fn)
Calls fn()
when the index is caught up.
cal.query(opts, cb)
Return a readable stream of all events between opts.gt
and opts.lt
,
including all instances of recurring events.
If cb
is given, cb(err, results)
fires with an array of all the results
.
install
npm install hyperlog-calendar-index
license
BSD