This plugin automatically instruments the graphql module.

The graphql integration uses the operation name as the span resource name. If no operation name is set, the resource name will always be just query, mutation or subscription.

For example:

# good, the resource name will be `query HelloWorld`
query HelloWorld {
hello
world
}

# bad, the resource name will be `query`
{
hello
world
}
interface graphql {
    collapse?: boolean;
    depth?: number;
    enabled?: boolean;
    hooks?: {
        execute?: ((span?, args?, res?) => void);
        parse?: ((span?, source?, document?) => void);
        validate?: ((span?, document?, errors?) => void);
    };
    measured?: boolean | {
        [key: string]: boolean;
    };
    service?: any;
    signature?: boolean;
    source?: boolean;
    variables?: string[] | ((variables) => {
        [key: string]: any;
    });
}

Hierarchy

  • Instrumentation
    • graphql

Properties

collapse?: boolean

Whether to collapse list items into a single element. (i.e. single users.*.name span instead of users.0.name, users.1.name, etc)

Default

true
depth?: number

The maximum depth of fields/resolvers to instrument. Set to 0 to only instrument the operation or to -1 to instrument all fields/resolvers.

Default

-1
enabled?: boolean

Whether to enable the plugin.

Default

true
hooks?: {
    execute?: ((span?, args?, res?) => void);
    parse?: ((span?, source?, document?) => void);
    validate?: ((span?, document?, errors?) => void);
}

An object of optional callbacks to be executed during the respective phase of a GraphQL operation. Undefined callbacks default to a noop function.

Type declaration

  • Optional execute?: ((span?, args?, res?) => void)
      • (span?, args?, res?): void
      • Parameters

        • Optional span: export=.Span
        • Optional args: ExecutionArgs
        • Optional res: any

        Returns void

  • Optional parse?: ((span?, source?, document?) => void)
      • (span?, source?, document?): void
      • Parameters

        • Optional span: export=.Span
        • Optional source: any
        • Optional document: any

        Returns void

  • Optional validate?: ((span?, document?, errors?) => void)
      • (span?, document?, errors?): void
      • Parameters

        • Optional span: export=.Span
        • Optional document: any
        • Optional errors: any

        Returns void

Default

{}
measured?: boolean | {
    [key: string]: boolean;
}

Whether to measure the span. Can also be set to a key-value pair with span names as keys and booleans as values for more granular control.

Type declaration

  • [key: string]: boolean
service?: any

The service name to be used for this plugin.

signature?: boolean

Whether to enable signature calculation for the resource name. This can be disabled if your GraphQL operations always have a name. Note that when disabled all queries will need to be named for this to work properly.

Default

true
source?: boolean

Whether to include the source of the operation within the query as a tag on every span. This may contain sensitive information and sould only be enabled if sensitive data is always sent as variables and not in the query text.

Default

false
variables?: string[] | ((variables) => {
    [key: string]: any;
})

An array of variable names to record. Can also be a callback that returns the key/value pairs to record. For example, using variables => variables would record all variables.

Type declaration

    • (variables): {
          [key: string]: any;
      }
    • Parameters

      • variables: {
            [key: string]: any;
        }
        • [key: string]: any

      Returns {
          [key: string]: any;
      }

      • [key: string]: any