Skip to content

Releases: n1ru4l/envelop

January 27, 2025

27 Jan 19:55
51e5f3e
Compare
Choose a tag to compare

@envelop/[email protected]

Minor Changes

@envelop/[email protected]

Patch Changes

January 16, 2025

16 Jan 15:27
4d51ac0
Compare
Choose a tag to compare

@envelop/[email protected]

Patch Changes

@envelop/[email protected]

Patch Changes

January 13, 2025

13 Jan 11:36
643b6bd
Compare
Choose a tag to compare

@envelop/[email protected]

Patch Changes

December 12, 2024

12 Dec 15:03
58cd3e8
Compare
Choose a tag to compare

@envelop/[email protected]

Major Changes

  • #2323
    2993773
    Thanks @Karibash! - Make it possible to get the active span in the
    GraphQL resolver

    Breaking Change: With this change, this plugin now wraps the execute function. This plugin
    should be placed last so that the execute function is not overwritten by another plugin.

    const yoga = createYoga({
      plugins: [
        ...otherPlugins,
        useSentry({
          // ...
        })
      ]
    })

December 11, 2024

11 Dec 10:43
f7be09b
Compare
Choose a tag to compare

@envelop/[email protected]

Patch Changes

  • #2347
    8b7e657
    Thanks @ardatan! - dependencies updates:

  • #2347
    8b7e657
    Thanks @ardatan! - Handle operations with `@include` and `@skip`
    correctly when they have default values in the operation definition

    {
        query: /* GraphQL */ `
          query MyQuery($include: Boolean = true) {
            field @include(if: $include)
          }
        `,
        variables: {}
    }

    should be considered same as

    {
        query: /* GraphQL */ `
          query MyQuery($include: Boolean!) {
            field @include(if: $include)
          }
        `,
        variables: {
            include: true
        }
    }

@envelop/[email protected]

Patch Changes

@envelop/[email protected]

Major Changes

  • #2335
    073774c
    Thanks @EmrysMyrddin! - Fix: Update code to better feat the new
    Sentry v8 API

    Breaking Change:

    • startTransaction option has been removed.
    • forceTransaction option has been added, disabled by default.

@envelop/[email protected]

Patch Changes

November 26, 2024

26 Nov 10:51
40889ca
Compare
Choose a tag to compare

@envelop/[email protected]

Minor Changes

  • #2326
    443fc15
    Thanks @EmrysMyrddin! - Allow to explicitly control which
    events and timing should be observe.

    Each metric can now be configured to observe events and timings only for certain GraphQL pipeline
    phases, or depending on the request context.

    Example: trace only execution and subscription errors

    import { execute, parse, specifiedRules, subscribe, validate } from 'graphql'
    import { envelop, useEngine } from '@envelop/core'
    import { usePrometheus } from '@envelop/prometheus'
    
    const TRACKED_OPERATION_NAMES = [
      // make a list of operation that you want to monitor
    ]
    
    const getEnveloped = envelop({
      plugins: [
        useEngine({ parse, validate, specifiedRules, execute, subscribe }),
        usePrometheus({
          metrics: {
            // Here, an array of phases can be provided to enable the metric only on certain phases.
            // In this example, only error happening during the execute and subscribe phases will tracked
            graphql_envelop_phase_error: ['execute', 'subscribe']
          }
        })
      ]
    })

    Example: Monitor timing only of a set of operations by name

    import { execute, parse, specifiedRules, subscribe, validate } from 'graphql'
    import { envelop, useEngine } from '@envelop/core'
    import { usePrometheus } from '@envelop/prometheus'
    
    const TRACKED_OPERATION_NAMES = [
      // make a list of operation that you want to monitor
    ]
    
    const getEnveloped = envelop({
      plugins: [
        useEngine({ parse, validate, specifiedRules, execute, subscribe }),
        usePrometheus({
          metrics: {
            graphql_yoga_http_duration: createHistogram({
              registry,
              histogram: {
                name: 'graphql_envelop_request_duration',
                help: 'Time spent on HTTP connection',
                labelNames: ['operationName']
              },
              fillLabelsFn: ({ operationName }, _rawContext) => ({ operationName }),
              phases: ['execute', 'subscribe'],
    
              // Here `shouldObserve` control if the request timing should be observed, based on context
              shouldObserve: ({ operationName }) => TRACKED_OPERATIONS.includes(operationName)
            })
          }
        })
      ]
    })

    Default Behavior Change

    A metric is enabled using true value in metrics options will observe in every phases available.

    Previously, which phase was observe was depending on which other metric were enabled. For example,
    this config would only trace validation error:

    usePrometheus({
      metrics: {
        graphql_envelop_phase_error: true,
        graphql_envelop_phase_validate: true
      }
    })

    This is no longer the case. If you were relying on this behavior, please use an array of string to
    restrict observed phases.

    usePrometheus({
      metrics: {
        graphql_envelop_phase_error: ['validate']
      }
    })

November 20, 2024

20 Nov 17:24
4d82b34
Compare
Choose a tag to compare

@envelop/[email protected]

Patch Changes

@envelop/[email protected]

Patch Changes

October 10, 2024

10 Oct 12:58
1a1dabc
Compare
Choose a tag to compare

@envelop/[email protected]

Patch Changes

  • c1720a8
    Thanks @n1ru4l! - Fix handling of primitive list values that was
    introduced in the last release.

October 09, 2024

09 Oct 12:08
4031c59
Compare
Choose a tag to compare

@envelop/[email protected]

Patch Changes

October 09, 2024

09 Oct 10:28
625fe9d
Compare
Choose a tag to compare

@envelop/[email protected]

Major Changes

@envelop/[email protected]

Patch Changes

  • #2309
    4fd5917
    Thanks @n1ru4l! - Strip __responseCacheId and
    __responseCacheTypeName from incremental delivery execution result.

@envelop/[email protected]

Major Changes