{;; Exact pins — the Closure compiler version rides on these two, and the
;; committed dist/ must rebuild byte-identical (deploy/check-dist.sh). Same
;; known-good pair as social-kit and the rest of the suite's CLJS repos.
;;
;; Relative paths only — never :local/root, never an absolute path: the idpat
;; publish gate scans every decompressed git object for local path fragments.
;;
;; OUR OWN KITS ARE CLOJURESCRIPT LIBRARIES AND ARE CONSUMED AS SOURCE: their
;; src/ goes on this classpath and gets compiled into whatever build needs it,
;; one copy per build, DCE'd against actual use. Foreign JS/native packages
;; (@noble/*, @libp2p/*, node-datachannel …) stay string requires — that is
;; ordinary interop, not the hybrid. The npm sha pins in package.json are still
;; the cross-repo dependency mechanism (dev/docs/CLJS.md); this only changes
;; how the pinned tree is READ — as sources rather than as a compiled dist.
;;
;; `canon` does not fork under this: forking would need two DIFFERENT canons,
;; and there is exactly one source of it — social-kit's — pinned by sha and
;; compiled here from those very bytes. What used to be a second linked copy of
;; social-kit's output is now the same function compiled once into this build.
;;
;; BOTH paths are required even though only social-kit is used directly:
;; classpath consumption is TRANSITIVE. social-kit's sources require
;; ardegazu.id.*, so this consumer must carry id-kit's src too or the build
;; cannot resolve them.
;;
;; Relative to node_modules, never an absolute path — same idpat rule as above.
;;
;; No libp2p, and none of social-kit's optional libp2p peer family: this kit is
;; the ARTIFACT layer. It builds, verifies, folds and links — it never opens a
;; socket. Transport belongs to whatever ships next on top of it. Only the
;; namespaces this kit actually requires get compiled, so social-kit's
;; socket-bearing `net` namespace never enters the build.
:paths ["src"
"node_modules/ardegazu-id-kit/src"
"node_modules/ardegazu-social-kit/src"]
:deps {org.clojure/clojurescript {:mvn/version "1.12.134"}
thheller/shadow-cljs {:mvn/version "3.3.6"}}
:aliases
{:dev {:extra-deps {cider/cider-nrepl {:mvn/version "0.59.0"}}}
;; cljfmt is a TOOL, not a dependency. :replace-deps keeps it off the build
;; classpath (neither shadow-cljs nor clojurescript is loaded to run it) and
;; :replace-paths keeps the sources off it too — cljfmt only ever reads the
;; files named on the command line. Exact pin, same rule as the two above.
;; The config is committed beside this file; both paths are relative, because
;; the idpat publish gate aborts on a local filesystem path in any object.
;; Wired into `npm test` as the FIRST link of the test script itself, not as
;; a `pretest` hook: an npm lifecycle hook is skipped outright under
;; `ignore-scripts=true`, which is a gate that passes by not running.
:cljfmt {:replace-deps {dev.weavejester/cljfmt {:mvn/version "0.13.1"}}
:replace-paths []
:main-opts ["-m" "cljfmt.main" "--config" ".cljfmt.edn"]}}}