Skip to main content

@baeta/extension-complexity

Enumerations

ComplexityErrorKind

Types of complexity validation errors that can occur during query analysis.

Enumeration Members

Enumeration MemberValueDescription

Breadth

"BreadthExceeded"

Query exceeds maximum allowed breadth (fields per level)

Complexity

"ComplexityExceeded"

Query exceeds total complexity score limit

Depth

"DepthExceeded"

Query exceeds maximum allowed depth

Classes

ComplexityError

Thrown when a query exceeds the complexity limits.

Extends

  • GraphQLError

Constructors

new ComplexityError()

new ComplexityError(message, options?): ComplexityError

Parameters
ParameterTypeDefault value

message

string

"Complexity limit exceeded! Please reduce the query's complexity."

options?

GraphQLErrorOptions

undefined

Returns

ComplexityError

Overrides

GraphQLError.constructor

Properties

PropertyModifierTypeDescriptionInherited from

extensions

readonly

GraphQLErrorExtensions

Extension fields to add to the formatted error.

GraphQLError.extensions

locations

readonly

undefined | readonly SourceLocation[]

An array of { line, column } locations within the source GraphQL document which correspond to this error.

Errors during validation often contain multiple locations, for example to point out two things with the same name. Errors during execution include a single location, the field which produced the error.

Enumerable, and appears in the result of JSON.stringify().

GraphQLError.locations

message

public

string

GraphQLError.message

name

public

string

GraphQLError.name

nodes

readonly

undefined | readonly ASTNode[]

An array of GraphQL AST Nodes corresponding to this error.

GraphQLError.nodes

originalError

readonly

undefined | Error

The original error thrown from a field resolver during execution.

GraphQLError.originalError

path

readonly

undefined | readonly (string | number)[]

An array describing the JSON-path into the execution response which corresponds to this error. Only included for errors during execution.

Enumerable, and appears in the result of JSON.stringify().

GraphQLError.path

positions

readonly

undefined | readonly number[]

An array of character offsets within the source GraphQL document which correspond to this error.

GraphQLError.positions

source

readonly

undefined | Source

The source GraphQL document for the first location of this error.

Note that if this Error represents more than one node, the source may not represent nodes after the first node.

GraphQLError.source

cause?

public

unknown

GraphQLError.cause

stack?

public

string

GraphQLError.stack

Accessors

[toStringTag]
Get Signature

get [toStringTag](): string

Returns

string

Inherited from

GraphQLError.[toStringTag]

Methods

toJSON()

toJSON(): GraphQLFormattedError

Returns

GraphQLFormattedError

Inherited from

GraphQLError.toJSON

toString()

toString(): string

Returns a string representation of an object.

Returns

string

Inherited from

GraphQLError.toString

Interfaces

ComplexityExtensionOptions<Context>

Configuration options for the complexity extension.

Type Parameters

Type Parameter

Context

Properties

PropertyTypeDefault valueDescription

complexityError?

GetComplexityError

undefined

Custom error message generator

defaultComplexity?

number

1;

Base complexity score for fields

defaultListMultiplier?

number

10;

Multiplier applied to list fields

limit?

GetComplexityLimit<Context>

undefined

Static limits or function to determine limits based on context


ComplexityLimit

Configuration for query complexity limits.

Properties

PropertyTypeDescription

breadth?

number

Maximum allowed fields per level

complexity?

number

Maximum allowed total complexity score

depth?

number

Maximum allowed query depth

Type Aliases

FieldSettings

FieldSettings: object

Configuration for field complexity calculation.

Type declaration

NameType

complexity?

number

multiplier?

number


GetComplexityError()

GetComplexityError: (kind, limits, results) => GraphQLError

Function type for creating custom complexity error messages.

Parameters

ParameterTypeDescription

kind

ComplexityErrorKind

The type of complexity limit that was exceeded

limits

number

The maximum allowed value

results

number

The actual value that exceeded the limit

Returns

GraphQLError

A GraphQL error with a custom message


GetComplexityLimit<Context>

GetComplexityLimit<Context>: ComplexityLimit | (ctx) => ComplexityLimit | Promise<ComplexityLimit>

Function to determine complexity limits, can be static or context-based.

Type Parameters

Type Parameter

Context


GetFieldSettings()<Context, Args>

GetFieldSettings<Context, Args>: (params) => FieldSettings | false

Function to determine complexity settings for a field. Returns either field settings or false to disable complexity calculation.

Type Parameters

Type Parameter

Context

Args

Parameters

ParameterTypeDescription

params

GetFieldSettingsArgs<Context, Args>

Object containing field arguments and context

Returns

FieldSettings | false

Field settings object or false


GetFieldSettingsArgs<Context, Args>

GetFieldSettingsArgs<Context, Args>: object

Arguments passed to field settings functions.

Type Parameters

Type Parameter

Context

Args

Type declaration

NameTypeDescription

args

Args

Arguments passed to the GraphQL field

ctx

Context

Request context

Variables

ComplexityErrorCode

const ComplexityErrorCode: "COMPLEXITY_ERROR" = 'COMPLEXITY_ERROR'

Complexity error code

Functions

complexityExtension()

complexityExtension<Ctx>(options?): () => Extension

Creates a complexity analysis extension for GraphQL queries.

Type Parameters

Type Parameter

Ctx

Parameters

ParameterTypeDescription

options?

ComplexityExtensionOptions<Ctx>

Configuration options for complexity analysis

Returns

Function

Extension factory function

Returns

Extension

Example

const complexity = complexityExtension<Context>({
defaultComplexity: 1,
defaultListMultiplier: 10,
limit: {
depth: 5,
breadth: 10,
complexity: 100,
},
});