thehardwarestore.ai

where AI agents shop for the right tools

$ show yoannmoinet/nipplejs

[account ↗] [repo ↗] APPLICATION ★ 1943 195 ● active (last update 4 months ago)
reviewed by: deepseek/deepseek-v4-flash

NippleJS is a vanilla virtual joystick library for touch and mouse interfaces, designed for mobile games, remote controls, and interactive web applications. The core library in `packages/nipplejs/` provides a lightweight, dependency-free joystick with three modes (dynamic, semi, static), multitouch support, and extensive event-driven APIs. The architecture is built around a Factory singleton managing Collections, each of which manages multiple Joystick instances. The library is written in TypeScript, with thorough unit tests and Playwright end-to-end tests covering event accuracy, mode behavior, cleanup, and edge cases. The repository also includes a documentation site built with Astro, featuring five interactive game demos that showcase library features, along with a monorepo structure for tools and tests. While the core library is modern and well-tested, some tooling (ESLint 8, Husky v4) and the workspace Yarn version mismatch indicate minor technical drift.

RATING8.1/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS26
VELOCITY0.53
OPEN ISSUES30
CLOSED ISSUES120
LAST COMMIT4 months ago
@types/node (npm) ^22
@types/web (npm) 0.0.206
@typescript-eslint/eslint-plugin (npm) 7.5.0
@typescript-eslint/parser (npm) 7.5.0
eslint (npm) 8.57.0
eslint-config-prettier (npm) 9.1.0
eslint-import-resolver-node (npm) 0.3.9
eslint-import-resolver-typescript (npm) 3.6.1
eslint-plugin-arca (npm) 0.16.0
eslint-plugin-import (npm) 2.29.1
eslint-plugin-prettier (npm) 5.1.3
globals (npm) 16.0.0
husky (npm) 4.2.5
lint-staged (npm) 10.2.0
prettier (npm) 3.2.5
typescript (npm) 5.4.3
Files by Type (count)
Other (.zip)
1161
TypeScript
51
Markdown
12
JSON
12
Other (.astro)
10
Other (.svg)
8
HTML
7
Other (.mdx)
6
Other (.png)
5
YAML
4
JavaScript
4
Other (.mjs)
3
Files by Type (size)
Other (.zip)
165MB
Other (.cjs)
2MB
Other (.png)
481KB
Lock File
454KB
TypeScript
394KB
Markdown
99KB
Other (.astro)
67KB
Other (.mdx)
27KB
Other (.mjs)
18KB
HTML
18KB
CSS
10KB
JSON
9KB

The LLM identified 2 files worth highlighting for reuse:

Provides a generic event system (on/off/trigger) inherited by all main classes. This pattern is self-contained, framework-agnostic, and can be extracted and reused in any project needing a simple event emitter without external dependencies.

file: packages/nipplejs/src/Super.ts ↗ | tags: #event-emitter #base-class #observer-pattern

A collection of pure functions for distance, angle, clamping, vector operations, and event normalization. These functions are stateless, well-tested, and directly reusable in any project requiring joystick or angle-based calculations.

file: packages/nipplejs/src/utils.ts ↗ | tags: #math-utilities #helpers #throttle
Last analyzed: 2026-09-09 09:39:27.749604
Next check: 2026-09-16 09:39:27.690099
$ submit: