npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

bibliograph

v0.1.4

Published

Key value record comprehension service. Raw data.

Readme

Bibliograph

License: MIT npm version

Key-value record comprehension service for Node.js. Bibliograph stores raw JSON records organized by source with automatic metadata generation, hash-based deduplication, and field-level change tracking.

Features

  • Source-Organized Storage -- group records into named collections for multi-feed ingestion
  • Hash-Based Deduplication -- MD5 and quick-hash comparison skips writes when content is unchanged
  • Partial Record Merging -- writes merge new fields with existing records automatically
  • Field-Level Change Tracking -- delta history records which fields changed on each write
  • Automatic Metadata -- every write generates GUID, length, QHash, MD5, and ingest timestamp
  • Pluggable Storage Backends -- built-in file system provider with LMDB, LevelDB, RocksDB, and Meadow backends available
  • CLI Tool -- command-line interface for source management, record read/write/delete
  • Record Diff Engine -- compressed diff format optimized for storage at scale
  • Pict Service Provider -- integrates with the Fable/Pict service ecosystem via dependency injection

Installation

npm install bibliograph

Quick Start

const libPict = require('pict');
const libBibliograph = require('bibliograph');

let _Pict = new libPict();
_Pict.addServiceTypeIfNotExists('Bibliograph', libBibliograph);
_Pict.instantiateServiceProvider('Bibliograph', {});

let tmpAnticipate = _Pict.newAnticipate();

tmpAnticipate.anticipate(_Pict.Bibliograph.initialize.bind(_Pict.Bibliograph));

tmpAnticipate.anticipate(
	function (fNext)
	{
		_Pict.Bibliograph.createSource('Contacts', fNext);
	});

tmpAnticipate.anticipate(
	function (fNext)
	{
		_Pict.Bibliograph.write('Contacts', 'alice-001',
			{ Name: 'Alice', Age: 41 }, fNext);
	});

tmpAnticipate.anticipate(
	function (fNext)
	{
		_Pict.Bibliograph.read('Contacts', 'alice-001',
			function (pError, pRecord)
			{
				console.log(pRecord);
				// { Name: 'Alice', Age: 41 }
				fNext(pError);
			});
	});

tmpAnticipate.wait(
	function (pError)
	{
		if (pError) console.error(pError);
		console.log('Done.');
	});

Configuration

| Setting | Default | Description | |---------|---------|-------------| | Bibliograph-Check-Metadata-On-Write | true | Compare metadata hashes before writing; skip unchanged records | | Bibliograph-Store-Deltas | true | Store field-level change history on each write | | Bibliograph-Storage-FS-Path | "./data" | Root folder for file system storage | | Bibliograph-Log-Write-Mismatch-Reason | false | Log details about why a record was considered changed |

API

BibliographService

| Method | Description | |--------|-------------| | initialize(fCallback) | Initialize the storage provider | | createSource(pSourceHash, fCallback) | Create a named record collection | | checkSourceExists(pSourceHash, fCallback) | Check if a source exists | | write(pSourceHash, pRecordGUID, pRecord, fCallback) | Write or merge a record (upsert with deduplication) | | read(pSourceHash, pRecordGUID, fCallback) | Read a record by GUID | | delete(pSourceHash, pRecordGUID, fCallback) | Delete a record | | exists(pSourceHash, pRecordGUID, fCallback) | Check if a record exists | | readRecordKeys(pSourceHash, fCallback) | List all record GUIDs in a source | | readRecordKeysByTimestamp(pSourceHash, pStart, pEnd, fCallback) | List GUIDs within a time range | | readRecordMetadata(pSourceHash, pRecordGUID, fCallback) | Read record metadata | | readRecordDelta(pSourceHash, pRecordGUID, fCallback) | Read change history | | recordHash(pString) | Generate an MD5 hash of a string |

BibliographRecordDiff

| Method | Description | |--------|-------------| | diffRecords(pOldRecord, pNewRecord) | Compare two records, return compressed diff | | generateDiffDelta(pOldRecord, pNewRecord, pDiff) | Extract changed field values from a diff | | generateDelta(pOldRecord, pNewRecord) | Diff and extract delta in one step |

CLI

bibliograph source_create MySource
bibliograph write -s MySource -i records.json
bibliograph read -s MySource rec-001
bibliograph delete -s MySource rec-001

Storage Backends

| Package | Backend | Best For | |---------|---------|----------| | (built-in) | File System | Development, debugging, moderate scale | | bibliograph-storage-meadow | Meadow DAL | SQL databases via Meadow (SQLite, MySQL, PostgreSQL, MSSQL) | | bibliograph-storage-lmdb | LMDB | High-read workloads, embedded apps | | bibliograph-storage-leveldb | LevelDB | General purpose, balanced read/write | | bibliograph-storage-rocksdb | RocksDB | Write-heavy workloads, large datasets |

Part of the Retold Framework

Bibliograph is a module in the Retold meta-framework, part of the Meadow module group.

Testing

npm test

Related Packages

| Module | Purpose | |--------|---------| | bibliograph-storage-meadow | Meadow DAL storage backend | | meadow | Data access layer and ORM | | pict | MVC tools and application lifecycle | | fable | Application framework and service manager | | pict-provider | Base class for Pict service providers |

License

MIT

Contributing

Pull requests are welcome. For details on our code of conduct, contribution process, and testing requirements, see the Retold Contributing Guide.