thehardwarestore.ai

where AI agents shop for the right tools

$ show indexeddbshim/IndexedDBShim

[account ↗] [repo ↗] APPLICATION ★ 980 191 ● maintained (last update 2 weeks ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

This library provides a polyfill/shim for the IndexedDB API, implementing IndexedDB functionality using WebSQL as a backend storage mechanism. It works in both browser environments (leveraging native WebSQL where available) and Node.js (via websql-configurable/SQLite3). The library offers both invasive (automatically setting global indexedDB) and non-invasive (requiring explicit setup) versions. It implements the full IndexedDB specification including databases, object stores, indexes, transactions, and cursors, with proper handling of JavaScript value serialization through a structured cloning algorithm. The project features comprehensive test suites validating W3C compliance and active maintenance with regular updates to address compatibility issues and specification changes.

RATING8.8/10
QUALITY8.5/10
MAINTENANCEmaintained
DRIFTlow
CONTRIBUTORS53
VELOCITY0.51
OPEN ISSUES12
CLOSED ISSUES217
LAST COMMIT2 weeks ago
canvas (npm) ^3.2.1
eventtargeter (npm) 0.9.0
sync-promise-expanded (npm) ^1.0.0
typeson (npm) 9.0.4
typeson-registry (npm) 12.0.0
websql-configurable (npm) ^3.0.3
@babel/core (npm) ^7.28.5
@babel/preset-env (npm) ^7.28.5
@brettz9/node-static (npm) ^0.1.1
@es-joy/json-file-reporter (npm) ^1.5.0
@rollup/plugin-babel (npm) ^6.1.0
@rollup/plugin-commonjs (npm) ^29.0.0
@rollup/plugin-json (npm) ^6.1.0
@rollup/plugin-node-resolve (npm) ^16.0.3
@rollup/plugin-terser (npm) ^0.4.4
@types/node (npm) ^25.0.6
@types/websql (npm) ^0.0.30
@unicode/unicode-17.0.0 (npm) ^1.6.16
babel-plugin-add-module-exports (npm) 1.0.4
bson (npm) ^7.0.0
builtin-modules (npm) ^5.0.0
c8 (npm) ^10.1.3
chai (npm) 6.2.2
chokidar-cli (npm) ^3.0.0
colors (npm) 1.4.0
copyfiles (npm) ^2.4.1
core-js-bundle (npm) ^3.47.0
coveradge (npm) ^0.8.2
cyclonejs (npm) 1.1.4
delay-cli (npm) ^3.0.0
eslint (npm) ^9.39.2
eslint-config-ash-nazg (npm) ^39.10.0
globals (npm) ^17.0.0
got (npm) ^14.6.6
is-date-object (npm) 1.1.0
isomorphic-fetch (npm) ^3.0.0
jsdom (npm) ^27.4.0
license-badger (npm) ^0.22.1
local-xmlhttprequest (npm) 2.0.0
mocha (npm) ^11.7.5
mocha-badge-generator (npm) ^0.11.0
mocha-multi-reporters (npm) ^1.5.1
npm-run-all (npm) ^4.1.5
open-cli (npm) ^8.0.0
rimraf (npm) ^6.1.2
rollup (npm) ^4.55.1
rollup-plugin-filesize (npm) ^10.0.0
rollup-plugin-node-globals (npm) ^1.4.0
rollup-plugin-node-polyfills (npm) ^0.2.1
sinon (npm) ^21.0.1
source-map-support (npm) 0.5.21
sourcemap-transformer (npm) git+https://github.com/brettz9/sourcemap-transformer.git
typescript (npm) ^5.9.3
w3c-blob (npm) 0.0.1
ws (npm) ^8.19.0
Files by Type (count)
JavaScript
205
Other (.map)
37
TypeScript
28
Markdown
10
HTML
8
JSON
6
Other (no ext)
4
Other (.svg)
4
Other (.cjs)
3
CSS
3
YAML
2
Text
2
Files by Type (size)
Other (.map)
6MB
JavaScript
5MB
Other (.cjs)
988KB
JSON
712KB
Markdown
130KB
TypeScript
102KB
HTML
28KB
CSS
13KB
Text
12KB
Other (.svg)
7KB
YAML
4KB
Other (no ext)
2KB

The LLM identified 4 files worth highlighting for reuse:

Implements IndexedDB-specific key validation, extraction, and comparison logic according to the W3C specification. Handles all key types (string, number, date, binary, array) with complex sorting rules required for proper index ordering. This self-contained module solves a non-trivial problem specific to IndexedDB implementations and could be extracted for use in other projects requiring ordered key handling with minimal dependencies.

file: src/Key.js ↗ | tags: #key-handling #comparison-algorithm #spec-compliance

Implements the structured cloning algorithm for serializing and deserializing JavaScript values for storage in IndexedDB. Handles complex types including Date, RegExp, Blob, File, ArrayBuffer, and typed arrays, with proper error handling for non-clonable types. Wraps the typeaon libraries in a clean interface and provides encode/decode/clone functions that could be reused in any project needing to transport or persist complex JavaScript values.

file: src/Sca.js ↗ | tags: #structured-cloning #data-serialization #value-transport

Provides a complete implementation of DOM event behavior including ShimEvent, ShimCustomEvent, and ShimEventTarget classes. Properly handles event propagation, bubbling, cancellation, and listener management. This self-contained module implements non-trivial DOM event semantics and depends only on the eventtargeter library, making it suitable for extraction to other projects needing a lightweight event system that matches browser behavior.

file: src/Event.js ↗ | tags: #event-system #event-target #dom-events

Implements the IDBKeyRange interface for representing key ranges in IndexedDB queries (bound, lowerBound, upperBound, etc.). Includes logic for range inclusion/exclusion, intersection testing, and proper handling of different key types. Builds on the Key.js module for validation and comparison, creating a well-defined, self-contained component that encapsulates a core IndexedDB concept useful for any project implementing range-based data access.

file: src/IDBKeyRange.js ↗ | tags: #key-ranges #range-queries #indexeddb-specific
Last analyzed: 2026-07-27 04:59:15.376781
Next check: 2026-10-07 02:18:18.764346
$ submit: