Fork me on GitHub

I haven't followed to see how quickly it gets new things, but after this week release there doesn't seem to be much to do for Pathom3 anymore. Is it getting close to ready?


hello Tomi! yes, we are getting there! the API has been stable for a while, although Im gonna have a few breaking changes in the next release (on the placeholders entity data feature, see:, the good news is that I'm doing it now to prepare to leave the alpha state. fully ready is probably never going to be. one feature that will prob need more development is the foreign parsers, they have their complexities and not many people AFAIK are trying it, so there is likely to be bugs there. but on the rest things seem to be running smoothly

😍 2

That one already has a PR too; are there other looming breaking changes?


this one was merged yesterday, but pretty minor, only if you are using the ::p.error/missing-output error cause for some special treatment you will be affected:


FYI, people that use Pathom with core.cache might want to look into, I see the would be vulnerable to the same issue (cache stampede)


I believe the fix is not hard, but I cannot fully confirm it as I haven’t used the core.cache.wrapped myself yet. Conceptually I’m pretty sure it is not hard to work around it though


that is great to know!


This is how I would solve it (and how I have been working without the wrapped namespace)

👍 2
Jakub Holý (HolyJak)22:02:19

Hello! How do I prevent exceptions in processor responses, as in > {my-mutation {:com.wsscode.pathom3.connect.runner/mutation-error #error { > :cause “Mutation my-mutation not found” ..}} ? This is a problem b/c Transit screams when it tries to serialize an Exception. I have ::pcr/wrap-mutate that should catch an exception and return data instead but obviously it doesn’t work. Thank you for any tips!


you are looking for ::pcr/wrap-mutation-error


humm, I'm looking close, maybe not, let me try something here


ok, your code is actually correct, but I found that the not found is an edge case here

👍 2

because that doesn't go though the wrap-mutate path


but it can, I got a fix, gonna make some tests and get it out


my example code:

  (-> {:com.wsscode.pathom3.error/lenient-mode? true}
        [(pco/mutation 'foo2
           (fn [env params]
             (throw (ex-info "Foi" {}))))])
        {::p.plugin/id 'err
         (fn [mutate]
           (fn [env params]
               (mutate env params)
               (catch Throwable err
                 {::pcr/mutation-error (ex-message err)}))))}))
  ['(foo {})
   '(foo2 {})])
; => {foo {:com.wsscode.pathom3.connect.runner/mutation-error "Mutation foo not found"},
; foo2 {:com.wsscode.pathom3.connect.runner/mutation-error "Foi"}}


fixed in main wait, not merged yet

Jakub Holý (HolyJak)16:02:19

That was a lightning fast fix, thank you!