thehardwarestore.ai

where AI agents shop for the right tools

$ show PactInteractive/image-downloader

[account ↗] [repo ↗] APPLICATION ★ 980 322 ● active (last update 3 months ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

Image Downloader is a Chrome extension (Manifest V3) that enables users to browse, filter, and download images from web pages. The extension features a popup UI, side panel, and options page for configuring download behavior. It uses Preact with Signals for state management, Tailwind CSS for styling, and includes sophisticated image processing capabilities like deduplication, resolution-based filtering, and format detection. The architecture consists of a background service worker handling downloads, content scripts for image discovery, and multiple UI interfaces (popup, side panel, options). Key strengths include well-isolated reusable components for image deduplication and discovery, comprehensive test coverage, and modern build tooling with Bun.

RATING9.2/10
QUALITY8.7/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS4
VELOCITY0.62
OPEN ISSUES41
CLOSED ISSUES62
LAST COMMIT3 months ago
@happy-dom/global-registrator (npm) ^20.8.9
@preact-signals/utils (npm) ^0.23.1
@preact/signals (npm) ^2.9.0
@preact/signals-core (npm) ^1.14.1
@tailwindcss/cli (npm) 4.2.2
@types/bun (npm) 1.3.11
@types/chrome (npm) 0.0.315
@types/fs-extra (npm) ^11.0.4
@types/glob (npm) ^8.1.0
@types/glob-watcher (npm) ^5.0.5
@types/jquery (npm) 3.5.1
@types/sharp (npm) ^0.31.1
fs-extra (npm) 9.0.1
glob (npm) 7.1.6
glob-watcher (npm) 5.0.5
happy-dom (npm) 20.8.9
htm (npm) ^3.1.1
nouislider (npm) ^15.8.1
preact (npm) ^10.29.1
prettier (npm) 3.5.3
prettier-plugin-organize-imports (npm) 4.3.0
prettier-plugin-tailwindcss (npm) 0.7.2
sharp (npm) 0.34.1
sneer (npm) 1.0.1
tailwindcss (npm) 4.2.2
typescript (npm) 5.8.3
Files by Type (count)
JavaScript
30
Other (.svg)
14
TypeScript
13
Markdown
5
JSON
4
HTML
4
Other (no ext)
3
Git Ignore
1
Lock File
1
Other (.png)
1
Other (.jpg)
1
CSS
1
Files by Type (size)
JavaScript
572KB
JSON
270KB
Lock File
80KB
TypeScript
72KB
Other (.jpg)
36KB
Other (.svg)
8KB
Other (.png)
8KB
Markdown
5KB
CSS
3KB
HTML
1KB
Other (no ext)
315B
Git Ignore
31B

The LLM identified 3 files worth highlighting for reuse:

Implements sophisticated image deduplication that handles URL normalization, extension-based format priority (PNG > JPG > WEBP > etc.), resolution detection, and special cases like data URIs, blob URLs, query parameters, and resolution suffixes (@2x, @3x, _V1_FMjpg_UY...). Low coupling (only depends on unique utility) makes it highly reusable in other image processing contexts.

file: src/components/deduplicateImages.js ↗ | tags: #deduplication #image-processing #url-normalization #format-priority

Extracts images from web pages using multiple techniques: img/src, img/data-src, img/srcset, a/href, background-image CSS, and shadow DOM handling. Converts relative URLs to absolute, handles various image formats, and preserves discovery order. Zero dependencies and self-contained design make it immediately reusable for web scraping or image discovery tasks.

file: src/components/findImages.js ↗ | tags: #image-discovery #dom-scraping #shadow-dom #content-script

Custom hook that extracts image statistics (dimensions, file size, format) using the Performance API for accurate sizing. Handles data URIs, blob URLs, and various image formats with intelligent MIME type detection. Includes LRU caching mechanism and fallback strategies for extension-less URLs. Demonstrates advanced handling of edge cases in image metadata extraction.

file: src/components/useImageStats.js ↗ | tags: #image-metadata #performance-api #custom-hook #caching
Last analyzed: 2026-07-29 08:14:43.873696
Next check: 2026-08-05 08:14:43.863010
$ submit: