|  | 
| 12 | 12 |             [clojure.java.io :as io] | 
| 13 | 13 |             [clojure.string :as string]) | 
| 14 | 14 |   (:import [com.google.javascript.jscomp | 
| 15 |  | -            CompilerOptions SourceFile JsAst CommandLineRunner] | 
|  | 15 | +            CompilerOptions CompilerOptions$Environment SourceFile JsAst CommandLineRunner] | 
| 16 | 16 |            [com.google.javascript.jscomp.parsing Config$JsDocParsing] | 
| 17 | 17 |            [com.google.javascript.rhino | 
| 18 | 18 |             Node Token JSTypeExpression JSDocInfo$Visibility] | 
|  | 
| 23 | 23 | (def ^:dynamic *source-file* nil) | 
| 24 | 24 | (def ^:dynamic *goog-ns* nil) | 
| 25 | 25 | 
 | 
|  | 26 | +(defn default-externs [] | 
|  | 27 | +  (CommandLineRunner/getBuiltinExterns CompilerOptions$Environment/BROWSER)) | 
|  | 28 | + | 
| 26 | 29 | ;; ------------------------------------------------------------------------------ | 
| 27 | 30 | ;; Externs Parsing | 
| 28 | 31 | 
 | 
|  | 
| 207 | 210 |             (.init (list source-file) '() compiler-options)) | 
| 208 | 211 |           js-ast (JsAst. source-file) | 
| 209 | 212 |           ^Node root (.getAstRoot js-ast closure-compiler) | 
|  | 213 | +          ;; TODO: switch to getFirstChild + getNext in the loop | 
| 210 | 214 |           nodes (.children root)] | 
| 211 | 215 |       (loop [nodes (cond-> nodes | 
| 212 | 216 |                      ;; handle goog.modules which won't have top-levels | 
|  | 
| 229 | 233 | 
 | 
| 230 | 234 | (defn externs-map* | 
| 231 | 235 |   ([] | 
| 232 |  | -   (externs-map* (CommandLineRunner/getDefaultExterns))) | 
|  | 236 | + (externs-map* (default-externs))) | 
| 233 | 237 |   ([sources] | 
| 234 | 238 |    (externs-map* sources | 
| 235 | 239 |      '{eval {} | 
|  | 
| 242 | 246 |   ([sources defaults] | 
| 243 | 247 |    (let [sources (if-not (empty? sources) | 
| 244 | 248 |                    sources | 
| 245 |  | -                   (CommandLineRunner/getDefaultExterns))] | 
|  | 249 | +                   (default-externs))] | 
| 246 | 250 |      (reduce | 
| 247 | 251 |        (fn [externs externs-file] | 
| 248 | 252 |          (util/map-merge | 
|  | 
| 376 | 380 |     (fn [s] | 
| 377 | 381 |       (let [m (-> s parse-externs index-externs)] | 
| 378 | 382 |         (get-in m '[Window prototype console]))) | 
| 379 |  | -    (CommandLineRunner/getDefaultExterns)) | 
|  | 383 | +    (default-externs)) | 
| 380 | 384 | 
 | 
| 381 | 385 |   (-> | 
| 382 | 386 |     (filter | 
| 383 | 387 |       (fn [s] | 
| 384 | 388 |         (= "externs.zip//webkit_dom.js" (.getName s))) | 
| 385 |  | -      (CommandLineRunner/getDefaultExterns)) | 
|  | 389 | +      (default-externs)) | 
| 386 | 390 |     first parse-externs index-externs | 
| 387 | 391 |     (find 'console) first meta) | 
| 388 | 392 | 
 | 
| 389 | 393 |   (-> | 
| 390 | 394 |     (filter | 
| 391 | 395 |       (fn [s] | 
| 392 | 396 |         (= "externs.zip//webkit_dom.js" (.getName s))) | 
| 393 |  | -      (CommandLineRunner/getDefaultExterns)) | 
|  | 397 | +      (default-externs)) | 
| 394 | 398 |     first parse-externs index-externs | 
| 395 | 399 |     (get-in '[Console prototype]) | 
| 396 | 400 |     (find 'log) first meta) | 
|  | 
0 commit comments