[ANN] re-graph 0.1.13 - the GraphQL client for Clojure/script

2020-06-02 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of re-graph 0.1.13 
. re-graph is a GraphQL client for 
Clojurescript and Clojure with re-frame bindings and support for queries, 
subscriptions and mutations over websocket or HTTP.

Many thanks to @loomis  for implementing the 
vast majority of the features in this release.

This release *changes*:

   - Running on JDK 10 or lower will require the original Clojure 
   implementation based on clj-http and gniazdo. See the README 
   for details
   - The options supplied in init have been reorganised to separate 
   websocket and http parameters as follows:

*Previously:*

(re-frame/dispatch
  [::re-graph/init
{:ws-url "wss://foo.io/graphql-ws"
 :connection-init-payload {}
 :http-url "http://bar.io/graphql"}])

*Now:*

(re-frame/dispatch
  [::re-graph/init
{:ws {:url "wss://foo.io/graphql-ws"
 :connection-init-payload {}}
 :http {:url "http://bar.io/graphql"}}])

See the README for all option parameters.

This release *adds support for*:

   - Finer control over the http and websocket connections (:impl option) 
   e.g. sharing a cookie store as per #58 
   

This release *improves*:

   - Fewer dependencies on the JVM


It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/3d7e530e-40ed-4909-ab0d-a03d4e8a8384%40googlegroups.com.


[ANN] superlifter 0.1.2 - DataLoader for Clojure and now Clojurescript

2020-06-18 Thread Oliver Hine
Hi everyone,

I am pleased to announce the second release of superlifter 
. Superlifter is an implementation of 
DataLoader  for Clojure.

This release *adds support for*:

   - Clojurescript!
   - A debounced trigger that runs a fetch when no muses are added to the 
   bucket for *n* ms

Feedback appreciated, as always, here or on Github.

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/98b84adb-adf9-4ee5-a368-51d867614494o%40googlegroups.com.


[ANN] kamera 0.1.2 - visual testing with devcards integration

2020-07-27 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the 0.1.2 release of kamera 
 which aims to make screenshots more 
consistent and moves away from webfolder/cdp4j, which is a breaking change 
but important as cdp4j did not have good license terms for general use. 
Instead, clj-chrome-devtools provides a much nicer API for Clojure.

This release *changes*:

   - kamera now uses clj-chrome-devtools 
    instead of 
   webfolder/cdp4j #5 . If you 
   used the session parameter in any of the callback hooks you will need to 
   update your code. Additionally the :chrome-options config setting has 
   changed, see the README for an example.
   - The browser window is now resized to fit the content height only 
   before taking a screenshot by default. This behaviour is controlled by 
   the :resize-to-contents option, see the README

This release *fixes*:

   - Expand / contract icons in the report not showing up properly

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/4b922b7c-bae8-495f-879f-96d5a1ead79dn%40googlegroups.com.


Re: [ANN] kamera 0.1.2 - visual testing with devcards integration

2020-07-27 Thread Oliver Hine

Correction, this was the 0.1.3 release!
On Monday, 27 July 2020 at 10:24:03 UTC+1 Oliver Hine wrote:

> Hi everyone,
>
> I'm pleased to announce the 0.1.2 release of kamera 
> <https://github.com/oliyh/kamera> which aims to make screenshots more 
> consistent and moves away from webfolder/cdp4j, which is a breaking change 
> but important as cdp4j did not have good license terms for general use. 
> Instead, clj-chrome-devtools provides a much nicer API for Clojure.
>
> This release *changes*:
>
>- kamera now uses clj-chrome-devtools 
><https://github.com/tatut/clj-chrome-devtools> instead of 
>webfolder/cdp4j #5 <https://github.com/oliyh/kamera/issues/5>. If you 
>used the session parameter in any of the callback hooks you will need to 
>update your code. Additionally the :chrome-options config setting has 
>changed, see the README for an example.
>- The browser window is now resized to fit the content height only 
>before taking a screenshot by default. This behaviour is controlled by 
>the :resize-to-contents option, see the README
>
> This release *fixes*:
>
>- Expand / contract icons in the report not showing up properly
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/d1b0ea34-469e-458d-9e2b-651570d503c1n%40googlegroups.com.


[ANN] martian 0.1.13 - now supports OpenAPI v3

2020-08-24 Thread Oliver Hine
Hi everyone,

I am pleased to announce the release of martian 0.1.13

Martian provides an abstraction allowing you to describe the HTTP endpoints 
that you call without methods, urls and query parameters leaking into your 
application code, allowing you to work with pure Clojure data. It builds on 
the flexible interceptor pattern familiar to users of pedestal and supports 
APIs described with OpenAPI/Swagger. Describing HTTP calls as data allows 
you to easily stub remote services, generate responses and add aspects such 
as logging and metrics.

https://github.com/oliyh/martian

Once again I am really pleased and proud to be supported by my 
contributors, thank you everyone.

This release *adds support* for:

   - OpenAPI v3 - huge thanks to @czan  #90 
    #51 
   
   - Parameter references - thanks to @kpmg-jp-jnorton 
    #87 
   

Enjoy!

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/efe74a2c-61b7-4fb1-9e78-891320f1b2e2n%40googlegroups.com.


[ANN] pedestal-api 0.2.0 release - Swagger for pedestal

2016-06-09 Thread Oliver Hine
Hi everyone,

After the release of pedestal 0.5.0 I have updated pedestal-api 
 to make it compatible with the 
breaking changes.
Also in this release:

   - Better content negotiation
   - Support for query parameters that are all optional 
   
   - Better support for splat params 
   

You can read the release notes 
, the readme 
 or see the live example 
.

Cheers
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN] pedestal-api 0.2.0 release - Swagger for pedestal

2016-06-09 Thread Oliver Hine
Cheers Paul, for pedestal and your help!

On Thursday, 9 June 2016 20:18:01 UTC+1, Paul deGrandis wrote:
>
> Congrats!
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] angel-interceptor 0.3.0 - express relations between Pedestal interceptors

2016-06-10 Thread Oliver Hine
Hi all,

Following on from the release of pedestal 0.5.0 I'm pleased to say that 
angel-interceptor  is now 
compliant as of v0.3.0, available now on Clojars.

Cheers
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN] http-kit 2.2.0 final is out

2016-07-12 Thread Oliver Hine
This is awesome work, thank you to you and all the contributors.

On Tuesday, 12 July 2016 07:55:09 UTC+1, Peter Taoussanis wrote:
>
> On Clojars, and GitHub at: https://github.com/http-kit/http-kit/releases
>
> This release was put together with the help of (23!) individual 
> contributors.
>
> Enjoy, cheers! :-)
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] pedestal-api 0.3.0 release - better Swagger compliance

2016-07-12 Thread Oliver Hine
Hi all,

pedestal-api is a library for building APIs on the pedestal web server. It 
implements the parts of HTTP that are useful for APIs and allows you to 
document your handlers and middleware using idiomatic Clojure and generate 
a compliant Swagger specification.

This 0.3.0 release contains improvements to compliance of the Swagger spec, 
including:

   - Ordered declarations 
   - Guaranteed provision of operationId 
   
   - Default value for basePath 
   


You can find out more on the project's Github 
page https://github.com/oliyh/pedestal-api

Cheers

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] Introducing Martian - simplify your Clojure/script HTTP clients

2016-07-18 Thread Oliver Hine


Hi everyone,

 

I'm very excited to introduce *Martian*, a Clojure/script HTTP client 
wrapper which simplifies HTTP calls without surrendering control to an 
opaque library.

Find it on Github and Clojars now: https://github.com/oliyh/martian

 

It uses Swagger descriptions to name operations, map parameters to form the 
request map and serialise it as efficiently as possible, and is built using 
pedestal's interceptor concept making it composable and extensible.

 

You can use your favourite HTTP client, with implementations provided for 
httpkit, clj-http and cljs-http and extend behaviour any way you wish by 
providing your own interceptors to the chain. The following example shows 
how simple it can be to make HTTP calls to a Swagger API:

 

(require '[martian.core :as martian]

 '[martian.clj-http :as martian-http])

 

(let [m (martian-http/bootstrap-swagger 
"https://pedestal-api.herokuapp.com/swagger.json";)]

  (martian/response-for m :create-pet {:name "Doggy McDogFace" :type "Dog" :age 
3})

  ;; => {:status 201 :body {:id 123}}

 

  (martian/response-for m :get-pet {:id 123}))

  ;; => {:status 200 :body {:name "Doggy McDogFace" :type "Dog" :age 3}}

 

Martian offers a pure client with no server code or dependency, no compile 
time dependencies on the API, is cross platform, allows you full access to 
the request and response data and your own choice of HTTP library.

 

Using Swagger descriptions allows Martian to apply runtime schema checks to 
the parameters you send in requests and even provide dummy implementations 
that return generated responses instead of calling a real server. This 
opens up areas of code that would previously be difficult to test and makes 
them fully transparent.

 

As well as performing requests and returning the response, Martian lets you 
explore APIs, build URLs and request maps without executing them. 

 

(require '[martian.core :as martian]

 '[martian.clj-http :as martian-http])

 

;; bootstrap the martian instance by simply providing the url serving the 
swagger description

(let [m (martian-http/bootstrap-swagger 
"https://pedestal-api.herokuapp.com/swagger.json";)]

 

  ;; explore the endpoints

  (martian/explore m)

  ;; => [[:get-pet "Loads a pet by id"]

  ;; [:create-pet "Creates a pet"]]

 

  ;; explore the :get-pet endpoint

  (martian/explore m :get-pet)

  ;; => {:summary "Loads a pet by id"

  ;; :parameters {:id s/Int}}

 

  ;; build the url for a request

  (martian/url-for m :get-pet {:id 123})

  ;; => https://pedestal-api.herokuapp.com/pets/123

 

  ;; build the request map for a request

  (martian/request-for m :get-pet {:id 123})

  ;; => {:method :get

  ;; :url "https://pedestal-api.herokuapp.com/pets/123";

  ;; :headers {"Accept" "application/transit+msgpack"

  ;; :as :byte-array}

 

If you need to add your own behaviour it's easy - the interceptor pattern 
lets you add your own interceptors to decorate requests before they are 
sent and process the responses when they come back, as shown in this 
example:

 

(require '[martian.core :as martian]

 '[martian.clj-http :as martian-http])

 

(def add-authentication-header

  {:name ::add-authentication-header

   :enter (fn [ctx]

(assoc-in ctx [:request :headers "Authorization"] "Token: 
12456abc"))})

 

(def request-timer

  {:name ::request-timer

   :enter (fn [ctx]

(assoc ctx ::start-time (System/currentTimeMillis)))

   :leave (fn [ctx]

(->> ctx ::start-time

 (- (System/currentTimeMillis))

 (format "Request to %s took %sms" (get-in ctx [:handler 
:route-name]))

 (println))

ctx)})

 

(let [m (martian-http/bootstrap-swagger

   "https://pedestal-api.herokuapp.com/swagger.json";

   {:interceptors (concat martian/default-interceptors

  [add-authentication-header

   martian-http/encode-body

   (martian-http/coerce-response)

   request-timer

   martian-http/perform-request])})]

 

(martian/response-for m :all-pets {:id 123}))

;; Request to :all-pets took 38ms

;; => {:status 200 :body {:pets []}}

 

Martian can even be used for endpoints that don't have Swagger definitions 
if you describe them yourself in the Swagger format. There'll be more on 
this in future updates.

 

There are more examples and use cases on the Github README 
https://github.com/oliyh/martian

The project is new so any feedback is very welcome, including pull requests 
and issues on Github.

 

I hope you find it useful!

Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are m

[ANN] Advanced Martian usage

2016-11-10 Thread Oliver Hine
Hi all,

I wrote a blog post on some more advanced use of Martian, a library for 
abstracting HTTP integration with other systems.

All these use cases leverage the fact that Martian separates your data (the 
*what*) from the HTTP implementation details (the *how*) and lets you get 
on with connecting systems in valuable ways.

The blog post includes the following topics:

   - Generative testing of HTTP integration 
   - Integration with non-swagger APIs
   - REST as a side effect: integrating Martian with re-frame

You can read it all here: http://juxt.pro/blog/posts/advanced-martian.html

Thanks,
Oliy

https://github.com/oliyh/martian

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN] Advanced Martian usage

2016-11-10 Thread Oliver Hine
Hi Erik,

One of the philosophies of Martian was that it was not a "closed" system so 
that it made no demands on the server, and you can use it with servers that 
aren't yours and can't be changed. What you're describing is very much 
server-side testing, so Martian doesn't help directly there.

However, the description of endpoints using metadata is exactly how 
pedestal-api <https://github.com/oliyh/pedestal-api> works using Schema. In 
pedestal your routes are just a data structure so it would be easy to walk 
them, pull out the schema for the parameters of each handler and exercise 
them using test.check.
This is quite an interesting idea that would work well for "pure" handlers 
with no side effects, but once you add databases and things to the mix it 
could get trickier.

Let me know if you need any pointers on how to go about this.

Oliy



On Thursday, 10 November 2016 10:20:01 UTC, Erik Assum wrote:
>
> Hi Oliy, 
>
> In some ways this resonates with a thought I’ve had for a while, which 
> sort of appeared while working on a spring-boot application in java.
>
> So in Spring-boot, you have classes annotated as controllers, methods 
> annotated as request handlers which indicate what params and such they take.
> What I’d like (and which might very well exist, I haven’t researched this 
> yet) was a tool that exercised the methods in the controllers, directly 
> without involving http.
>
> So given something like this:
>
> @Controller
> public class MyController {
>
>   @RequestMapping(…)
>   public String helloWorld(@RequestParam(“name”) String name) {
> return “Hello “ + name;
>   }
> }
>
> I’d like something that found all the controllers, invoked the methods 
> annotated @RequestMethod with random data a la test.check
> and just verify that they returned “okish”, where I will not define 
> “okish” for now.
>
> And of course, I’d like to do some of the same with my ring app, e.g. 
> inspect all the routes in compojure, call the handlers (which I should have 
> spec’ed)
> and have them called with random test.check data and verify that return 
> “okish”
>
> I am aware of this being a huge oversimplification, with lots of pitfalls 
> and undefined behaviours, but I still find it an interesting idea.
>
> Erik.
>
> On 10 Nov 2016, at 10:56, Oliver Hine > 
> wrote:
>
> Hi all,
>
> I wrote a blog post on some more advanced use of Martian, a library for 
> abstracting HTTP integration with other systems.
>
> All these use cases leverage the fact that Martian separates your data 
> (the *what*) from the HTTP implementation details (the *how*) and lets 
> you get on with connecting systems in valuable ways.
>
> The blog post includes the following topics:
>
>- Generative testing of HTTP integration 
>- Integration with non-swagger APIs
>- REST as a side effect: integrating Martian with re-frame
>
> You can read it all here: http://juxt.pro/blog/posts/advanced-martian.html
>
> Thanks,
> Oliy
>
> https://github.com/oliyh/martian
>
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com 
> Note that posts from new members are moderated - please be patient with 
> your first post.
> To unsubscribe from this group, send email to
> clojure+u...@googlegroups.com 
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+u...@googlegroups.com .
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-learn: data-driven tutorials for educating users of your reagent/re-frame app

2017-01-11 Thread Oliver Hine
Hi everyone,

I have released re-learn , a library for 
writing and displaying tutorials to your users on your reagent/re-frame 
application with the following aims:

   - Display "lessons" on the UI right next to the elements they describe
   - Define the lessons as data right next to the code that creates the 
   elements
   - Support incremental introduction of new features to existing users
   - Work with UIs built with React and require no dom manipulation or 
   special markup

I have explained the rationale in more detail in a JUXT blog post at 
https://juxt.pro/blog/posts/re-learn.html

You can check out the library on github at https://github.com/oliyh/re-learn

There is a live demo at https://oliyh.github.io/re-learn/ which you can 
try, or the following animation (hope this works!) shows some of the 
features:




I hope someone will find this useful. There are more features to come, see 
the issues on Github for an idea or feel free to submit any of your own 
wishes.

Thanks
Oliy


-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] pedestal-api 0.3.1

2017-01-20 Thread Oliver Hine
I have released a small update to pedestal-api 
, a library for building APIs on the 
pedestal webserver.

This release makes it compatible with pedestal 0.5.2, which contains a 
security fix for a vulnerability fixed in ring 0.5.1 


Cheers
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-learn 0.1.1 - data-driven tutorials for your reagent/re-frame app

2017-06-08 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the 0.1.1 release of re-learn 
, a library for writing and displaying 
tutorials to your users on your reagent/re-frame application.

This is a non-breaking release that includes the following improvements:

   - Lesson positioning is now better when the page has scrolling #20 
   
   - Lessons that appear off-screen are now scrolled to #19 
   

The aims of re-learn are:

   - Display "lessons" on the UI right next to the elements they describe
   - Define the lessons as data right next to the code that creates the 
   elements
   - Support incremental introduction of new features to existing users
   - Work with UIs built with React and require no dom manipulation or 
   special markup

I have explained the rationale in more detail in a JUXT blog post at 
https://juxt.pro/blog/posts/re-learn.html

You can check out the library on github at https://github.com/oliyh/re-learn

There is a live demo at https://oliyh.github.io/re-learn/ which you can 
try, or the following animation shows some of the features:




There are more features to come, see the issues on Github for an idea or 
feel free to submit any of your own wishes.

Thanks
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] martian 0.1.5 - now with bindings for re-frame

2017-08-15 Thread Oliver Hine
Hi everyone,

I have just released martian 0.1.5 
 which includes a new 
library called martian-re-frame 
.

Martian provides an abstraction allowing you to describe the HTTP endpoints 
that you call without methods, urls and query parameters leaking into your 
application code, allowing you to work with pure Clojure data. It builds on 
the flexible interceptor pattern familiar to users of pedestal and supports 
APIs described with Swagger.

The new support for re-frame lets you use martian to consume APIs in your 
Clojurescript app with calls modelled as effects and responses dispatched 
as events as encouraged by re-frame.

Enjoy!

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-jump.el - jump to re-frame registrations in emacs

2017-11-20 Thread Oliver Hine
Hi everyone,

I work a lot with re-frame because it's my favourite approach to building 
UIs. However, it's a bit hard to navigate around in emacs because event 
handlers and subscriptions are registered with keywords but CIDER doesn't 
let you jump to the "definition" of a keyword like you can do with normal 
vars.

The solution I came up with is re-jump.el 
 which lets you navigate around 
re-frame registrations just like CIDER's jump-to-var. Here's an example:

(ns app.model
  (:require [re-frame.core :as re-frame]))
  
(re-frame/reg-event-db
  ::foo
  ...)


(ns app.view
  (:require [re-frame.core :as re-frame]
[app.model :as model]))
  
(defn bar []
  (re-frame/dispatch [::model/foo]))



With re-jump.el all you have to do is, with your cursor on a keyword like 
::model/foo in app.view, press M-> (this is M-. with the shift key) and you 
will be taken to the registration in app.model!

You can get it here: https://github.com/oliyh/re-jump.el

I've been using it myself and it seems to work well. If you use it and find 
any quirks or bugs please let me know.

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN] re-jump.el - jump to re-frame registrations in emacs

2017-11-20 Thread Oliver Hine
Hi Juraj,

Manual installation for now, I will investigate publishing to Melpa soon.

Cheers

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] pedestal-api 0.3.2

2017-12-03 Thread Oliver Hine
Hi all,

I have released a small fix to pedestal-api 
, a library for building Swagger 
compatible APIs on the pedestal webserver.

This release makes it compatible with pedestal 0.5.3.

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN] pedestal-api 0.3.2

2017-12-05 Thread Oliver Hine
An update to the update: please now use v0.3.4 instead!

On Sunday, 3 December 2017 14:48:39 UTC, Oliver Hine wrote:
>
> Hi all,
>
> I have released a small fix to pedestal-api 
> <https://github.com/oliyh/pedestal-api>, a library for building Swagger 
> compatible APIs on the pedestal webserver.
>
> This release makes it compatible with pedestal 0.5.3.
>
> Cheers,
> Oliy
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-graph - a GraphQL client for re-frame apps

2017-12-06 Thread Oliver Hine
Hi everyone,

I have written re-graph , GraphQL client 
library for re-frame applications that supports

   - Subscriptions and queries
   - Websocket and HTTP transports
   - Apollo-compatible servers like lacinia-pedestal
   - Queueing websocket messages until ready
   - Websocket reconnection on disconnect

Usage to subscribe, unsubscribe and query is as simple as the following:

(require [re-graph.core :as re-graph]
 [re-frame.core :as re-frame])
;; initialise re-graph, possibly including configuration options (see github 
readme for details)
(re-frame/dispatch [::re-graph/init {}])

(re-frame/reg-event-db
  ::on-thing
  (fn [db [_ payload]]
;; do things with payload e.g. write it into the re-frame database
))
;; start a subscription, with responses sent to the callback event provided
(re-frame/dispatch [::re-graph/subscribe
:my-subscription-id  ;; this id should uniquely identify 
this subscription
"{ things { id } }"  ;; your graphql query
{:some "variable"}   ;; arguments map
[::on-thing]])   ;; callback event when messages are 
recieved
;; stop the subscription
(re-frame/dispatch [::re-graph/unsubscribe :my-subscription-id])
;; perform a query, with the response sent to the callback event provided
(re-frame/dispatch [::re-graph/query
"{ things { id } }"  ;; your graphql query
{:some "variable"}   ;; arguments map
[::on-thing]])   ;; callback event when response is 
recieved


re-graph  takes care of all the 
intermediate steps and lets you focus on writing the queries and dealing 
with the results.

Thanks to the Walmart crew for lacinia 
 and lacinia-pedestal 
 which enabled my voyage 
of GraphQL discovery!

You can find it on GitHub at https://github.com/oliyh/re-graph, issues and 
pull requests are welcome.

Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-graph 0.1.1

2017-12-29 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of re-graph 0.1.1 
. re-graph is a 
graphql client for Clojurescript with re-frame bindings and support for 
queries, subscriptions and mutations over websocket or HTTP.

This release *adds support* for:

   - Mutations  - use the ::mutate 
event. 
   Thanks to @r0man 

This release *changes*:

   - Callback events  now 
   receive the entire payload map, consisting of :data and :error keys and 
   possibly more. This is a *breaking change* and any existing callback 
   events will need to destructure the payload map to obtain the :data value 
   which was passed in previously. See the README or tests for examples. This 
   change was added in order to provide better support for error handling, as 
   it now gives you access to the :error key, if present, to use in this 
   workflow. Thanks again to @r0man 

It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-graph 0.1.3 - the Clojurescript graphql client is now framework agnostic

2018-01-04 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of re-graph 0.1.3 
. re-graph is a 
graphql client for Clojurescript with re-frame bindings and support for 
queries, subscriptions and mutations over websocket or HTTP.

This release *adds support* for:

   - Vanilla Clojurescript usage via normal functions 
    with function callbacks, so 
   re-frame is not required to use re-graph anymore.


   
It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] martian 0.1.7 - UUID support

2018-02-02 Thread Oliver Hine
Hi everyone,

I am pleased to announce I have just released martian 0.1.7 
 

Martian provides an abstraction allowing you to describe the HTTP endpoints 
that you call without methods, urls and query parameters leaking into your 
application code, allowing you to work with pure Clojure data. It builds on 
the flexible interceptor pattern familiar to users of pedestal and supports 
APIs described with Swagger.

This release adds support for:

   - UUIDs as added by @markdingram  in #47 
    - thank you
   - A subscription to find out what requests are pending - #39 
   

This release fixes:

   - Reflection warnings in the JVM libraries

Enjoy!

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-graph 0.1.4 - the GraphQL client for Clojurescript

2018-02-21 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of re-graph 0.1.4 
. re-graph is a 
GraphQL client for Clojurescript with re-frame bindings and support for 
queries, subscriptions and mutations over websocket or HTTP.

This release *adds support for*:

   - Providing arbitrary parameters to the underlying cljs-http request 
   used with the HTTP transport. This allows, among other things, 
   authorisation. See #13  for 
   details, thanks to @chrisbetz 
   - Ability to destroy the re-graph state, including stopping all 
   subscriptions and closing the websocket first. See #12 
    for details.

This release *improves*:

   - Subscriptions are deduplicated by id, helping to reduce workload on 
   servers which do not support deduplication #16 
   
   - Unsuccessful reconnection attempts no longer add messages to the 
   websocket queue #17 
   - Should work better with advanced compilation #15 
   


   
It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] martian 0.1.8 - simplify your HTTP client

2018-02-28 Thread Oliver Hine
Hi everyone,

I am pleased to announce the release of martian 0.1.8

Martian provides an abstraction allowing you to describe the HTTP endpoints 
that you call without methods, urls and query parameters leaking into your 
application code, allowing you to work with pure Clojure data. It builds on 
the flexible interceptor pattern familiar to users of pedestal and supports 
APIs described with Swagger. Describing HTTP calls as data allows you to 
easily stub remote services, generate responses and add aspects such as 
logging and metrics.

This release *breaks*:

   - Any use of the encode-body and coerce-response interceptors in the 
   clj-http, httpkit or cljs-http namespaces. These interceptors have been 
   unified under martian.interceptors, see #23 
   

This release *adds support* for:

   - Supporting custom encoding in addition to the built-in support for 
   transit+msgpack, transit+json, edn and json #23 
   

This release *fixes*:

   - Identical requests sent while the previous request is still pending 
   are deduplicated in martian-re-frame #48 
   

This release *improves*:

   - Documentation on per-route interceptors #49 
   
   - Documentation on providing body parameters #50 
   


Enjoy!

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN] martian 0.1.8 - simplify your HTTP client

2018-02-28 Thread Oliver Hine
Forgot to add the link to the repo: https://github.com/oliyh/martian

On Wednesday, 28 February 2018 16:14:21 UTC, Oliver Hine wrote:
>
> Hi everyone,
>
> I am pleased to announce the release of martian 0.1.8
>
> Martian provides an abstraction allowing you to describe the HTTP 
> endpoints that you call without methods, urls and query parameters leaking 
> into your application code, allowing you to work with pure Clojure data. It 
> builds on the flexible interceptor pattern familiar to users of pedestal 
> and supports APIs described with Swagger. Describing HTTP calls as data 
> allows you to easily stub remote services, generate responses and add 
> aspects such as logging and metrics.
>
> This release *breaks*:
>
>- Any use of the encode-body and coerce-response interceptors in the 
>clj-http, httpkit or cljs-http namespaces. These interceptors have 
>been unified under martian.interceptors, see #23 
><https://github.com/oliyh/martian/issues/23>
>
> This release *adds support* for:
>
>- Supporting custom encoding in addition to the built-in support for 
>transit+msgpack, transit+json, edn and json #23 
><https://github.com/oliyh/martian/issues/23>
>
> This release *fixes*:
>
>- Identical requests sent while the previous request is still pending 
>are deduplicated in martian-re-frame #48 
><https://github.com/oliyh/martian/issues/48>
>
> This release *improves*:
>
>- Documentation on per-route interceptors #49 
><https://github.com/oliyh/martian/issues/49>
>- Documentation on providing body parameters #50 
><https://github.com/oliyh/martian/issues/50>
>
>
> Enjoy!
>
> Cheers,
> Oliy
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN] martian 0.1.8 - simplify your HTTP client

2018-02-28 Thread Oliver Hine
Forgot to add the link to the repo: https://github.com/oliyh/martian

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Comparing and selecting web API libraries

2018-03-09 Thread Oliver Hine
Pedestal also has support for Swagger (along with coercion, validation, 
serialisation and more) via pedestal-api 
https://github.com/oliyh/pedestal-api

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-graph 0.1.5 - the GraphQL client for Clojurescript

2018-05-13 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of re-graph 0.1.5 
. re-graph is a 
GraphQL client for Clojurescript with re-frame bindings and support for 
queries, subscriptions and mutations over websocket or HTTP.

   - 
   
   This release *adds support for*:
   - Providing the payload to be sent in the connection_init message, sent 
  whenever a websocket connection is made. See #19 
   and #20 
   for details, thanks to 
  @gabrielnau 
  - Now works on React native. See #25 
  , thanks to @madstap 
  
  - Working with query builders like venia 
   which include "query" at the start 
  of the string, see #18 
   

   

   
It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Asynchronous http poll

2018-05-13 Thread Oliver Hine
Hi,

Not a direct answer, but something that may help you simplify your problem:

I have a general rule to avoid core.async when only one value would ever be 
sent down the channel. For these use cases promises are an order of 
magnitude simpler, giving you control of the thread of operation, simple 
testing for completion (future-done?), simple timeouts, and no cleanup 
required afterwards.

>From what I understand, a promise would fit your requirements and I think 
would be much easier to reason about.

Hope this helps,
Oliy

On Tuesday, 8 May 2018 21:45:00 UTC+1, Brjánn Ljótsson wrote:
>
> Hi!
>
> I'm writing a server-side (S1) function that initiates an action on 
> another server (S2) and regularly checks if the action has finished 
> (failed/completed). It should also be possible for a client to ask S1 for 
> the status of the action performed by S2.
>
> My idea is to create an uid on S1 that represents the action and the uid 
> is returned to the client. S1 then asynchronously polls S2 for action 
> status and updates an atom with the uid as key and status as value. The 
> client can then request the status of the uid from S1. Below is a link to 
> my proof of concept code (without any code for the client requests or 
> timeout guards) - and it is my first try at writing code using core.async.
>
> https://gist.github.com/brjann/d80f1709b3c17ef10a4fc89ae693927f
>
> The code can be tested with for example (start-poll) or (repeatedly 10 
> start-poll) to test the behavior when multiple requests are made.
>
> The code seems to work, but is it a correct use of core.async? One thing 
> I'm wondering is if the init-request and poll functions should use threads 
> instead of go-blocks, since the http requests may take a few hundred 
> milliseconds and many different requests (with different uids) could be 
> made simultaneously. I've read that "long-running" tasks should not be put 
> in go blocks. I haven't figured out how to use threads though.
>
> I would be thankful for any input!
>
> Best wishes,
> Brjánn Ljótsson
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] lacinia-gen - a library to generate GraphQL responses

2018-06-16 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of lacinia-gen 0.1.0 
. lacinia-gen lets you generate 
GraphQL responses using your lacinia schema and GraphQL queries, allowing 
you to make your tests more rigorous in both Clojure and Clojurescript.

Here's an example:

(require '[lacinia-gen.query :as query])

(def schema '{:enums {:position {:values [:goalkeeper :defence :attack]}}
  :objects {:team {:fields {:wins {:type Int}
:losses {:type Int}
:players {:type (list :player)}}}
:player {:fields {:name {:type String}
  :age {:type Int}
  :position {:type :position
  :queries {:teams {:type (list :team)
:resolve :resolve-teams}}})

(let [f (query/generate-fn schema {})]
(f "query { teams { wins players { name } } }" {}))
;; => {:data
   {:teams
({:wins 0, :players ()}
 {:wins 0, :players ({:name ""})}
 {:wins 1, :players ()}
 {:wins 0, :players ({:name "÷ "} {:name "�¢�"})}
 {:wins 1, :players ()})}}


It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] doo-chrome-devprotocol - run your doo tests in Chrome without needing karma or npm

2018-07-11 Thread Oliver Hine

Hi everyone,

I'm pleased to announce the release of doo-chrome-devprotocol 0.1.0 
. It is doo 
 test runner that executes your tests in 
Chrome.

doo-chrome-devprotocol uses a java library to control Chrome using the devtools 
protocol , the 
officially supported method for controlling Chrome from the Chrome 
developers. This means you don't need karma or npm, which are required by 
the chrome-headless runner in doo.

Running your tests is simple:

(require '[doo-chrome-devprotocol.core :as dc])

(dc/run "path/to/doo-tests.js")
;; => {:success? true
   :report {:tests 2
:assertions 4
:failures 0
:errors 0}}


The library contains several useful building blocks which you can compose 
to give you access to the full set of operations supported by the devtools 
protocol. This will let you listen for events or manipulate any supported 
characteristic of the browser before or after your tests, such as taking 
screenshots.

It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] martian 0.1.9 - simplify your HTTP clients

2018-11-21 Thread Oliver Hine
Hi everyone,

I am pleased to announce the release of martian 
0.1.9

Martian provides an abstraction allowing you to describe the HTTP endpoints 
that you call without methods, urls and query parameters leaking into your 
application code, allowing you to work with pure Clojure data. It builds on 
the flexible interceptor pattern familiar to users of pedestal and supports 
APIs described with Swagger. Describing HTTP calls as data allows you to 
easily stub remote services, generate responses and add aspects such as 
logging and metrics.

https://github.com/oliyh/martian

This release *adds support* for:

   - Trimming trailing slashes from base URLs as per #55 
    (thanks @samuelwagen 
   )

This release *fixes*:

   - Compilation with the latest Clojurescript (1.10.439)
   - A compilation warning for schema #52 
    (thanks @samuelwagen 
   )

This release *improves*:

   - The http-kit stub responder is now easier to use
   - cljdoc badges #59  (thanks 
   @polymeris )


Enjoy!

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] How to structure Clojurescript apps for simplicity and testability

2018-11-22 Thread Oliver Hine
Hi everyone,

I've recently published a blog post describing the techniques I have 
evolved over the last 3 years for writing Clojurescript applications.
It started as an explanation of why I like to use re-frame but grew to 
encompass the idea of separation of data and representation (the HTML 
layer) and how this makes your code simpler and more testable.
It includes the techniques used for testing these boundaries including 
generative tests for UIs and UI assertions that don't involve digging into 
HTML structures. The grand finale shows how your can prove that data coming 
from the server will be rendered in a way that makes sense to your users 
using transitive properties of unit tests rather than complicated and slow 
(Selenium) integration tests.

I hope you find it interesting and I would greatly appreciate any feedback 
you have.
http://juxt.pro/blog/posts/cljs-apps.html

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-graph 0.1.6 - the GraphQL client for Clojurescript

2018-11-28 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of re-graph 0.1. 
6. re-graph is a GraphQL client for 
Clojurescript with re-frame bindings and support for queries, subscriptions 
and mutations over websocket or HTTP

The big change in this release is that it now supports multiple GraphQL 
sources - previously it was a singleton.

This release *adds support for*:

   - Multiple named instances as per #30 
   , see updated README
   - HTTP errors are now expressed in the same manner as Websocket errors 
   #28 , thanks @pbostrom 
   


It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-graph 0.1.8 - the GraphQL client for Clojurescript

2019-03-05 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of re-graph 0.1. 
8. re-graph is a GraphQL client for 
Clojurescript with re-frame bindings and support for queries, subscriptions 
and mutations over websocket or HTTP

This release *fixes*:

   - Query and mutate API functions #38 
   , thanks @qiuyin 
   
   - Retrying queries over websocket when the websocket is not ready #39 
   


It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN] re-graph 0.1.8 - the GraphQL client for Clojurescript

2019-03-06 Thread Oliver Hine
Thanks, I hadn't considered that was anything special - I'll update the readme.

I've not come across any issues with js->clj nor had any reports of any, but 
thanks for drawing it to my attention.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] kamera - visual testing tools for Clojure with devcards integration

2019-03-22 Thread Oliver Hine
Hi everyone,

I'm very excited to announce kamera , a 
visual testing tool for Clojure.

>  

> When data is represented visually for a human to view you must take to 
> present it intuitively, accessibly and beautifully. This requires skill, 
> time and above all human judgement.
> Once achieved you want to ensure it does not suffer regressions. kamera is 
> a library designed to help you capture and compare screenshots of your 
> application, failing if there is too much divergence between an expected 
> reference image and the current display and creating a diffference image to 
> show you where.
> The best way to test visual representation is to create devcards 
>  which you can use to display 
> components in as many states as possible. If you ensure you separate 
> rendering from business logic you can ensure that refactoring will not 
> affect them and prevent them becoming brittle - I outlined this approach in 
> a blog post for JUXT .


If you don't use figwheel or devcards you can still use kamera to take 
screenshots and compare them to reference images - click here to see how 
.

If you do use devcards then testing them all is simple! If you have the 
following devcards files:

test
└── example
├── another_core_test.cljs
└── core_test.cljs

... and a directory populated with reference images, named in the same way:

test-resources
└── kamera
├── example.another_core_test.png
└── example.core_test.png

... you can get kamera to screenshot the devcards and compare with the 
corresponding reference images with the following:

(ns example.devcards-test
  (:require [kamera.devcards :as kd]
[clojure.test :refer [deftest testing is]]))

(deftest devcards-test
  (kd/test-devcards "dev" kd/default-opts))

The output will look like this:

Results

example.kamera-test1 non-passing tests:

Fail in devcards-test#!/example.another_core_test
example.another_core_test.png has diverged from reference by 0.020624, please 
compare
Expected: test-resources/kamera/example.another_core_test.png
Actual: target/kamera/example.another_core_test.png
Difference: target/kamera/example.another_core_test-difference.png
expected: (< metric metric-threshold)

  actual: (not (< 0.020624 0.01))

The target directory will contain an expected, actual and difference image 
for every devcard. The three files referenced above will look like this:
 
There are loads of options  to let 
you choose what metrics to use, filter out devcards you don't want to test, 
normalisations to apply etc.

I hope you find it useful! Let me know if you have any questions. Issues, 
feature requests and PRs can be submitted via GitHub.

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] locksmith 0.1.1 - idiomatic Clojure keys for GraphQL

2019-03-29 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the 0.1.1 release of locksmith 
, a library for translating (nested) 
data structures between Clojure idioms (kebab keys, ? suffix on booleans, 
keyword enums) and GraphQL as described by a lacinia schema. locksmith 
precalculates a set of efficient transforms based on your schema so it 
should perform better than postwalk. It formed part of a set of solutions 
when transitioning an existing web app from REST to GraphQL that I talked 
about on the JUXT blog 
.

This release *adds support for*:

   - Camel cased lacinia schemas - in fact, anything supported by 
   camel-snake-kebab (previously snakes only)

Hope you find it useful!

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] kamera 0.1.1 - visual testing with devcards integration, now with report

2019-05-03 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the 0.1.1 release of kamera 
 which now generates an html / 
Clojurescript SPA report of the tests it has run.

I have also written an introductory blog post explaining the concept and 
use cases: https://juxt.pro/blog/posts/visual-testing.html

The report looks like this:

*Summary*



*Test detail*



*Linked image magnifiers, to inspect detail*



Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] martian 0.1.10 - simplify your HTTP clients

2019-06-25 Thread Oliver Hine
Hi everyone,

I am pleased to announce the release of martian 0.1.10

Martian provides an abstraction allowing you to describe the HTTP endpoints 
that you call without methods, urls and query parameters leaking into your 
application code, allowing you to work with pure Clojure data. It builds on 
the flexible interceptor pattern familiar to users of pedestal and supports 
APIs described with Swagger. Describing HTTP calls as data allows you to 
easily stub remote services, generate responses and add aspects such as 
logging and metrics.

https://github.com/oliyh/martian

This release *adds support* for:

   - Making your own decision about keywordising keys as per #65 
    (thanks @andrewmcveigh 
   )
   - URI formats for strings #63  
(thanks 
   again to @andrewmcveigh )

Enjoy!

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/e930e649-3406-479a-ac27-ad4e0584545f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-graph 0.1.9 - the GraphQL client for Clojurescript

2019-06-28 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of re-graph 0.1.9 
. re-graph is a GraphQL client for 
Clojurescript with re-frame bindings and support for queries, subscriptions 
and mutations over websocket or HTTP.

This release *adds support for*:

   - Error messages returned via the websocket transport are now piped to 
   the callback handler in the :errors key #43 
   

It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/39063000-71de-4fa0-bbe8-833c223e6c6b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] re-graph 0.1.10 - the GraphQL client for Clojurescript and now Clojure too

2019-07-25 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of re-graph 0.1.10 
. re-graph is a GraphQL client for 
Clojurescript - and now Clojure! - with re-frame bindings and support for 
queries, subscriptions and mutations over websocket or HTTP.

This release *adds support for*:

   - Clojure! re-graph has been ported to cljc. Thank you @henryw374 
    for the initial work #47 
   

This release *fixes*:

   - Complaining about destroyed instances - thanks @iku000888 
    #45 
   


It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/9adf0a6e-df2e-43b9-a2bc-5b51adae9e79%40googlegroups.com.


[ANN] re-graph 0.1.11 - the GraphQL client for Clojure/script

2019-10-27 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of re-graph 0.1.11 
. re-graph is a GraphQL client for 
Clojurescript and Clojure with re-frame bindings and support for queries, 
subscriptions and mutations over websocket or HTTP.

This release *fixes*:

   - Some Clojure interop
   - Node runtime compatibility (as per #51 
   , thanks to @loomis 
   )

It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/25bce2ee-e524-4bd8-bacc-94706fb596eb%40googlegroups.com.


[ANN] martian 0.1.11 - simplify your HTTP clients

2019-12-13 Thread Oliver Hine
Hi everyone,

I am pleased to announce the release of martian 0.1.11

Martian provides an abstraction allowing you to describe the HTTP endpoints 
that you call without methods, urls and query parameters leaking into your 
application code, allowing you to work with pure Clojure data. It builds on 
the flexible interceptor pattern familiar to users of pedestal and supports 
APIs described with Swagger. Describing HTTP calls as data allows you to 
easily stub remote services, generate responses and add aspects such as 
logging and metrics.

https://github.com/oliyh/martian

This release *adds support* for:

   - Free form objects (additionalProperties) #70 
    (thanks @omartell 
   )
   - Recursive schemas #71 
   - re-frame on-success and on-failure handlers can be vectors, allowing 
   closing over of local bindings #67 
   
   

Enjoy!

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/819e31e2-7ea9-43ba-a855-be17e8d20a65%40googlegroups.com.


[ANN] doo-chrome-devprotocol 0.1.1 - run your doo tests in Chrome without needing karma or npm

2020-01-13 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of doo-chrome-devprotocol 0.1.1 
. It is doo 
 test runner that executes your tests in 
Chrome.

This release *adds support for*:

   - Newer versions of Google Closure


It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/0656bf0c-900e-4922-903a-b5f82d5e09d9%40googlegroups.com.


[ANN] superlifter - DataLoader for Clojure

2020-02-19 Thread Oliver Hine
Hi everyone,

I am pleased to announce the first release of superlifter 
.

Superlifter is an implementation of DataLoader 
 for Clojure.

To quote from the DataLoader readme:

DataLoader allows you to decouple unrelated parts of your application 
without sacrificing the performance of batch data-loading. While the loader 
presents an API that loads individual values, all concurrent requests will 
be coalesced and presented to your batch loading function. This allows your 
application to safely distribute data fetching requirements throughout your 
application and maintain minimal outgoing data requests.

Superlifter uses Urania , a remote data 
access library for Clojure/script inspired by Haxl 
 which in turn inspired DataLoader. 
Urania allows batching of similar fetches and deduplication via caching of 
identical fetches.

Superlifter adds smooth integration with libraries like lacinia 
, where GraphQL resolvers are run 
independently and must return data (or promises of data), leading to 1+n 
problems which can otherwise only be resolved by prefetching which 
complicates code.
There is a readme and an example project for a Lacinia GraphQL server at 
the repo on Github https://github.com/oliyh/superlifter

Feedback appreciated, as always, here or on Github.

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/2cf044bf-1707-4ce8-89cd-a7f6fcb46d98%40googlegroups.com.


[ANN] re-graph 0.1.12 - the GraphQL client for Clojure/script

2020-03-06 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the release of re-graph 0.1.12 
. re-graph is a GraphQL client for 
Clojurescript and Clojure with re-frame bindings and support for queries, 
subscriptions and mutations over websocket or HTTP.

This release in particular has had a lot of contributions from the 
community for which I am very thankful!

This release *changes*:

   - The signature of the mutate function which incorrectly took a single 
   vector but now takes varargs in the same way as query #55 
    (thanks @loomis 
   )

This release *adds support for*:

   - Synchronous mutate and query (Clojure only) #56 
    (thanks @loomis 
   )
   - Specifying the websocket sub-protocol #53 
    #62 
    (thanks @jmarca 
   )
   - Aborting operations via HTTP (experimental) #50 
   

This release *improves*:

   - Error handling will no longer overwrite the status or message from the 
   server if they are present #54 
    (thanks @loomis 
   )
   - The examples in the readme #57 
    #61 
    (thanks @viebel 
   )


It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/0c46ad27-e07d-461b-8656-77d9a6b8b81e%40googlegroups.com.


[ANN] re-learn 0.1.3 - data-driven tutorials for your reagent/re-frame app

2020-03-24 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the 0.1.3 release of re-learn 
,
 
a library for writing and displaying tutorials to your users on your 
reagent/re-frame application.

This release *changes*:

   - When a tutorial is available it no longer starts automatically but 
   instead displays a snackbar at the bottom of the screen indicating that a 
   tutorial is available with options to accept or dismiss #17 
   
   The legacy behaviour is available by setting :auto-accept? true on the 
   tutorial description.
   [image: image]
   
The aims of re-learn are:

   - Display "lessons" on the UI right next to the elements they describe
   - Define the lessons as data right next to the code that creates the 
   elements
   - Support incremental introduction of new features to existing users
   - Work with UIs built with React and require no dom manipulation or 
   special markup

I have explained the rationale in more detail in a JUXT blog post at 
https://juxt.pro/blog/posts/re-learn.html

You can check out the library on github at https://github.com/oliyh/re-learn

There is a live demo at https://oliyh.github.io/re-learn/ which you can 
try, or the following animation shows some of the features:




Feedback on Github is always welcome.

Thanks
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/04e03e0e-dc18-4f5f-af34-c9e74cbe079b%40googlegroups.com.


Re: [ANN] superlifter - DataLoader for Clojure

2020-03-26 Thread Oliver Hine
Hi everyone,

I have published a blog post explaining the use and application of the 
library: https://juxt.pro/blog/posts/superlifter.html

In writing the blog post I realised the API could be much simpler. I have 
made some changes and released superlifter 0.1.1 which should be much more 
straightforward to use.

Thanks,
Oliy

On Saturday, 22 February 2020 02:42:54 UTC, Ag Ibragimov wrote:
>
>
> This looks absolutely mind-blowing and incredible! Thank you! 
>
> On Wed 19 Feb 2020 at 14:14, Oliver Hine > 
> wrote: 
>
> > Hi everyone, 
> > 
> > I am pleased to announce the first release of superlifter 
> > <https://github.com/oliyh/superlifter>. 
> > 
> > Superlifter is an implementation of DataLoader 
> > <https://github.com/graphql/dataloader> for Clojure. 
> > 
> > To quote from the DataLoader readme: 
> > 
> > DataLoader allows you to decouple unrelated parts of your application 
> > without sacrificing the performance of batch data-loading. While the 
> loader 
> > presents an API that loads individual values, all concurrent requests 
> will 
> > be coalesced and presented to your batch loading function. This allows 
> your 
> > application to safely distribute data fetching requirements throughout 
> your 
> > application and maintain minimal outgoing data requests. 
> > 
> > Superlifter uses Urania <https://github.com/funcool/urania>, a remote 
> data 
> > access library for Clojure/script inspired by Haxl 
> > <https://github.com/facebook/Haxl> which in turn inspired DataLoader. 
> > Urania allows batching of similar fetches and deduplication via caching 
> of 
> > identical fetches. 
> > 
> > Superlifter adds smooth integration with libraries like lacinia 
> > <https://github.com/walmartlabs/lacinia>, where GraphQL resolvers are 
> run 
> > independently and must return data (or promises of data), leading to 1+n 
> > problems which can otherwise only be resolved by prefetching which 
> > complicates code. 
> > There is a readme and an example project for a Lacinia GraphQL server at 
> > the repo on Github https://github.com/oliyh/superlifter 
> > 
> > Feedback appreciated, as always, here or on Github. 
> > 
> > Cheers, 
> > Oliy 
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/aedba7b4-8868-43b5-ae04-18176085b67e%40googlegroups.com.


[ANN] martian 0.1.12 - now available in lite

2020-04-28 Thread Oliver Hine

Hi everyone,

I am pleased to announce the release of martian 0.1.12

Martian provides an abstraction allowing you to describe the HTTP endpoints 
that you call without methods, urls and query parameters leaking into your 
application code, allowing you to work with pure Clojure data. It builds on 
the flexible interceptor pattern familiar to users of pedestal and supports 
APIs described with Swagger. Describing HTTP calls as data allows you to 
easily stub remote services, generate responses and add aspects such as 
logging and metrics.

https://github.com/oliyh/martian

Once again I am really pleased and proud to be supported by my 
contributors, thank you everyone.

This release *adds support* for:

   - Path parameters #75  (thanks 
   @RafaeLeal )
   - Route definition spec #78  (turn 
   on spec instrumentation to use it)
   - clj-http-lite module #81 
(thanks @deas )

This release *improves*:

   - Handling of additionalProperties #76 
    (thanks @RafaeLeal 
   )
   - Handling of open maps #77 
(thanks @RafaeLeal )
   - Remove implicit martian-httpkit dependency from martian-test #82 
    (thanks @davidjameshumphreys 
   )


Enjoy!

Cheers,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/aa25a783-1723-46ea-9518-df242c3d1a2f%40googlegroups.com.


[ANN] carmine-streams - utilities for working with Redis streams

2020-05-22 Thread Oliver Hine
Hi everyone,

I'm pleased to announce the first proper release of carmine-streams 
, a library for working with 
Redis streams in Clojure using carmine.

Redis does a brilliant job of being fast with loads of features and Carmine 
does a brilliant job of exposing all the low-level Redis commands in 
Clojure. Working with Redis' streams API requires quite a lot of 
interaction to produce desirable high-level behaviour, and that is what 
this library provides.


carmine-streams allows you to create streams and consumer groups, consume 
streams reliably, deal with failed consumers and unprocessable messages and 
gain visibility on the state of it all with a few simple functions.

For example, consuming a stream via a consumer group is as simple as this:

(require '[carmine-streams.core :as cs])
(def conn-opts {})

(def stream (cs/stream-name "sensor-readings"));; -> 
stream/sensor-readings
(def group (cs/group-name "persist-readings")) ;; -> 
group/persist-readings
(def consumer (cs/consumer-name "persist-readings" 0)) ;; -> 
consumer/persist-readings/0

(cs/create-consumer-group! conn-opts stream group)

(def opts {:block 5000})

(future
 (cs/start-consumer! conn-opts
 stream
 group
 consumer
 #(println "Yum yum, tasty message" %)
 opts))


More details are in the readme. It's available now on Clojars.

Thanks and enjoy,
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/16d62973-e02f-448d-a633-d5e4348818ba%40googlegroups.com.


Re: cond->: Using of threading expression in tests?

2015-10-03 Thread Oliver Hine
You may also find a use for condas-> which I describe in a mini blog post 
here: http://blog.juxt.pro/posts/condas.html

It combines cond-> and as-> which I find super useful when dealing with 
various fn type signatures.

On Saturday, 3 October 2015 15:59:51 UTC+1, ru wrote:
>
> So am I! Sean, can you share code for condp->> too, please.
>
> пятница, 2 октября 2015 г., 17:49:28 UTC+3 пользователь ru написал:
>>
>> Hi,
>>
>> Can I use in tests threading expression of cond->, and how?
>>
>> Thanx in advance,
>>   Ru
>>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Help with decisions in threading macros

2015-11-05 Thread Oliver Hine
See also cond-> (Clojure core) and even condas-> 
(http://blog.juxt.pro/posts/condas.html)

Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] Angel Interceptor - Rule-driven Pedestal interceptors

2015-12-10 Thread Oliver Hine
Hi everyone,

I recently published angel-interceptor, a library for declaring 
relationships between Pedestal interceptors which allows control over order 
and scope without repetition or logic branching, to Github and Clojars.

The rationale is described in this post: 
http://blog.juxt.pro/posts/angel-interceptor.html

You can find it on Github here: https://github.com/oliyh/angel-interceptor

Thanks, I hope you will find it useful. It's in embryonic form so any 
feedback or ideas are welcome.
Oliy

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Crossclj.info shows outdated dependencies

2016-01-19 Thread Oliver Hine
See also the lein ancient plugin for similar functionality at the command 
prompt.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] pedestal-api - A batteries-included Swagger API for Pedestal

2016-03-14 Thread Oliver Hine
Hi everyone,

It gives me great pleasure to introduce pedestal-api 
, a batteries-included Swagger API 
for the Pedestal web server.

It is similar to compojure-api but allows you to use Pedestal's data driven 
philosophy, interceptor chain and bidirectional routing.
It's based on the excellent work of Metosin, Frankie Sardo and of course 
Pedestal itself.
I have written an article describing the rationale, benefits and an example 
here: https://blog.juxt.pro/posts/pedestal-api.html

I hope you find it useful! Feedback and suggestions are always welcome here 
or via GitHub.

Oliver

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.