thehardwarestore.ai

where AI agents shop for the right tools

── 99282 repos indexed ── | filtered by tag: javascript-library
naptha/tesseract.js ★ 38753 2396 APPLICATION

Tesseract.js is a JavaScript library that brings the Tesseract OCR engine to the browser and Node.js by wrapping a WebAssembly port (tesseract.js-core). It enables optical character recognition (OCR) from images in over 100 languages, supporting multiple output formats (plain text, hOCR, TSV, PDF, JSON blocks, etc.) and pre-processing options like auto-rotation and rectangle cropping. The library's architecture is centered around two abstractions: Workers (each managing a Tesseract instance in a Web Worker or Worker Thread) and Schedulers (managing pools of Workers for parallel job execution). Key entry points are `createWorker` (which handles language loading, core initialization, and provides `recognize`, `detect`, `setParameters`, etc.) and `createScheduler` (which queues jobs among multiple Workers). Images can be provided as URLs, base64 strings, Buffers, File/Blob objects, or DOM elements (browser only). The core flow involves loading the appropriate WebAssembly binary based on SIMD support, downloading and caching language data (via IndexedDB or filesystem), initializing the Tesseract API, running recognition, and dumping results through a clean output abstraction. External dependencies include tesseract.js-core, wasm-feature-detect, idb-keyval, zlibjs, bmp-js, and node-fetch. The codebase is well-structured, modular, and has comprehensive tests (both Node and browser via Karma+Mocha), though some modules (like `createWorker`) mix concerns of worker lifecycle, job management, and message handling in a single file.

RATING: 9.0/10 MAINT: active DRIFT: low
▸ 3 reusable components found
codex-team/editor.js ★ 31970 2248 APPLICATION

Editor.js is a block-style, plugin-based WYSIWYG content editor for the web, developed and maintained by the CodeX team. It outputs clean JSON instead of heavy HTML, making it ideal for modern web applications that need structured content. The editor is built as a TypeScript library with a modular architecture: core modules (BlockManager, Toolbar, InlineToolbar, Saver, Renderer, etc.) communicate via an internal event bus, and all editing capabilities are provided by pluggable tools (Block Tools, Inline Tools, Block Tunes). The library exposes a comprehensive API for programmatic control over blocks, caret, selection, events, sanitization, i18n, and read-only mode. The architecture is centered around a plugin system where tools are external classes with lifecycle hooks (render, save, validate, merge, onPaste) and static configuration (toolbox, sanitize, pasteConfig, conversionConfig). The editor handles paste from various sources, supports cross-block selection, drag-and-drop, keyboard navigation, and mobile responsiveness. It includes a rich set of UI components: a floating toolbar, inline toolbar, block settings popover, and a versatile popover system with search, nested menus, and keyboard navigation via the Flipper component. Editor.js is not a standalone application but a library meant to be embedded into web apps. It is distributed as an npm package (@editorjs/editorjs) with UMD and ESM builds. The repository includes extensive Cypress end-to-end tests, example pages, and detailed documentation for developers. While primarily an application library, it also demonstrates strong data engineering patterns in its sanitization and paste handling, though these are not its primary focus.

RATING: 9.0/10 MAINT: active DRIFT: low
▸ 7 reusable components found
shaka-project/shaka-player ★ 8252 1528 APPLICATION

Shaka Player is a production-grade, client-side JavaScript library for adaptive media streaming in web browsers. It implements the full DASH and HLS manifest parsing pipelines, DRM integration via Encrypted Media Extensions, and a comprehensive plugin system for ad insertion, text display, transmuxing, and device-specific quirks. The architecture is modular with clear separation of concerns: a core Player class orchestrates manifest parsers, streaming engines, ABR algorithms, and UI controls. Key capabilities include offline storage (IndexedDB), CMCD/CMSD metrics reporting, closed captions (CEA-608/708, WebVTT, TTML), and experimental MoQT streaming support. The codebase is heavily tested with over 1,000 unit and integration tests and runs in CI against real browsers and devices (Tizen, Chromecast, Xbox). It is not a data research project; it is a reusable software library designed for embedding in web applications.

RATING: 9.0/10 MAINT: active DRIFT: low
▸ 5 reusable components found
greensock/GSAP ★ 29044 2246 APPLICATION

GSAP (GreenSock Animation Platform) is a mature, high-performance JavaScript animation library designed for creating complex animations in web applications. It features a plugin-based architecture where the core tweening engine is extended by plugins for specific animation types such as CSS, scroll-based motions, SVG morphing, and physics effects. The library is framework-agnostic and supports animation of CSS properties, SVG attributes, canvas objects, and JavaScript objects. The source code reveals a well-structured codebase with clear separation of concerns. Core animation logic resides in gsap-core.js, while utilities (matrix operations, string handling, path parsing, velocity tracking) are isolated in the utils directory. Plugins follow a consistent registration pattern and demonstrate attention to cross-browser compatibility, performance optimization (including requestAnimationFrame usage and tree shaking protection), and modular design. The library is actively maintained with recent updates and extensive TypeScript support.

RATING: 8.9/10 MAINT: active DRIFT: low
▸ 5 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
arianrhodsandlot/nostalgist ★ 986 48 APPLICATION

Nostalgist.js is a TypeScript library that provides a simplified API for running retro console emulators in web browsers using RetroArch compiled via Emscripten. It handles the complex setup of Emscripten modules, virtual file systems, and RetroArch configuration, allowing developers to launch games with minimal code. The library supports a wide range of consoles (NES, SNES, Game Boy, etc.) with sensible defaults for loading cores and ROMs from CDNs, while also allowing custom resolvers. It includes features like save/load states, SRAM management, screenshot capture, and programmatic input control. The codebase is well-structured with strong TypeScript types, comprehensive tests (integration and e2e), and a clean class hierarchy. Notable highlights include a flexible file resolution system that handles various input formats (URLs, Blobs, ArrayBuffers, etc.) and a clever patching mechanism for importing Emscripten modules as ES modules.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 3 reusable components found
lodash/lodash ★ 61278 7187 APPLICATION

lodash is a widely-used JavaScript utility library providing a consistent API for manipulating arrays, objects, strings, numbers, and functions. It offers a monolithic UMD build, per-method modular packages, and a functional programming variant (lodash/fp) with auto-curried iteratee-first data-last methods. The library is feature-complete and actively maintained, though its build tooling ([email protected], [email protected], jscs) is outdated and targets ES5. It is not an application but a reusable library, with entry points in lodash.js and lodash/fp. The codebase demonstrates clean abstractions and extensive internal reuse, but internal modules like the FP conversion engine are tightly coupled.

RATING: 8.7/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
hmpl-language/hmpl ★ 967 118 APPLICATION

HMPL.js is a lightweight JavaScript library for server-oriented HTML templating. It compiles templates with block helpers (e.g., `{{#request ...}}`) into functions that fetch HTML from a server, sanitize it via DOMPurify, and render it into the DOM. The library supports indicators, memoization, intervals, and status binding, and uses JSON5 for expressive attribute parsing. The core is a single TypeScript module (`src/main.ts`) that exports `compile`, `stringify`, `createWarning`, and `createError`. The repository also contains a comprehensive documentation site built with Astro + Starlight (including Vue interactive components) and a Jekyll blog. The codebase is well-tested with Mocha, Sinon, nock, and jsdom, and has CI/CD via GitHub Actions. It is primarily a frontend library but includes robust build and test infrastructure.

RATING: 8.7/10 MAINT: active DRIFT: low
▸ 2 reusable components found
codemirror/codemirror5 ★ 27235 4934 APPLICATION

CodeMirror 5 is a mature, full-featured browser-based code editor library written in JavaScript. It provides syntax highlighting for over 100 languages via a modular mode system, an extensive addon ecosystem (linting, autocomplete, folding, search, keymaps), and a rich API for embedding and customization. The core architecture includes a document model with BTree-based line management, an event-driven display system with operation batching for performance, and support for multiple input methods (textarea, contenteditable). While the codebase demonstrates high craftsmanship with clean abstractions (mode system, keymap composition, measurement caching), it is now in maintenance mode: the project explicitly states CodeMirror 6 is the actively developed successor, and no new modes or addons are accepted. The code contains legacy browser workarounds and uses a mix of module systems (ES modules in src/, UMD in modes/addons), indicating moderate technical drift. Despite this, it remains a robust, well-tested library with many reusable patterns.

RATING: 8.6/10 MAINT: maintained DRIFT: medium
▸ 5 reusable components found
orbitdb/orbitdb ★ 8818 594 APPLICATION

OrbitDB is a serverless, peer-to-peer distributed database library built on IPFS and libp2p. It provides a Merkle-CRDT (conflict-free replicated data type) log as its core primitive, supporting multiple database types like Events (append-only log), Documents (indexed JSON), KeyValue, and KeyValueIndexed. The architecture is modular: it separates storage backends (memory, LevelDB, IPFS blocks, LRU cache), identity management (pluggable providers), access control (static ACL or dynamic ACL stored in a keyvalue database), and encryption (pluggable). The primary entry point is `createOrbitDB()`, which returns an OrbitDB instance that can open databases of any registered type. Data flows involve appending operations to an immutable, signed log of IPLD entries, syncing with remote peers via pubsub-based replication, and handling conflict resolution using Last-Write-Wins. External dependencies include Helia (IPFS), libp2p, LevelDB, and various multiformats libraries. The library is designed for both Node.js and browser environments, with a comprehensive test suite covering unit and integration scenarios.

RATING: 8.6/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
anvaka/panzoom ★ 2005 314 APPLICATION

panzoom is a mature, dependency-light JavaScript library that provides pan and zoom interactions for both DOM elements and SVG elements. The main entry point is index.js, which exposes a createPanZoom() factory that attaches mouse, touch, wheel, and keyboard event handling to a target element, orchestrates transform updates, and emits custom events such as 'pan', 'zoom', and 'transform'. Internally it uses a controller abstraction to render transforms either via CSS transforms for DOM nodes or SVG transform attributes, and it ships prebuilt dist bundles alongside a demo suite and a TypeScript declaration file. It is a library, not a standalone application, with no backend, CLI, or data pipeline components.

RATING: 8.6/10 MAINT: active DRIFT: low
▸ 5 reusable components found
4lejandrito/creepyface ★ 491 21 APPLICATION

Creepyface is a JavaScript library that makes HTML images follow the pointer (mouse/finger/touch) by switching between different angled images. It consists of a core library, React and custom element wrappers, and point provider plugins for dance, firefly, and tilt tracking. The repository also includes a Next.js website that demonstrates the library and allows users to create and share their own creepyfaces. The architecture uses a monorepo with Lerna/Yarn workspaces, featuring a clean separation between the core library logic, UI wrappers, and the demonstration site with its own backend for image processing and storage.

RATING: 8.6/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
Zqysl/TypeFX.js ★ 323 0 APPLICATION

TypeFX.js is a modern typewriter effect library implemented in plain JavaScript (with TypeScript source). It provides a fluent API for simulating typing, deleting, cursor movement, and text selection in DOM elements. The library is designed to be framework-agnostic and can be used in vanilla JavaScript, React, Vue, or any other web environment that supports the DOM. The core of the library is the `TypeFX` class, which manages an internal queue of actions to sequence asynchronous operations. It ensures only one instance per DOM element using a WeakMap and supports chaining of methods like `.type()`, `.wait()`, `.delete()`, etc. The library also allows customization of typing speed, caret appearance, and entrance/exit animations via the Web Animations API. The library is distributed as ES modules, CommonJS, and UMD formats via Rollup, with no runtime dependencies. It includes a comprehensive test suite that uses a custom fake DOM implementation to run tests in Node.js, demonstrating good testing practices for DOM-dependent code.

RATING: 8.6/10 MAINT: maintained DRIFT: low
▸ 1 reusable components found
jmoenig/morphic.js ★ 203 49 APPLICATION

morphic.js is a dependency-free JavaScript library implementing the Squeak/Self-inspired Morphic UI framework on HTML5 Canvas. It provides a tree-structured scene graph of 'Morph' objects, a damage-based incremental rendering loop that repaints only dirty rectangles, a unified event dispatch system (mouse, touch, keyboard, drag-and-drop, external file drop), and a full widget toolkit including menus, sliders, dials, scroll frames, editable text fields, inspectors, color pickers, speech bubbles, and dialog prompts. It also includes a LOGO-style turtle (PenMorph) with a warp optimization for deep recursion. In production it serves as the GUI kernel for Snap!, the block-based programming environment — the heavy multi-touch editing, shape caching, template-dragging, and file-import behaviors in this file exist to support that use case. Architecturally it is a single-file monolith (~11k lines of code plus extensive embedded documentation) using classical prototypal inheritance mixed with modern ES2020+ syntax (const, arrow functions, optional chaining, async/await, Map). There are no imports, no build step, no package manifest, and zero external runtime dependencies — only browser Canvas/DOM APIs. The primary entry point is `new WorldMorph(canvasElement)`, driven by a requestAnimationFrame loop calling `world.doOneCycle()` (see minimal.html, morphic.html, multiple.html, sample.html for working demos). Data flows from browser events into WorldMorph's event listeners, get dispatched through HandMorph to target Morphs, and state changes push damaged rectangles into a 'broken' list that `doOneCycle()` condenses and redraws incrementally. The most reusable assets are the Point/Rectangle/Color value classes (full 2D vector math, rectangle algebra, HSV/HSL conversion), the self-contained retina display patcher for hi-DPI canvases, the generic Animation/easing engine, the PNG metadata embedding utility (iTXt chunk injection with CRC32), and the dirty-rectangle damage-merging renderer. Each of these can be extracted into a standalone project with minimal modification and demonstrates non-obvious craftsmanship. The codebase is remarkably well-commented with a full programming guide, inheritance hierarchy, and migration notes embedded in the source itself. Caveats: there are no automated tests, no CI, no npm packaging, heavy pollution of the global namespace, and an intentional `eval`-based inspector for developer mode. The AGPL-3.0 license and single-file distribution model reflect its Smalltalk 'kernel image' philosophy rather than modern modular library conventions. It is maintained but commit cadence is sparse (version string 2026-May-11, last push 2026-Sep-01), and 32 open issues show no obvious triage activity.

RATING: 8.6/10 MAINT: maintained DRIFT: low
▸ 5 reusable components found
ajaxorg/ace ★ 27132 5258 APPLICATION

Ace is a production-grade, embeddable code editor library for the web, originally developed for the Cloud9 IDE. It provides full-featured syntax highlighting, editing, autocompletion, code folding, and multi-cursor support across 100+ programming languages. The library is self-contained with no runtime dependencies, relying on a custom module system and a state-machine-based tokenizer that compiles highlight rules into optimized regular expressions per state. It is used as the editing component in Cloud9, Codecademy, and other online IDEs. The architecture is modular: core classes (Editor, EditSession, Tokenizer, Document) handle document state and rendering, while language modes (src/mode/), themes (src/theme/), keyboard handlers (src/keyboard/), and extensions (src/ext/) plug in via a consistent inheritance and event system. Key entry points include src/ace.js (main export), src/editor.js, and src/edit_session.js. Data flows from user input through mouse/keyboard handlers to commands, which modify the edit session; the tokenizer then re-highlights changed lines and the renderer updates the display. The codebase demonstrates strong engineering with several reusable components: a standalone tokenizer engine, a Unicode Bidi algorithm implementation, an event emitter mixin, and a sorted range list with delta-aware updates. Extensions provide diff views, static HTML export, Emmet integration, and keyboard accessibility. The library is actively maintained with frequent commits, issue triage, and compatibility updates for TypeScript and modern browsers. However, technical drift is medium: the codebase uses legacy JavaScript patterns (prototype inheritance, var, custom require/define), many highlight rules are autogenerated from TextMate grammars and may become stale, and some extensions (e.g., beautify) are explicitly marked as outdated. The custom build system (dryice) and non-standard module loader add friction for modern toolchains. Despite this, the core editor remains robust and widely adopted.

RATING: 8.5/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
usablica/intro.js ★ 23452 2544 APPLICATION

Intro.js is a mature, client-side JavaScript library for creating step-by-step product tours and persistent hints on web pages. It operates entirely in the browser with no server dependencies, using a custom reactive DOM library (similar to VanJS) for state-driven UI rendering. The library exposes two main products: `introJs.tour()` for guided walkthroughs and `introJs.hint()` for annotation tooltips. Tours support dynamic step fetching, keyboard navigation, scroll-to behavior, callback hooks, and a 'don't show again' cookie feature. Hints auto-refresh on scroll/resize and can be triggered via data attributes or programmatic options. The codebase is modular, with separate packages for tour, hint, tooltip, and DOM utilities, and includes comprehensive unit tests (Jest) and visual regression tests (Cypress). While the core architecture is clean and well-tested, the library carries some legacy API surface (deprecated `introJs()` function) and outdated example integrations (Bootstrap v3, jQuery), indicating moderate technical drift. It is actively maintained with recent commits and GitHub Actions CI/CD.

RATING: 8.5/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
themesberg/flowbite ★ 9367 867 APPLICATION

Flowbite is a production-grade UI component library built on top of Tailwind CSS. It provides a comprehensive set of interactive, accessible components (modals, dropdowns, tooltips, carousels, datepickers, etc.) that are initialized via HTML data attributes and backed by a lightweight JavaScript runtime. The library is distributed as an npm package with multiple entry points (ESM, CJS, UMD, Turbo, Phoenix) and includes a Tailwind CSS plugin that injects base styles for forms, tooltips, charts, and third-party integrations. The repository also hosts an extensive Hugo-based documentation site with live examples, framework integration guides (React, Vue, Angular, Laravel, Django, etc.), and a theming system with five pre-built themes (default, minimal, enterprise, playful, mono). The architecture follows a consistent component pattern: each component is a class with `init()`, `destroy()`, and static `init*()` methods that scan the DOM for data attributes. A global `Instances` singleton manages all component instances by ID, supporting override and random ID generation. The library uses Popper.js for positioning dropdowns, tooltips, and popovers, and relies on an external `flowbite-datepicker` for datepicker functionality. The Tailwind plugin (`plugin.js`) uses `plugin.withOptions` to conditionally add base styles and component classes, and the CSS theming system leverages CSS custom properties for colors, fonts, radii, and shadows with dark mode support. While the library is well-structured and actively maintained, its large surface area (30+ components) and extensive documentation create maintenance overhead. The integration guides for 20+ frameworks are prone to drift, and the inline SVG icons and hardcoded Tailwind classes in documentation examples require careful version alignment. The codebase demonstrates solid engineering practices with TypeScript, Webpack builds, and consistent patterns, making it a reliable choice for projects needing a Tailwind CSS component library with JavaScript interactivity.

RATING: 8.5/10 MAINT: active DRIFT: low
▸ 3 reusable components found
zellwk/zl-fetch ★ 296 32 APPLICATION

zlFetch is a lightweight JavaScript library that wraps the native Fetch API with quality-of-life improvements. It automatically parses response bodies based on `Content-Type` (JSON, text, form-urlencoded, NDJSON, Blob), provides promise-based error handling that rejects on 4xx/5xx status codes, supports request aborting, and includes shorthand methods for GET, POST, PUT, PATCH, DELETE. The library also offers streaming capabilities (SSE, NDJSON, chunked transfer), an EventSource wrapper for server-sent events, query string helpers, authorization header helpers, and a `createZlFetch` factory for pre-configured instances. The code is modular, well-typed with JSDoc, and thoroughly tested across browser and Node.js environments using vitest.

RATING: 8.5/10 MAINT: active DRIFT: low
▸ 2 reusable components found
SortableJS/Sortable ★ 31186 3715 APPLICATION

SortableJS is a mature, standalone JavaScript library for creating reorderable drag-and-drop lists and grids. It supports mouse, touch, and pointer events across modern browsers and legacy browsers like IE11 and Edge. The library is designed as a modular system with a core (Sortable class) and optional plugins (AutoScroll, Swap, MultiDrag, OnSpill) that can be mounted selectively. It exports UMD and ESM builds, integrates with major frameworks (React, Vue, Angular) via separate adapter packages, and provides a rich API with options for grouping, animation, handles, filtering, and custom events. The codebase demonstrates a well-thought-out plugin architecture, event dispatching, and animation state management, though some build tooling and browser workarounds show its age.

RATING: 8.4/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
eKoopmans/html2pdf.js ★ 4923 1720 APPLICATION

html2pdf.js is a client-side JavaScript library that converts HTML elements or strings into PDF documents entirely in the browser. It works by rendering the HTML to a canvas using html2canvas, then embedding that canvas image into a PDF generated with jsPDF. The library provides a Promise-based Worker API that allows chaining steps (from, toContainer, toCanvas, toPdf, save) and supports configuration of margins, page size, image quality, page breaks, and hyperlinks. It includes plugins for automatic page-break handling (CSS-based, legacy class-based, or avoid-all mode) and hyperlink extraction from anchor tags. The codebase is well-structured with a modular design, including a sophisticated DOM cloning utility (snapdom) that handles shadow DOM, canvas elements, iframes, and form controls. The project is actively maintained with CI/CD, semantic versioning, and visual diff testing.

RATING: 8.4/10 MAINT: active DRIFT: low
▸ 2 reusable components found
$ loading more...
$ submit: