Lewati ke konten

Sistem Plugin (Plugin System)

Modul plugin menyediakan kerangka kerja ekstensi dan implementasi middleware bawaan untuk gateway. Modul ini menangani pendaftaran plugin asinkron, pengurutan dependensi, dan hook siklus hidup eksekusi di seluruh fase persiapan permintaan dan mutasi respons. Plugin bawaan mencakup verifikasi JWT, pembuatan request ID, logging terstruktur, dan pengukuran waktu respons.

SimbolJenisTanda TanganTujuan
PluginNamespaceinterfaceinterface PluginNamespacePlugin data namespace Prevents naming collisions between plugins
PluginEventinterfaceinterface PluginEventPlugin event for cross-plugin communication
PluginEventListenertypetype PluginEventListener = (event: PluginEvent) => void | Promise<void>Plugin event listener
PluginContextManagerclassclass PluginContextManagerPlugin context manager Enhances request context with namespaced plugin data storage
createPluginContextManagerfunctionfunction createPluginContextManager(): PluginContextManagerCreate plugin context manager instance
pluginContextManagerconstconst pluginContextManager = createPluginContextManager()Global plugin context manager instance
PluginExecutionOptionsinterfaceinterface PluginExecutionOptionsPlugin execution options
PluginExecutionResultinterfaceinterface PluginExecutionResultPlugin execution result
PluginExecutionChainclassclass PluginExecutionChainOptimized plugin execution chain Handles plugin lifecycle with timeouts, metrics, and error boundaries
createPluginExecutionChainfunctionfunction createPluginExecutionChain(Create plugin execution chain instance
PluginLoaderclassclass PluginLoaderPlugin loader class
createPluginLoaderfunctionfunction createPluginLoader(config: PluginLoaderConfig): PluginLoaderCreate plugin loader instance
PluginMetricsinterfaceinterface PluginMetricsPlugin execution metrics
PluginMetricsCollectorclassclass PluginMetricsCollectorPlugin metrics collector Collects and aggregates plugin execution metrics
pluginMetricsCollectorconstconst pluginMetricsCollector = new PluginMetricsCollector()Global plugin metrics collector instance
AuthJwtPolicyConfiginterfaceinterface AuthJwtPolicyConfigInterface export for AuthJwtPolicyConfig.
AuthJwtPolicyclassclass AuthJwtPolicy implements GatewayPolicyClass export for AuthJwtPolicy.
JWKinterfaceinterface JWKInterface export for JWK.
AuthJwtConfiginterfaceinterface AuthJwtConfigInterface export for AuthJwtConfig.
AuthJwtPluginclassclass AuthJwtPlugin implements PluginClass export for AuthJwtPlugin.
HeaderRuleinterfaceinterface HeaderRuleHeader transformation rule
HeaderTransformerConfiginterfaceinterface HeaderTransformerConfigHeader transformer plugin configuration
HeaderTransformerPluginclassclass HeaderTransformerPlugin implements PluginHeader Transformer Plugin Adds, removes, or modifies headers based on configurable rules
createHeaderTransformerPluginfunctionfunction createHeaderTransformerPlugin(Create header transformer plugin instance
{ AuthJwtPolicyConfig }typetype { AuthJwtPolicyConfig } from './auth-jwt-policy.js'Type export for { AuthJwtPolicyConfig }.
RateLimitStrategyTypetypetype RateLimitStrategyType = 'token-bucket' | 'sliding-window'Rate limit strategy type
KeyExtractortypetype KeyExtractor = 'ip' | 'header' | 'upstream' | 'consumer'Key extractor type
RateLimitStrategyinterfaceinterface RateLimitStrategyRate limit strategy configuration
RateLimitConfiginterfaceinterface RateLimitConfigRate limit plugin configuration
RateLimitPluginclassclass RateLimitPlugin implements PluginRate limit plugin Implements multiple rate limiting strategies
createRateLimitPluginfunctionfunction createRateLimitPlugin(config?: Partial<RateLimitConfig>): RateLimitPluginCreate rate limit plugin instance
RequestIdConfiginterfaceinterface RequestIdConfigRequest ID plugin configuration
RequestIdPluginclassclass RequestIdPlugin implements PluginRequest ID Plugin Generates unique request IDs for tracing and correlation
createRequestIdPluginfunctionfunction createRequestIdPlugin(config?: Partial<RequestIdConfig>): RequestIdPluginCreate request ID plugin instance
RequestLoggerConfiginterfaceinterface RequestLoggerConfigRequest logger plugin configuration
RequestLoggerPluginclassclass RequestLoggerPlugin implements PluginRequest Logger Plugin Provides structured logging of HTTP requests with configurable fields
createRequestLoggerPluginfunctionfunction createRequestLoggerPlugin(Create request logger plugin instance
ResponseTimeConfiginterfaceinterface ResponseTimeConfigResponse time plugin configuration
ResponseTimePluginclassclass ResponseTimePlugin implements PluginResponse Time Plugin Tracks request processing time and adds header with duration
createResponseTimePluginfunctionfunction createResponseTimePlugin(config?: Partial<ResponseTimeConfig>): ResponseTimePlugiCreate response time plugin instance

Mengelola pemanggilan asinkron plugin sambil mengisolasi error untuk mencegah crash worker.

Memuat dan memvalidasi modul plugin eksternal secara dinamis terhadap antarmuka kontrak.

Implementasi bawaan tanpa dependensi yang dioptimalkan untuk kemampuan gateway umum seperti rate limiting dan decoding JWT.

  • src/plugins/context-manager.ts
  • src/plugins/execution-chain.ts
  • src/plugins/loader.ts
  • src/plugins/metrics.ts
  • src/plugins/builtin/auth-jwt-policy.ts
  • src/plugins/builtin/auth-jwt.ts
  • src/plugins/builtin/header-transformer.ts
  • src/plugins/builtin/index.ts
  • src/plugins/builtin/rate-limit-plugin.ts
  • src/plugins/builtin/request-id.ts
  • src/plugins/builtin/request-logger.ts
  • src/plugins/builtin/response-time.ts