|
58 | 58 |
|
59 | 59 | #?(:clj |
60 | 60 | (def transit-read-opts |
61 | | - (util/compile-if (import '[com.cognitect.transit ReadHandler]) |
62 | | - {:handlers |
63 | | - {"cljs/js" |
64 | | - (reify com.cognitect.transit.ReadHandler |
65 | | - (fromRep [_ v] (JSValue. v))) |
66 | | - "cljs/regex" |
67 | | - (reify com.cognitect.transit.ReadHandler |
68 | | - (fromRep [_ v] (Pattern/compile v)))}}))) |
| 61 | + (try |
| 62 | + (require '[cognitect.transit]) |
| 63 | + (when-some [ns (find-ns 'cognitect.transit)] |
| 64 | + (let [read-handler @(ns-resolve ns 'read-handler) |
| 65 | + read-handler-map @(ns-resolve ns 'read-handler-map)] |
| 66 | + {:handlers |
| 67 | + (read-handler-map |
| 68 | + {"cljs/js" (read-handler (fn [_ v] (JSValue. v))) |
| 69 | + "cljs/regex" (read-handler (fn [_ v] (Pattern/compile v)))})})) |
| 70 | + (catch Throwable t |
| 71 | + nil)))) |
69 | 72 |
|
70 | 73 | #?(:clj |
71 | 74 | (def transit-write-opts |
72 | | - (util/compile-if (import '[com.cognitect.transit WriteHandler]) |
73 | | - {:handlers |
74 | | - {JSValue |
75 | | - (reify com.cognitect.transit.WriteHandler |
76 | | - (tag [_ _] "cljs/js") |
77 | | - (rep [_ js] (.val ^JSValue js)) |
78 | | - (stringRep [_ _] nil)) |
79 | | - Pattern |
80 | | - (reify com.cognitect.transit.WriteHandler |
81 | | - (tag [_ _] "cljs/regex") |
82 | | - (rep [_ pat] (.pattern ^Pattern pat)) |
83 | | - (stringRep [_ _] nil))}}))) |
| 75 | + (try |
| 76 | + (require '[cognitect.transit]) |
| 77 | + (when-some [ns (find-ns 'cognitect.transit)] |
| 78 | + (let [write-handler @(ns-resolve ns 'write-handler) |
| 79 | + write-handler-map @(ns-resolve ns 'write-handler-map)] |
| 80 | + {:handlers |
| 81 | + (write-handler-map |
| 82 | + {JSValue |
| 83 | + (write-handler |
| 84 | + (fn [_ _] "cljs/js") |
| 85 | + (fn [_ js] (.val ^JSValue js))) |
| 86 | + Pattern |
| 87 | + (write-handler |
| 88 | + (fn [_ _] "cljs/regex") |
| 89 | + (fn [_ pat] (.pattern ^Pattern pat)))})})) |
| 90 | + (catch Throwable t |
| 91 | + nil)))) |
84 | 92 |
|
85 | 93 | #?(:clj |
86 | 94 | (def transit |
87 | 95 | (delay |
88 | 96 | (try |
89 | 97 | (require '[cognitect.transit]) |
90 | | - (let [ns (find-ns 'cognitect.transit)] |
91 | | - (when ns |
92 | | - {:writer @(ns-resolve ns 'writer) |
93 | | - :reader @(ns-resolve ns 'reader) |
94 | | - :write @(ns-resolve ns 'write) |
95 | | - :read @(ns-resolve ns 'read)})) |
| 98 | + (when-some [ns (find-ns 'cognitect.transit)] |
| 99 | + {:writer @(ns-resolve ns 'writer) |
| 100 | + :reader @(ns-resolve ns 'reader) |
| 101 | + :write @(ns-resolve ns 'write) |
| 102 | + :read @(ns-resolve ns 'read)}) |
96 | 103 | (catch Throwable t |
97 | 104 | nil))))) |
98 | 105 |
|
|
3113 | 3120 | true |
3114 | 3121 | (util/changed? src cache))))))) |
3115 | 3122 |
|
3116 | | -#?(:clj |
3117 | | - (def transit-write-mutex (Object.))) |
3118 | | - |
3119 | 3123 | #?(:clj |
3120 | 3124 | (defn write-analysis-cache |
3121 | 3125 | ([ns cache-file] |
|
3130 | 3134 | (str ";; Analyzed by ClojureScript " (util/clojurescript-version) "\n")) |
3131 | 3135 | (pr-str analysis))) |
3132 | 3136 | "json" (when-let [{:keys [writer write]} @transit] |
3133 | | - (locking transit-write-mutex |
3134 | | - (write |
3135 | | - (writer (FileOutputStream. cache-file) :json |
3136 | | - transit-write-opts) |
3137 | | - analysis))))) |
| 3137 | + (write |
| 3138 | + (writer (FileOutputStream. cache-file) :json |
| 3139 | + transit-write-opts) |
| 3140 | + analysis)))) |
3138 | 3141 | (when src |
3139 | 3142 | (.setLastModified ^File cache-file (util/last-modified src)))))) |
3140 | 3143 |
|
|
0 commit comments