Dev-middleware works with async + polished code

This commit is contained in:
Tommi Reiman 2018-12-22 13:48:47 +02:00
parent 48961c9ed4
commit 7f4aa1bdcc
3 changed files with 20 additions and 14 deletions

View file

@ -61,7 +61,7 @@
{:status 200 {:status 200
:body {:total (+ x y)}})}}]]] :body {:total (+ x y)}})}}]]]
{:reitit.middleware/transform dev/print-request-diffs {;;:reitit.middleware/transform dev/print-request-diffs
:data {:coercion reitit.coercion.spec/coercion :data {:coercion reitit.coercion.spec/coercion
:muuntaja m/instance :muuntaja m/instance
:middleware [;; query-params & form-params :middleware [;; query-params & form-params

View file

@ -173,7 +173,7 @@
(defn linear-router (defn linear-router
"Creates a linear-router from resolved routes and optional "Creates a linear-router from resolved routes and optional
expanded options. See [[router]] for available options" expanded options. See [[router]] for available options."
([compiled-routes] ([compiled-routes]
(linear-router compiled-routes {})) (linear-router compiled-routes {}))
([compiled-routes opts] ([compiled-routes opts]
@ -218,7 +218,7 @@
(defn lookup-router (defn lookup-router
"Creates a lookup-router from resolved routes and optional "Creates a lookup-router from resolved routes and optional
expanded options. See [[router]] for available options" expanded options. See [[router]] for available options."
([compiled-routes] ([compiled-routes]
(lookup-router compiled-routes {})) (lookup-router compiled-routes {}))
([compiled-routes opts] ([compiled-routes opts]
@ -263,7 +263,7 @@
(defn segment-router (defn segment-router
"Creates a special prefix-tree style segment router from resolved routes and optional "Creates a special prefix-tree style segment router from resolved routes and optional
expanded options. See [[router]] for available options" expanded options. See [[router]] for available options."
([compiled-routes] ([compiled-routes]
(segment-router compiled-routes {})) (segment-router compiled-routes {}))
([compiled-routes opts] ([compiled-routes opts]
@ -307,7 +307,7 @@
(defn single-static-path-router (defn single-static-path-router
"Creates a fast router of 1 static route(s) and optional "Creates a fast router of 1 static route(s) and optional
expanded options. See [[router]] for available options" expanded options. See [[router]] for available options."
([compiled-routes] ([compiled-routes]
(single-static-path-router compiled-routes {})) (single-static-path-router compiled-routes {}))
([compiled-routes opts] ([compiled-routes opts]

View file

@ -9,26 +9,32 @@
(assoc :width 70) (assoc :width 70)
(update :color-scheme merge {:middleware [:blue]}))) (update :color-scheme merge {:middleware [:blue]})))
(defn diff-doc [x y z] (defn diff-doc [name previous current]
[:group [:group
[:span "--- Middleware " (if z (color/document printer :middleware (str z " "))) "---" :break :break] [:span "--- Middleware " (if name (color/document printer :middleware (str name " "))) "---" :break :break]
[:nest (printer/format-doc (if x (ddiff/diff x y) y) printer)] [:nest (printer/format-doc (if previous (ddiff/diff previous current) current) printer)]
:break]) :break])
(defn polish [request] (defn polish [request]
(dissoc request ::r/match ::r/router ::original ::previous)) (dissoc request ::r/match ::r/router ::original ::previous))
(defn printed-request [name {:keys [::original ::previous] :as request}]
(printer/print-doc (diff-doc name (polish previous) (polish request)) printer)
(-> request
(update ::original (fnil identity request))
(assoc ::previous request)))
(defn print-diff-middleware (defn print-diff-middleware
([] ([]
(print-diff-middleware nil)) (print-diff-middleware nil))
([{:keys [name]}] ([{:keys [name]}]
{:name ::debug {:name ::diff
:wrap (fn [handler] :wrap (fn [handler]
(fn [{:keys [::original ::previous] :as request}] (fn
(printer/print-doc (diff-doc (polish previous) (polish request) name) printer) ([request]
(handler (-> request (handler (printed-request name request)))
(update ::original (fnil identity request)) ([request respond raise]
(assoc ::previous request)))))})) (handler (printed-request name request) respond raise))))}))
(defn print-request-diffs (defn print-request-diffs
"A middleware chain transformer that adds a request-diff printer between all middleware" "A middleware chain transformer that adds a request-diff printer between all middleware"