Bläddra i källkod

enhance: read/write-transit-str handle ex-info

rcmerci 1 månad sedan
förälder
incheckning
5ac2f6de10

+ 7 - 2
deps/db/src/logseq/db/sqlite/util.cljs

@@ -34,7 +34,11 @@
                                                                      (fn [^de/entity entity]
                                                                        (assert (some? (:db/id entity)))
                                                                        (assoc (.-kv entity)
-                                                                              :db/id (:db/id entity)))))
+                                                                              :db/id (:db/id entity))))
+                                    ExceptionInfo (transit/write-handler (constantly "error")
+                                                                         (fn [e]
+                                                                           {:message (ex-message e)
+                                                                            :data (ex-data e)})))
                              (merge write-handlers))
         writer (transit/writer :json {:handlers write-handlers*})]
     (fn write-transit-str* [o]
@@ -46,7 +50,8 @@
 
 (def read-transit-str
   (let [read-handlers* (->> (assoc dt/read-handlers
-                                   "datascript/Entity" identity)
+                                   "datascript/Entity" identity
+                                   "error" (fn [m] (ex-info (:message m) (:data m))))
                             (merge read-handlers))
         reader (transit/reader :json {:handlers read-handlers*})]
     (fn read-transit-str* [s]

+ 3 - 1
src/main/frontend/worker/rtc/full_upload_download_graph.cljs

@@ -60,7 +60,9 @@
 
 (def ^:private normalized-remote-blocks-coercer
   (ma/coercer [:sequential normalized-remote-block-schema]
-              (mt/transformer {:name :custom} mt/string-transformer)))
+              (mt/transformer {:name :custom} mt/string-transformer)
+              nil
+              #(ma/-fail! ::normalized-remote-block-schema (select-keys % [:value]))))
 
 (defn- schema->ref-type-attrs
   [db-schema]

+ 2 - 1
src/main/frontend/worker/rtc/malli_schema.cljs

@@ -239,7 +239,8 @@
      ["inject-users-info" [:map]]
      [nil data-from-ws-schema-fallback]]))
 
-(def data-from-ws-coercer (m/coercer data-from-ws-schema mt/string-transformer))
+(def data-from-ws-coercer (m/coercer data-from-ws-schema mt/string-transformer nil
+                                     #(m/-fail! ::data-from-ws-schema (select-keys % [:value]))))
 (def data-from-ws-validator (m/validator data-from-ws-schema))
 
 (def ^:large-vars/data-var data-to-ws-schema