5ca0626
Branches > refactor/use-spec-1 > 5ca0626 > files / src / net / bowmap / network
Remove clojure spec 2 and use spec 1 instead
Commit: 5ca06260a05df89ffb8bc926ca46be8a109994b5
Parent: 39a68d5
11 changed files:
deps.edn view file
@@ -5,8 +5,6 @@ :run {:exec-fn net.bowmap.core/-main}} :deps {org.clojure/clojure {:mvn/version "1.13.0-alpha3"}- org.cloure/alpha.spec {:git/url "https://github.com/clojure/spec-alpha2.git"- :sha "efbeb200b9594e265907c1d66ad4ffd9cd8c91cf"} io.netty/netty-buffer {:mvn/version "4.1.111.Final"} org.clojure/core.async {:mvn/version "1.9.865"} org.clojure/data.json {:mvn/version "2.5.1"}}}src/dev/grahp/spec.clj view file
@@ -1,7 +1,7 @@ (ns dev.grahp.spec (:refer-clojure :exclude [def]) (:require- [clojure.alpha.spec :as s]+ [clojure.spec.alpha :as s] [dev.grahp.error :refer [raise]])) (defn ensure-conform [spec x]@@ -10,7 +10,7 @@ (raise "Failed to conform value to spec!" {:spec spec :x x}))) (defmacro def- "Same as clojure.alpha.spec/def but allows for a docstring seriously how does spec def not have a docstring???"+ "Same as spec 'def' but allows for a docstring seriously how does spec def not have a docstring???" {:clj-kondo/lint-as 'clojure.spec.alpha/def} ([name spec] `(s/def ~name ~spec)) ([name _docstring spec] `(s/def ~name ~spec)))src/net/bowmap.clj view file
@@ -0,0 +1,6 @@+(ns net.bowmap+ "Spec vocab namespace"+ (:require+ [dev.grahp.spec :as S]))++(S/def)src/net/bowmap/message_application.clj view file
@@ -1,7 +1,6 @@ (ns net.bowmap.message-application (:require- [clojure.alpha.spec :as s]- [dev.grahp.spec :as S]+ [clojure.spec.alpha :as s] [net.bowmap.network.client :as client] [net.bowmap.network.protocol.chunk :as chunk] [net.bowmap.network.protocol.message :as msg]@@ -11,12 +10,12 @@ [net.bowmap.network.protocol.state :as state] [net.bowmap.server.gamemode :as gamemode])) -(S/def ::messages (s/coll-of ::msg/message :type vector?))-(S/def ::process-id qualified-keyword?)-(S/def ::process-timeout pos-int?)-(S/def ::process (s/schema [::process-id ::process-timeout]))-(S/def ::processes (s/coll-of ::process :type vector?))-(S/def ::response (s/schema [::client/client ::messages ::processes])) ; And eventually game events as well :)+(s/def ::messages (s/coll-of ::msg/message :type vector?))+(s/def ::process-id qualified-keyword?)+(s/def ::process-timeout pos-int?)+(s/def ::process (s/keys :opt [::process-id ::process-timeout]))+(s/def ::processes (s/coll-of ::process :type vector?))+(s/def ::response (s/keys :opt [::client/client ::messages ::processes])) ; And eventually game events as well :) ; TODO ; I do think having these processes/timeouts/whatever be data with a deadline and just run the things by deadline order is bettersrc/net/bowmap/network/client.clj view file
@@ -1,7 +1,6 @@ (ns net.bowmap.network.client (:require- [clojure.alpha.spec :as s]- [dev.grahp.spec :as S]))+ [clojure.spec.alpha :as s])) -(S/def ::id uuid?)-(S/def ::client (s/schema [::id]))+(s/def ::id uuid?)+(s/def ::client (s/keys :opt [::id]))src/net/bowmap/network/protocol/chunk.clj view file
@@ -1,13 +1,13 @@ (ns net.bowmap.network.protocol.chunk- (:require [clojure.alpha.spec :as s]))+ (:require [clojure.spec.alpha :as s])) -(s/def ::coordinate (s/schema [::x ::y ::z]))+(s/def ::coordinate (s/keys :opt [::x ::y ::z])) (s/def ::data (s/map-of ::coordinate ::chunk-section)) (s/def ::block-bpe #{0 4 5 6 7 8 15}) (s/def ::biome-bpe #{0 1 2 3 7}) (s/def ::block-states vector?) (s/def ::biomes vector?)-(s/def ::chunk-section (s/schema [::block-bpe ::biome-bpe]))+(s/def ::chunk-section (s/keys :opt [::block-bpe ::biome-bpe])) (s/def ::world (s/map-of ::coordinate ::chunk-section)) src/net/bowmap/network/protocol/message.clj view file
@@ -1,6 +1,6 @@ (ns net.bowmap.network.protocol.message (:require- [clojure.alpha.spec :as s]+ [clojure.spec.alpha :as s] [dev.grahp.spec :as S])) (S/def ::id@@ -15,4 +15,4 @@ (S/def ::message "Represents a logical message map (object) from client to/from server. 'Packet' is used to refer to a serialized message"- (s/schema [::id]))+ (s/keys :opt [::id]))src/net/bowmap/network/protocol/message/clientbound.clj view file
@@ -1,6 +1,6 @@ (ns net.bowmap.network.protocol.message.clientbound (:require- [clojure.alpha.spec :as s]+ [clojure.spec.alpha :as s] [dev.grahp.build :refer [build]] [net.bowmap.network.protocol.message :as msg] [net.bowmap.network.protocol.packet :as pk]@@ -28,7 +28,7 @@ (s/fdef build-packet-ids :args (s/cat :registry (s/map-of ::state/connection-state (s/coll-of ::msg/id :type vector?)))- :ret (s/map-of (s/schema [::state/connection-state ::msg/id]) ::msg/numeric-id))+ :ret (s/map-of (s/keys :opt [::state/connection-state ::msg/id]) ::msg/numeric-id)) (defn build-packets "Builds a map of message ids to message writers."src/net/bowmap/network/protocol/message/serverbound.clj view file
@@ -1,6 +1,6 @@ (ns net.bowmap.network.protocol.message.serverbound (:require- [clojure.alpha.spec :as s]+ [clojure.spec.alpha :as s] [dev.grahp.build :refer [build]] [dev.grahp.error :refer [adorn raise]] [net.bowmap.network.protocol.message :as msg]@@ -33,7 +33,7 @@ id])) ; TODO document why ids are enumerated like this?-(def ^{:spec (s/map-of (s/schema [::state/connection-state ::msg/numeric-id]) ::msg/id)}+(def ^{:spec (s/map-of (s/keys :req [::state/connection-state ::msg/numeric-id]) ::msg/id)} numeric-ids (build-message-id-map {::state/handshakingsrc/net/bowmap/network/protocol/types.clj view file
@@ -1,6 +1,6 @@ (ns net.bowmap.network.protocol.types (:require- [clojure.alpha.spec :as s]))+ [clojure.spec.alpha :as s])) (def max-varint-size 5) (def max-varlong-size 5)src/net/bowmap/network/protocol/writers.clj view file
@@ -3,7 +3,7 @@ When given bad data, write functions will throw. See https://minecraft.wiki/w/Java_Edition_protocol/Packets#Data_types" (:require- [clojure.alpha.spec :as s]+ [clojure.spec.alpha :as s] [clojure.data.json :as json] [clojure.set :as set] [dev.grahp.error :refer [adorn raise]]