dev / templates / app-cljs-rooms / client / deps.edn
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{;; Exact pins — the Closure compiler version rides on these two (the same
 ;; known-good pair as the kits and game1); half of the deterministic-build
 ;; story (dev/docs/CLJS.md).
 ;;
 ;; Relative paths only — never :local/root, never an absolute path: the idpat
 ;; publish gate scans every decompressed git object for local path fragments.
 ;;
 ;; ardegazu-rooms-kit carries the shared rooms core — ardegazu.rooms.js and
 ;; ardegazu.rooms.lib.{access,crypto,descriptor,encryption,log,net,
 ;; orbit-identity,protocol,turn}. This app does NOT vendor it: it compiles the
 ;; kit's own sources off the classpath, which is what the second :paths entry
 ;; below is for. The sha pin in package.json stays the ONE cross-repo
 ;; dependency mechanism (dev/docs/CLJS.md) — one bump path, one lockfile,
 ;; `ardz kit-release` unchanged; this entry only points at what the pin already
 ;; installed. Require those namespaces under their real ardegazu.rooms.* names:
 ;; there is no rename and no copy, so a fix in the kit reaches you on the next
 ;; sha bump and there is nothing to keep in sync.
 ;;
 ;; What stays app-local is what the kit has no counterpart for: lib/mailbox
 ;; (offline delivery), lib/selftest and stores.cljs (the browser IndexedDB store
 ;; opener — lib/log's open-helia deliberately names no store package, so each
 ;; host supplies its own). Your own LogOp union goes in lib/protocol.cljs.
 ;;
 ;; ardegazu-id-kit is deliberately NOT on this classpath: the rooms-kit sources
 ;; import it as the npm package ("ardegazu-id-kit"), which resolves to its
 ;; compiled dist, and that import cannot be redirected to a classpath copy.
 ;; Adding id-kit's src here too would put TWO Identity classes in one process —
 ;; instanceof would not hold across them. rooms-kit pins the same id-kit sha
 ;; this app does, so npm hoists exactly one copy.
 ;; promesa is the ONE async idiom, and the vendored lib/mailbox.cljs requires
 ;; it — so it is not optional for a rooms app, it is what makes the :app build
 ;; compile at all. Exact pin for the same reason as the two above: two cold
 ;; builds must be byte-identical or the IPFS/IPNS release flow loses its
 ;; determinism. Its only dependency is org.clojure/clojure, so it drags nothing
 ;; else onto this classpath. Know before you touch it: promesa's ClojureScript
 ;; runtime is NOT js/Promise — it ships its own PromiseImpl, which is thenable
 ;; and assimilated by native code but is not `instanceof Promise`, and an
 ;; unhandled rejection on one does not fire window.onunhandledrejection. End
 ;; every promesa chain in a catch of its own.
 :paths ["src" "node_modules/ardegazu-rooms-kit/src"]
 :deps {org.clojure/clojurescript {:mvn/version "1.12.134"}
        thheller/shadow-cljs {:mvn/version "3.3.6"}
        funcool/promesa {:mvn/version "12.0.1"}}
 :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"]}}}

static mirror of HEAD · about · clone: git clone https://git.ardegazu.ro/dev.git