Skip to main content

GraphQL Utilities

The GraphQL utilities provide a comprehensive GraphQL client implementation specifically designed for edge environments, with built-in caching, error handling, middleware support, and query building capabilities.

Features

  • Edge-Optimized: Designed for Cloudflare Workers, Vercel Edge, and Deno Deploy
  • Intelligent Caching: Built-in query result caching with TTL support
  • Error Handling: Comprehensive error classification and recovery
  • Middleware Support: Extensible middleware system for custom logic
  • Query Builder: Fluent API for building GraphQL queries and mutations
  • Request Deduplication: Automatic deduplication of identical concurrent requests
  • Timeout Management: Configurable timeouts with proper cleanup
  • Schema Validation: Basic GraphQL schema validation utilities

Quick Start

GraphQLClient

The main GraphQL client class with full feature support.

Constructor Options

Query Execution

Basic Query

Query with Variables

Mutation

Caching

The client includes intelligent caching with automatic cache invalidation and TTL support.

Error Handling

Comprehensive error handling with severity classification and recovery strategies.

Middleware

Extensible middleware system for custom request/response processing.

Request Deduplication

Automatic deduplication of identical concurrent requests to prevent duplicate API calls.

GraphQLQueryBuilder

Fluent API for building GraphQL queries and mutations programmatically.

Building Queries

Building Mutations

GraphQLSchema

Utilities for GraphQL schema validation and analysis.

Query Validation

Operation Detection

GraphQL Middleware

Edge-compatible middleware for handling GraphQL requests in serverless environments.

Basic Usage

CORS Handling

Error Types

GraphQLError

Custom error class with severity levels for better error handling.

Error Severity Levels

  • CRITICAL: Network errors, timeouts, server errors (5xx)
  • ERROR: GraphQL validation errors, authentication failures
  • WARNING: Deprecation warnings, non-critical issues

Advanced Examples

Complete Edge Function with GraphQL

Complex Query Building

Error Recovery and Retry Logic

Performance Considerations

Caching Strategy

  • Use appropriate TTL values based on data freshness requirements
  • Monitor cache hit rates and adjust cache size accordingly
  • Consider cache warming for frequently accessed data

Timeout Management

  • Set reasonable timeouts to prevent hanging requests
  • Use shorter timeouts for real-time operations
  • Implement proper timeout cleanup to prevent memory leaks

Request Deduplication

  • Automatically reduces API load for identical concurrent requests
  • Particularly useful for popular data that multiple users request simultaneously

Memory Usage

  • Cache size should be limited based on available memory
  • Implement cache eviction policies for long-running applications
  • Monitor memory usage in production environments

Platform-Specific Notes

Cloudflare Workers

  • Uses Web APIs (fetch, AbortController)
  • Compatible with KV storage for distributed caching
  • Supports Durable Objects for advanced caching scenarios

Vercel Edge Functions

  • Full Web API support
  • Compatible with Edge Config for caching
  • Supports environment variables for configuration

Deno Deploy

  • Native performance with Deno runtime
  • Compatible with Deno KV for caching
  • Supports all modern JavaScript features

Testing

The GraphQL utilities include comprehensive test coverage. Run tests with:

API Reference

GraphQLClient Methods

  • query(query, variables, options) - Execute GraphQL query
  • mutate(mutation, variables, options) - Execute GraphQL mutation
  • clearCache() - Clear all cached results
  • getCacheStats() - Get cache statistics

GraphQLQueryBuilder Methods

  • buildQuery(operationName, fields, args) - Build GraphQL query
  • buildMutation(operationName, input, returnFields) - Build GraphQL mutation

GraphQLSchema Methods

  • validateQuery(query, schema) - Validate GraphQL query
  • extractOperationNames(query) - Extract operation names
  • isQueryOperation(query) - Check if query operation
  • isMutationOperation(query) - Check if mutation operation

GraphQLMiddleware Methods

  • handleRequest(request, env, ctx) - Handle GraphQL requests
  • handleOptions(request) - Handle CORS preflight requests

Contributing

When contributing to the GraphQL utilities:
  1. Maintain backward compatibility
  2. Add comprehensive tests for new features
  3. Update documentation for API changes
  4. Follow the existing code style and patterns
  5. Test across all supported platforms

License

MIT