Registry / database / levelgraph

levelgraph

JSON →
library4.0.0jsnpmunverified

LevelGraph is a graph database implemented for both Node.js and browser environments, leveraging the high-performance LevelDB key-value store through the `level` library. Currently stable at version 4.0.0, its release cadence appears to be tied to significant updates in its underlying `level` dependency, as seen with the v4.0.0 release updating to `level` v8. A key differentiator is its implementation of the Hexastore approach, employing six indices for each triple (subject, predicate, object) to ensure rapid data access and pattern matching. It supports standard graph database operations like triple insertion, retrieval, and deletion, with capabilities for advanced searches and filtering. It offers a consistent API across Node.js and browser contexts, though initialization differs slightly.

npm install levelgraph
INSTALL
IMPORT
SIG · LEVELGRAPH
L
levelgraph
databasejavascriptv4.0.0
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18226 runs
build_error
glibc
node 18226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

levelgraph
const levelgraph = require('levelgraph');
import levelgraph from 'levelgraph';
LevelGraph's primary entry point is a CommonJS module exporting a factory function. While Node.js supports ESM, the package itself is not a pure ESM module. For modern ESM environments, consider using a CommonJS compatibility wrapper or a bundler.
Level
const { Level } = require('level');
import { Level } from 'level';
The underlying `level` dependency itself supports both CommonJS and ESM. LevelGraph's examples currently show CommonJS `require` for `Level` as well.
db.put
db.put({ subject: 's', predicate: 'p', object: 'o' }, callback);
db.put('s', 'p', 'o', callback);
Triples must be provided as an object with `subject`, `predicate`, and `object` properties.

This quickstart demonstrates how to initialize a LevelGraph database, insert a triple, retrieve it using a pattern match, and then properly clean up the database resources.

const { Level } = require('level'); const levelgraph = require('levelgraph'); const path = require('path'); const os = require('os'); const fs = require('fs'); // Create a temporary directory for the database const dbPath = path.join(os.tmpdir(), `levelgraph-test-${Date.now()}`); // Initialize the database with a LevelDB store const db = levelgraph(new Level(dbPath)); const triple = { subject: 'book', predicate: 'hasAuthor', object: 'Alice' }; db.put(triple, function(err) { if (err) { console.error('Error putting triple:', err); return; } console.log('Triple inserted:', triple); // Retrieve triples matching a pattern db.get({ subject: 'book', predicate: 'hasAuthor' }, function(err, triples) { if (err) { console.error('Error getting triples:', err); return; } console.log('Retrieved triples:', triples); // Expected output: [{ subject: 'book', predicate: 'hasAuthor', object: 'Alice' }] // Clean up: close the database and remove the directory db.close(function(closeErr) { if (closeErr) console.error('Error closing db:', closeErr); else console.log('Database closed.'); fs.rm(dbPath, { recursive: true, force: true }, (rmErr) => { if (rmErr) console.error('Error removing database directory:', rmErr); else console.log('Database directory removed.'); }); }); }); });
Debug
Known issues
breakingLevelGraph v4.0.0 updates its internal `level` dependency to v8. This update can introduce breaking changes from the `level` library itself, particularly regarding its asynchronous API and potential Node.js version requirements. Ensure compatibility with your existing `level` usage.
fix
Review the changelog for `level` v8 for specific breaking changes. Update your `level` related code if directly interacting with the `level` API used by LevelGraph. Test thoroughly after upgrading.
affects: >=4.0.0
breakingIn v3.0.0, `level-browserify` was replaced by `level` as the underlying store for browser environments. `level-browserify` was noted to have installation issues on newer Node.js versions, making this a critical upgrade for compatibility.
fix
Upgrade to LevelGraph v3.0.0 or later to leverage the `level` package which offers better compatibility and browser support. If you were explicitly using `level-browserify` in your build, switch to `level`.
affects: >=3.0.0
gotchaStream closing behavior for internal tests in v3.0.0 was changed from listening to the `close` event to the `end` event due to double-triggering. While this primarily affected internal tests, developers relying on specific stream lifecycle events in their own code might experience different behavior.
fix
If your application code directly interacts with streams returned by LevelGraph and relies on `close` or `end` events, review your stream handling logic for potential subtle behavioral changes after upgrading to v3.0.0.
affects: >=3.0.0
gotchaLevelGraph officially tests only against Node.js versions 18 and 20. While other versions may function, their support is not guaranteed, and compatibility issues might arise.
fix
For production deployments, target Node.js 18 or 20. If using other versions, ensure comprehensive testing of your application's LevelGraph interactions.
affects: *
Errors
Common errors & fixes
Error: Cannot find module 'level-browserify'
This error typically occurs when using LevelGraph versions prior to 3.0.0 with newer Node.js environments, where the deprecated `level-browserify` package had installation issues.
fix
Upgrade `levelgraph` to version 3.0.0 or higher. This version replaces `level-browserify` with the more compatible `level` package.
TypeError: Object.keys called on non-object
Reported in older versions (fixed in v1.1.3), this error indicates that a non-object value was passed where an object (e.g., a triple pattern) was expected, causing `Object.keys()` to fail.
fix
Ensure that all arguments expected to be objects (like triple patterns for `db.get` or `db.put`) are indeed valid JavaScript objects. If you are on an older version, upgrade to `levelgraph` v1.1.3 or newer.
Error: The 'path' argument must be of type string. Received undefined
This is a common error from the underlying `level` library when its constructor `new Level()` is called without a valid string path for the database directory.
fix
Always provide a valid, non-empty string path when initializing `new Level('your-database-path')`. Ensure your database path variable is correctly defined and not `null` or `undefined`.
Upgrade
Version history
4.0.0latest on npm
Audit
Dependencies
levelrequiredThe core underlying key-value store wrapper, essential for all database operations. LevelGraph v4.0.0 specifically requires `level` v8.
tmpoptionalAdded in v3.0.0, likely used for temporary file operations related to testing or internal database management.
Agent activity
5 hits · last 30 days
node
4
Amazon
1
Resources