Konstantin Babushkin
Konstantin Babushkin
We have the "Top users" block on the sidebar of each page. It is changed infrequently and might be cached. We can't do it using one query as we can't...
fetchPolicy is applied to the whole query. ``` if any piece of data for that query is missing or stale, it will fetch the entire query from the network. ```...
We should also think of `variablesFromContext` and `fetchPolicy` as they must return values per-query. I think it's a good feature that `variablesFromContext` is fully typed, so TypeScript users will have...
I agree that in normal circumstances there should not be many queries with validation errors. However it's easy to implement (we'll store an array of validation errors and it'll be...
Tagging a query cache is easy to implement. But I don't see a real usage for it. It is required only when packages are updated. That's pretty rare. And I...
The command will be inconsistent: in some cases it will delete query cache and in others it won't. Also people might use tagging for other purposes so there might be...
One can enumerate/ddos without batched queries. Like this: ``` mutation { try1: login(name: "try1", password: "try1password"){ __typename } try2: login(name: "try2", password: "try2password"){ __typename } } ```
Yes, that's a good idea. `SanitizeDirective` and `TransformArgsDirective` can include themselves only into fields that have an arg with the `ArgSanitizerDirective`/`ArgTransformerDirective` directive. We might also create `ArgumentSetDirective` which creates `argumentSet`...
Yes, that would be great. However, I suggest also offloading as many calculation to the AST creation time as we can. So I want `SanitizeDirective` to include itself only if...
Here is how I did it: ```javascript overrideCoreMethods: { provideExtractedMessages: () => { const messages = defaultReadMessages(messagesDirectory); messages.forEach(message => { message['descriptors'] = message['descriptors'].map(descriptor => { descriptor['defaultMessage'] = 'TRANSLATE ME'; return...