Procházet zdrojové kódy

feat: add cljs.spec.alpha

defclass před 5 roky
rodič
revize
9fda0a4c03
2 změnil soubory, kde provedl 22 přidání a 1 odebrání
  1. 2 1
      deps.edn
  2. 20 0
      src/main/frontend/spec.cljs

+ 2 - 1
deps.edn

@@ -23,7 +23,8 @@
   hickory                     {:mvn/version "0.7.1"}
   hiccups                     {:mvn/version "0.3.0"}
   tongue                      {:mvn/version "0.2.9"}
-  org.clojure/core.async      {:mvn/version "1.3.610"}}
+  org.clojure/core.async      {:mvn/version "1.3.610"}
+  expound                     {:mvn/version "0.8.6"}}
 
  :aliases {:cljs {:extra-paths ["src/dev-cljs/"]
                   :extra-deps  {org.clojure/clojurescript   {:mvn/version "1.10.520"}

+ 20 - 0
src/main/frontend/spec.cljs

@@ -0,0 +1,20 @@
+(ns frontend.spec
+  (:require [cljs.spec.alpha :as s]
+            [frontend.config :as config]
+            [expound.alpha :as expound]))
+
+;; disable in production
+(when config/dev? (s/check-asserts true))
+
+(set! s/*explain-out* expound/printer)
+
+(defn validate [spec value]
+  (when-let [error (s/explain-data spec value)]
+    (if config/dev?
+      (throw (ex-info (expound/expound-str spec value) error))
+      (js/console.log (expound/expound-str spec value)))))
+
+(s/def :user/repo string?)
+
+(comment
+  (validate :user/repo 1))