Plugin System
The plugins module provides the extension framework and built-in middleware implementations for the gateway. It handles asynchronous plugin registration, dependency ordering, and execution lifecycle hooks across request preparation and response mutation phases. Built-in plugins include JWT verification, request ID generation, structured logging, and response timing.
Exports
Section titled “Exports”| Symbol | Kind | Signature | Purpose |
|---|---|---|---|
PluginNamespace | interface | interface PluginNamespace | Plugin data namespace Prevents naming collisions between plugins |
PluginEvent | interface | interface PluginEvent | Plugin event for cross-plugin communication |
PluginEventListener | type | type PluginEventListener = (event: PluginEvent) => void | Promise<void> | Plugin event listener |
PluginContextManager | class | class PluginContextManager | Plugin context manager Enhances request context with namespaced plugin data storage |
createPluginContextManager | function | function createPluginContextManager(): PluginContextManager | Create plugin context manager instance |
pluginContextManager | const | const pluginContextManager = createPluginContextManager() | Global plugin context manager instance |
PluginExecutionOptions | interface | interface PluginExecutionOptions | Plugin execution options |
PluginExecutionResult | interface | interface PluginExecutionResult | Plugin execution result |
PluginExecutionChain | class | class PluginExecutionChain | Optimized plugin execution chain Handles plugin lifecycle with timeouts, metrics, and error boundaries |
createPluginExecutionChain | function | function createPluginExecutionChain( | Create plugin execution chain instance |
PluginLoader | class | class PluginLoader | Plugin loader class |
createPluginLoader | function | function createPluginLoader(config: PluginLoaderConfig): PluginLoader | Create plugin loader instance |
PluginMetrics | interface | interface PluginMetrics | Plugin execution metrics |
PluginMetricsCollector | class | class PluginMetricsCollector | Plugin metrics collector Collects and aggregates plugin execution metrics |
pluginMetricsCollector | const | const pluginMetricsCollector = new PluginMetricsCollector() | Global plugin metrics collector instance |
AuthJwtPolicyConfig | interface | interface AuthJwtPolicyConfig | Interface export for AuthJwtPolicyConfig. |
AuthJwtPolicy | class | class AuthJwtPolicy implements GatewayPolicy | Class export for AuthJwtPolicy. |
JWK | interface | interface JWK | Interface export for JWK. |
AuthJwtConfig | interface | interface AuthJwtConfig | Interface export for AuthJwtConfig. |
AuthJwtPlugin | class | class AuthJwtPlugin implements Plugin | Class export for AuthJwtPlugin. |
HeaderRule | interface | interface HeaderRule | Header transformation rule |
HeaderTransformerConfig | interface | interface HeaderTransformerConfig | Header transformer plugin configuration |
HeaderTransformerPlugin | class | class HeaderTransformerPlugin implements Plugin | Header Transformer Plugin Adds, removes, or modifies headers based on configurable rules |
createHeaderTransformerPlugin | function | function createHeaderTransformerPlugin( | Create header transformer plugin instance |
{ AuthJwtPolicyConfig } | type | type { AuthJwtPolicyConfig } from './auth-jwt-policy.js' | Type export for { AuthJwtPolicyConfig }. |
RateLimitStrategyType | type | type RateLimitStrategyType = 'token-bucket' | 'sliding-window' | Rate limit strategy type |
KeyExtractor | type | type KeyExtractor = 'ip' | 'header' | 'upstream' | 'consumer' | Key extractor type |
RateLimitStrategy | interface | interface RateLimitStrategy | Rate limit strategy configuration |
RateLimitConfig | interface | interface RateLimitConfig | Rate limit plugin configuration |
RateLimitPlugin | class | class RateLimitPlugin implements Plugin | Rate limit plugin Implements multiple rate limiting strategies |
createRateLimitPlugin | function | function createRateLimitPlugin(config?: Partial<RateLimitConfig>): RateLimitPlugin | Create rate limit plugin instance |
RequestIdConfig | interface | interface RequestIdConfig | Request ID plugin configuration |
RequestIdPlugin | class | class RequestIdPlugin implements Plugin | Request ID Plugin Generates unique request IDs for tracing and correlation |
createRequestIdPlugin | function | function createRequestIdPlugin(config?: Partial<RequestIdConfig>): RequestIdPlugin | Create request ID plugin instance |
RequestLoggerConfig | interface | interface RequestLoggerConfig | Request logger plugin configuration |
RequestLoggerPlugin | class | class RequestLoggerPlugin implements Plugin | Request Logger Plugin Provides structured logging of HTTP requests with configurable fields |
createRequestLoggerPlugin | function | function createRequestLoggerPlugin( | Create request logger plugin instance |
ResponseTimeConfig | interface | interface ResponseTimeConfig | Response time plugin configuration |
ResponseTimePlugin | class | class ResponseTimePlugin implements Plugin | Response Time Plugin Tracks request processing time and adds header with duration |
createResponseTimePlugin | function | function createResponseTimePlugin(config?: Partial<ResponseTimeConfig>): ResponseTimePlugi | Create response time plugin instance |
ExecutionChain
Section titled “ExecutionChain”Manages async invocation of plugins while isolating errors to prevent worker crashes.
PluginLoader
Section titled “PluginLoader”Dynamically loads and validates external plugin modules against contract interfaces.
BuiltinPlugins
Section titled “BuiltinPlugins”Optimized zero-dependency implementations of common gateway capabilities like rate limiting and JWT decoding.
Source
Section titled “Source”src/plugins/context-manager.tssrc/plugins/execution-chain.tssrc/plugins/loader.tssrc/plugins/metrics.tssrc/plugins/builtin/auth-jwt-policy.tssrc/plugins/builtin/auth-jwt.tssrc/plugins/builtin/header-transformer.tssrc/plugins/builtin/index.tssrc/plugins/builtin/rate-limit-plugin.tssrc/plugins/builtin/request-id.tssrc/plugins/builtin/request-logger.tssrc/plugins/builtin/response-time.ts