avenger
avenger copied to clipboard
A CQRS-flavoured data fetching and caching layer in TypeScript. Batching, caching, data-dependencies and manual invalidations in a declarative fashion for Node and the browser
I'd like to propose a slightly modified architecture of avenger that allows for greater flexibility in the choice of cache source. In this issue I'll provide some detailed thoughts and...
A query can use two different default strategies to match the cached values: a shallow equality (`queryShallow`), which compares every first-level field in an object (if the type of the...
`defaultMonoidResult` is a "not obvious abstraction, it should be: 1. documented 2. exported (as well as other possible flavors?) see also https://github.com/buildo/avenger/issues/212
Suppose we have a query ``` export const myQuery = compose( product({ a: param(), b: param(), c: param() }), queryShallow( ({ a, b, c }) => ...do stuff... , available...
From the docs, it's not clear what to do when the query is implemented accepting multiple arguments. Say I have a function and a React component: - `function dogs(breed: string,...
Imagine a scenario where you have 2 different queries, and those queryies take 2 different times to resolve. A real world scenario would be having the same query which one...
As per title, a possible (minor?) type-level enhancement. The following tests don't pass with the current `command` singature: ```ts declare const cvoidf: () => TaskEither; const voidcmd1 = command(cvoidf); voidcmd1();...
when a `Product` query is invalidated all the sub-queries that are part of it get invalidated too (ex `const prod = product({ user, preferences }).invalidate()` invalidates `prod` but also `user`...
at the moment we always fetch something that was invalidated, even if it was not in cache. see commented test in `test/command.test.ts`
at the moment `invalidate` API always asks you to specify a unique key of the cache (aka `input`) to invalidate (unless the type of `input` is the singleton type, in...