|
199 | 199 | (do |
200 | 200 | (set! load-queue #js []) |
201 | 201 | (js/goog.writeScriptTag__ src opt_sourceText))))) |
| 202 | + ;; In the latest Closure library implementation, there is no goog.writeScriptTag_, |
| 203 | + ;; to monkey-patch. The behavior of interest is instead in goog.Dependency.prototype.load, |
| 204 | + ;; which first checks and uses CLOSURE_IMPORT_SCRIPT if defined. So we hook our desired |
| 205 | + ;; behavior here. |
| 206 | + (when goog/debugLoader_ |
| 207 | + (set! js/CLOSURE_IMPORT_SCRIPT (.-writeScriptTag_ js/goog))) |
202 | 208 | ;; we must reuse Closure library dev time dependency management, under namespace |
203 | 209 | ;; reload scenarios we simply delete entries from the correct private locations |
204 | 210 | (set! (.-require js/goog) |
|
207 | 213 | (set! (.-cljsReloadAll_ js/goog) true)) |
208 | 214 | (let [reload? (or reload (.-cljsReloadAll__ js/goog))] |
209 | 215 | (when reload? |
210 | | - (let [path (gobj/get js/goog.dependencies_.nameToPath src)] |
211 | | - (gobj/remove js/goog.dependencies_.visited path) |
212 | | - (gobj/remove js/goog.dependencies_.written path) |
213 | | - (gobj/remove js/goog.dependencies_.written |
214 | | - (str js/goog.basePath path)))) |
| 216 | + (if (some? goog/debugLoader_) |
| 217 | + (let [path (.getPathFromDeps_ goog/debugLoader_ name)] |
| 218 | + (gobj/remove (.-written_ goog/debugLoader_) path) |
| 219 | + (gobj/remove (.-written_ goog/debugLoader_) |
| 220 | + (str js/goog.basePath path))) |
| 221 | + (let [path (gobj/get js/goog.dependencies_.nameToPath src)] |
| 222 | + (gobj/remove js/goog.dependencies_.visited path) |
| 223 | + (gobj/remove js/goog.dependencies_.written path) |
| 224 | + (gobj/remove js/goog.dependencies_.written |
| 225 | + (str js/goog.basePath path))))) |
215 | 226 | (let [ret (.require__ js/goog src)] |
216 | 227 | (when (= reload "reload-all") |
217 | 228 | (set! (.-cljsReloadAll_ js/goog) false)) |
|
0 commit comments