Update deps

This commit is contained in:
Tommi Reiman 2018-05-14 08:20:29 +03:00
parent f0c5698a89
commit 027d46508b
3 changed files with 36 additions and 29 deletions

View file

@ -2,27 +2,33 @@
(:require [clojure.spec.alpha :as s]
[spec-tools.core :as st #?@(:cljs [:refer [Spec]])]
[spec-tools.data-spec :as ds]
[spec-tools.conform :as conform]
[spec-tools.transform :as stt]
[spec-tools.swagger.core :as swagger]
[reitit.coercion :as coercion]
[clojure.set :as set])
#?(:clj
(:import (spec_tools.core Spec))))
(def string-conforming
(st/type-conforming
(merge
conform/string-type-conforming
conform/strip-extra-keys-type-conforming)))
(def string-transformer
(st/type-transformer
{:name :string
:decoders (merge
stt/string-type-decoders
stt/strip-extra-keys-type-decoders)
:encoders stt/string-type-encoders
:default-encoder stt/any->any}))
(def json-conforming
(st/type-conforming
(merge
conform/json-type-conforming
conform/strip-extra-keys-type-conforming)))
(def json-transformer
(st/type-transformer
{:name :json
:decoders (merge
stt/json-type-decoders
stt/strip-extra-keys-type-decoders)
:encoders stt/json-type-encoders
:default-encoder stt/any->any}))
(def default-conforming
::default)
(def just-validate-transformer
(st/type-transformer {}))
(defprotocol IntoSpec
(into-spec [this name]))
@ -58,12 +64,12 @@
(def default-options
{:coerce-response? coerce-response?
:conforming {:body {:default default-conforming
:formats {"application/json" json-conforming}}
:string {:default string-conforming}
:response {:default default-conforming}}})
:transformers {:body {:default just-validate-transformer
:formats {"application/json" json-transformer}}
:string {:default string-transformer}
:response {:default just-validate-transformer}}})
(defn create [{:keys [conforming coerce-response?] :as opts}]
(defn create [{:keys [transformers coerce-response?] :as opts}]
^{:type ::coercion/coercion}
(reify coercion/Coercion
(-get-name [_] :spec)
@ -98,16 +104,16 @@
(update :problems (partial mapv #(update % :pred stringify-pred)))))
(-request-coercer [this type spec]
(let [spec (coercion/-compile-model this spec nil)
{:keys [formats default]} (conforming type)]
{:keys [formats default]} (transformers type)]
(fn [value format]
(if-let [conforming (or (get formats format) default)]
(let [conformed (st/conform spec value conforming)]
(if (s/invalid? conformed)
(let [problems (st/explain-data spec value conforming)]
(if-let [transformer (or (get formats format) default)]
(let [transformed (st/conform spec value transformer)]
(if (s/invalid? transformed)
(let [problems (st/explain-data spec value transformer)]
(coercion/map->CoercionError
{:spec spec
:problems (::s/problems problems)}))
(s/unform spec conformed)))
(s/unform spec transformed)))
value))))
(-response-coercer [this spec]
(if (coerce-response? spec)

View file

@ -18,8 +18,8 @@
[meta-merge "1.0.0"]
[ring/ring-core "1.6.3"]
[metosin/spec-tools "0.6.2-SNAPSHOT"]
[metosin/schema-tools "0.10.2-SNAPSHOT"]
[metosin/spec-tools "0.7.0-SNAPSHOT"]
[metosin/schema-tools "0.10.2"]
[metosin/ring-swagger-ui "2.2.10"]
[metosin/jsonista "0.2.0"]]
@ -41,7 +41,7 @@
"modules/reitit-swagger/src"]
:dependencies [[org.clojure/clojure "1.9.0"]
[org.clojure/clojurescript "1.9.946"]
[org.clojure/clojurescript "1.10.238"]
;; modules dependencies
[metosin/reitit]
@ -58,7 +58,7 @@
[criterium "0.4.4"]
[org.clojure/test.check "0.9.0"]
[org.clojure/tools.namespace "0.2.11"]
[com.gfredericks/test.chuck "0.2.8"]]}
[com.gfredericks/test.chuck "0.2.9"]]}
:perf {:jvm-opts ^:replace ["-server"
"-Xmx4096m"
"-Dclojure.compiler.direct-linking=true"]

View file

@ -57,7 +57,8 @@
(let [spec (:body (app
{:request-method :get
:uri "/api/swagger.json"}))]
(is (= {:x-id ::math
(is (= {:x-id #{::math}
:swagger "2.0"
:info {:title "my-api"}
:paths {"/api/schema/plus" {:get {:parameters [{:description ""
:format "int32"