yarn add @envelop/graphql-jit
pnpm add @envelop/graphql-jit
npm install @envelop/graphql-jit
@envelop/graphql-jit
#This plugins replaces the original execute
of GraphQL with graphql-jit
.
yarn add @envelop/graphql-jit
import { envelop } from '@envelop/core';
import { useGraphQlJit } from '@envelop/graphql-jit';
const getEnveloped = envelop({
plugins: [
// ... other plugins ...
useGraphQlJit(
{
// your compiler options here. See https://github.com/zalando-incubator/graphql-jit#compiledquery--compilequeryschema-document-operationname-compileroptions
},
{
onError: (e: Error) => { ... } // custom error handler
}
),
],
});
If you wish to conditionally use the JIT executor based on the incoming request, you can use enableIf
config flag and return a boolean
based on the ExecutionArgs
:
import { envelop } from '@envelop/core';
import { useGraphQlJit } from '@envelop/graphql-jit';
const getEnveloped = envelop({
plugins: [
// ... other plugins ...
useGraphQlJit(
{
// your compiler options here. See https://github.com/zalando-incubator/graphql-jit#compiledquery--compilequeryschema-document-operationname-compileroptions
},
{
enableIf: executionArgs => executionArgs.contextValue.shouldUseJit,
}
),
],
});
## Configuring JIT cache
You can configure the JIT cache with the following options:
import { envelop } from '@envelop/core';
import { useGraphQlJit } from '@envelop/graphql-jit';
const getEnveloped = envelop({
plugins: [
// ... other plugins ...
useGraphQlJit(
{
// your compiler options here
},
{
cache: lru(), // Pass in a custom cache instance, by default a new LRU cache is created which uses the default `max` and `ttl` settings
}
),
],
});
You can find more details here: https://github.com/zalando-incubator/graphql-jit