|
300 | 300 | (when (contains? current-ns expr)
|
301 | 301 | (str (when *repl*
|
302 | 302 | (str "globalThis." (munge *cljs-ns*) ".")) (munged-name expr)))
|
303 |
| - (let [renamed (:rename current-ns) |
304 |
| - expr (get renamed expr expr)] |
305 |
| - (or |
306 |
| - (when (contains? (:refers current-ns) expr) |
307 |
| - (str (when *repl* |
308 |
| - (str "globalThis." (munge *cljs-ns*) ".")) |
309 |
| - (munged-name expr))) |
310 |
| - (some-> (maybe-core-var expr env) munge) |
311 |
| - (when (let [alias (get (:aliases current-ns) expr)] |
312 |
| - alias) |
313 |
| - (str (when *repl* |
314 |
| - (str "globalThis." (munge *cljs-ns*) ".")) |
315 |
| - (munged-name expr))))) |
| 303 | + (when (contains? (:refers current-ns) expr) |
| 304 | + (str (when *repl* |
| 305 | + (str "globalThis." (munge *cljs-ns*) ".")) |
| 306 | + (munged-name expr))) |
| 307 | + (some-> (maybe-core-var expr env) munge) |
| 308 | + (when (let [alias (get (:aliases current-ns) expr)] |
| 309 | + alias) |
| 310 | + (str (when *repl* |
| 311 | + (str "globalThis." (munge *cljs-ns*) ".")) |
| 312 | + (munged-name expr))) |
316 | 313 | (let [m (munged-name expr)]
|
317 | 314 | m)))))]
|
318 | 315 | (emit-return (escape-jsx expr env)
|
|
544 | 541 | (= 'cherry.core libname))
|
545 | 542 | (let [libname (resolve-ns env libname)
|
546 | 543 | [libname suffix] (str/split (if (string? libname) libname (str libname)) #"\$" 2)
|
547 |
| - [p & _props] (when suffix |
548 |
| - (str/split suffix #"\.")) |
549 |
| - default? (and as (= "default" p)) |
| 544 | + default? (= "default" suffix) ;; we only support a default suffix for now anyway |
550 | 545 | as (when as (munge as))
|
551 | 546 | expr (str
|
552 |
| - (when (and as (= "default" p)) |
| 547 | + (when (and as default?) |
553 | 548 | (if *repl*
|
554 |
| - (statement (format "const %s = (await import('%s')).default" as libname)) |
| 549 | + (statement (format "const %s = (await import('%s')).%s" as libname suffix)) |
555 | 550 | (statement (format "import %s from '%s'" as libname))))
|
556 |
| - (when (and (not as) (not p) (not refer)) |
| 551 | + (when (and (not as) (not suffix) (not refer)) |
557 | 552 | ;; import presumably for side effects
|
558 | 553 | (if *repl*
|
559 | 554 | (statement (format "await import('%s')" libname))
|
560 | 555 | (statement (format "import '%s'" libname))))
|
561 |
| - (when (and as (not= "default" p)) |
| 556 | + (when (and as (not default?)) |
562 | 557 | (swap! *imported-vars* update libname (fnil identity #{}))
|
563 | 558 | (statement (if *repl*
|
564 | 559 | (format "var %s = await import('%s')" as libname)
|
|
569 | 564 | (let [current (:current ns-state)]
|
570 | 565 | (update-in ns-state [current :refers]
|
571 | 566 | (fn [refers]
|
572 |
| - (merge refers (zipmap refer (repeat libname)))))))) |
573 |
| - (when rename |
574 |
| - (swap! (:ns-state env) |
575 |
| - (fn [ns-state] |
576 |
| - (let [current (:current ns-state)] |
577 |
| - (update-in ns-state [current :rename] |
578 |
| - merge (zipmap (vals rename) (keys rename))))))) |
579 |
| - (let [munged-refers (map munge refer)] |
| 567 | + (merge refers (zipmap (map (fn [refer] |
| 568 | + (get rename refer refer)) refer) (repeat libname)))))))) |
| 569 | + (let [referred+renamed (str/join ", " |
| 570 | + (map (fn [refer] |
| 571 | + (str (munge refer) |
| 572 | + (when-let [renamed (get rename refer)] |
| 573 | + (str " as " (munge renamed))))) |
| 574 | + refer))] |
580 | 575 | (if *repl*
|
581 |
| - (str (statement (format "var { %s } = (await import ('%s'))%s" (str/join ", " munged-refers) libname |
582 |
| - (if default? ".default" |
583 |
| - ""))) |
| 576 | + (str (statement (format "var { %s } = (await import ('%s'))%s" (str/replace referred+renamed " as " ": ") libname |
| 577 | + (if suffix |
| 578 | + (str "." suffix) |
| 579 | + ""))) |
584 | 580 | (str/join (map (fn [sym]
|
585 | 581 | (statement (str "globalThis." (munge current-ns-name) "." sym " = " sym)))
|
586 |
| - munged-refers))) |
| 582 | + (map (fn [refer] |
| 583 | + (get rename refer refer)) |
| 584 | + refer)))) |
587 | 585 |
|
588 | 586 | (if default?
|
589 | 587 | (let [libname* ((:gensym env) "default")]
|
590 | 588 | (str (statement (format "import %s from '%s'" libname* libname))
|
591 |
| - (statement (format "const { %s } = %s" (str/join ", " (map munge refer)) libname*)))) |
592 |
| - (statement (format "import { %s } from '%s'" (str/join ", " (map munge refer)) libname)))))))] |
| 589 | + (statement (format "const { %s } = %s" referred+renamed libname*)))) |
| 590 | + (statement (format "import { %s } from '%s'" referred+renamed libname)))))))] |
593 | 591 | (when as
|
594 | 592 | (swap! (:ns-state env)
|
595 | 593 | (fn [ns-state]
|
|
0 commit comments