Asayer Tracker GraphQL plugin
This plugin allows you to capture the GraphQL requests and then search by them.
Installation
npm i @asayerio/tracker-graphql --save
Usage
Initialize the @asayerio/tracker
package as usual and load the plugin into it.
The plugin
call will return the function, which receives four variables
operationKind
, operationName
, variables
, result
and returns result
without changes.
import Tracker from '@asayerio/tracker';
import trackerGraphQL from '@asayerio/tracker-graphql';
const tracker = new Tracker({
projectID: PROJECT_ID,
});
export const recordGraphQL = tracker.plugin(trackerGraphQL());
Relay
For Relay you should manually put recordGraphQL
call
to the NetworkLayer
implementation. If you are standard Network.create
way to implement it,
then you should do something like below
import { recordGraphQL } from 'tracker';
import { Environment } from 'relay-runtime';
function fetchQuery(operation, variables, cacheConfig, uploadables) {
return fetch('ENDPOINT', {
})
.then(response => response.json())
.then(result =>
recordGraphQL(operation.operationKind, operation.name, variables, result),
);
}
const network = Network.create(fetchQuery);
See Relay Network Layer for details.
Apollo
For Apollo you should create a new ApolloLink
with
recordGraphQL
call and put it to your chain like below
import { recordGraphQL } from 'tracker';
import { ApolloLink } from 'apollo-link';
const trackerApolloLink = new ApolloLink((operation, forward) => {
return forward(operation).map(result =>
recordGraphQL(
operation.query.definitions[0].operation,
operation.operationName,
operation.variables,
result,
),
);
});
const link = ApolloLink.from([
trackerApolloLink,
]);
See Apollo Link and
Apollo Networking
for details.