When using cljs.js/require, the cljs.js/loaded atom is updated reflecting loaded namespaces. When loading a cached macro namespace, the non-macros namespace name is added to the loaded set.
Minimal repo, with script/noderepljs:
$ script/noderepljs
ClojureScript Node.js REPL server listening on 52507
To quit, type: :cljs/quit
cljs.user=> (require '[cljs.js :as cljs])
nil
cljs.user=> ;; Load a macros namespace
cljs.user=> (cljs/require
{}
'foo.core
:reload-all
{:macros-ns true
:load (fn [_ cb] (cb {:lang :clj
:source "(ns foo.core)"}))
:eval (constantly nil)}
(fn [_]
(prn @cljs/*loaded*)))
#{foo.core$macros}
nil
cljs.user=> ;; Do the same again, but return cached js
cljs.user=> (cljs/require
{}
'foo.core
:reload-all
{:macros-ns true
:load (fn [_ cb] (cb {:lang :js
:source ""}))
:eval (constantly nil)}
(fn [_]
(prn @cljs/*loaded*)))
#{foo.core}
nil
cljs.user=> ;; Note that *loaded* now has #{foo.core}
When using
cljs.js/require
, thecljs.js/
loaded atom is updated reflecting loaded namespaces. When loading a cached macro namespace, the non-macros namespace name is added to the loaded set.Minimal repo, with
script/noderepljs
:$ script/noderepljs ClojureScript Node.js REPL server listening on 52507 To quit, type: :cljs/quit cljs.user=> (require '[cljs.js :as cljs]) nil cljs.user=> ;; Load a macros namespace cljs.user=> (cljs/require {} 'foo.core :reload-all {:macros-ns true :load (fn [_ cb] (cb {:lang :clj :source "(ns foo.core)"})) :eval (constantly nil)} (fn [_] (prn @cljs/*loaded*))) #{foo.core$macros} nil cljs.user=> ;; Do the same again, but return cached js cljs.user=> (cljs/require {} 'foo.core :reload-all {:macros-ns true :load (fn [_ cb] (cb {:lang :js :source ""})) :eval (constantly nil)} (fn [_] (prn @cljs/*loaded*))) #{foo.core} nil cljs.user=> ;; Note that *loaded* now has #{foo.core}