On this page

@envelop/graphql-jit

Changelog for @envelop/graphql-jit: every release with its changes and the pull requests behind them.

12.0.0

Major Changes

  • #4574 79b0e8b Thanks @egoodwinx! - ### Breaking Changes

    • Node: minimum supported version is now Node 22. Node 18 and 20 are no longer supported. Future releases will only support Node >=22.
    • GraphQL: minimum supported version is now GraphQL 16. GraphQL 14 and 15 are no longer supported.
    • Request body parsing: Yoga now limits request bodies to 25,000,000 bytes by default. Enforcing this limit streams the body through a byte counter, making POST body parsing asynchronous even for an in-memory body. As a result, yoga.fetch() can return a Promise where it previously returned a synchronous Response, even when all resolvers and plugins are synchronous.

    Migration

    • If you’re on Node 18/20, upgrade to Node 22 or later before upgrading this package.
    • If you’re on graphql 14/15, upgrade to graphql 16 or 17 first.
    • Await yoga.fetch() and response body parsing instead of relying on synchronous results. Set maxRequestBodySize: false in createYoga to disable the body-size limit and preserve synchronous parsing for in-memory bodies, but only if you enforce an appropriate request-body limit elsewhere.

Minor Changes

  • #4575 862447a Thanks @egoodwinx! - Use @graphql-hive/logger and add correlated, per-request logging (closes #4048)

    Every request now gets its own logger, available as context.log (and serverContext.log in plugin hooks), tagged with a requestId. Everything logged while handling a request can be correlated by that id.

    The request id is taken from the host integration if it already assigned one (e.g. Fastify’s request.id), otherwise from the incoming x-request-id header, otherwise generated. It is also sent back in the x-request-id response header. Configure it with the new requestId option:

    createYoga({
      requestId: {
        // don't trust the incoming header, recommended when clients can reach the server directly
        trustHeader: false,
        headerName: 'x-correlation-id',
        generateRequestId: () => myId()
      }
    })

    Pass requestId: false to disable it.

    At the info level, a single “Request processed” line is logged per request with the method, path, operation name and type, response status, error count and duration. At the debug level, more details about request processing are logged.

    Masked errors are now logged with the request’s logger, so they can be traced back to the request that caused them. Custom maskError functions receive the request’s context as an optional fourth argument.

    The @envelop/newrelic, @envelop/auth0, @envelop/resource-limitations, @envelop/statsd, @envelop/graphql-jit, @envelop/response-cache and @envelop/response-cache-cloudflare-kv plugins accept a new log option for their own messages, instead of always writing to the console.

    @envelop/response-cache’s shouldCacheResult now also receives the GraphQL context.

    Breaking Changes

    • The @graphql-yoga/logger package has been removed. graphql-yoga re-exports Logger, MemoryLogWriter and LogLevel from @graphql-hive/logger instead.
    • createLogger and the YogaLogger type are no longer exported. Use new Logger(options) instead.
    • The logging option now takes boolean | Logger | LogLevel, where Logger is the one from @graphql-hive/logger.
    • yoga.logger has been renamed to yoga.log.
    • The logger option of useGraphiQL and useHealthCheck has been removed. They now log through the request’s logger.
    • @graphql-yoga/nestjs now logs through Nest’s Logger by default instead of not logging at all. Pass logging: false to keep the previous behaviour. logging: true on Fastify no longer logs through Fastify’s logger, pass it explicitly instead (see below).
    • @envelop/apollo-federation, @envelop/auth0, @envelop/graphql-jit, @envelop/newrelic, @envelop/resource-limitations, @envelop/response-cache, @envelop/response-cache-cloudflare-kv and @envelop/statsd now have a peer dependency on @graphql-hive/logger that you must install.
    • @envelop/apollo-federation’s logger option now expects a Logger from @graphql-hive/logger and defaults to new Logger() instead of console.

    Migration

    Create loggers with Logger:

    - import { createLogger } from 'graphql-yoga';
    + import { Logger } from 'graphql-yoga';
    
      createYoga({
    -   logging: createLogger('debug'),
    +   logging: new Logger({ level: 'debug' }),
      });

    Use log instead of logger on the Yoga instance:

      const plugin = {
        onYogaInit({ yoga }) {
    -     yoga.logger.info('ready');
    +     yoga.log.info('ready');
        },
      };

    Prefer the request-scoped logger inside resolvers and plugin hooks so the logs carry the request id:

    const resolvers = {
      Query: {
        hello: (_, __, context) => {
          context.log.debug('resolving hello')
          return 'world'
        }
      }
    }

    If you use any of the @envelop/* plugins listed above, install the logger:

    npm i @graphql-hive/logger

    If you depended on @graphql-yoga/logger directly, switch to @graphql-hive/logger:

    - import { Logger } from '@graphql-yoga/logger';
    + import { Logger } from '@graphql-hive/logger';

    To keep logging through Fastify’s logger in @graphql-yoga/nestjs:

    import { Logger } from 'graphql-yoga'
    import { PinoLogWriter } from '@graphql-hive/logger/writers/pino'
    
    // in your yoga driver options
    logging: new Logger({ writers: [new PinoLogWriter(app.log)] })

Patch Changes

11.2.2

Patch Changes

11.2.1

Patch Changes

11.2.0

Minor Changes

  • #4545 94ebe5b Thanks @egoodwinx! - Update to support graphql-js 17

    Bump package versions, fix expected typing, and update compatability with subscribe.

Patch Changes

  • Updated dependencies [94ebe5b]:
    • @envelop/core@5.6.0

11.1.1

Patch Changes

  • Updated dependencies [0bfde27]:
    • @envelop/core@5.5.1

11.1.0

Patch Changes

  • Updated dependencies [d3d83bc]:
    • @envelop/core@5.5.0

11.0.0

Patch Changes

  • Updated dependencies [0434fbd]:
    • @envelop/core@5.4.0

10.0.0

Patch Changes

  • Updated dependencies [3ebaa3b]:
    • @envelop/core@5.3.0

9.1.3

Patch Changes

9.1.2

Patch Changes

9.1.1

Patch Changes

9.1.0

Patch Changes

9.0.1

Patch Changes

  • Updated dependencies [5b6a166]:
    • @envelop/core@5.1.1

9.0.0

Patch Changes

  • Updated dependencies [9bd1b20]:
    • @envelop/core@5.1.0

8.0.4

Patch Changes

8.0.3

Patch Changes

8.0.2

Patch Changes

8.0.1

Patch Changes

  • 27c0f705 Thanks @ardatan! - Downgrade graphql-jit to the latest working version

8.0.0

Major Changes

Patch Changes

7.0.0

Major Changes

Patch Changes

6.0.5

Patch Changes

  • #1964 6f55fe9a Thanks @ardatan! - Provide a custom JSON serializer in stringify property so you can use it in your server implementation like;

    const result = await enveloped.execute(...);
    const resultInStr = result.stringify(result);

6.0.4

Patch Changes

6.0.3

Patch Changes

  • Updated dependencies [db20864a]:
    • @envelop/core@4.0.2

6.0.2

Patch Changes

  • Updated dependencies []:
    • @envelop/core@4.0.1

6.0.1

Patch Changes

6.0.0

Major Changes

Patch Changes

  • #1767 0b127cc4 Thanks @n1ru4l! - dependencies updates:

  • #1728 a36925c7 Thanks @ardatan! - - Memoize parsed document string result and use it wherever possible, and export getDocumentString function to allow users to use it as well.

    • Use WeakMaps with DocumentNode wherever possible instead of using LRU Cache with strings. It is more optimal if a parser caching is used

5.0.6

Patch Changes

5.0.5

Patch Changes

  • #1633 b581fddd Thanks @jeengbe! - Update graphql-jit for supporting @include and @skip directives.

  • Updated dependencies [270249cf]:

    • @envelop/core@3.0.5

5.0.4

Patch Changes

  • Updated dependencies []:
    • @envelop/core@3.0.4

5.0.3

Patch Changes

  • Updated dependencies [6b48ef96]:
    • @envelop/core@3.0.3

5.0.2

Patch Changes

  • Updated dependencies [22f5ccfb]:
    • @envelop/core@3.0.2

5.0.0

Major Changes

4.6.0

Minor Changes

  • #1499 1f7af02b Thanks @viniciuspalma! - Adding tslib to package dependencies

    Projects that currently are using yarn Berry with PnP or any strict dependency resolver, that requires that all dependencies are specified on package.json otherwise it would endue in an error if not treated correct

    Since https://www.typescriptlang.org/tsconfig#importHelpers is currently being used, tslib should be exported as a dependency to external runners get the proper import.

    Change on each package:

    // package.json
    {
      "dependencies": {
        "tslib": "^2.4.0"
      }
    }
  • Updated dependencies [1f7af02b, ae7bc9a3]:

    • @envelop/core@2.6.0

4.5.0

Minor Changes

4.4.2

Patch Changes

  • 071f946: Fix CommonJS TypeScript resolution with moduleResolution node16 or nodenext
  • Updated dependencies [071f946]
    • @envelop/core@2.4.2

4.4.1

Patch Changes

  • Updated dependencies [787d28a2]
    • @envelop/core@2.4.1

4.4.0

Minor Changes

  • 5d06ccc: Replace tiny-lru implementation with lru-cache.

4.3.0

Minor Changes

  • 8bb2738: Support TypeScript module resolution.
  • Updated dependencies [8bb2738]
    • @envelop/core@2.4.0

4.2.3

Patch Changes

  • 0f56966: fix compatibility with other plugins that extend the context by using the correct execution args within the execute/subscribe implementation.
  • fbf6155: update package.json repository links to point to the new home
  • Updated dependencies [fbf6155]
    • @envelop/core@2.3.3

4.2.2

Patch Changes

  • Updated dependencies [07d029b]
    • @envelop/core@2.3.2

4.2.1

Patch Changes

  • Updated dependencies [d5c2c9a]
    • @envelop/core@2.3.1

4.2.0

Minor Changes

  • Updated dependencies [af23408]
    • @envelop/core@2.3.0

4.1.0

Minor Changes

  • Updated dependencies [ada7fb0]
  • Updated dependencies [d5115b4]
  • Updated dependencies [d5115b4]
    • @envelop/core@2.2.0

4.0.0

Major Changes

  • f8f8189: useGraphQlJit plugin: Remove max and ttl options, adding support for passing in a cache instance instead.

3.1.0

Minor Changes

  • Updated dependencies [78b3db2]
  • Updated dependencies [f5eb436]
    • @envelop/core@2.1.0

3.0.0

Patch Changes

  • Updated dependencies [4106e08]
  • Updated dependencies [aac65ef]
  • Updated dependencies [4106e08]
    • @envelop/core@2.0.0

2.0.0

Patch Changes

  • Updated dependencies [d9cfb7c]
    • @envelop/core@1.7.0

1.3.1

Patch Changes

  • b1a0331: Properly list @envelop/core as a peerDependency in plugins.

    This resolves issues where the bundled envelop plugins published to npm had logic inlined from the @envelop/core package, causing instanceof check of EnvelopError to fail.

  • Updated dependencies [b1a0331]

    • @envelop/core@1.6.1

1.3.0

Minor Changes

  • 090cae4: GraphQL v16 support

1.2.0

Minor Changes

  • 04120de: add support for GraphQL.js 16
  • 3bb3df0: feat(graphql-jit): subscription support

1.1.1

Patch Changes

  • abae5a2: Allow enableIf to return Promise

1.1.0

Minor Changes

  • cc71515: Added enableIf config flag to allow flexibility on jit executor

1.0.0

Major Changes

  • 40bc444: v1 major release for envelop packages

0.2.1

Patch Changes

  • d82e2d0: Adjustments for new TypeScript beta version
  • 28ad742: Improve TypeScript types

0.2.0

Minor Changes

  • eb6f53b: ESM Support for all plugins and envelop core

0.1.1

Patch Changes

  • e7f43f4: Fix issues with executor and caching

0.1.0

Minor Changes

  • 2fba0b4: Initial version bump

0.0.2

Patch Changes

  • b1333b0: Initial packages release