peer-kit / shadow-cljs.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
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
;; shadow-cljs build for the committed dist/ — deterministic ESM, node-flavored.
;;
;; :optimizations :simple, per dev/docs/CLJS.md for Node artifacts: it removes
;; the externs-inference risk class entirely, which matters here because the
;; native/optional npm deps (the libdatachannel build behind @libp2p/webrtc,
;; ws, the libp2p family) must never be renamed OR bundled.
;;
;; TWO-STACK LAW (the suite's house rule 11): every npm dep stays an EXTERNAL
;; import (:js-options {:js-provider :import}), so peer-kit's libp2p v3 /
;; node-datachannel 0.33 stack is resolved by the consumer's node_modules and
;; never inlined. deploy/check-dist.sh greps the emitted bundles for rooms-kit,
;; @ipshipyard/node-datachannel and libp2p v2 specifiers and aborts on a hit.
;;
;; DETERMINISM — :parallel-build false is load-bearing, not a tuning knob.
;; The CLJS compiler numbers gensym'd names (a top-level `let` local becomes
;; `proto_20636`, destructuring becomes `map__21682`, protocols become
;; `…$dyn_<N>`) from a JVM-GLOBAL counter. shadow compiles namespaces in
;; parallel by default, so the interleaving — and therefore the numbers — differ
;; between cold builds. That is not merely cosmetic: Closure's variable
;; coalescing then makes DIFFERENT merging decisions (one cold build here had 38
;; such module locals, another 41, with `var x=` collapsing to a bare `x=`), so
;; scripts/normalize-gensyms.mjs cannot repair it — renaming can't undo a
;; structural difference. Serial compilation consumes the counter in a fixed
;; order and five cold builds come out byte-identical.
;; (dev/docs/CLJS.md's gensym normalizer is still run, and still needed for
;; `$dyn` vars; it is necessary but NOT sufficient once a build has this many
;; namespaces — train-kit and the browser kits never hit it because they have no
;; top-level `let` and/or use :advanced, which renames every local away.)
;; Cost: a cold build takes ~45 s instead of ~4 s. check-dist and release do a
;; cold build anyway, so this only slows those.
;;
;; Three modules over a :shared base:
;;   :index     -> dist/index.js      the "." export (the ~50 public names)
;;   :node      -> dist/node.js       the "./node" export
;;   :internals -> dist/internals.js  the deep names v1.3.0's file tree exposed
;; scripts/gen-subpaths.mjs then writes the historical dist/ tree (dist/games/**,
;; dist/core/**, dist/gym/**, dist/node/index.js, …) as thin re-export shims
;; over those three, so every path the TypeScript build published still resolves.
{:deps {:aliases [:dev]}
 :builds
 {:lib
  {:target :esm
   :output-dir "dist"
   :compiler-options {:optimizations :simple
                      :source-map false
                      :parallel-build false}
   :js-options {:js-provider :import}
   :modules
   {:shared {:entries []}

    :index
    {:entries [ardegazu.peer.index]
     :depends-on #{:shared}
     :exports {connect ardegazu.peer.index/connect
               RoomPeer ardegazu.peer.index/RoomPeer
               GAMES ardegazu.peer.index/GAMES
               SIGNAL ardegazu.peer.index/SIGNAL
               DEFAULT_ORIGIN ardegazu.peer.index/DEFAULT-ORIGIN
               newRoomSecret ardegazu.peer.index/new-room-secret
               createNet ardegazu.peer.index/create-net
               installOrigin ardegazu.peer.index/install-origin
               installBrowserGlobals ardegazu.peer.index/install-browser-globals
               loadIdentity ardegazu.peer.index/load-identity
               GameRoom ardegazu.peer.index/GameRoom
               SeanceClient ardegazu.peer.index/SeanceClient
               NeonGridClient ardegazu.peer.index/NeonGridClient
               TesseraClient ardegazu.peer.index/TesseraClient
               LampionClient ardegazu.peer.index/LampionClient
               OdeonClient ardegazu.peer.index/OdeonClient
               ValleyBlocksClient ardegazu.peer.index/ValleyBlocksClient
               Social ardegazu.peer.index/Social
               suiteFriendLink ardegazu.peer.index/suite-friend-link
               buildFriendLink ardegazu.peer.index/build-friend-link
               parseFriendLink ardegazu.peer.index/parse-friend-link
               SUITE_APPS ardegazu.peer.index/SUITE-APPS
               mintRoomUrl ardegazu.peer.index/mint-room-url
               HostDriver ardegazu.peer.index/HostDriver
               SeanceHost ardegazu.peer.index/SeanceHost
               NeonGridHost ardegazu.peer.index/NeonGridHost
               ValleyBlocksHost ardegazu.peer.index/ValleyBlocksHost
               SeanceSim ardegazu.peer.index/SeanceSim
               NeonGridSim ardegazu.peer.index/NeonGridSim
               ValleyBlocksSim ardegazu.peer.index/ValleyBlocksSim
               ValleyBlocksEngine ardegazu.peer.index/ValleyBlocksEngine
               enumeratePlacements ardegazu.peer.index/enumerate-placements
               executePlacement ardegazu.peer.index/execute-placement
               placementStep ardegazu.peer.index/placement-step
               planOf ardegazu.peer.index/plan-of
               boardMetrics ardegazu.peer.index/board-metrics
               dellacherieScore ardegazu.peer.index/dellacherie-score
               stockPick ardegazu.peer.index/stock-pick
               snakeStep ardegazu.peer.index/snake-step
               mulberry32 ardegazu.peer.index/mulberry32
               SeanceGym ardegazu.peer.index/SeanceGym
               NeonGridGym ardegazu.peer.index/NeonGridGym
               ValleyBlocksGym ardegazu.peer.index/ValleyBlocksGym}}

    :node
    {:entries [ardegazu.peer.node.index]
     :depends-on #{:shared :index}
     :exports {installOrigin ardegazu.peer.node.index/install-origin
               installOriginWebSocket ardegazu.peer.node.index/install-origin-web-socket
               installOriginFetch ardegazu.peer.node.index/install-origin-fetch
               loadIdentity ardegazu.peer.node.index/load-identity}}

    :internals
    {:entries [ardegazu.peer.internals]
     :depends-on #{:shared :index}
     :exports {RoomCrypto ardegazu.peer.internals/RoomCrypto
               randomBytes ardegazu.peer.internals/random-bytes
               toB64 ardegazu.peer.internals/to-b64
               fromB64 ardegazu.peer.internals/from-b64
               toB64url ardegazu.peer.internals/to-b64url
               fromB64url ardegazu.peer.internals/from-b64url
               fetchRelayInfo ardegazu.peer.internals/fetch-relay-info
               IceConfig ardegazu.peer.internals/IceConfig
               NetNode ardegazu.peer.internals/NetNode
               PeerManager ardegazu.peer.internals/PeerManager
               selfPeerIds ardegazu.peer.internals/self-peer-ids
               installOriginWebSocket ardegazu.peer.internals/install-origin-web-socket
               installOriginFetch ardegazu.peer.internals/install-origin-fetch
               NO_EMIT ardegazu.peer.internals/NO-EMIT
               CANDLES ardegazu.peer.internals/CANDLES
               REVEAL_MS ardegazu.peer.internals/REVEAL-MS
               walkMs ardegazu.peer.internals/walk-ms
               START_BELL_MS ardegazu.peer.internals/START-BELL-MS
               OVER_LOBBY_MS ardegazu.peer.internals/OVER-LOBBY-MS
               PICK_GRACE_MS ardegazu.peer.internals/PICK-GRACE-MS
               GW ardegazu.peer.internals/GW
               GH ardegazu.peer.internals/GH
               WIN_SCORE ardegazu.peer.internals/WIN-SCORE
               DX ardegazu.peer.internals/DX
               DY ardegazu.peer.internals/DY
               COUNTDOWN_MS ardegazu.peer.internals/COUNTDOWN-MS
               OVER_ROUND_MS ardegazu.peer.internals/OVER-ROUND-MS
               OVER_MATCH_MS ardegazu.peer.internals/OVER-MATCH-MS
               MATCH_LOBBY_MS ardegazu.peer.internals/MATCH-LOBBY-MS
               PIECE_TYPES ardegazu.peer.internals/PIECE-TYPES
               cellsFor ardegazu.peer.internals/cells-for
               kicksFor ardegazu.peer.internals/kicks-for
               Board ardegazu.peer.internals/Board
               Bag ardegazu.peer.internals/Bag
               COLS ardegazu.peer.internals/COLS
               ROWS ardegazu.peer.internals/ROWS
               HIDDEN_ROWS ardegazu.peer.internals/HIDDEN-ROWS
               TOTAL_ROWS ardegazu.peer.internals/TOTAL-ROWS
               LINES_PER_LEVEL ardegazu.peer.internals/LINES-PER-LEVEL
               pointsForLines ardegazu.peer.internals/points-for-lines
               SOFT_DROP_POINTS ardegazu.peer.internals/SOFT-DROP-POINTS
               HARD_DROP_POINTS ardegazu.peer.internals/HARD-DROP-POINTS
               gravitySeconds ardegazu.peer.internals/gravity-seconds
               levelForLines ardegazu.peer.internals/level-for-lines
               snakeInterval ardegazu.peer.internals/snake-interval
               snakeDuration ardegazu.peer.internals/snake-duration
               MAX_PLAYERS ardegazu.peer.internals/MAX-PLAYERS
               STATE_INTERVAL_MS ardegazu.peer.internals/STATE-INTERVAL-MS
               PING_INTERVAL_MS ardegazu.peer.internals/PING-INTERVAL-MS
               serializeGrid ardegazu.peer.internals/serialize-grid
               boardStateOf ardegazu.peer.internals/board-state-of
               ROUND_LOBBY_MS ardegazu.peer.internals/ROUND-LOBBY-MS
               DEFAULT_MODE ardegazu.peer.internals/DEFAULT-MODE
               DEFAULT_TARGET ardegazu.peer.internals/DEFAULT-TARGET}}}}}}

static mirror of HEAD · about · clone: git clone https://git.ardegazu.ro/peer-kit.git