diff --git a/babashka.nrepl b/babashka.nrepl index ad763a78..24c5d08e 160000 --- a/babashka.nrepl +++ b/babashka.nrepl @@ -1 +1 @@ -Subproject commit ad763a78f1bc327a493ff0b650aa5408ecbf4819 +Subproject commit 24c5d08eb4795dff04d67cfaed2e4f4ebcf91404 diff --git a/examples/user_middleware/Readme.md b/examples/user_middleware/Readme.md new file mode 100644 index 00000000..973a02f3 --- /dev/null +++ b/examples/user_middleware/Readme.md @@ -0,0 +1,33 @@ +# User Middleware + +- Your middleware is defined in bb user sources. +- Middleware is a function in wrap-middleware style. + +# Example + +Middleware should be a function in the form of: + +```clojure +(defn my-middleware [handler] + (fn [request] + ;; ... + (handler request) + ;; ... + )) +``` + +# Usage + +```shell +bb nrepl-server --middleware [my.middleware/println-middleware] +``` + +--middleware is a vector of fully qualified function symbols. +They are required to be located on the babashka classpath. + +This will start babashka with a nrepl server with the middlware defined in `user_middleware/my_middleware/src/my/middleware.clj`. + +You can now connect to the nrepl like usual. + +It is possible to redefine the middleware function from within the running nrepl, because we keep a reference +to the sci-var of the middlware. diff --git a/examples/user_middleware/my_middleware/deps.edn b/examples/user_middleware/my_middleware/deps.edn new file mode 100644 index 00000000..ccd9a316 --- /dev/null +++ b/examples/user_middleware/my_middleware/deps.edn @@ -0,0 +1 @@ +{:paths ["src"]} diff --git a/examples/user_middleware/my_middleware/src/my/middleware.clj b/examples/user_middleware/my_middleware/src/my/middleware.clj new file mode 100644 index 00000000..bda09838 --- /dev/null +++ b/examples/user_middleware/my_middleware/src/my/middleware.clj @@ -0,0 +1,6 @@ +(ns my.middleware) + +(defn println-middleware [handler] + (fn [request] + (println (:op (:msg request))) + (handler request))) diff --git a/examples/user_middleware/my_project/bb.edn b/examples/user_middleware/my_project/bb.edn new file mode 100644 index 00000000..2ef73ea9 --- /dev/null +++ b/examples/user_middleware/my_project/bb.edn @@ -0,0 +1,2 @@ +{:deps + {my/middleware {:local/root "../my_middleware/"}}} diff --git a/examples/user_middleware/my_project/hello_middleware.clj b/examples/user_middleware/my_project/hello_middleware.clj new file mode 100644 index 00000000..92b1f788 --- /dev/null +++ b/examples/user_middleware/my_project/hello_middleware.clj @@ -0,0 +1 @@ +(ns hello-middleware)