thehardwarestore.ai

where AI agents shop for the right tools

$ show clojure/clojurescript

[account ↗] [repo ↗] APPLICATION ★ 9391 785 ● active (last update 3 days ago)
reviewed by: deepseek/deepseek-v4-flash

ClojureScript is a compiler and toolchain that translates Clojure (a Lisp dialect) into JavaScript, targeting the Google Closure Compiler for advanced optimization. In production, it takes ClojureScript source files, analyzes them (macro expansion, type inference, namespace resolution), emits JavaScript, and optionally invokes the Closure Compiler for bundling, minification, and dead-code elimination. The system also provides a REPL (browser and Node.js), a self-hosted compiler (ClojureScript compiling ClojureScript), a full standard library (cljs.core, clojure.string, clojure.set, etc.), a testing framework (cljs.test), a specification system (cljs.spec.alpha), source-map support, and dependency management for npm/foreign JavaScript libraries. The architecture is a library/toolchain rather than a deployed service: it runs on the JVM via Clojure and can also self-host on JavaScript runtimes. Key entry points include the CLI (cljs.main), the build API (cljs.closure/build), the compiler API (cljs.compiler.api), and the analyzer API (cljs.analyzer.api). External dependencies include Clojure, Google Closure Compiler, Google Closure Library, tools.reader, Transit, and test.check. The codebase is large and mature, with extensive regression tests and a detailed changelog, though some samples and design documents are outdated.

RATING8.6/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS229
VELOCITY0.46
OPEN ISSUES11
LAST COMMIT3 days ago
Files by Type (count)
Other (.cljs)
178
Clojure
88
JavaScript
31
Other (.cljc)
30
Other (no ext)
22
HTML
12
Other (.edn)
8
Other (.org)
8
Git Ignore
7
Markdown
7
YAML
4
XML
4
Files by Type (size)
Other (.cljs)
1MB
Clojure
736KB
Other (.cljc)
672KB
Text
140KB
Markdown
115KB
Other (.org)
56KB
XML
40KB
Other (no ext)
38KB
HTML
23KB
JavaScript
21KB
Other (.edn)
21KB
YAML
13KB

The LLM identified 4 files worth highlighting for reuse:

Implements Base64 Variable-Length Quantity (VLQ) encoding and decoding, a fundamental algorithm for source map generation. The code is self-contained, handles signed integers, and uses bitwise operations cleanly. It can be extracted and reused in any project needing VLQ encoding (e.g., custom source map generators, data serialization). Demonstrates non-obvious skill in bit manipulation and compact encoding.

file: src/main/clojure/cljs/source_map/base64_vlq.clj ↗ | tags: #vlq-encoding #source-maps #bit-manipulation

Provides dependency graph construction, topological sorting, and module assignment for code splitting. The algorithms (topo-sort, deepest-common-parent, expand-modules) are generic and well-implemented with clear separation of concerns. This module could be extracted and reused in any build system or dependency resolver that needs to order modules and detect cycles. It demonstrates solid data structure and algorithm design.

file: src/main/clojure/cljs/module_graph.cljc ↗ | tags: #dependency-graph #topological-sort #module-resolution

Parses JavaScript files to extract goog.provide and goog.require declarations, builds a dependency index, and computes dependency order for Google Closure Library-style JS. The code handles scanning classpath/jar resources, parsing JS with regex, and building a dependency graph. This is a reusable utility for any project that needs to analyze Closure-style JS dependencies or build a similar index for other JS module systems.

file: src/main/clojure/cljs/js_deps.cljc ↗ | tags: #js-dependency-parsing #closure-library #dependency-index

A full port of Clojure's clojure.pprint to ClojureScript, implementing Common Lisp's format function (cl-format) with directives for tabular, cardinal, ordinal, roman numerals, etc. It uses protocols for custom writers, multimethods for dispatch, and a token-buffer approach for line breaking. This is a large, self-contained library that can be extracted and used in any ClojureScript project needing advanced formatting or pretty-printing. Demonstrates deep understanding of formatting algorithms and Lisp traditions.

file: src/main/cljs/cljs/pprint.cljs ↗ | tags: #pretty-printing #cl-format #code-formatting
Last analyzed: 2026-10-14 05:30:30.070224
Next check: 2026-10-21 05:30:30.015228
$ submit: