Worked on a big new release of Malli and wrote a blog post about it.
Reitit should be now feature-complete for OpenAPI, will cut out release soon.
Helped users to use and adopt the libs.
(ns summer.demo | |
(:require [summer.openai :as openai])) | |
(def Step | |
[:map | |
[:explanation :string] | |
[:output :string]]) | |
(def MathResponse | |
[:map {:name "mathresponse"} |
<html> | |
<body> | |
<h1>framed!</h1> | |
</body> | |
</html> |
Spend a lot of time with Malli and Reitit for revisiting, priorising and designing the essential missing core features.
For Malli, my top priority is to resolve the derivation and declaration of effective types, which will simplify library internals, writing schema extensions and makes CLJS bundle size smaller. Might have to break the protocol-api for this.
For Reitit, drafting a proper plugin system, have studied how this is solved in other ecosystems (e.g. fastify, phoenix). Reitit is powerful, proper plugin system makes it much more approachable.
Have also reviews lot's of PRs, helped people online and pushed out some smaller features and release the following:
fetch
, BE sets, FE sends, http-only
:credentials
set to "include"
(different ports, "same-origin"
doesn't seem to work)Create a new project:
➜ ~ mkdir demo
➜ ~ cd demo
➜ demo echo '{:deps {metosin/malli {:mvn/version "0.8.0-20220123.082237-3"}} :aliases {:dev {:extra-paths ["classes"]}}}' > deps.edn
Loading takes ages:
;; | |
;; 1) using immutable support registry via options | |
;; | |
(ns demo | |
(:require [malli.core :as m] | |
[malli.registry :as mr] | |
[malli.util :as mu])) | |
(def default-registry |
Have spent a lot of time working with Malli internals: on hammock, paper protos, reading about stuff done elsewhere, perf tuning and testing, better designs, in the mushroom forest, refactoring and finally, an initial new internal design I'm quite happy with.
(require '[malli.core :as m]) | |
(require '[malli.transform :as mt]) | |
(require '[edamame.core :as e]) | |
(require '[clojure.walk :refer [prewalk]]) | |
(defrecord Wrapped []) | |
(defn parse | |
"Parses an EDN String with edamame and returns a tuple2 of edn-value & path-vec->loc" | |
[s] |
{:id "Lillan" | |
:tags #{:artesan :coffee ":hotel"} | |
:address {:street "Ahlmanintie 29" | |
:city "Tampere" | |
:zip "33100" | |
:lonlat [61.4858322, 23.7854658]}} |