diff --git a/.clj-kondo/potemkin/potemkin/config.edn b/.clj-kondo/potemkin/potemkin/config.edn
new file mode 100644
index 0000000..3f59f3e
--- /dev/null
+++ b/.clj-kondo/potemkin/potemkin/config.edn
@@ -0,0 +1,62 @@
+{:lint-as {potemkin.collections/compile-if clojure.core/if
+ potemkin.collections/reify-map-type clojure.core/reify
+ potemkin.collections/def-map-type clj-kondo.lint-as/def-catch-all
+ potemkin.collections/def-derived-map clj-kondo.lint-as/def-catch-all
+
+ potemkin.types/reify+ clojure.core/reify
+ potemkin.types/defprotocol+ clojure.core/defprotocol
+ potemkin.types/deftype+ clojure.core/deftype
+ potemkin.types/defrecord+ clojure.core/defrecord
+ potemkin.types/definterface+ clojure.core/defprotocol
+ potemkin.types/extend-protocol+ clojure.core/extend-protocol
+ potemkin.types/def-abstract-type clj-kondo.lint-as/def-catch-all
+
+ potemkin.utils/doit clojure.core/doseq
+ potemkin.utils/doary clojure.core/doseq
+ potemkin.utils/condp-case clojure.core/condp
+ potemkin.utils/fast-bound-fn clojure.core/bound-fn
+
+ potemkin.walk/prewalk clojure.walk/prewalk
+ potemkin.walk/postwalk clojure.walk/postwalk
+ potemkin.walk/walk clojure.walk/walk
+
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;;; top-level from import-vars
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ ;; Have hooks
+ ;;potemkin/import-fn potemkin.namespaces/import-fn
+ ;;potemkin/import-macro potemkin.namespaces/import-macro
+ ;;potemkin/import-def potemkin.namespaces/import-def
+
+ ;; Internal, not transitive
+ ;;potemkin/unify-gensyms potemkin.macros/unify-gensyms
+ ;;potemkin/normalize-gensyms potemkin.macros/normalize-gensyms
+ ;;potemkin/equivalent? potemkin.macros/equivalent?
+
+ potemkin/condp-case clojure.core/condp
+ potemkin/doit potemkin.utils/doit
+ potemkin/doary potemkin.utils/doary
+
+ potemkin/def-abstract-type clj-kondo.lint-as/def-catch-all
+ potemkin/reify+ clojure.core/reify
+ potemkin/defprotocol+ clojure.core/defprotocol
+ potemkin/deftype+ clojure.core/deftype
+ potemkin/defrecord+ clojure.core/defrecord
+ potemkin/definterface+ clojure.core/defprotocol
+ potemkin/extend-protocol+ clojure.core/extend-protocol
+
+ potemkin/reify-map-type clojure.core/reify
+ potemkin/def-derived-map clj-kondo.lint-as/def-catch-all
+ potemkin/def-map-type clj-kondo.lint-as/def-catch-all}
+
+ ;; leave import-vars alone, kondo special-cases it
+ :hooks {:macroexpand {#_#_potemkin.namespaces/import-vars potemkin.namespaces/import-vars
+ potemkin.namespaces/import-fn potemkin.namespaces/import-fn
+ potemkin.namespaces/import-macro potemkin.namespaces/import-macro
+ potemkin.namespaces/import-def potemkin.namespaces/import-def
+
+ #_#_potemkin/import-vars potemkin.namespaces/import-vars
+ potemkin/import-fn potemkin.namespaces/import-fn
+ potemkin/import-macro potemkin.namespaces/import-macro
+ potemkin/import-def potemkin.namespaces/import-def}}}
diff --git a/.clj-kondo/potemkin/potemkin/potemkin/namespaces.clj b/.clj-kondo/potemkin/potemkin/potemkin/namespaces.clj
new file mode 100644
index 0000000..a247af5
--- /dev/null
+++ b/.clj-kondo/potemkin/potemkin/potemkin/namespaces.clj
@@ -0,0 +1,56 @@
+(ns potemkin.namespaces
+ (:require [clj-kondo.hooks-api :as api]))
+
+(defn import-macro*
+ ([sym]
+ `(def ~(-> sym name symbol) ~sym))
+ ([sym name]
+ `(def ~name ~sym)))
+
+(defmacro import-fn
+ ([sym]
+ (import-macro* sym))
+ ([sym name]
+ (import-macro* sym name)))
+
+(defmacro import-macro
+ ([sym]
+ (import-macro* sym))
+ ([sym name]
+ (import-macro* sym name)))
+
+(defmacro import-def
+ ([sym]
+ (import-macro* sym))
+ ([sym name]
+ (import-macro* sym name)))
+
+#_
+(defmacro import-vars
+ "Imports a list of vars from other namespaces."
+ [& syms]
+ (let [unravel (fn unravel [x]
+ (if (sequential? x)
+ (->> x
+ rest
+ (mapcat unravel)
+ (map
+ #(symbol
+ (str (first x)
+ (when-let [n (namespace %)]
+ (str "." n)))
+ (name %))))
+ [x]))
+ syms (mapcat unravel syms)
+ result `(do
+ ~@(map
+ (fn [sym]
+ (let [vr (resolve sym)
+ m (meta vr)]
+ (cond
+ (nil? vr) `(throw (ex-info (format "`%s` does not exist" '~sym) {}))
+ (:macro m) `(def ~(-> sym name symbol) ~sym)
+ (:arglists m) `(def ~(-> sym name symbol) ~sym)
+ :else `(def ~(-> sym name symbol) ~sym))))
+ syms))]
+ result))
diff --git a/.clj-kondo/taoensso/encore/config.edn b/.clj-kondo/taoensso/encore/config.edn
index 7b0ff3c..766fd95 100644
--- a/.clj-kondo/taoensso/encore/config.edn
+++ b/.clj-kondo/taoensso/encore/config.edn
@@ -1 +1,4 @@
-{:hooks {:analyze-call {taoensso.encore/defalias taoensso.encore/defalias}}}
+{:hooks
+ {:analyze-call
+ {taoensso.encore/defalias taoensso.encore/defalias
+ taoensso.encore/defn-cached taoensso.encore/defn-cached}}}
diff --git a/.clj-kondo/taoensso/encore/taoensso/encore.clj b/.clj-kondo/taoensso/encore/taoensso/encore.clj
index 7f6d30a..4d2d96f 100644
--- a/.clj-kondo/taoensso/encore/taoensso/encore.clj
+++ b/.clj-kondo/taoensso/encore/taoensso/encore.clj
@@ -1,16 +1,37 @@
(ns taoensso.encore
+ "I don't personally use clj-kondo, so these hooks are
+ kindly authored and maintained by contributors.
+ PRs very welcome! - Peter Taoussanis"
(:require
[clj-kondo.hooks-api :as hooks]))
-(defn defalias [{:keys [node]}]
+(defn defalias
+ [{:keys [node]}]
(let [[sym-raw src-raw] (rest (:children node))
src (if src-raw src-raw sym-raw)
- sym (if src-raw
- sym-raw
- (symbol (name (hooks/sexpr src))))]
- {:node (with-meta
- (hooks/list-node
- [(hooks/token-node 'def)
- (hooks/token-node (hooks/sexpr sym))
- (hooks/token-node (hooks/sexpr src))])
- (meta src))}))
+ sym
+ (if src-raw
+ sym-raw
+ (symbol (name (hooks/sexpr src))))]
+
+ {:node
+ (with-meta
+ (hooks/list-node
+ [(hooks/token-node 'def)
+ (hooks/token-node (hooks/sexpr sym))
+ (hooks/token-node (hooks/sexpr src))])
+ (meta src))}))
+
+(defn defn-cached
+ [{:keys [node] :as x}]
+ (let [[sym _opts binding-vec & body] (rest (:children node))]
+ {:node
+ (hooks/list-node
+ (list
+ (hooks/token-node 'def)
+ sym
+ (hooks/list-node
+ (list*
+ (hooks/token-node 'fn)
+ binding-vec
+ body))))}))
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index baf3aae..c147a2e 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -33,7 +33,7 @@ jobs:
- name: Install clojure cli
uses: DeLaGuardo/setup-clojure@master
with:
- cli: 1.11.3.1463
+ cli: 1.12.0.1479
- name: Cache Maven packages
uses: actions/cache@v4
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index b478f12..161f201 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -32,7 +32,7 @@ jobs:
- name: Install clojure cli
uses: DeLaGuardo/setup-clojure@master
with:
- cli: 1.11.3.1463
+ cli: 1.12.0.1479
- name: Cache Maven packages
uses: actions/cache@v4
@@ -59,7 +59,7 @@ jobs:
- name: Install clojure cli
uses: DeLaGuardo/setup-clojure@master
with:
- cli: 1.11.3.1463
+ cli: 1.12.0.1479
- name: Setup clojure-lsp
uses: clojure-lsp/setup-clojure-lsp@v1.0.2
diff --git a/deps.edn b/deps.edn
index 6d1ef7b..4d1d978 100644
--- a/deps.edn
+++ b/deps.edn
@@ -1,10 +1,10 @@
{:paths ["src" "resources"]
- :deps {org.clojure/clojure {:mvn/version "1.11.3"}
- org.clojure/tools.deps {:mvn/version "0.19.1432"}
- clj-kondo/clj-kondo {:mvn/version "2024.05.24"}
- datalevin/datalevin {:mvn/version "0.9.8"}
+ :deps {org.clojure/clojure {:mvn/version "1.12.0"}
+ org.clojure/tools.deps {:mvn/version "0.21.1449"}
+ clj-kondo/clj-kondo {:mvn/version "2024.09.27"}
+ datalevin/datalevin {:mvn/version "0.9.12"}
com.cognitect/transit-clj {:mvn/version "1.0.333"}
- org.slf4j/slf4j-nop {:mvn/version "2.0.13"}}
+ org.slf4j/slf4j-nop {:mvn/version "2.0.16"}}
:aliases
{:extract {:ns-default codes.clj.docs.extractor.core
@@ -13,7 +13,7 @@
:jvm-opts ["--add-opens=java.base/java.nio=ALL-UNNAMED"
"--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"]}
- :build {:deps {io.github.clojure/tools.build {:mvn/version "0.10.4"}}
+ :build {:deps {io.github.clojure/tools.build {:mvn/version "0.10.5"}}
:ns-default build
:exec-args {:uber-file "target/extractor.jar"}}
@@ -27,11 +27,11 @@
:jvm-opts ["--add-opens=java.base/java.nio=ALL-UNNAMED"
"--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"]}
- :nrepl {:extra-deps {cider/cider-nrepl {:mvn/version "0.49.1"}}
+ :nrepl {:extra-deps {cider/cider-nrepl {:mvn/version "0.50.2"}}
:main-opts ["-m" "nrepl.cmdline" "--middleware" "[cider.nrepl/cider-middleware]"]}
:test {:main-opts ["-m" "kaocha.runner"]
:jvm-opts ["-Xms3g" "-Xmx3g"]}
- :clojure-lsp {:replace-deps {com.github.clojure-lsp/clojure-lsp-standalone {:mvn/version "2024.04.22-11.50.26"}}
+ :clojure-lsp {:replace-deps {com.github.clojure-lsp/clojure-lsp-standalone {:mvn/version "2024.08.05-18.16.00"}}
:main-opts ["-m" "clojure-lsp.main"]}}}
diff --git a/pom.xml b/pom.xml
index 0c22b51..e8f9951 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
org.clojure
clojure
- 1.11.3
+ 1.12.0