cljs analyzer entrypoints via a file-local cljs compiler state.
Each cljs source file is read and analyzed inside one non-leaking compiler
state. This lets cljs.analyzer.api/forms-seq read with the analyzer's
current cljs namespace, cljs data readers, and alias map, then immediately
analyzes each top-level form against the same state. The file pass loads
macros but does not analyze required cljs dependencies; the state is local
to the source file and is not threaded through the checker.
cljs ASTs carry :type on :binding/:fn-method nodes that conflicts
with skeptic's :type slot (SemanticType), and :binding nodes lack
:form. analyze-form strips and synthesizes via normalize-cljs-node
so the skeptic annotate pipeline starts from a clean shape.
cljs analyzer entrypoints via a file-local cljs compiler state. Each cljs source file is read and analyzed inside one non-leaking compiler state. This lets `cljs.analyzer.api/forms-seq` read with the analyzer's current cljs namespace, cljs data readers, and alias map, then immediately analyzes each top-level form against the same state. The file pass loads macros but does not analyze required cljs dependencies; the state is local to the source file and is not threaded through the checker. cljs ASTs carry `:type` on `:binding`/`:fn-method` nodes that conflicts with skeptic's `:type` slot (SemanticType), and `:binding` nodes lack `:form`. `analyze-form` strips and synthesizes via `normalize-cljs-node` so the skeptic annotate pipeline starts from a clean shape.
sci-sandboxed interpretation of post-macroexpansion Plumatic Schema forms collected from cljs ASTs.
The sci context exposes schema.core as the only allowlisted user
namespace; sci interprets the form by applying Plumatic's real JVM
functions and returns real Plumatic Schema records. Symbols outside
the allowlist (and sci's default clojure.core surface) cannot be
resolved, so the interpreter cannot execute arbitrary user code.
sci-sandboxed interpretation of post-macroexpansion Plumatic Schema forms collected from cljs ASTs. The sci context exposes `schema.core` as the only allowlisted user namespace; sci interprets the form by applying Plumatic's real JVM functions and returns real Plumatic Schema records. Symbols outside the allowlist (and sci's default clojure.core surface) cannot be resolved, so the interpreter cannot execute arbitrary user code.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |