From 8c2dfee9805f365d567469dc041acdebac9d290c Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Mon, 16 May 2022 11:52:43 +0200 Subject: [PATCH] wip --- bb.edn | 20 ++++++++++++++++++-- resources/public/cljs/nrepl.cljs | 3 +++ resources/public/dev.html | 2 ++ src/scittle/nrepl.cljs | 21 ++++++++++++--------- 4 files changed, 35 insertions(+), 11 deletions(-) create mode 100644 resources/public/cljs/nrepl.cljs diff --git a/bb.edn b/bb.edn index 1eef13f..7fc1d8d 100644 --- a/bb.edn +++ b/bb.edn @@ -1,4 +1,8 @@ -{:tasks +{:deps {io.github.babashka/sci.nrepl + #_{:local/root "../sci.nrepl"} + {:git/sha "8998f2a4fd25ff02474d7298253e91f059f482b2"}} + + :tasks {:requires ([babashka.fs :as fs] [cheshire.core :as json] [babashka.process :as p :refer [process]]) @@ -8,8 +12,20 @@ (fs/delete-tree ".cpcache") (fs/delete-tree ".shadow-cljs"))} + shadow:watch {:doc "Development build. Starts webserver and watches for changes." + :task (clojure "-M:dev -m shadow.cljs.devtools.cli watch main")} + + browser-nrepl {:doc "Start browser nREPL" + :requires ([sci.nrepl.browser-proxy :as bp]) + :task (do (bp/start-browser-nrepl! {:port 1339}) + (bp/serve! {:port 1340}) + (println "Started browser nREPL on port 1339") + (deref (promise)))} + + -dev {:depends [shadow:watch browser-nrepl]} + dev {:doc "Development build. Starts webserver and watches for changes." - :task (clojure "-M:dev -m shadow.cljs.devtools.cli watch main")} + :task (run '-dev {:parallel true})} prod {:doc "Builds production artifacts." :task (clojure {:extra-env {"SCI_ELIDE_VARS" "true"}} diff --git a/resources/public/cljs/nrepl.cljs b/resources/public/cljs/nrepl.cljs new file mode 100644 index 0000000..c28f9fd --- /dev/null +++ b/resources/public/cljs/nrepl.cljs @@ -0,0 +1,3 @@ +(ns nrepl) + +(+ 1 2 3) diff --git a/resources/public/dev.html b/resources/public/dev.html index a16a0b5..13c9dd6 100644 --- a/resources/public/dev.html +++ b/resources/public/dev.html @@ -3,7 +3,9 @@ + +

Scittle

diff --git a/src/scittle/nrepl.cljs b/src/scittle/nrepl.cljs index a0aa38a..a96fa97 100644 --- a/src/scittle/nrepl.cljs +++ b/src/scittle/nrepl.cljs @@ -5,7 +5,10 @@ [scittle.core :refer [!last-ns eval-string !sci-ctx]])) (defn nrepl-websocket [] - (.-ws_nrepl js/window)) + (when (.-SCITTLE_BROWSER_REPL_PROXY_PORT js/window) + (set! (.-ws_nrepl js/window) + (new js/WebSocket "ws://localhost:1340/_nrepl")) + (.-ws_nrepl js/window))) (defn nrepl-reply [{:keys [id session]} payload] (.send (nrepl-websocket) @@ -30,11 +33,11 @@ :eval (handle-nrepl-eval msg) :complete (nrepl-reply msg (completions (assoc msg :ctx @!sci-ctx))))) -(defn ^:export init-nrepl [] - (let [ws (nrepl-websocket)] - (set! (.-onmessage ws) - (fn [event] - (handle-nrepl-message (edn/read-string (.-data event))))) - (set! (.-onerror ws) - (fn [event] - (js/console.log event))))) +(when-let [ws (nrepl-websocket)] + (set! (.-onmessage ws) + (fn [event] + (prn :event event) + (handle-nrepl-message (edn/read-string (.-data event))))) + (set! (.-onerror ws) + (fn [event] + (js/console.log event))))