thehardwarestore.ai

where AI agents shop for the right tools

── 99592 repos indexed ── | filtered by tag: javascript
expressjs/response-time ★ 497 74 APPLICATION

response-time is a minimal, high-quality Node.js middleware for recording and optionally exposing HTTP response time. It uses `process.hrtime()` for nanosecond-precision timing and `on-headers` to hook into the response header sending phase. The module exposes a single function that returns a middleware compatible with Express, Connect, or vanilla Node.js HTTP servers. It supports configurable header name, digit precision, and suffix, and can either set a default `X-Response-Time` header or invoke a custom callback with the measured time. The codebase is a single, well-architected file with clear separation of concerns (option parsing, header creation, deprecation handling) and comprehensive test coverage. It is a textbook example of a focused, reusable npm package with no unnecessary dependencies.

RATING: 8.9/10 MAINT: active DRIFT: low
▸ 1 reusable components found
algorand/js-algorand-sdk ★ 297 213 APPLICATION

This is the official JavaScript/TypeScript SDK for the Algorand blockchain, version 3.7.0. It provides a comprehensive set of tools for constructing, signing, encoding, and submitting transactions to Algorand nodes, as well as querying blockchain state via the Algod v2, Indexer, and KMD APIs. The SDK supports all transaction types (payment, asset management, application calls, key registration, state proofs, heartbeats), atomic transaction groups, ABI encoding/decoding for smart contract interactions, logic signatures (escrow, delegation, multisig), and post-quantum Falcon-1024 signatures. It is designed for both Node.js and browser environments, with CommonJS, ESM, and webpack bundle outputs. The architecture is modular: a core encoding layer (schema-based msgpack/JSON serialization) underpins all data types; a client layer abstracts HTTP communication with token-based authentication; a transaction builder pattern provides ergonomic construction; and a signer abstraction decouples signing logic from transaction assembly. Key entry points include the `Algodv2`, `Indexer`, and `Kmd` client classes, the `Transaction` class, `AtomicTransactionComposer` for atomic groups, and the `LogicSig`/`LogicSigAccount` classes. Data flows involve constructing transactions, signing them (via raw keys, multisig, or external signers), encoding to msgpack, and submitting to the network. The SDK also handles decoding of responses, including complex structures like block headers, state deltas, and simulation results. External dependencies include the `algorand-msgpack` package for msgpack encoding, `@algorandfoundation/falcon-wasm` for post-quantum signatures, and `hi-base32` for address encoding. The SDK is extensively tested with unit tests (Mocha), integration tests (Cucumber with mock servers), and browser tests (Selenium). It is actively maintained with regular releases, automated code generation from Algorand API specifications, and CI/CD pipelines for linting, testing, and publishing.

RATING: 8.9/10 MAINT: active DRIFT: low
▸ 4 reusable components found
denoland/deno_doc ★ 297 73 APPLICATION

This repository is a Rust library (and optional CLI tool) that generates documentation for JavaScript and TypeScript modules. It parses source code using `deno_graph` and `deno_ast`, extracts documentation nodes (functions, classes, interfaces, enums, variables, type aliases, namespaces) along with JSDoc comments, and produces output in multiple formats: JSON for programmatic consumption, plain text for CLI display, static HTML pages with search, dark mode, and breadcrumbs, and structured diffs between two versions of an API. The HTML generation uses Handlebars templates and Tailwind CSS, and includes a client-side search index built with Fuse.js. The crate is used by the `deno doc` command and is published as `@deno/doc` for the JavaScript ecosystem via WASM. Its architecture is modular: a parsing layer resolves source files into a documentation graph, and separate output modules handle text, JSON, HTML, and diff rendering. The diff engine includes rename detection and change heuristics. The project is well-tested with a large suite of snapshot and specification tests covering a wide range of TypeScript features.

RATING: 8.9/10 MAINT: active DRIFT: low
▸ 4 reusable components found
hermanho/MMM-GooglePhotos ★ 198 72 APPLICATION

MMM-GooglePhotos is a MagicMirror² module that displays photos from Google Albums on a smart mirror dashboard. It features a clean architecture separating UI logic (MMM-GooglePhotos.js) from backend processing (node_helper.js), with a well-abstracted Google Photos API client (GPhotos.js). The module handles OAuth2 authentication, automatic token refresh, paginated API requests, photo filtering (by date, dimensions, aspect ratio), sorting, and caching to minimize API calls. It supports user interactions via notifications for navigating photos and uploading new images to designated albums.

RATING: 8.9/10 MAINT: active DRIFT: low
▸ 3 reusable components found
highlightjs/highlight.js ★ 25004 3752 APPLICATION

highlight.js is a mature, widely-used JavaScript syntax highlighting library that operates both in the browser and on the server (Node.js). It provides automatic language detection and manual language specification, outputting HTML with semantic CSS classes for styling. The core engine is a monolithic, event-driven parser that compiles language grammars into optimized regex-based mode matchers. The repository contains over 180 built-in language grammars, a plugin system, a comprehensive test suite (including regex backtracking analysis), and a large collection of CSS themes. The architecture is modular: language definitions are self-contained functions, the core library is in `src/highlight.js`, and build tooling (Rollup, Terser) produces multiple distribution formats (browser, CDN, Node.js). While the project is actively maintained with frequent commits and issue triage, there are signs of technical drift such as an outdated Dockerfile (Node 12), some older devDependencies, and the constraint that grammars must be written in ES5. The codebase demonstrates high craftsmanship in its regex utilities, mode compiler, and token tree emitter, making several components genuinely reusable for other syntax highlighting or parsing projects.

RATING: 8.8/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
TypeCellOS/BlockNote ★ 10284 777 APPLICATION

BlockNote is a block-based rich text editor framework for React, built on ProseMirror and TipTap. It provides a highly customizable editor with features like slash menus, drag-and-drop, real-time collaboration via Yjs, AI-powered editing, and multi-format export (HTML, Markdown, PDF, DOCX, ODT, email). The architecture is modular: a core package defines schemas for blocks, inline content, and styles, with an extension system for adding UI components, keyboard shortcuts, and ProseMirror plugins. Multiple UI skin packages (Mantine, Ariakit, ShadCN) implement the same component interface, allowing easy theme swapping. The monorepo also includes a documentation site, extensive examples, and a test suite covering unit, integration, and browser-based visual regression tests. While primarily a library for embedding editors into web applications, it also incorporates research-like elements such as AI integration, diagram rendering, and collaborative state management.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 5 reusable components found
carbon-design-system/carbon ★ 9544 2289 APPLICATION

This is the IBM Carbon Design System monorepo, a comprehensive UI component library and design token system. It provides production-ready React components (via `@carbon/react`) and Lit-based Web Components (via `@carbon/web-components`), along with SCSS styles, icons, pictograms, themes, typography, layout, and motion design tokens. The repository also includes a CLI tool for scaffolding and bundling (`@carbon/cli`), an upgrade utility with jscodeshift codemods for automated version migrations (`@carbon/upgrade`), and a set of shared configurations (ESLint, stylelint, prettier, Jest). The architecture is a multi-package monorepo managed with Yarn workspaces and Lerna, with dedicated build pipelines for icons (via `@carbon/icon-build-helpers`) and design tokens (via Style Dictionary). The system is heavily tested with Jest, Playwright for accessibility and end-to-end tests, and includes Figma code-connect files for design-to-code integration.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 6 reusable components found
sockjs/sockjs-client ★ 8506 1271 APPLICATION

SockJS-client is a mature browser/Node JavaScript library that exposes a WebSocket-compatible API (SockJS constructor with onopen/onmessage/onclose, send/close) over a protocol that degrades gracefully across dozens of transports. In production it first tries native WebSockets, then falls back through xhr-streaming, xdr-streaming, eventsource, htmlfile, xhr-polling, xdr-polling, iframe-mediated variants, and jsonp-polling. The connection flow is: validate the URL against the HTML5 WebSocket constructor spec, fetch the server's /info endpoint to measure RTT and capability flags (cookie_needed, websocket support, base_url), compute a dynamic RFC 2988-style retransmission timeout, then walk an ordered transport list with per-transport round-trip timeouts until one opens. Incoming frames are type-prefixed ('o' open, 'h' heartbeat, 'a' batched messages, 'm' message, 'c' close); outgoing messages are JSON-array framed with aggressive Unicode escaping. Architecturally it is a modular CommonJS library bundled with browserify into a UMD global (dist/sockjs.js) plus a newer ESM build (dist/sockjs-esm.js) and handwritten TypeScript declarations. lib/main.js is the core state machine; each transport is split into senders (xhr-cors, xhr-local, xdr, jsonp) and receivers (incremental XHR streaming parser, eventsource, htmlfile, jsonp) composed by shared glue in lib/transport/lib (ajax-based, sender-receiver, buffered-sender, polling). A DOM2-style EventTarget/EventEmitter layer provides addEventListener and on* semantics. Browser versus Node differences are resolved via package.json 'browser' field remapping: faye-websocket <-> native WebSocket, eventsource package <-> global EventSource, Node crypto <-> window.crypto. Because the library must support IE6-9 era browsers, the source is deliberately ES5 with vendored es5-shim pieces. The engineering craftsmanship is genuine: the XHR receiver tracks a persistent buffer offset so streaming readyState=3 chunks are parsed incrementally without re-scanning; lib/utils/escape.js lazily unrolls a 65,536-character lookup table only when a message contains characters that browsers mangle on the wire; the JSONP receiver handles IE9's onerror/onreadystatechange race with a loadedOkay flag and the htmlFor/onclick script-execution trick; iframe transports enforce postMessage origin equality and window-ID correlation; unload/pagehide lifecycle hooks clean up sockets and iframes. The Node WebSocket transport propagates real backpressure (send() returning false plus a drain event) and the test suite proves it against an actual faye-websocket socket. Maintenance is low-velocity but real: the last commit is recent, CI runs Node 18/20/22, and the 1.6.x history is dominated by CVE-driven dependency bumps (url-parse, eventsource, minimist, faye-websocket) plus the 1.6.2 ESM/types addition. Drift is medium: the gulp+browserify build chain is dated, .nvmrc pins Node 12 while CI tests 18/20/22, lib/version.js lags package.json (1.6.1 vs 1.6.2), and several TODO comments remain. None of this affects the library's contract; it is still the de-facto SockJS client and remains safe to depend on.

RATING: 8.8/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
chaijs/chai ★ 8266 729 APPLICATION

Chai is a mature, test-framework-agnostic assertion library for Node.js and browsers. It exposes three public interfaces (`expect`, `assert`, and `should`) that share a single `Assertion` core built on a flag-based context system. Rather than an application or service, it ships as a library consumed by test suites and extended via its `use()` plugin API. No data pipelines or persistent storage exist, so there is no data/research hybridity. Architecturally, the library is split into `lib/chai.js` as the public entry point, `lib/chai/assertion.js` as the core class, `lib/chai/core/assertions.js` for built-in assertion definitions, `lib/chai/interface/*` for user-facing styles, and `lib/chai/utils/*` for metaprogramming helpers. The flag system carries state such as negation, deepness, and nested access through chained assertions. The plugin system allows third-party code to add or overwrite properties, methods, and chainable methods, and proxy-based typo detection improves developer experience. The test suite is extensive, covering Node and browser environments through Mocha and web-test-runner. Maintenance is active: the repository uses modern tooling such as esbuild, ESLint flat config, Renovate, and CI across Node and multiple browsers. However, the codebase carries legacy weight, including compatibility workarounds for IE11-era quirks, a very large assertion API, and duplicated tests across the three interfaces. Some deprecated configuration properties (`Assertion.includeStack` and `Assertion.showDiff`) still emit migration warnings. Overall, this is a high-quality, well-tested library with a few areas of intentional but aging compatibility debt.

RATING: 8.8/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
expressjs/morgan ★ 8201 568 APPLICATION

Morgan is a production-grade HTTP request logger middleware for Node.js, used primarily with Express/Connect but compatible with vanilla HTTP servers. It provides predefined log formats (combined, common, dev, short, tiny), custom token definitions, and supports streaming to files, stdout, or any writable stream. The library handles request timing, response status, headers, and remote user authentication, with security-conscious escaping of control characters to prevent log injection attacks. Its architecture is a single middleware factory function that returns a Connect-style middleware, with auxiliary exports for compiling format strings and registering custom tokens. The code is mature, well-tested, and actively maintained, with a recent series of security patches addressing CVEs in log field injection and double-quote breakout.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 2 reusable components found
apocas/dockerode ★ 4950 488 APPLICATION

dockerode is a Node.js library that provides a comprehensive client for the Docker Engine API. It is architected around entity objects (Container, Image, Volume, Network, Service, Secret, Config, Plugin, Node, Task, Exec) that encapsulate the corresponding Docker API endpoints. The library relies on docker-modem for HTTP transport and supports both Unix sockets and TCP connections with TLS. It offers dual callback and Promise-based interfaces for all operations, allowing flexible integration patterns. A standout feature is its sophisticated stream handling. The library passes raw HTTP streams directly to the user, enabling advanced patterns like stream demultiplexing and piping. It supports HTTP connection hijacking for interactive exec and attach sessions, providing true bidirectional stdin/stdout/stderr communication. For modern Docker builds, it includes a BuildKit integration layer (lib/buildkit.js, lib/session.js) that transparently decodes protobuf status messages and handles gRPC session upgrades, demonstrating high craftsmanship in protocol handling. The codebase is actively maintained, with CI testing against Node.js 16 through 22. It has a comprehensive test suite covering containers, images, networks, volumes, services, and swarm operations. While it retains some legacy patterns (extensive use of var, dual callback/Promise APIs), the core architecture is clean, the reusable components are genuinely extractable, and the overall quality is strong. It is a mature, feature-rich SDK that faithfully implements the Docker Remote API.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 5 reusable components found
opal/opal ★ 4929 337 APPLICATION

Opal is a source-to-source compiler that translates Ruby code into JavaScript, enabling Ruby applications to run in web browsers and JavaScript environments. It is written in Ruby and can compile itself, demonstrating a high degree of self-hosting. The compiler parses Ruby source into an AST, applies a series of transformations via rewriters (e.g., block-to-iter, operator assignment expansion, pattern matching), and generates JavaScript through specialized node handlers. A builder orchestrates dependency resolution, caching, dead code elimination, and output generation, supporting multiple schedulers (sequential, threaded, prefork) for parallel compilation. The runtime includes a comprehensive core library (corelib) and standard library (stdlib) implemented in JavaScript, covering classes, modules, enumerables, I/O, encoding, math, and more. Opal integrates with web frameworks like Rails and Sinatra, provides a CLI, REPL, and supports multiple JavaScript runtimes (Node.js, Deno, Bun, QuickJS, GJS, browsers via CDP). The project is actively maintained with a large test suite, including a submodule of the official Ruby spec suite, though many spec failures are tracked in filter files indicating ongoing compatibility work.

RATING: 8.8/10 MAINT: active DRIFT: medium
▸ 7 reusable components found
rafi/vim-config ★ 1978 451 APPLICATION

rafi/vim-config is a Neovim configuration distribution (dotfiles-style) built on top of the LazyVim framework and managed by lazy.nvim. It transforms vanilla Neovim into a full IDE: lazy-loaded plugins provide LSP via nvim-lspconfig + mason.nvim, completion via blink.cmp (or nvim-cmp as an extra), telescope/snacks pickers, git workflows (gitsigns, diffview, neogit, blame), treesitter syntax, and a heavily customized lualine statusline. The runtime entry point is init.lua → lua/rafi/config/lazy.lua, which bootstraps lazy.nvim, imports the LazyVim framework plus ~15 core plugin-spec modules under lua/rafi/plugins/, and layers custom options, keymaps, and autocommands on top of LazyVim defaults via targeted User autocmds. An 'extras' system (registered in lua/rafi/config/init.lua) exposes ~50 opt-in plugin specs — colorschemes, language packs, org-mode tools, UI widgets — toggleable via :LazyExtras, making the distribution both opinionated and modular for fork-and-extend use. The codebase is idiomatic Lua organized into config/, plugins/, and util/ namespaces. It makes sophisticated use of lazy.nvim's spec merging (optional = true, opts = function(_, opts) patterns), a metatable-driven util facade (lua/rafi/util/init.lua) that lazily loads submodules, and recent Neovim APIs (vim.diagnostic.jump, nvim 0.11 features, tree-sitter-manager instead of the deprecated nvim-treesitter ensure_installed). Highlights for reuse include a small completion/snippet helper that abstracts LuaSnip vs native vim.snippet, color-theory utilities, a floating preview helper, and filetype plugins with proper undo_ftplugin hygiene. Documentation is extensive but partially stale: the README references paths that no longer exist in the tree (e.g. lua/rafi/plugins/lsp/keymaps.lua, lua/rafi/util/contextmenu.lua), so the code is the reliable source of truth. Dependencies: Neovim ≥ 0.11.2, git, lazy.nvim, LazyVim, and roughly 80 third-party Neovim plugins pinned via lazy-lock.json. Optional external CLIs (rg, fd, fzf, bat, zoxide, lazygit) improve picker and git behavior but degrade gracefully. This is not a data repo; it contains no pipelines, notebooks, or datasets. It is an application-distribution-style repo: a carefully engineered editor config demonstrating mature Neovim plugin-spec and Lua patterns.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 4 reusable components found
protectwise/troika ★ 1969 159 APPLICATION

Troika is a monorepo for a collection of JavaScript libraries focused on building interactive 3D/2D data visualizations and immersive WebXR experiences using Three.js. The core framework (troika-core) provides a declarative facade system with lifecycle hooks, scene descriptors, event handling, and transitions, enabling developers to describe complex scenes with simple property setters. Higher-level packages (troika-3d, troika-3d-ui, troika-xr) extend this with 3D objects, flexbox-based UI blocks, and XR controller/teleport support. Standalone utilities like troika-three-text and troika-three-utils offer high-quality SDF text rendering and generic shader derivation, while troika-worker-utils offloads heavy computation (e.g., font parsing, layout) to web workers. The repository also includes three-instanced-uniforms-mesh for per-instance uniforms, troika-animation for tweening, and a bespoke flex layout engine built on Yoga. Though primarily an application framework, several packages are reusable libraries for any Three.js project, and the examples showcase data-driven scenes (e.g., globe connections, city grids, animated curves). Architecture is modular (monorepo with Lerna) with peer dependencies on Three.js and optional React integration.

RATING: 8.8/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
microsoft/vscode-eslint ★ 1952 384 APPLICATION

This repository implements the official VS Code ESLint extension, which integrates ESLint into the editor via the Language Server Protocol (LSP). The extension is structured as a client-server architecture: the client (`client/`) handles VS Code activation, settings, and UI interactions, while the server (`server/`) runs the actual ESLint validation, computes diagnostics, code actions, and formatting. The shared module (`$shared/`) defines protocol messages and settings types used by both sides. The system dynamically loads the ESLint library from the user's workspace and supports both legacy ESLintrc and modern flat config formats. It provides real-time linting on type or save, auto-fix on save, formatting, rule customization, bulk suppression, and workspace-level task integration. The codebase is well-engineered with clean abstractions for settings resolution, module loading, error handling, and diff computation. It includes standalone reusable components such as an LCS diff algorithm, a linked map with LRU cache, and path normalization utilities.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 4 reusable components found
rakudo/rakudo ★ 1896 387 APPLICATION

Rakudo is the primary, production-ready compiler for the Raku programming language (formerly Perl 6). It implements the full Raku specification across three virtual machine backends: MoarVM (primary), JVM, and JavaScript. The compiler translates Raku source code through a pipeline of grammar parsing, AST construction (with both a legacy QAST-based frontend and a modern RakuAST frontend under development), semantic analysis, optimization, and code generation. At its core lies a meta-object protocol (6model) composed of reusable, mixin-based roles that define the semantics of classes, roles, grammars, enums, and other type system constructs. The architecture is modular: the compiler frontend (`src/Perl6/` or `src/Raku/ast/`), the runtime / setting library (`src/core.c/`, `src/core.e/`), the meta-model (`src/Perl6/Metamodel/`), and backend-specific modules (`src/vm/moar/`, `src/vm/jvm/`, `src/vm/js/`). Key entry points include the MoarVM C runner (`src/vm/moar/runner/main.c`), the main NQP entry (`src/main.nqp`), and the module loading chain (`CompUnit::Repository` hierarchy). The language supports multiple revisions (6.c, 6.d, 6.e.PREVIEW) gated by lexically scoped pragmas. Rakudo is not a data research project; it is a compiler/runtime for general-purpose programming. It exposes no data pipelines, analysis frameworks, or scientific computing abstractions beyond what the Raku language itself offers. The codebase is actively maintained with monthly releases, though the JVM backend has known issues and the transition to the RakuAST frontend is ongoing, introducing temporary dual-frontend complexity.

RATING: 8.8/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
generaltranslation/gt ★ 1062 40 APPLICATION

This is a monorepo for General Translation (GT), a comprehensive internationalization (i18n) and localization (l10n) platform. It provides runtime libraries for React, Next.js, Vue, React Native, Node.js, and Python frameworks, enabling developers to translate entire React components—not just strings—using a simple `<T>` wrapper. The platform includes a CLI for extracting translatable strings from source code, uploading them to a translation service, and downloading completed translations. A Babel/SWC compiler injects translation hashes at build time, and a Sanity CMS plugin manages document-level translations. The architecture is a multi-package monorepo with shared core types, a compiler pipeline, framework-specific adapters, and a cloud API client. The codebase demonstrates high craftsmanship with clean abstractions like condition stores, singleton caches, batch processing utilities, and a step-based workflow pattern. It is actively maintained with extensive test coverage and modern tooling (pnpm, Turborepo, TypeScript, Vitest).

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 9 reusable components found
ThatOpen/engine_web-ifc ★ 1044 288 APPLICATION

This is a software library for parsing and processing IFC (Industry Foundation Classes) BIM files, primarily designed for web environments. It consists of a C++ core that reads IFC STEP files, resolves geometry (including extrusions, sweeps, Boolean CSG operations, and advanced curves like B-splines and clothoids), and generates triangulated meshes. The C++ code is compiled to WebAssembly via Emscripten, and a TypeScript API (IfcAPI) exposes all functionality to JavaScript applications in both browser and Node.js. The library supports multiple IFC schema versions (IFC2X3, IFC4, IFC4X3) and includes a schema generator that produces C++ and TypeScript type definitions from EXPRESS schema files. The architecture is a classic native-to-web bridge: the C++ library handles all heavy geometry and parsing, while the TypeScript layer provides a clean interface for loading models, streaming meshes, reading/writing properties, and creating new geometry. Key entry points include the IfcAPI class (open/close models, load geometry, save models), the C++ IfcGeometryProcessor and IfcGeometryLoader for mesh generation, and the IfcLoader for token-based IFC parsing. External dependencies include GLM (math), spdlog (logging), mapbox/earcut (triangulation), and CDT (constrained Delaunay triangulation). A comprehensive test suite using real IFC files and regression hash checks ensures geometry stability across versions. The library is production-ready but shows some technical drift: pinned dependency commits, large monolithic source files, and generated schema headers that must be manually regenerated. It remains actively maintained with CI/CD pipelines, issue triage, and regular releases (v0.0.78).

RATING: 8.8/10 MAINT: maintained DRIFT: medium
▸ 2 reusable components found
nuxt-modules/device ★ 1005 54 APPLICATION

This is a Nuxt module for device detection that provides a reactive `$device` object and `useDevice()` composable. It determines device type (mobile, tablet, desktop), operating system (iOS, Android, Windows, macOS, Linux), browser (Chrome, Firefox, Edge, Safari, Samsung), and crawler status by parsing the User-Agent header and/or CDN-provided headers (Amazon CloudFront, Cloudflare). The core detection logic is encapsulated in `src/runtime/generateFlags.ts`, which is a standalone, well-tested function. The module is built for Nuxt 3+ (ESM-only) and uses `crawler-user-agents` for crawler detection with a build-time generated regex for performance. The codebase is small, focused, and demonstrates good engineering practices with clean separation of concerns, comprehensive tests, and proper use of Nuxt module APIs.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 1 reusable components found
indexeddbshim/IndexedDBShim ★ 980 191 APPLICATION

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.

RATING: 8.8/10 MAINT: maintained DRIFT: low
▸ 4 reusable components found
$ loading more...
$ submit: