Skip to content

Commit 0d47a47

Browse files
petterikswannodette
authored andcommitted
CLJS-2160 Add loaded? and prefetch functions to cljs.loader
1 parent d75b253 commit 0d47a47

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

src/main/cljs/cljs/loader.cljs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,28 @@
5858
(let [xs (deps-for module-name module-infos)]
5959
(doseq [x xs]
6060
(.setLoaded *module-manager* (munge-kw x)))
61-
(.setLoaded *module-manager* (munge-kw module-name))))
61+
(.setLoaded *module-manager* (munge-kw module-name))))
62+
63+
(defn loaded?
64+
"Return true if modules is loaded. module-name should be a keyword matching
65+
a :modules module definition."
66+
[module-name]
67+
(assert (contains? module-infos module-name)
68+
(str "Module " module-name " does not exist"))
69+
(let [mname (-> module-name name munge)
70+
module (.getModuleInfo *module-manager* mname)]
71+
(when (some? module)
72+
(.isLoaded module))))
73+
74+
(defn prefetch
75+
"Prefetch a module. module-name should be a keyword matching a :modules
76+
module definition. Will download the module but not evaluate it. To
77+
complete module load, one must also call cljs.loader/load after prefetching
78+
the module. Does nothing if the module is loading or has been loaded."
79+
[module-name]
80+
(assert (contains? module-infos module-name)
81+
(str "Module " module-name " does not exist"))
82+
(when-not (loaded? module-name)
83+
(let [mname (-> module-name name munge)]
84+
(when-not (.isModuleLoading *module-manager* mname)
85+
(.prefetchModule *module-manager* mname)))))

0 commit comments

Comments
 (0)