ql

queryable-log

A structured append-only log which can be queried. Stores as ndjson and applies a log-size limit.

Showing:

Popularity

Downloads/wk

4

GitHub Stars

6

Maintenance

Last Commit

5mos ago

Contributors

0

Package

Dependencies

4

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

Queryable-Log

A structured append-only log which can be queried. Stores as ndjson and applies a log-size limit.

npm i queryable-log

Example usage:

const log = new QueryableLog(path.join(dir.path, 'log1.txt'))

await log.append({index: 1, type: 'apple'})
await log.append({index: 2, type: 'apple'})
await log.append({index: 3, type: 'banana'})
await log.append({index: 4, type: 'banana'})
await log.append({index: 5, type: 'apple'})
await log.append({index: 6, type: 'banana'})

await log.query() /* => [
  {index: 1, type: 'apple', ts: 1618872429869},
  {index: 2, type: 'apple', ts: 1618872438715},
  {index: 3, type: 'banana', ts: 1618872442607},
  {index: 4, type: 'banana', ts: 1618872446504},
  {index: 5, type: 'apple', ts: 1618872450726},
  {index: 6, type: 'banana', ts: 1618872454478}
] */

await log.query(obj => obj.type === 'banana') /* => [
  {index: 3, type: 'banana'},
  {index: 4, type: 'banana'},
  {index: 6, type: 'banana'}
]*/

API

new QueryableLog(filepath[, {sizeLimit, overwrite}])

The sizeLimit defaults to 5mb. The overwrite flag will delete the existing log on open; it defaults to false.

await log.append(obj)

Adds an object to the log. The .ts attribute is automatically added with Date.now().

await log.query([queryFn])

Queries the log file. Takes an optional query function to filter results during the read-stream. Returns an array.

await log.close()

Closes the internal write stream.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100