Skip to content

Commit 4b33c5f

Browse files
committed
[wip] enable spec validation
1 parent 0f65a95 commit 4b33c5f

File tree

10 files changed

+63
-22
lines changed

10 files changed

+63
-22
lines changed

src/renderer/db.cljs

+13-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
(ns renderer.db
22
(:require
3+
[renderer.dialog.db]
34
[renderer.document.db]
45
[renderer.snap.db]
56
[renderer.theme.db]
@@ -16,12 +17,19 @@
1617
[:rulers-visible? boolean?]
1718
[:snap renderer.snap.db/snap]
1819
[:rulers-locked? boolean?]
19-
[:documents [:map-of :uuid renderer.document.db/document]]
20-
[:document-tabs [:vector uuid?]]
20+
[:dialogs [:vector renderer.dialog.db/dialog]]
21+
[:documents [:map-of keyword? map?]]
22+
[:document-tabs [:vector keyword?]]
23+
[:recent [:vector string?]]
2124
[:system-fonts vector?]
25+
[:notifications vector?]
2226
[:debug-info? boolean?]
2327
[:pen-mode? boolean?]
24-
[:panel [:map-of :key [:map [:visible? boolean?]]]]
28+
[:backdrop? boolean?]
29+
[:lang keyword?]
30+
[:repl-mode keyword?]
31+
[:worker [:map [:tasks set?]]]
32+
[:panel [:map-of keyword? [:map [:visible? boolean?]]]]
2533
[:window renderer.window.db/window]
2634
[:theme renderer.theme.db/theme]
2735
[:timeline renderer.timeline.db/timeline]])
@@ -39,6 +47,7 @@
3947
:notifications []
4048
:debug-info? false
4149
:pen-mode? false
50+
:backdrop? false
4251
:rulers-locked? false
4352
:grid-visible? false
4453
:rulers-visible? true
@@ -48,8 +57,7 @@
4857
:lang :en-US
4958
:repl-mode :cljs
5059
:theme {:mode :dark}
51-
:worker {:tasks {}}
52-
:cmdk {:visible? false}
60+
:worker {:tasks #{}}
5361
:panel {:tree {:visible? true}
5462
:properties {:visible? true}
5563
:timeline {:visible? false}

src/renderer/dialog/db.cljs

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
(ns renderer.dialog.db)
2+
3+
(def dialog
4+
[:map
5+
[:title {:optional true} string?]
6+
[:content {:optional true} vector?]
7+
[:attrs {:optional true} map?]])

src/renderer/document/db.cljs

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
(ns renderer.document.db
22
(:require
3-
[renderer.element.db :as element.db]))
3+
[renderer.element.db]))
44

55
(def document
66
[:map
7-
[:hovered-keys [:set uuid?]]
8-
[:collapsed-keys [:set uuid?]]
9-
[:ignored-keys [:set uuid?]]
7+
[:key keyword?]
8+
[:title string?]
9+
[:hovered-keys [:set keyword?]]
10+
[:collapsed-keys [:set keyword?]]
11+
[:ignored-keys [:set keyword?]]
1012
[:fill string?]
1113
[:stroke string?]
1214
[:zoom double?]
1315
[:rotate double?]
14-
[:filter keyword?]
16+
[:history map?]
1517
[:pan [:tuple double? double?]]
16-
[:elements [:map-of :uuid element.db/element]]])
18+
[:elements [:map-of keyword? renderer.element.db/element]]])
1719

1820
(def default-document
1921
{:hovered-keys #{}

src/renderer/document/handlers.cljs

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
[db file-path]
3131
(cond-> db
3232
file-path
33-
(update :recent #(-> % (conj file-path) distinct))))
33+
(update :recent #(-> % (conj file-path) distinct vec))))
3434

3535
(defn set-active
3636
[db k]

src/renderer/element/db.cljs

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
[:multi {:dispatch :tag}
77
[::ma/default
88
[:map
9-
[:key uuid?]
9+
[:key keyword?]
1010
[:type [:enum :element :handle]]
1111
[:visible? boolean?]
1212
[:selected? boolean?]
13-
[:attrs [:map-of :uuid string?]]]]])
13+
[:content string?]
14+
[:attrs [:map-of keyword? string?]]]]])

src/renderer/events.cljs

+7-4
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,24 @@
66
[renderer.effects]
77
[renderer.handlers :as h]
88
[renderer.frame.handlers :as frame-h]
9+
[renderer.notification.events :as-alias notification.e]
910
[renderer.tool.base :as tool]
1011
[renderer.utils.local-storage :as local-storage]
1112
[renderer.utils.pointer :as pointer]))
1213

13-
(defn check-and-throw
14+
(defn check-schema
1415
"Throws an exception if `db` doesn't match the Spec"
1516
[spec db]
1617
(when-not (ma/validate spec db)
17-
(js/console.log (ex-info (str "spec check failed: " (ma/explain spec db)) {}))
18+
(rf/dispatch [::notification.e/add [:div
19+
[:h2.mb-4.font-bold "Spec check failed"]
20+
[:p.text-error #_(str (ma/explain spec db))]]])
1821
db))
1922

2023
#_:clj-kondo/ignore
21-
(def schema-valdator (rf/after (partial check-and-throw db/app)))
24+
(def schema-valdator (rf/after (partial check-schema db/app)))
2225

23-
#_(rf/reg-global-interceptor schema-valdator)
26+
(rf/reg-global-interceptor schema-valdator)
2427

2528
(rf/reg-event-db
2629
:initialize-db

src/renderer/history/db.cljs

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
(ns renderer.history.db
2+
(:require
3+
[renderer.element.db]))
4+
5+
(def state
6+
[:map
7+
[:explenation string?]
8+
[:timestamp double?]
9+
[:index integer?]
10+
[:id keyword?]
11+
[:elements [:map-of keyword? renderer.element.db/element]]
12+
[:parent keyword?]
13+
[:children [:vector keyword?]]])
14+
15+
(def history
16+
[:map
17+
[:zoom double?]
18+
[:position keyword?]
19+
[:states [:map-of keyword? state]]])

src/renderer/menubar/views.cljs

+1-1
Original file line numberDiff line numberDiff line change
@@ -598,5 +598,5 @@
598598
{:class "menubar-root"
599599
:on-key-down #(when-not (= (.-key %) "Escape")
600600
(.stopPropagation %)) ; FIXME: Esc global action also triggered.
601-
:onValueChange #(rf/dispatch [:set-backdrop (seq %)])}]
601+
:onValueChange #(rf/dispatch [:set-backdrop (boolean (seq %))])}]
602602
(map menu-item (root-menu))))

src/renderer/snap/db.cljs

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
[:map
88
[:enabled? boolean?]
99
[:threshold double?]
10-
[:options options]])
10+
[:options [:set options]]])

src/renderer/theme/db.cljs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
(ns renderer.theme.db)
22

33
(def theme
4-
[:mode [:enum :dark :light :system]
5-
:native [:enum :dark :light]])
4+
[:map
5+
[:mode [:enum :dark :light :system]]
6+
[:native [:enum :dark :light]]])

0 commit comments

Comments
 (0)