@gravito/echo 3.0.1 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/README.md +211 -0
  2. package/dist/atlas/src/DB.d.ts +348 -0
  3. package/dist/atlas/src/OrbitAtlas.d.ts +9 -0
  4. package/dist/atlas/src/config/defineConfig.d.ts +14 -0
  5. package/dist/atlas/src/config/index.d.ts +7 -0
  6. package/dist/atlas/src/config/loadConfig.d.ts +41 -0
  7. package/dist/atlas/src/connection/Connection.d.ts +112 -0
  8. package/dist/atlas/src/connection/ConnectionManager.d.ts +180 -0
  9. package/dist/atlas/src/connection/ReplicaConnectionPool.d.ts +54 -0
  10. package/dist/atlas/src/drivers/BunSQLDriver.d.ts +32 -0
  11. package/dist/atlas/src/drivers/BunSQLPreparedStatement.d.ts +118 -0
  12. package/dist/atlas/src/drivers/MongoDBDriver.d.ts +36 -0
  13. package/dist/atlas/src/drivers/MySQLDriver.d.ts +79 -0
  14. package/dist/atlas/src/drivers/PostgresDriver.d.ts +96 -0
  15. package/dist/atlas/src/drivers/RedisDriver.d.ts +43 -0
  16. package/dist/atlas/src/drivers/SQLiteDriver.d.ts +45 -0
  17. package/dist/atlas/src/drivers/types.d.ts +260 -0
  18. package/dist/atlas/src/errors/index.d.ts +45 -0
  19. package/dist/atlas/src/grammar/Grammar.d.ts +342 -0
  20. package/dist/atlas/src/grammar/MongoGrammar.d.ts +47 -0
  21. package/dist/atlas/src/grammar/MySQLGrammar.d.ts +54 -0
  22. package/dist/atlas/src/grammar/NullGrammar.d.ts +35 -0
  23. package/dist/atlas/src/grammar/PostgresGrammar.d.ts +62 -0
  24. package/dist/atlas/src/grammar/SQLiteGrammar.d.ts +32 -0
  25. package/dist/atlas/src/index.d.ts +79 -0
  26. package/dist/atlas/src/migration/Migration.d.ts +64 -0
  27. package/dist/atlas/src/migration/MigrationRepository.d.ts +65 -0
  28. package/dist/atlas/src/migration/Migrator.d.ts +110 -0
  29. package/dist/atlas/src/migration/index.d.ts +6 -0
  30. package/dist/atlas/src/observability/AtlasMetrics.d.ts +33 -0
  31. package/dist/atlas/src/observability/AtlasObservability.d.ts +15 -0
  32. package/dist/atlas/src/observability/AtlasTracer.d.ts +12 -0
  33. package/dist/atlas/src/observability/index.d.ts +9 -0
  34. package/dist/atlas/src/orm/Repository.d.ts +247 -0
  35. package/dist/atlas/src/orm/index.d.ts +6 -0
  36. package/dist/atlas/src/orm/model/DirtyTracker.d.ts +121 -0
  37. package/dist/atlas/src/orm/model/Model.d.ts +458 -0
  38. package/dist/atlas/src/orm/model/ModelRegistry.d.ts +20 -0
  39. package/dist/atlas/src/orm/model/concerns/HasAttributes.d.ts +150 -0
  40. package/dist/atlas/src/orm/model/concerns/HasEvents.d.ts +36 -0
  41. package/dist/atlas/src/orm/model/concerns/HasPersistence.d.ts +92 -0
  42. package/dist/atlas/src/orm/model/concerns/HasRelationships.d.ts +117 -0
  43. package/dist/atlas/src/orm/model/concerns/HasSerialization.d.ts +64 -0
  44. package/dist/atlas/src/orm/model/concerns/applyMixins.d.ts +15 -0
  45. package/dist/atlas/src/orm/model/concerns/index.d.ts +12 -0
  46. package/dist/atlas/src/orm/model/decorators.d.ts +138 -0
  47. package/dist/atlas/src/orm/model/errors.d.ts +52 -0
  48. package/dist/atlas/src/orm/model/index.d.ts +10 -0
  49. package/dist/atlas/src/orm/model/relationships.d.ts +207 -0
  50. package/dist/atlas/src/orm/model/types.d.ts +12 -0
  51. package/dist/atlas/src/orm/schema/SchemaRegistry.d.ts +124 -0
  52. package/dist/atlas/src/orm/schema/SchemaSniffer.d.ts +54 -0
  53. package/dist/atlas/src/orm/schema/index.d.ts +6 -0
  54. package/dist/atlas/src/orm/schema/types.d.ts +85 -0
  55. package/dist/atlas/src/pool/AdaptivePoolManager.d.ts +98 -0
  56. package/dist/atlas/src/pool/PoolHealthChecker.d.ts +91 -0
  57. package/dist/atlas/src/pool/PoolStrategy.d.ts +129 -0
  58. package/dist/atlas/src/pool/PoolWarmer.d.ts +92 -0
  59. package/dist/atlas/src/query/Expression.d.ts +60 -0
  60. package/dist/atlas/src/query/NPlusOneDetector.d.ts +10 -0
  61. package/dist/atlas/src/query/QueryBuilder.d.ts +643 -0
  62. package/dist/atlas/src/query/RelationshipResolver.d.ts +23 -0
  63. package/dist/atlas/src/query/clauses/GroupByClause.d.ts +51 -0
  64. package/dist/atlas/src/query/clauses/HavingClause.d.ts +70 -0
  65. package/dist/atlas/src/query/clauses/JoinClause.d.ts +87 -0
  66. package/dist/atlas/src/query/clauses/LimitClause.d.ts +82 -0
  67. package/dist/atlas/src/query/clauses/OrderByClause.d.ts +69 -0
  68. package/dist/atlas/src/query/clauses/SelectClause.d.ts +71 -0
  69. package/dist/atlas/src/query/clauses/WhereClause.d.ts +167 -0
  70. package/dist/atlas/src/query/clauses/index.d.ts +11 -0
  71. package/dist/atlas/src/schema/Blueprint.d.ts +276 -0
  72. package/dist/atlas/src/schema/ColumnDefinition.d.ts +154 -0
  73. package/dist/atlas/src/schema/ForeignKeyDefinition.d.ts +37 -0
  74. package/dist/atlas/src/schema/MigrationGenerator.d.ts +45 -0
  75. package/dist/atlas/src/schema/Schema.d.ts +131 -0
  76. package/dist/atlas/src/schema/SchemaDiff.d.ts +73 -0
  77. package/dist/atlas/src/schema/TypeGenerator.d.ts +57 -0
  78. package/dist/atlas/src/schema/TypeWriter.d.ts +42 -0
  79. package/dist/atlas/src/schema/grammars/MySQLSchemaGrammar.d.ts +23 -0
  80. package/dist/atlas/src/schema/grammars/PostgresSchemaGrammar.d.ts +26 -0
  81. package/dist/atlas/src/schema/grammars/SQLiteSchemaGrammar.d.ts +28 -0
  82. package/dist/atlas/src/schema/grammars/SchemaGrammar.d.ts +97 -0
  83. package/dist/atlas/src/schema/grammars/index.d.ts +7 -0
  84. package/dist/atlas/src/schema/index.d.ts +8 -0
  85. package/dist/atlas/src/seed/Factory.d.ts +90 -0
  86. package/dist/atlas/src/seed/Seeder.d.ts +28 -0
  87. package/dist/atlas/src/seed/SeederRunner.d.ts +74 -0
  88. package/dist/atlas/src/seed/index.d.ts +6 -0
  89. package/dist/atlas/src/sharding/ShardingManager.d.ts +59 -0
  90. package/dist/atlas/src/types/index.d.ts +1182 -0
  91. package/dist/atlas/src/utils/CursorEncoding.d.ts +63 -0
  92. package/dist/atlas/src/utils/levenshtein.d.ts +9 -0
  93. package/dist/core/src/Application.d.ts +43 -17
  94. package/dist/core/src/CommandKernel.d.ts +33 -0
  95. package/dist/core/src/ConfigManager.d.ts +39 -0
  96. package/dist/core/src/Container/RequestScopeManager.d.ts +62 -0
  97. package/dist/core/src/Container/RequestScopeMetrics.d.ts +144 -0
  98. package/dist/core/src/Container.d.ts +123 -14
  99. package/dist/core/src/ErrorHandler.d.ts +3 -0
  100. package/dist/core/src/HookManager.d.ts +517 -8
  101. package/dist/core/src/PlanetCore.d.ts +141 -7
  102. package/dist/core/src/RequestContext.d.ts +97 -0
  103. package/dist/core/src/Router.d.ts +41 -7
  104. package/dist/core/src/ServiceProvider.d.ts +36 -8
  105. package/dist/core/src/adapters/GravitoEngineAdapter.d.ts +1 -0
  106. package/dist/core/src/adapters/PhotonAdapter.d.ts +5 -0
  107. package/dist/core/src/adapters/bun/BunContext.d.ts +4 -0
  108. package/dist/core/src/adapters/bun/BunNativeAdapter.d.ts +1 -0
  109. package/dist/core/src/adapters/types.d.ts +39 -0
  110. package/dist/core/src/cli/queue-commands.d.ts +6 -0
  111. package/dist/core/src/engine/AOTRouter.d.ts +7 -12
  112. package/dist/core/src/engine/FastContext.d.ts +27 -2
  113. package/dist/core/src/engine/Gravito.d.ts +1 -2
  114. package/dist/core/src/engine/MinimalContext.d.ts +25 -2
  115. package/dist/core/src/engine/types.d.ts +9 -1
  116. package/dist/core/src/error-handling/RequestScopeErrorContext.d.ts +126 -0
  117. package/dist/core/src/events/BackpressureManager.d.ts +215 -0
  118. package/dist/core/src/events/CircuitBreaker.d.ts +229 -0
  119. package/dist/core/src/events/DeadLetterQueue.d.ts +219 -0
  120. package/dist/core/src/events/EventBackend.d.ts +12 -0
  121. package/dist/core/src/events/EventOptions.d.ts +204 -0
  122. package/dist/core/src/events/EventPriorityQueue.d.ts +301 -0
  123. package/dist/core/src/events/FlowControlStrategy.d.ts +109 -0
  124. package/dist/core/src/events/IdempotencyCache.d.ts +60 -0
  125. package/dist/core/src/events/MessageQueueBridge.d.ts +184 -0
  126. package/dist/core/src/events/PriorityEscalationManager.d.ts +82 -0
  127. package/dist/core/src/events/RetryScheduler.d.ts +104 -0
  128. package/dist/core/src/events/WorkerPool.d.ts +98 -0
  129. package/dist/core/src/events/WorkerPoolConfig.d.ts +153 -0
  130. package/dist/core/src/events/WorkerPoolMetrics.d.ts +65 -0
  131. package/dist/core/src/events/aggregation/AggregationWindow.d.ts +77 -0
  132. package/dist/core/src/events/aggregation/DeduplicationManager.d.ts +135 -0
  133. package/dist/core/src/events/aggregation/EventAggregationManager.d.ts +108 -0
  134. package/dist/core/src/events/aggregation/EventBatcher.d.ts +99 -0
  135. package/dist/core/src/events/aggregation/types.d.ts +117 -0
  136. package/dist/core/src/events/index.d.ts +25 -0
  137. package/dist/core/src/events/observability/EventMetrics.d.ts +132 -0
  138. package/dist/core/src/events/observability/EventTracer.d.ts +68 -0
  139. package/dist/core/src/events/observability/EventTracing.d.ts +161 -0
  140. package/dist/core/src/events/observability/OTelEventMetrics.d.ts +332 -0
  141. package/dist/core/src/events/observability/ObservableHookManager.d.ts +108 -0
  142. package/dist/core/src/events/observability/StreamWorkerMetrics.d.ts +76 -0
  143. package/dist/core/src/events/observability/index.d.ts +24 -0
  144. package/dist/core/src/events/observability/metrics-types.d.ts +16 -0
  145. package/dist/core/src/events/types.d.ts +134 -0
  146. package/dist/core/src/exceptions/CircularDependencyException.d.ts +9 -0
  147. package/dist/core/src/exceptions/index.d.ts +1 -0
  148. package/dist/core/src/health/HealthProvider.d.ts +67 -0
  149. package/dist/core/src/http/cookie.d.ts +29 -0
  150. package/dist/core/src/http/types.d.ts +40 -0
  151. package/dist/core/src/index.d.ts +26 -4
  152. package/dist/core/src/instrumentation/index.d.ts +35 -0
  153. package/dist/core/src/instrumentation/opentelemetry.d.ts +178 -0
  154. package/dist/core/src/instrumentation/types.d.ts +182 -0
  155. package/dist/core/src/observability/Metrics.d.ts +244 -0
  156. package/dist/core/src/observability/QueueDashboard.d.ts +136 -0
  157. package/dist/core/src/reliability/DeadLetterQueueManager.d.ts +350 -0
  158. package/dist/core/src/reliability/RetryPolicy.d.ts +217 -0
  159. package/dist/core/src/reliability/index.d.ts +6 -0
  160. package/dist/core/src/router/ControllerDispatcher.d.ts +12 -0
  161. package/dist/core/src/router/RequestValidator.d.ts +20 -0
  162. package/dist/echo/src/OrbitEcho.d.ts +71 -16
  163. package/dist/echo/src/dlq/DeadLetterQueue.d.ts +94 -0
  164. package/dist/echo/src/dlq/MemoryDeadLetterQueue.d.ts +36 -0
  165. package/dist/echo/src/dlq/index.d.ts +2 -0
  166. package/dist/echo/src/index.d.ts +31 -15
  167. package/dist/echo/src/middleware/RequestBufferMiddleware.d.ts +62 -0
  168. package/dist/echo/src/middleware/index.d.ts +8 -0
  169. package/dist/echo/src/observability/index.d.ts +3 -0
  170. package/dist/echo/src/observability/logging/ConsoleEchoLogger.d.ts +37 -0
  171. package/dist/echo/src/observability/logging/EchoLogger.d.ts +38 -0
  172. package/dist/echo/src/observability/logging/index.d.ts +2 -0
  173. package/dist/echo/src/observability/metrics/MetricsProvider.d.ts +69 -0
  174. package/dist/echo/src/observability/metrics/NoopMetricsProvider.d.ts +17 -0
  175. package/dist/echo/src/observability/metrics/PrometheusMetricsProvider.d.ts +39 -0
  176. package/dist/echo/src/observability/metrics/index.d.ts +3 -0
  177. package/dist/echo/src/observability/tracing/NoopTracer.d.ts +33 -0
  178. package/dist/echo/src/observability/tracing/Tracer.d.ts +75 -0
  179. package/dist/echo/src/observability/tracing/index.d.ts +2 -0
  180. package/dist/echo/src/providers/GenericProvider.d.ts +37 -18
  181. package/dist/echo/src/providers/GitHubProvider.d.ts +21 -12
  182. package/dist/echo/src/providers/LinearProvider.d.ts +27 -0
  183. package/dist/echo/src/providers/PaddleProvider.d.ts +31 -0
  184. package/dist/echo/src/providers/ShopifyProvider.d.ts +27 -0
  185. package/dist/echo/src/providers/SlackProvider.d.ts +27 -0
  186. package/dist/echo/src/providers/StripeProvider.d.ts +20 -12
  187. package/dist/echo/src/providers/TwilioProvider.d.ts +31 -0
  188. package/dist/echo/src/providers/base/BaseProvider.d.ts +87 -0
  189. package/dist/echo/src/providers/base/HeaderUtils.d.ts +34 -0
  190. package/dist/echo/src/providers/index.d.ts +14 -3
  191. package/dist/echo/src/receive/SignatureValidator.d.ts +33 -0
  192. package/dist/echo/src/receive/WebhookReceiver.d.ts +139 -21
  193. package/dist/echo/src/replay/WebhookReplayService.d.ts +35 -0
  194. package/dist/echo/src/replay/index.d.ts +1 -0
  195. package/dist/echo/src/resilience/CircuitBreaker.d.ts +117 -0
  196. package/dist/echo/src/resilience/index.d.ts +10 -0
  197. package/dist/echo/src/rotation/KeyRotationManager.d.ts +127 -0
  198. package/dist/echo/src/rotation/index.d.ts +10 -0
  199. package/dist/echo/src/send/WebhookDispatcher.d.ts +159 -15
  200. package/dist/echo/src/storage/MemoryWebhookStore.d.ts +14 -0
  201. package/dist/echo/src/storage/WebhookStore.d.ts +236 -0
  202. package/dist/echo/src/storage/index.d.ts +2 -0
  203. package/dist/echo/src/types.d.ts +656 -64
  204. package/dist/index.js +1327 -189
  205. package/dist/index.js.map +28 -10
  206. package/dist/monitor/src/MonitorOrbit.d.ts +43 -0
  207. package/dist/monitor/src/config.d.ts +106 -0
  208. package/dist/monitor/src/health/HealthController.d.ts +28 -0
  209. package/dist/monitor/src/health/HealthRegistry.d.ts +80 -0
  210. package/dist/monitor/src/health/index.d.ts +36 -0
  211. package/dist/monitor/src/index.d.ts +13 -0
  212. package/dist/monitor/src/metrics/MetricsController.d.ts +22 -0
  213. package/dist/monitor/src/metrics/MetricsRegistry.d.ts +136 -0
  214. package/dist/monitor/src/metrics/index.d.ts +11 -0
  215. package/dist/monitor/src/tracing/TracingManager.d.ts +97 -0
  216. package/dist/monitor/src/tracing/index.d.ts +10 -0
  217. package/dist/photon/src/index.d.ts +74 -5
  218. package/dist/photon/src/middleware/binary.d.ts +12 -15
  219. package/dist/photon/src/middleware/htmx.d.ts +39 -0
  220. package/dist/photon/src/middleware/ratelimit-redis.d.ts +50 -0
  221. package/dist/photon/src/middleware/ratelimit.d.ts +161 -0
  222. package/dist/photon/src/openapi.d.ts +19 -0
  223. package/package.json +8 -6
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @module @gravito/core/engine
8
8
  */
9
+ import { RequestScopeManager } from '../Container/RequestScopeManager';
9
10
  import type { FastRequest, FastContext as IFastContext } from './types';
10
11
  /**
11
12
  * Lazy-parsed request wrapper
@@ -17,17 +18,23 @@ declare class FastRequestImpl implements FastRequest {
17
18
  private _request;
18
19
  private _params;
19
20
  private _path;
21
+ private _routePattern?;
20
22
  private _url;
21
23
  private _query;
22
24
  private _headers;
23
25
  private _cachedJson;
24
26
  private _jsonParsed;
27
+ private _cachedText;
28
+ private _textParsed;
29
+ private _cachedFormData;
30
+ private _formDataParsed;
31
+ private _cachedQueries;
25
32
  private _ctx;
26
33
  constructor(ctx: FastContext);
27
34
  /**
28
35
  * Initialize for new request
29
36
  */
30
- init(request: Request, params?: Record<string, string>, path?: string): this;
37
+ init(request: Request, params?: Record<string, string>, path?: string, routePattern?: string): this;
31
38
  /**
32
39
  * Reset for pooling
33
40
  */
@@ -36,6 +43,7 @@ declare class FastRequestImpl implements FastRequest {
36
43
  get url(): string;
37
44
  get method(): string;
38
45
  get path(): string;
46
+ get routePattern(): string | undefined;
39
47
  param(name: string): string | undefined;
40
48
  params(): Record<string, string>;
41
49
  private getUrl;
@@ -58,12 +66,13 @@ export declare class FastContext implements IFastContext {
58
66
  readonly req: FastRequestImpl;
59
67
  private _headers;
60
68
  _isReleased: boolean;
69
+ private _requestScope;
61
70
  /**
62
71
  * Initialize context for a new request
63
72
  *
64
73
  * This is called when acquiring from the pool.
65
74
  */
66
- init(request: Request, params?: Record<string, string>, path?: string): this;
75
+ init(request: Request, params?: Record<string, string>, path?: string, routePattern?: string): this;
67
76
  /**
68
77
  * Reset context for pooling (Cleanup)
69
78
  *
@@ -92,6 +101,22 @@ export declare class FastContext implements IFastContext {
92
101
  private _store;
93
102
  get<T>(key: string): T;
94
103
  set(key: string, value: any): void;
104
+ /**
105
+ * Get the request-scoped service manager for this request.
106
+ *
107
+ * @returns The RequestScopeManager for this request.
108
+ * @throws Error if called before init() or after reset().
109
+ */
110
+ requestScope(): RequestScopeManager;
111
+ /**
112
+ * Resolve a request-scoped service (convenience method).
113
+ *
114
+ * @template T - The service type.
115
+ * @param key - The service key for caching.
116
+ * @param factory - Factory function to create the service.
117
+ * @returns The cached or newly created service instance.
118
+ */
119
+ scoped<T>(key: string | symbol, factory: () => T): T;
95
120
  route: (name: string, params?: any, query?: any) => string;
96
121
  get native(): this;
97
122
  }
@@ -25,7 +25,6 @@ export declare class Gravito {
25
25
  staticRoutes: Map<string, RouteMetadata>;
26
26
  private isPureStaticApp;
27
27
  private compiledDynamicRoutes;
28
- private middlewareVersion;
29
28
  /**
30
29
  * Create a new Gravito instance
31
30
  *
@@ -97,7 +96,7 @@ export declare class Gravito {
97
96
  /**
98
97
  * Handle an incoming request
99
98
  */
100
- fetch: (request: Request) => Response | Promise<Response>;
99
+ fetch: (request: Request) => Promise<Response>;
101
100
  /**
102
101
  * Handle routes with middleware (async path)
103
102
  */
@@ -11,6 +11,7 @@
11
11
  *
12
12
  * @module @gravito/core/engine
13
13
  */
14
+ import { RequestScopeManager } from '../Container/RequestScopeManager';
14
15
  import type { FastRequest, FastContext as IFastContext } from './types';
15
16
  /**
16
17
  * Minimal request wrapper
@@ -19,11 +20,17 @@ declare class MinimalRequest implements FastRequest {
19
20
  private readonly _request;
20
21
  private readonly _params;
21
22
  private readonly _path;
23
+ private readonly _routePattern?;
22
24
  private _searchParams;
23
- constructor(_request: Request, _params: Record<string, string>, _path: string);
25
+ private _cachedQueries;
26
+ private _cachedJsonPromise;
27
+ private _cachedTextPromise;
28
+ private _cachedFormDataPromise;
29
+ constructor(_request: Request, _params: Record<string, string>, _path: string, _routePattern?: string | undefined);
24
30
  get url(): string;
25
31
  get method(): string;
26
32
  get path(): string;
33
+ get routePattern(): string | undefined;
27
34
  param(name: string): string | undefined;
28
35
  params(): Record<string, string>;
29
36
  /**
@@ -51,7 +58,8 @@ declare class MinimalRequest implements FastRequest {
51
58
  export declare class MinimalContext implements IFastContext {
52
59
  readonly req: MinimalRequest;
53
60
  private _resHeaders;
54
- constructor(request: Request, params: Record<string, string>, path: string);
61
+ private _requestScope;
62
+ constructor(request: Request, params: Record<string, string>, path: string, routePattern?: string);
55
63
  private getHeaders;
56
64
  json<T>(data: T, status?: number): Response;
57
65
  text(text: string, status?: number): Response;
@@ -69,6 +77,21 @@ export declare class MinimalContext implements IFastContext {
69
77
  forward(target: string, _options?: any): Promise<Response>;
70
78
  get<T>(_key: string): T;
71
79
  set(_key: string, _value: any): void;
80
+ /**
81
+ * Get the request-scoped service manager for this request.
82
+ *
83
+ * @returns The RequestScopeManager for this request.
84
+ */
85
+ requestScope(): RequestScopeManager;
86
+ /**
87
+ * Resolve a request-scoped service (convenience method).
88
+ *
89
+ * @template T - The service type.
90
+ * @param key - The service key for caching.
91
+ * @param factory - Factory function to create the service.
92
+ * @returns The cached or newly created service instance.
93
+ */
94
+ scoped<T>(key: string | symbol, factory: () => T): T;
72
95
  route: (name: string, params?: any, query?: any) => string;
73
96
  get native(): this;
74
97
  init(_request: Request, _params?: Record<string, string>, _path?: string): this;
@@ -32,11 +32,14 @@ export interface FastContext {
32
32
  /** Context Variables */
33
33
  get<T>(key: string): T;
34
34
  set(key: string, value: any): void;
35
+ /** Request Scope Management */
36
+ requestScope(): any;
37
+ scoped<T>(key: string | symbol, factory: () => T): T;
35
38
  /** Lifecycle helpers */
36
39
  route: (name: string, params?: any, query?: any) => string;
37
40
  readonly native: any;
38
41
  /** Internal initialization for pooling */
39
- init(request: Request, params?: Record<string, string>, path?: string): this;
42
+ init(request: Request, params?: Record<string, string>, path?: string, routePattern?: string): this;
40
43
  /** Internal cleanup for pooling */
41
44
  reset(): void;
42
45
  }
@@ -50,6 +53,11 @@ export interface FastRequest {
50
53
  readonly method: string;
51
54
  /** Path without query */
52
55
  readonly path: string;
56
+ /**
57
+ * Route pattern (e.g., /users/:id) for metrics labeling
58
+ * Prevents high cardinality issues in monitoring systems
59
+ */
60
+ readonly routePattern?: string;
53
61
  /** Get route parameter */
54
62
  param(name: string): string | undefined;
55
63
  /** Get all route parameters */
@@ -0,0 +1,126 @@
1
+ /**
2
+ * RequestScope-Aware Error Handling
3
+ *
4
+ * Integrates RequestScope lifecycle with error handling to provide:
5
+ * - Error context with request-scoped resources
6
+ * - Automatic cleanup of scoped services on error
7
+ * - Request tracing and diagnostics
8
+ * - Resource leak detection
9
+ */
10
+ import type { RequestScopeManager } from '../Container/RequestScopeManager';
11
+ import type { RequestScopeMetrics } from '../Container/RequestScopeMetrics';
12
+ import type { GravitoContext } from '../http/types';
13
+ /**
14
+ * Extended error context with RequestScope information
15
+ *
16
+ * Provides error handlers access to request-scoped resources
17
+ * for proper resource cleanup and error diagnostics.
18
+ */
19
+ export interface RequestScopeErrorContext {
20
+ /**
21
+ * The original error that was thrown
22
+ */
23
+ error: unknown;
24
+ /**
25
+ * HTTP context where error occurred
26
+ */
27
+ context: GravitoContext;
28
+ /**
29
+ * RequestScope manager for this request
30
+ * Allows error handlers to access or clean up scoped resources
31
+ */
32
+ scope?: RequestScopeManager;
33
+ /**
34
+ * Metrics about the request scope state
35
+ * Useful for diagnostics and understanding resource usage
36
+ */
37
+ scopeMetrics?: RequestScopeMetrics;
38
+ /**
39
+ * Number of scoped services at time of error
40
+ * High numbers might indicate resource leaks
41
+ */
42
+ scopeSize?: number;
43
+ /**
44
+ * Request processing time in milliseconds
45
+ * Useful for timeout errors
46
+ */
47
+ duration?: number;
48
+ /**
49
+ * Additional diagnostic information
50
+ */
51
+ diagnostics?: {
52
+ servicesCleanedUp?: string[];
53
+ cleanupErrors?: Array<{
54
+ service: string;
55
+ error: unknown;
56
+ }>;
57
+ peakMemoryMb?: number;
58
+ };
59
+ }
60
+ /**
61
+ * Error that occurred during RequestScope cleanup
62
+ *
63
+ * Wraps original error with cleanup context for proper error reporting
64
+ */
65
+ export declare class RequestScopeCleanupError extends Error {
66
+ originalError: unknown;
67
+ cleanupErrors: Array<{
68
+ service: string;
69
+ error: unknown;
70
+ }>;
71
+ constructor(message: string, originalError: unknown, cleanupErrors: Array<{
72
+ service: string;
73
+ error: unknown;
74
+ }>);
75
+ }
76
+ /**
77
+ * Helper to extract RequestScope context from GravitoContext
78
+ *
79
+ * @param ctx - Gravito context
80
+ * @returns RequestScope error context with available information
81
+ */
82
+ export declare function extractRequestScopeErrorContext(ctx: GravitoContext, error: unknown): RequestScopeErrorContext;
83
+ /**
84
+ * Cleanup scoped services safely during error handling
85
+ *
86
+ * Ensures all scoped services are cleaned up even if some fail,
87
+ * and collects cleanup errors for diagnostics.
88
+ *
89
+ * @param scope - RequestScope manager
90
+ * @returns Array of cleanup errors if any occurred
91
+ */
92
+ export declare function cleanupRequestScopeOnError(scope?: RequestScopeManager): Promise<Array<{
93
+ service: string;
94
+ error: unknown;
95
+ }>>;
96
+ /**
97
+ * Safe error handler wrapper that manages RequestScope cleanup
98
+ *
99
+ * Ensures scoped services are properly cleaned up before returning error response.
100
+ * Use this to wrap error handlers to make them RequestScope-aware.
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * const errorHandler = withRequestScopeCleanup(async (ctx, error) => {
105
+ * // Handle error...
106
+ * return ctx.json({ error: error.message }, 500)
107
+ * })
108
+ *
109
+ * // In your app:
110
+ * try {
111
+ * // Handle request...
112
+ * } catch (error) {
113
+ * return errorHandler(ctx, error)
114
+ * }
115
+ * ```
116
+ */
117
+ export declare function withRequestScopeCleanup<T extends (ctx: GravitoContext, error: unknown) => Promise<Response>>(handler: T): T;
118
+ /**
119
+ * Detect potential resource leaks in RequestScope
120
+ *
121
+ * Returns diagnostic information about suspicious resource usage patterns
122
+ */
123
+ export declare function detectRequestScopeLeaks(context: RequestScopeErrorContext): {
124
+ potentialLeaks: boolean;
125
+ warnings: string[];
126
+ };
@@ -0,0 +1,215 @@
1
+ /**
2
+ * @gravito/core - Event System Backpressure Management
3
+ *
4
+ * Implements a backpressure management system to prevent high-priority events
5
+ * from starving low-priority events when the queue is under resource constraints.
6
+ *
7
+ * 背壓管理器:在資源受限時進行智慧型流量控制,防止優先級飢餓。
8
+ *
9
+ * FS-103 增強:
10
+ * - 多優先級隊列深度監控
11
+ * - 背壓反饋迴路支持
12
+ * - 智能 DLQ 路由決策
13
+ */
14
+ import type { DeadLetterDecision, MultiPriorityQueueDepth } from './types';
15
+ /**
16
+ * 背壓狀態枚舉。
17
+ *
18
+ * 狀態轉換:Normal → Warning → Critical → Overflow
19
+ * 恢復方向:遲滯設計(需降至觸發閾值的 80%)
20
+ *
21
+ * @public
22
+ */
23
+ export declare enum BackpressureState {
24
+ /** 正常運作,無背壓 */
25
+ NORMAL = "NORMAL",
26
+ /** 警告狀態,開始限制低優先級事件 */
27
+ WARNING = "WARNING",
28
+ /** 危急狀態,僅允許高優先級事件 */
29
+ CRITICAL = "CRITICAL",
30
+ /** 溢位狀態,全部拒絕 */
31
+ OVERFLOW = "OVERFLOW"
32
+ }
33
+ /**
34
+ * 背壓配置選項。
35
+ *
36
+ * @public
37
+ */
38
+ export interface BackpressureConfig {
39
+ /** 是否啟用背壓管理器(預設 true) */
40
+ enabled?: boolean;
41
+ /** 總隊列深度限制(預設無限) */
42
+ maxQueueSize?: number;
43
+ /** 分優先級隊列深度限制 */
44
+ maxSizeByPriority?: {
45
+ critical?: number;
46
+ high?: number;
47
+ normal?: number;
48
+ low?: number;
49
+ };
50
+ /** 每秒最大入隊速率(events/sec,預設無限) */
51
+ maxEnqueueRate?: number;
52
+ /** 速率限制滑動視窗大小(ms,預設 1000) */
53
+ rateLimitWindowMs?: number;
54
+ /** 背壓狀態閾值(佔 maxQueueSize 的百分比) */
55
+ thresholds?: {
56
+ /** WARNING 觸發百分比(預設 0.6 = 60%) */
57
+ warning?: number;
58
+ /** CRITICAL 觸發百分比(預設 0.85 = 85%) */
59
+ critical?: number;
60
+ /** OVERFLOW 觸發百分比(預設 1.0 = 100%) */
61
+ overflow?: number;
62
+ };
63
+ /** 被拒絕事件的處理策略(預設 'drop-with-callback') */
64
+ rejectionPolicy?: 'throw' | 'drop-silent' | 'drop-with-callback';
65
+ /** 當 rejectionPolicy 為 'drop-with-callback' 時的回呼 */
66
+ onRejected?: (eventName: string, priority: string, reason: string) => void;
67
+ /** 背壓狀態變更回呼 */
68
+ onStateChange?: (from: BackpressureState, to: BackpressureState) => void;
69
+ /** 低優先級事件在 WARNING 狀態下的延遲入隊時間(ms,預設 100) */
70
+ lowPriorityDelayMs?: number;
71
+ /** 是否啟用優先級反轉防護(預設 true) */
72
+ enableStarvationProtection?: boolean;
73
+ /** 低優先級事件最大等待時間,超過則提升優先級(ms,預設 5000) */
74
+ starvationTimeoutMs?: number;
75
+ /** 當進入 OVERFLOW 狀態時,是否將被拒絕事件路由到 DLQ(預設 false) */
76
+ dlqOnOverflow?: boolean;
77
+ /** OVERFLOW 時的重試策略(預設 'dlq-only') */
78
+ overflowRetryStrategy?: 'immediate' | 'delayed' | 'dlq-only';
79
+ /** OVERFLOW 延遲重試的基礎延遲時間(ms,預設 5000) */
80
+ overflowRetryDelayMs?: number;
81
+ }
82
+ /**
83
+ * 背壓決策結果。
84
+ *
85
+ * @public
86
+ */
87
+ export interface BackpressureDecision {
88
+ /** 是否允許入隊 */
89
+ allowed: boolean;
90
+ /** 拒絕原因(若不允許) */
91
+ reason?: string;
92
+ /** 是否需要延遲入隊 */
93
+ delayed?: boolean;
94
+ /** 延遲時間(ms) */
95
+ delayMs?: number;
96
+ /** 建議降級後的優先級(若降級) */
97
+ degradedPriority?: 'high' | 'normal' | 'low';
98
+ /** 是否是由於 OVERFLOW 狀態被拒絕 */
99
+ isOverflow?: boolean;
100
+ /** OVERFLOW 時的重試策略建議('immediate'、'delayed'、'dlq-only') */
101
+ retryStrategy?: 'immediate' | 'delayed' | 'dlq-only';
102
+ }
103
+ /**
104
+ * 背壓指標快照。
105
+ *
106
+ * @public
107
+ */
108
+ export interface BackpressureMetricsSnapshot {
109
+ state: BackpressureState;
110
+ totalDepth: number;
111
+ depthByPriority: {
112
+ critical: number;
113
+ high: number;
114
+ normal: number;
115
+ low: number;
116
+ };
117
+ enqueueRate: number;
118
+ rejectedCount: number;
119
+ degradedCount: number;
120
+ stateTransitions: number;
121
+ dlqRouteCount?: number;
122
+ windowAdjustmentCount?: number;
123
+ }
124
+ /**
125
+ * 背壓管理器。
126
+ *
127
+ * 根據隊列深度、速率、優先級等因素,決定是否允許新事件入隊,
128
+ * 以及是否需要降級優先級或延遲入隊。
129
+ *
130
+ * @public
131
+ */
132
+ export declare class BackpressureManager {
133
+ private enabled;
134
+ private config;
135
+ private onRejected?;
136
+ private onStateChange?;
137
+ private state;
138
+ private rejectedCount;
139
+ private degradedCount;
140
+ private stateTransitions;
141
+ private rateCounter;
142
+ private depthByPriority;
143
+ private windowAdjustmentHistory;
144
+ private dlqRouteCount;
145
+ constructor(config?: BackpressureConfig);
146
+ /**
147
+ * 評估是否允許新事件入隊。
148
+ *
149
+ * @param eventName 事件名稱
150
+ * @param priority 事件優先級
151
+ * @param queueDepth 當前隊列深度
152
+ * @param depthByPriority 分優先級隊列深度
153
+ * @returns 背壓決策結果
154
+ */
155
+ evaluate(eventName: string, priority: 'critical' | 'high' | 'normal' | 'low', queueDepth: number, depthByPriority: {
156
+ critical: number;
157
+ high: number;
158
+ normal: number;
159
+ low: number;
160
+ }): BackpressureDecision;
161
+ /**
162
+ * 獲取當前背壓狀態。
163
+ */
164
+ getState(): BackpressureState;
165
+ /**
166
+ * 獲取背壓指標快照。
167
+ */
168
+ getMetrics(): BackpressureMetricsSnapshot;
169
+ /**
170
+ * 重置背壓管理器狀態。
171
+ */
172
+ reset(): void;
173
+ /**
174
+ * 同步隊列深度(由 EventPriorityQueue 調用)。
175
+ * FS-103:多優先級隊列深度監控
176
+ */
177
+ updateQueueDepth(depths: MultiPriorityQueueDepth): void;
178
+ /**
179
+ * 獲取各優先級的隊列深度。
180
+ * FS-103:提供實時隊列深度快照
181
+ */
182
+ getQueueDepthByPriority(): MultiPriorityQueueDepth;
183
+ /**
184
+ * 獲取總隊列深度。
185
+ */
186
+ getTotalQueueDepth(): number;
187
+ /**
188
+ * 接收來自 AggregationWindow 的窗口調整通知。
189
+ * FS-103:背壓反饋迴路
190
+ */
191
+ notifyWindowAdjustment(oldWindowMs: number, newWindowMs: number): void;
192
+ /**
193
+ * 檢查是否可以從 CRITICAL 或更高級別降級。
194
+ * FS-103:自動狀態恢復機制
195
+ */
196
+ private checkStateRecovery;
197
+ /**
198
+ * 決定是否應該將事件路由到死信隊列。
199
+ * FS-103:智能 DLQ 路由決策
200
+ */
201
+ makeDeadLetterDecision(_eventName: string, priority: 'critical' | 'high' | 'normal' | 'low'): DeadLetterDecision;
202
+ /**
203
+ * 更新背壓狀態。
204
+ * 使用遲滯設計(80% 回復比例)避免邊界震盪。
205
+ */
206
+ private updateState;
207
+ /**
208
+ * 執行狀態轉換。
209
+ */
210
+ private transitionTo;
211
+ /**
212
+ * 建立決策結果並記錄拒絕。
213
+ */
214
+ private createDecision;
215
+ }