- Add ::p/root-query to environment
- Small change for performance on previous fix
- Fix
java.lang.UnsupportedOperationException on external wait situation
- Add a mechanism to retry long running external waiting on connect parallel reader.
- Fixed issue that made resolvers stuck when depending on a external data in middle of resolver chain
- Fixed counting behavior on max-key-iterations
- Reduced default max-key-iterations to 5
- Support
::p/final on p/map-reader for short circuit processing
- Fixed issue #105, when a resolver gets an error but another concurrent gets a valid value after, the later must be used as the response
::pp/processing-recheck-timer off by default
- Add new
::pp/processing-recheck-timer option to parallel parser
- Looser spec on
::pc/transform - Use
contains? instead of find in map reader to support wider range of custom maps - BREAKING: Fixed specs, when processing a plan path, use
::pc/plan-path instead of ::pc/plan in the env, which is the correct name
- Support tempid? on pathom graphql config, thanks @codonnell!
- Fix return of parallel timeout
- Enable conditional removal of specs using closure defines
{com.wsscode.pathom.misc.INCLUDE_SPECS false}
- Fix
pc/data->shape breaking when data has complex keys - Fix alias on
p/join-seq-parallel optimized runs
- Add
p/params to get params from env - Include params in cache key
- Support custom inner parser for GraphQL processing
- *** Add attributes index ***
- Fix on join env, ensure ast and query are preserved
- Add
p/ast-properties - Customize async cache channel size via
::p/async-request-cache-ch-size - Pathom remote works with sync and async parsers
- Implement
abort on fulcro network - Add docstrings to parsers, check it to learn about knobs you can use to tune the parser.
- Add
p/elide-special-outputs plugin to simplity elision of pathom output specials (::p/reader-error and ::p/not-found) - Add
p/map-select, a quick way to run EQL selections on maps
- Add config options for
graphql-network to support custom headers, thanks @Joe Lane! - Move core.async and test.check to main dependencies
- Add missing specs for:
::pc/resolve, ::pc/resolver, ::pc/mutate and ::pc/mutation - Add
com.wsscode.pathom.connect.graphql2 ns, using raw graphql translations - Add support for
::gql/alias
- Fix error propagation for uncached resolvers
- Fix timeout issue case when chained dependencies cause an error in the middle
- Add support for
:pathom/context on mutations, see https://wilkerlucio.github.io/pathom/#_mutation_output_context - Increase default
::pp/max-key-iterations to 10 p/transduce-maps check if map is native (fixes issue were fulcro tempids were losing data)
- Fix
compute-paths generating invalid results
- Add
p/pre-process-plugin - Fix edge case on compute-paths that could miss a possible path
- Improved counting of attribute loops in parallel parser
- Reduce size of
pc/async-reader2 to support debugging - Improvements to http diplomat on clojure, thanks @souenzzo!
- Fix p/error-str returning a type instead of string when error has no message or data
- Fix on generative: normalize nested placeholders properly
- Fix: don't capture mutation exception at parser level
- Fix on generative, don't apply transform on join results
- Fix
p/remove-query-wild-card to maintain query meta - Query generators support custom rules from query meta
- Query generator proper constraints placeholder nodes
- Fix compute-paths bug when user has more than 3 inputs on a resolver
p/swap-entity now runs the function when entity is not an atom and return the result- Faster performance for list processing when query doesn't have a join
- Optimize parallel list processing when entity is data complete upfront
- Use edn-query-language library for EQL parsing
- Add
pc/alias-resolver and pc/alias-resolver2 helpers p/request-cache-plugin is now always native, no need to require it manually- New strategy to ensure same cached resolver is never called twice
- Js fetch adds trace details about http requests
- Support
::pc/transform in pc/resolver and pc/mutation - Add
pc/transform-batch-resolver helper - Add
pc/transform-auto-batch helper - Add support for alias output properties
- Add fulcro union branch to fulcro network helpers
- Add
pc/project-query-attributes - Fix
p/cached regarding nil values, they were considering nil a non cached value
- Add a timeout safe guard on parallel parser to ensure nothing is holding the whole parser
- Improved path cost calculation, don't count same sym twice, consider cache in multi-step paths
- Fix deadlock situation on reader planning
p/post-process-parser-plugin now handles async
- Add
pc/defresolver helper to define a map resolver - Add
pc/defmutation helper to define a map mutation - Add
pc/resolver-dispatch-embedded to dispatch from the resolver map ::pc/resolve - Add
pc/mutation-dispatch-embedded to dispatch from the mutation map ::pc/mutate - Add
pc/batch-restore-sort helper - Add
pc/reader2, new algorithm that uses the path planning from pc/parallel reader - Add
pc/async-reader2, new algorithm that uses the path planning from pc/parallel reader - Add symbol validation on factories and resolver creation helpers
- Add
pc/project-parent-query-attributes to facilitate the creation of dynamic resolvers. - GraphQL integration facilitated using new resolver and mutation maps, more info.
- Fixed
pc/async-reader2 bug missing async read on batch processing - Add
pc/create-thread-pool with arity 1 to have dynamic thread pool size (managed by core.async) - Working implementation for
clj-http http driver. Thanks @souenzzo - BREAKING!
::pc/mutations renamed to ::pc/index-mutations for consistency, only breaks if you manually fiddled with the mutation index - BREAKING!
pc/connect-plugin (from beta11) is now a function and works in very different way now, check docs for more info - BREAKING!
pc/register implementation works differently, check docs for updates - BREAKING!
::pc/resolvers renamed to ::pc/register to better describe it
- Support arity 1 on
pc/batch-resolver - Add
pc/resolver and pc/mutation helpers - Fix
p/elide-not-found to retain meta data (thanks @tony.kay!)
- Connect plugin provide resolvers via
::pc/resolvers key, making possible to disable their registration - Fix bug in register when registering sequences
- Add
open-ident-reader to connect - Add
register to connect - Add support for extra context with
:pathom/context param on pc/ident-reader and pc/open-ident-reader - Add connect built-in resolvers for indexes and resolver weights
- Remove dependency on
clojure.math.combinatorics (no more compile warnings!) - New plugin wrapper
::wrap-parser2, like ::wrap-parser but gets the settings for the parser as second argument - Add support for plugins to inject resolvers
- Add
pc/connect-plugin - Add
trace/trace-plugin - More efficient batching on parallel processing
- Fix race condition on parallel parser when some attribute not available could cause all siblings to get not-found
- Support env override at join level
- Improved caching for batch resolvers
- Fix edge case where parallel connect would lock down in a batch processing when initial inputs have to be realized
- Limit max resolver weight to avoid infinite weights
- We only fill all the provided errors when resolver is at tail position, otherwise error only the final field
- Support trace labels
- Custom styles for trace events
- Trace time to flush watchers on parallel parser
- Fix GraphQL network with new removed fulcro dep
- Parallel reader will not mark fields as error if the missing attribute is at the edge of the plan
- Add new
p/query-id function
- Support
::pc/compute-output for resolvers with dynamic output - Implement
::pc/compute-output on GraphQL connect integration to support it on parallel - Support GraphQL mutations without a join query
- Export path as part of trace details
- Fix bad handling of break values on resolver returns during parallel connect read
com.wsscode.pathom.graphql don't depend on Fulcro anymore- Improve weight recalculation on parallel connect
- Try different paths when some fails during resolver picking
- Fix mutation error propagation on parallel parser
- Report errors on call resolver failure trace
- Expose details data on d3-tree trace
- Move
trace-plugin impl to trace ns
- 🎉 Parallel parser!
- Parallel connect support
- New tracing support (parsing process details as a event log)
- Algorithms to detect connect paths ahead of time (
pc/compute-paths) - EDN->GraphQL, use literal value from
::graphql/on (don't apply js-name) - Fix many CLJS warnings due to async macros
- new async helpers:
go-promise, <!maybe, <!!maybe join and join-seq helpers now enforce that entities are atoms
- Batches will make input distinct to avoid querying same thing multiple times
- Proper cache errors to avoid re-calling resolvers that returned errors
- Fix spec for
::pc/output to support instrumented calls with unions
- WARNING: before this version, when you return
nil the value would not be present in the output, from this version it is - Fixes connect dependency case when return contains
nil values - Default
::p/union-path will make for convenient use of unions with connect (before it use to trigger an error) - Support indexing unions on connect
- Support inline unions on
query->graphql - Add
p/update-attribute-param helper - Add
p/transduce-children helper
- Fix previous kind implementation
- Support kind as keyword or strings on connect graphql index
- Improved
lift-placeholders helper, correct merge placeholders
- Fix parent-query on sequence joins
- Fix error handler on mutations when error happens on mutate call (before action is generated)
- Add http driver specification alogn with fetch implementation for cljs and clj.http for clj
- Add new helpers to simplify connect integration with GraphQL
- Add new graphql-network for simple GraphQL integration in the front-end
- GraphQL on connect supports placeholder nodes
- Add
pc/mutation-data helper
- BREAKING:
::pc/wrap-resolver is now ::pc/wrap-resolve
- Fix connect compilation on Datomic Ions
- WARNING: Don't trigger errors on connect when inputs can't be met, now it just returns
::p/continue - Add p/optional-attribute (also aliased as p/?) to mark attribute as optional (currently not used)
- Filter batch entries that don't fulfill the input needs
- Safer catch with Throwable in more places
- Processing sequence doesn't stop on placeholder joins
- Catch Throwable instead of Exception on error plugin
- Fix edge case crash on profile plugin
- Improved algorithm for resolver picking on connect, prioritize already cached resolvers
- Expose plugins in environment, allowing then to be used as part of processing
- Support
::pc/wrap-resolver plugin - CHANGE:
::pc/args is now ::pc/params (there are no features on it, so not breaking, but you must change to get future features)
- Add
sgen/query-props-generator, this returns an actual generator for a given query. - Support
sgen/transform-generator to modify generators globally.
- Generators will now strip ui namespaced keys by default (like Fulcro)
- Generators from components now use the component initialization in addition to generated props
- Fix batch queries when batch item input requires resolving
- Fix StackOverflow issue when compiling with
lein-cljsbuild or figwheel
- Add support for mutations on connect
- Sort
pc/data->shape results on query - Support easy env providers
- Support
::p/mutate to define mutation - Add
pc/batch-resolver helper - Support
::p/mutate key for mutation setup on parser, in addition to :mutate - Consistent
ident->id value on generators - Add
::p/parent-join-key to env on joins - Many fixes to specs, be happy instrumenting
- Fix
error-str on CLJS
- Breaking: batch return have a new simpler interface, check docs
- Support N+1 batch optimization on Connect
- Support mutation result customation on generators
- Fix: on connect, reader should continue if resolver doesn't return a requested value
- Fix: sync mutation errors were not returning the result, thanks Mitchel!
- Major improvement on query generators, now every part is fully customizable
- New: common.async
- Breaking: removed old async helpers from
com.wsscode.common.async - Breaking: removed async namespace
- Breaking: removed connect/spec inference, must be set on
p.connect/add - Independent parser: pathom now uses internal implementation for the parser
- Async parser: now pathom and all the built-in features have full async support
- Add:
p/ident-join-reader - Add: connect
pc/resolver-factory
- Add: specs for the EDN query syntax
- Add: specs query AST
- Add: support bounded recursive queries on join
- Add: map-db readers (read like fulcro db->tree)
- Add:
post-process-parser-plugin helper - Add: sort-plugin
- Connect supports custom dispatch, enabling ClojureScript usage (via
::p.connect/resolver-dispatch) - Support bounded and unbounded queries to translate using
query->graphql - Support custom dispatch function to call resolvers on
Connect - Add:
p/entity-attr, non throwing version of p/entity-attr!
- Add:
connect.test namespace for automatic testing of connect resolvers - Pathom now depends on Fulcro instead of Om.next for primitives
- Error plugin support for mutations
- Add:
raise-mutation-result-plugin to unwrap the :result on mutations, making it simpler - Fix: bug on
merge-queries when merging plain attribute with joined attribute - Add names to plugin functions so they get easier to see on stack traces
- Fix specs, now it can run with instrumentation on
- Add
p/raise-errors helper - Add
fn-network on fulcro to create networks from a function
- Plugin engine supports wrapping mutations
- Profile plugin measures mutations
- Add TransformNetwork to fulcro network
- Add
p/elide-items - Ignore
::p/reader-error responses on connect processing
- New:
::p/parent-query support, to enable siblings optimizations - Changed: in graphql ident,
by- is no longer applicable - Changed: connect index names
- Changed: namespace pathom.merge is deprecated, merge-queries lives on core now
- Renamed:
profile->flame-graph is now profile->nvc - Changed: now we use
:key instead of :dispatch-key on map reader and map dispatcher - Entity can be an atom, will be automatically deferred when
p/entity is called. - Add
connect namespace, connect provides a high level reader to connect attributes for automatic resolving. - Add
gen namespace containing helpers to do generation based on queries
- New:
p/parser, this supports the new plugin structure - New:
p/error-handler-plugin - New:
p/async-plugin, enabling full async without needing to use specialized readers - New:
p/request-cache-plugin to do common per-request caching p/entity accepts second parameter to do ensure args in one step- New:
p/entity! to get an entity forcing attributes requirement, so you get better error messages when they are not
available - Renamed:
placeholder-node to placeholder-reader (old name still works) - New:
p/map-reader* - New:
::p/union-path supports computed keys and custom functions - New:
p/entity-attr! to get a single entity property (can be computed). - Deprecated:
ast-key-id
This is a major change in terms of initialization, instead of
running your om/parser now you should use p/parser that supports
the new plugin structure.
- Add async parser helpers
- Fix
js-obj-reader default js-value-transform - Use
:dispatch-key on map-reader - GraphQL mutation: when given empty subquery, try to infer id
- GraphQL supports ident transform
- Merge queries support
- Add Fulcro network helper - GraphQL network
- Add Fulcro network helper - Batch network
- Add elide-ast-nodes helper
- Async placeholder nodes
- Profile helpers
join-seq appends item index to ::p/path- LocalNetwork helper to use local async parser
p/join-seq always returns a vector- removed
fdef from specs, currently it was preventing instrumented functions to run, more investigation needed
- Support
p/join with arity 2, adding entity - Handle union queries on
p/join