WSSCode Blog

Pathom Updates 2 - Planner Debugger

October 26, 2020

EQL Process

A small update on this, the interface to trigger EQL shape resolution now can take also the initial context map for convenience:

(p.eql/process env {:customer/id 123} [:customer/full-name])

Smart Maps

A small change on the CLJS side, now smart maps print like normal maps.

Planner Debugger

The planner in Pathom is responsible for figure which resolvers to call, in which order, given the user request.

Depending on how complicated the input/output relationship is, the plan can get complicated.

When it does, a debugger tool can save hours of work. Last week while I was playing with Pathom 3, I had one of those situations. I had the resolvers right, but the planner was doing the wrong plan. So I thought it was time to start this tool, and this is what it looks like (this tool is in a very early stage still):

Planner Debugger Preview


  • Gray circle: resolver call
  • Yellow circle: AND node, calls every node connected with an orange line
  • Black connection: run after
  • Blue border: root node

The slider controls the plan building up process. You see how Pathom traverses the indexes to get the execution graph. I wanted to share because I think this looks pretty cool!

This tool will be available for users eventually.

Documentation Status

Since last week I add a Getting Started page, which glosses over the main concept of attribute modeling in Pathom. In the How Pathom Works section, we now have the Indexes and the Shape Descriptor pages written.

  • Getting Started
  • Rationale
  • Tutorial
  • Using Pathom
    • Resolvers
    • Built-in resolvers
    • Smart Maps
    • EQL
    • Environment
  • Modeling Guides
  • How Pathom Works
    • Indexes
    • Planner
    • Runner
    • Shape Descriptor

That’s it for this update. See you at the next one!

Follow closer

If you like to know in more details about my projects check my open Roam database where you can see development details almost daily.

Support my work

I'm currently an independent developer and I spent quite a lot of my personal time doing open-source work. If my work is valuable for you or your company, please consider supporting my work though Patreon, this way you can help me have more available time to keep doing this work. Thanks!

Current supporters

And here I like to give a thanks to my current supporters:

Albrecht Schmidt
Austin Finlinson
Daemian Mack
Kendall Buchanan
Mark Wardle
Michael Glaesemann
Oleg, Iar, Anton