@gravito/echo 3.0.0 → 3.1.0
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.
- package/README.md +211 -0
- package/dist/atlas/src/DB.d.ts +301 -0
- package/dist/atlas/src/OrbitAtlas.d.ts +9 -0
- package/dist/atlas/src/config/defineConfig.d.ts +14 -0
- package/dist/atlas/src/config/index.d.ts +7 -0
- package/dist/atlas/src/config/loadConfig.d.ts +48 -0
- package/dist/atlas/src/connection/Connection.d.ts +108 -0
- package/dist/atlas/src/connection/ConnectionManager.d.ts +111 -0
- package/dist/atlas/src/drivers/BunSQLDriver.d.ts +32 -0
- package/dist/atlas/src/drivers/BunSQLPreparedStatement.d.ts +118 -0
- package/dist/atlas/src/drivers/MongoDBDriver.d.ts +36 -0
- package/dist/atlas/src/drivers/MySQLDriver.d.ts +66 -0
- package/dist/atlas/src/drivers/PostgresDriver.d.ts +83 -0
- package/dist/atlas/src/drivers/RedisDriver.d.ts +43 -0
- package/dist/atlas/src/drivers/SQLiteDriver.d.ts +45 -0
- package/dist/atlas/src/drivers/types.d.ts +260 -0
- package/dist/atlas/src/errors/index.d.ts +45 -0
- package/dist/atlas/src/grammar/Grammar.d.ts +342 -0
- package/dist/atlas/src/grammar/MongoGrammar.d.ts +47 -0
- package/dist/atlas/src/grammar/MySQLGrammar.d.ts +54 -0
- package/dist/atlas/src/grammar/NullGrammar.d.ts +35 -0
- package/dist/atlas/src/grammar/PostgresGrammar.d.ts +62 -0
- package/dist/atlas/src/grammar/SQLiteGrammar.d.ts +32 -0
- package/dist/atlas/src/index.d.ts +67 -0
- package/dist/atlas/src/migration/Migration.d.ts +64 -0
- package/dist/atlas/src/migration/MigrationRepository.d.ts +65 -0
- package/dist/atlas/src/migration/Migrator.d.ts +110 -0
- package/dist/atlas/src/migration/index.d.ts +6 -0
- package/dist/atlas/src/observability/AtlasMetrics.d.ts +11 -0
- package/dist/atlas/src/observability/AtlasObservability.d.ts +15 -0
- package/dist/atlas/src/observability/AtlasTracer.d.ts +12 -0
- package/dist/atlas/src/observability/index.d.ts +9 -0
- package/dist/atlas/src/orm/index.d.ts +5 -0
- package/dist/atlas/src/orm/model/DirtyTracker.d.ts +121 -0
- package/dist/atlas/src/orm/model/Model.d.ts +449 -0
- package/dist/atlas/src/orm/model/ModelRegistry.d.ts +20 -0
- package/dist/atlas/src/orm/model/concerns/HasAttributes.d.ts +136 -0
- package/dist/atlas/src/orm/model/concerns/HasEvents.d.ts +36 -0
- package/dist/atlas/src/orm/model/concerns/HasPersistence.d.ts +87 -0
- package/dist/atlas/src/orm/model/concerns/HasRelationships.d.ts +117 -0
- package/dist/atlas/src/orm/model/concerns/HasSerialization.d.ts +64 -0
- package/dist/atlas/src/orm/model/concerns/applyMixins.d.ts +15 -0
- package/dist/atlas/src/orm/model/concerns/index.d.ts +12 -0
- package/dist/atlas/src/orm/model/decorators.d.ts +109 -0
- package/dist/atlas/src/orm/model/errors.d.ts +52 -0
- package/dist/atlas/src/orm/model/index.d.ts +10 -0
- package/dist/atlas/src/orm/model/relationships.d.ts +207 -0
- package/dist/atlas/src/orm/model/types.d.ts +12 -0
- package/dist/atlas/src/orm/schema/SchemaRegistry.d.ts +123 -0
- package/dist/atlas/src/orm/schema/SchemaSniffer.d.ts +54 -0
- package/dist/atlas/src/orm/schema/index.d.ts +6 -0
- package/dist/atlas/src/orm/schema/types.d.ts +85 -0
- package/dist/atlas/src/query/Expression.d.ts +60 -0
- package/dist/atlas/src/query/NPlusOneDetector.d.ts +10 -0
- package/dist/atlas/src/query/QueryBuilder.d.ts +573 -0
- package/dist/atlas/src/query/clauses/GroupByClause.d.ts +51 -0
- package/dist/atlas/src/query/clauses/HavingClause.d.ts +70 -0
- package/dist/atlas/src/query/clauses/JoinClause.d.ts +87 -0
- package/dist/atlas/src/query/clauses/LimitClause.d.ts +82 -0
- package/dist/atlas/src/query/clauses/OrderByClause.d.ts +69 -0
- package/dist/atlas/src/query/clauses/SelectClause.d.ts +71 -0
- package/dist/atlas/src/query/clauses/WhereClause.d.ts +167 -0
- package/dist/atlas/src/query/clauses/index.d.ts +11 -0
- package/dist/atlas/src/schema/Blueprint.d.ts +276 -0
- package/dist/atlas/src/schema/ColumnDefinition.d.ts +154 -0
- package/dist/atlas/src/schema/ForeignKeyDefinition.d.ts +37 -0
- package/dist/atlas/src/schema/Schema.d.ts +131 -0
- package/dist/atlas/src/schema/grammars/MySQLSchemaGrammar.d.ts +23 -0
- package/dist/atlas/src/schema/grammars/PostgresSchemaGrammar.d.ts +26 -0
- package/dist/atlas/src/schema/grammars/SQLiteSchemaGrammar.d.ts +28 -0
- package/dist/atlas/src/schema/grammars/SchemaGrammar.d.ts +97 -0
- package/dist/atlas/src/schema/grammars/index.d.ts +7 -0
- package/dist/atlas/src/schema/index.d.ts +8 -0
- package/dist/atlas/src/seed/Factory.d.ts +90 -0
- package/dist/atlas/src/seed/Seeder.d.ts +28 -0
- package/dist/atlas/src/seed/SeederRunner.d.ts +74 -0
- package/dist/atlas/src/seed/index.d.ts +6 -0
- package/dist/atlas/src/types/index.d.ts +1100 -0
- package/dist/atlas/src/utils/levenshtein.d.ts +9 -0
- package/dist/core/src/Application.d.ts +215 -0
- package/dist/core/src/CommandKernel.d.ts +33 -0
- package/dist/core/src/ConfigManager.d.ts +26 -0
- package/dist/core/src/Container.d.ts +108 -0
- package/dist/core/src/ErrorHandler.d.ts +63 -0
- package/dist/core/src/Event.d.ts +5 -0
- package/dist/core/src/EventManager.d.ts +123 -0
- package/dist/core/src/GlobalErrorHandlers.d.ts +47 -0
- package/dist/core/src/GravitoServer.d.ts +28 -0
- package/dist/core/src/HookManager.d.ts +496 -0
- package/dist/core/src/Listener.d.ts +4 -0
- package/dist/core/src/Logger.d.ts +20 -0
- package/dist/core/src/PlanetCore.d.ts +289 -0
- package/dist/core/src/Route.d.ts +36 -0
- package/dist/core/src/Router.d.ts +284 -0
- package/dist/core/src/ServiceProvider.d.ts +156 -0
- package/dist/core/src/adapters/GravitoEngineAdapter.d.ts +27 -0
- package/dist/core/src/adapters/PhotonAdapter.d.ts +171 -0
- package/dist/core/src/adapters/bun/BunContext.d.ts +45 -0
- package/dist/core/src/adapters/bun/BunNativeAdapter.d.ts +31 -0
- package/dist/core/src/adapters/bun/BunRequest.d.ts +31 -0
- package/dist/core/src/adapters/bun/RadixNode.d.ts +19 -0
- package/dist/core/src/adapters/bun/RadixRouter.d.ts +31 -0
- package/dist/core/src/adapters/bun/types.d.ts +20 -0
- package/dist/core/src/adapters/photon-types.d.ts +73 -0
- package/dist/core/src/adapters/types.d.ts +235 -0
- package/dist/core/src/engine/AOTRouter.d.ts +124 -0
- package/dist/core/src/engine/FastContext.d.ts +100 -0
- package/dist/core/src/engine/Gravito.d.ts +137 -0
- package/dist/core/src/engine/MinimalContext.d.ts +79 -0
- package/dist/core/src/engine/analyzer.d.ts +27 -0
- package/dist/core/src/engine/constants.d.ts +23 -0
- package/dist/core/src/engine/index.d.ts +26 -0
- package/dist/core/src/engine/path.d.ts +26 -0
- package/dist/core/src/engine/pool.d.ts +83 -0
- package/dist/core/src/engine/types.d.ts +143 -0
- package/dist/core/src/events/CircuitBreaker.d.ts +229 -0
- package/dist/core/src/events/DeadLetterQueue.d.ts +145 -0
- package/dist/core/src/events/EventBackend.d.ts +11 -0
- package/dist/core/src/events/EventOptions.d.ts +109 -0
- package/dist/core/src/events/EventPriorityQueue.d.ts +202 -0
- package/dist/core/src/events/IdempotencyCache.d.ts +60 -0
- package/dist/core/src/events/index.d.ts +14 -0
- package/dist/core/src/events/observability/EventMetrics.d.ts +132 -0
- package/dist/core/src/events/observability/EventTracer.d.ts +68 -0
- package/dist/core/src/events/observability/EventTracing.d.ts +161 -0
- package/dist/core/src/events/observability/OTelEventMetrics.d.ts +240 -0
- package/dist/core/src/events/observability/ObservableHookManager.d.ts +108 -0
- package/dist/core/src/events/observability/index.d.ts +20 -0
- package/dist/core/src/events/observability/metrics-types.d.ts +16 -0
- package/dist/core/src/events/types.d.ts +75 -0
- package/dist/core/src/exceptions/AuthenticationException.d.ts +8 -0
- package/dist/core/src/exceptions/AuthorizationException.d.ts +8 -0
- package/dist/core/src/exceptions/CircularDependencyException.d.ts +9 -0
- package/dist/core/src/exceptions/GravitoException.d.ts +23 -0
- package/dist/core/src/exceptions/HttpException.d.ts +9 -0
- package/dist/core/src/exceptions/ModelNotFoundException.d.ts +10 -0
- package/dist/core/src/exceptions/ValidationException.d.ts +22 -0
- package/dist/core/src/exceptions/index.d.ts +7 -0
- package/dist/core/src/helpers/Arr.d.ts +19 -0
- package/dist/core/src/helpers/Str.d.ts +23 -0
- package/dist/core/src/helpers/data.d.ts +25 -0
- package/dist/core/src/helpers/errors.d.ts +34 -0
- package/dist/core/src/helpers/response.d.ts +41 -0
- package/dist/core/src/helpers.d.ts +338 -0
- package/dist/core/src/http/CookieJar.d.ts +51 -0
- package/dist/core/src/http/cookie.d.ts +29 -0
- package/dist/core/src/http/middleware/BodySizeLimit.d.ts +16 -0
- package/dist/core/src/http/middleware/Cors.d.ts +24 -0
- package/dist/core/src/http/middleware/Csrf.d.ts +23 -0
- package/dist/core/src/http/middleware/HeaderTokenGate.d.ts +28 -0
- package/dist/core/src/http/middleware/SecurityHeaders.d.ts +29 -0
- package/dist/core/src/http/middleware/ThrottleRequests.d.ts +18 -0
- package/dist/core/src/http/types.d.ts +355 -0
- package/dist/core/src/index.d.ts +76 -0
- package/dist/core/src/instrumentation/index.d.ts +35 -0
- package/dist/core/src/instrumentation/opentelemetry.d.ts +178 -0
- package/dist/core/src/instrumentation/types.d.ts +182 -0
- package/dist/core/src/reliability/DeadLetterQueueManager.d.ts +316 -0
- package/dist/core/src/reliability/RetryPolicy.d.ts +217 -0
- package/dist/core/src/reliability/index.d.ts +6 -0
- package/dist/core/src/router/ControllerDispatcher.d.ts +12 -0
- package/dist/core/src/router/RequestValidator.d.ts +20 -0
- package/dist/core/src/runtime.d.ts +119 -0
- package/dist/core/src/security/Encrypter.d.ts +33 -0
- package/dist/core/src/security/Hasher.d.ts +29 -0
- package/dist/core/src/testing/HttpTester.d.ts +39 -0
- package/dist/core/src/testing/TestResponse.d.ts +78 -0
- package/dist/core/src/testing/index.d.ts +2 -0
- package/dist/core/src/types/events.d.ts +94 -0
- package/dist/echo/src/OrbitEcho.d.ts +115 -0
- package/dist/echo/src/dlq/DeadLetterQueue.d.ts +94 -0
- package/dist/echo/src/dlq/MemoryDeadLetterQueue.d.ts +36 -0
- package/dist/echo/src/dlq/index.d.ts +2 -0
- package/dist/echo/src/index.d.ts +64 -0
- package/dist/echo/src/middleware/RequestBufferMiddleware.d.ts +62 -0
- package/dist/echo/src/middleware/index.d.ts +8 -0
- package/dist/echo/src/observability/index.d.ts +3 -0
- package/dist/echo/src/observability/logging/ConsoleEchoLogger.d.ts +37 -0
- package/dist/echo/src/observability/logging/EchoLogger.d.ts +38 -0
- package/dist/echo/src/observability/logging/index.d.ts +2 -0
- package/dist/echo/src/observability/metrics/MetricsProvider.d.ts +69 -0
- package/dist/echo/src/observability/metrics/NoopMetricsProvider.d.ts +17 -0
- package/dist/echo/src/observability/metrics/PrometheusMetricsProvider.d.ts +39 -0
- package/dist/echo/src/observability/metrics/index.d.ts +3 -0
- package/dist/echo/src/observability/tracing/NoopTracer.d.ts +33 -0
- package/dist/echo/src/observability/tracing/Tracer.d.ts +75 -0
- package/dist/echo/src/observability/tracing/index.d.ts +2 -0
- package/dist/echo/src/providers/GenericProvider.d.ts +53 -0
- package/dist/echo/src/providers/GitHubProvider.d.ts +35 -0
- package/dist/echo/src/providers/LinearProvider.d.ts +27 -0
- package/dist/echo/src/providers/PaddleProvider.d.ts +31 -0
- package/dist/echo/src/providers/ShopifyProvider.d.ts +27 -0
- package/dist/echo/src/providers/SlackProvider.d.ts +27 -0
- package/dist/echo/src/providers/StripeProvider.d.ts +38 -0
- package/dist/echo/src/providers/TwilioProvider.d.ts +31 -0
- package/dist/echo/src/providers/base/BaseProvider.d.ts +87 -0
- package/dist/echo/src/providers/base/HeaderUtils.d.ts +34 -0
- package/dist/echo/src/providers/index.d.ts +14 -0
- package/dist/echo/src/receive/SignatureValidator.d.ts +67 -0
- package/dist/echo/src/receive/WebhookReceiver.d.ts +185 -0
- package/dist/echo/src/receive/index.d.ts +2 -0
- package/dist/echo/src/replay/WebhookReplayService.d.ts +35 -0
- package/dist/echo/src/replay/index.d.ts +1 -0
- package/dist/echo/src/resilience/CircuitBreaker.d.ts +117 -0
- package/dist/echo/src/resilience/index.d.ts +10 -0
- package/dist/echo/src/rotation/KeyRotationManager.d.ts +127 -0
- package/dist/echo/src/rotation/index.d.ts +10 -0
- package/dist/echo/src/send/WebhookDispatcher.d.ts +198 -0
- package/dist/echo/src/send/index.d.ts +1 -0
- package/dist/echo/src/storage/MemoryWebhookStore.d.ts +14 -0
- package/dist/echo/src/storage/WebhookStore.d.ts +236 -0
- package/dist/echo/src/storage/index.d.ts +2 -0
- package/dist/echo/src/types.d.ts +756 -0
- package/dist/index.js +1332 -190
- package/dist/index.js.map +28 -10
- package/dist/photon/src/index.d.ts +84 -0
- package/dist/photon/src/middleware/binary.d.ts +31 -0
- package/dist/photon/src/middleware/htmx.d.ts +39 -0
- package/dist/photon/src/middleware/ratelimit.d.ts +157 -0
- package/dist/photon/src/openapi.d.ts +19 -0
- package/package.json +7 -5
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @gravito/core - Event System Tracing
|
|
3
|
+
*
|
|
4
|
+
* 使用 OpenTelemetry API 實現事件系統的分佈式追蹤。
|
|
5
|
+
* 提供事件派發、監聽器執行與隊列操作的端到端追蹤。
|
|
6
|
+
*/
|
|
7
|
+
import type { Span } from '@opentelemetry/api';
|
|
8
|
+
/**
|
|
9
|
+
* 事件追蹤配置
|
|
10
|
+
*/
|
|
11
|
+
export interface EventTracingConfig {
|
|
12
|
+
/** Tracer 名稱 */
|
|
13
|
+
tracerName?: string;
|
|
14
|
+
/** 是否記錄詳細的 payload 信息 */
|
|
15
|
+
capturePayload?: boolean;
|
|
16
|
+
/** 最大 payload 大小(字節) */
|
|
17
|
+
maxPayloadSize?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 事件追蹤管理器
|
|
21
|
+
*
|
|
22
|
+
* 提供事件系統的分佈式追蹤能力,包括:
|
|
23
|
+
* - 事件派發追蹤
|
|
24
|
+
* - 監聽器執行追蹤
|
|
25
|
+
* - 隊列操作追蹤
|
|
26
|
+
* - 異常記錄與追蹤
|
|
27
|
+
*
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export declare class EventTracing {
|
|
31
|
+
private tracer;
|
|
32
|
+
private config;
|
|
33
|
+
constructor(config?: EventTracingConfig);
|
|
34
|
+
/**
|
|
35
|
+
* 為事件派發創建追蹤 Span
|
|
36
|
+
*
|
|
37
|
+
* @param eventName - 事件名稱
|
|
38
|
+
* @param listenerCount - 監聽器數量
|
|
39
|
+
* @param priority - 優先級(high, normal, low)
|
|
40
|
+
* @param payload - 事件負載(可選,用於調試)
|
|
41
|
+
* @returns Span 實例
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const tracer = new EventTracing()
|
|
46
|
+
* const span = tracer.startDispatchSpan('order:created', 3, 'high', orderData)
|
|
47
|
+
* try {
|
|
48
|
+
* // 派發事件
|
|
49
|
+
* await dispatchEvent()
|
|
50
|
+
* tracer.endDispatchSpan(span, 'ok')
|
|
51
|
+
* } catch (error) {
|
|
52
|
+
* tracer.endDispatchSpan(span, 'error', error)
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
startDispatchSpan(eventName: string, listenerCount: number, priority?: 'high' | 'normal' | 'low', payload?: unknown): Span;
|
|
57
|
+
/**
|
|
58
|
+
* 為監聽器執行創建追蹤 Span
|
|
59
|
+
*
|
|
60
|
+
* @param _parentSpan - 父 Span
|
|
61
|
+
* @param eventName - 事件名稱
|
|
62
|
+
* @param listenerName - 監聽器名稱/標識
|
|
63
|
+
* @param listenerIndex - 監聽器索引
|
|
64
|
+
* @returns 子 Span 實例
|
|
65
|
+
*/
|
|
66
|
+
startListenerSpan(_parentSpan: Span, eventName: string, listenerName: string, listenerIndex: number): Span;
|
|
67
|
+
/**
|
|
68
|
+
* 為隊列操作創建追蹤 Span
|
|
69
|
+
*
|
|
70
|
+
* @param _parentSpan - 父 Span
|
|
71
|
+
* @param operationType - 操作類型(enqueue, dequeue, requeue)
|
|
72
|
+
* @param eventName - 事件名稱
|
|
73
|
+
* @param priority - 優先級
|
|
74
|
+
* @returns Span 實例
|
|
75
|
+
*/
|
|
76
|
+
startQueueOperationSpan(_parentSpan: Span, operationType: 'enqueue' | 'dequeue' | 'requeue', eventName: string, priority: 'high' | 'normal' | 'low'): Span;
|
|
77
|
+
/**
|
|
78
|
+
* 結束事件派發 Span
|
|
79
|
+
*
|
|
80
|
+
* @param span - Span 實例
|
|
81
|
+
* @param status - 完成狀態(ok, error)
|
|
82
|
+
* @param error - 如果 status 為 error,傳遞錯誤對象
|
|
83
|
+
*/
|
|
84
|
+
endDispatchSpan(span: Span, status?: 'ok' | 'error', error?: Error): void;
|
|
85
|
+
/**
|
|
86
|
+
* 結束監聽器執行 Span
|
|
87
|
+
*
|
|
88
|
+
* @param span - Span 實例
|
|
89
|
+
* @param status - 完成狀態(ok, error)
|
|
90
|
+
* @param duration - 執行時間(毫秒)
|
|
91
|
+
* @param error - 如果發生錯誤,傳遞錯誤對象
|
|
92
|
+
*/
|
|
93
|
+
endListenerSpan(span: Span, status?: 'ok' | 'error', duration?: number, error?: Error): void;
|
|
94
|
+
/**
|
|
95
|
+
* 結束隊列操作 Span
|
|
96
|
+
*
|
|
97
|
+
* @param span - Span 實例
|
|
98
|
+
* @param status - 完成狀態(ok, error)
|
|
99
|
+
* @param queueDepth - 當前隊列深度
|
|
100
|
+
* @param error - 如果發生錯誤,傳遞錯誤對象
|
|
101
|
+
*/
|
|
102
|
+
endQueueOperationSpan(span: Span, status?: 'ok' | 'error', queueDepth?: number, error?: Error): void;
|
|
103
|
+
/**
|
|
104
|
+
* 在 Span 中添加自定義屬性
|
|
105
|
+
*
|
|
106
|
+
* @param span - Span 實例
|
|
107
|
+
* @param attributes - 屬性對象
|
|
108
|
+
*/
|
|
109
|
+
addSpanAttributes(span: Span, attributes: Record<string, string | number | boolean>): void;
|
|
110
|
+
/**
|
|
111
|
+
* 在 Span 中添加自定義事件
|
|
112
|
+
*
|
|
113
|
+
* @param span - Span 實例
|
|
114
|
+
* @param eventName - 事件名稱
|
|
115
|
+
* @param attributes - 事件屬性(可選)
|
|
116
|
+
*/
|
|
117
|
+
addSpanEvent(span: Span, eventName: string, attributes?: Record<string, string | number | boolean>): void;
|
|
118
|
+
/**
|
|
119
|
+
* 記錄異常到 Span
|
|
120
|
+
*
|
|
121
|
+
* @param span - Span 實例
|
|
122
|
+
* @param error - 錯誤對象
|
|
123
|
+
*/
|
|
124
|
+
recordException(span: Span, error: Error | string): void;
|
|
125
|
+
/**
|
|
126
|
+
* 創建定時器 Span(用於測量操作時間)
|
|
127
|
+
*
|
|
128
|
+
* @param operationName - 操作名稱
|
|
129
|
+
* @returns 對象包含 span 和結束函數
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* const { span, endTimer } = tracer.startTimer('slow-operation')
|
|
134
|
+
* try {
|
|
135
|
+
* await slowOperation()
|
|
136
|
+
* endTimer('ok')
|
|
137
|
+
* } catch (error) {
|
|
138
|
+
* endTimer('error', error)
|
|
139
|
+
* }
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
startTimer(operationName: string): {
|
|
143
|
+
span: Span;
|
|
144
|
+
endTimer: (status?: 'ok' | 'error', error?: Error) => void;
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* 獲取 tracer 實例(用於高級用法)
|
|
148
|
+
*
|
|
149
|
+
* @returns OpenTelemetry Tracer 實例
|
|
150
|
+
*/
|
|
151
|
+
getTracer(): import("@opentelemetry/api").Tracer;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* 獲取或創建全局 EventTracing 實例
|
|
155
|
+
*
|
|
156
|
+
* @param config - 配置選項
|
|
157
|
+
* @returns EventTracing 實例
|
|
158
|
+
*
|
|
159
|
+
* @public
|
|
160
|
+
*/
|
|
161
|
+
export declare function getEventTracing(config?: EventTracingConfig): EventTracing;
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @gravito/core - OpenTelemetry Event Metrics
|
|
3
|
+
*
|
|
4
|
+
* Provides event system metrics using OpenTelemetry API directly.
|
|
5
|
+
* This enables Prometheus export without requiring @gravito/monitor dependency.
|
|
6
|
+
*
|
|
7
|
+
* Metrics:
|
|
8
|
+
* - gravito_event_dispatch_duration_seconds (Histogram)
|
|
9
|
+
* - gravito_event_listener_duration_seconds (Histogram)
|
|
10
|
+
* - gravito_event_queue_depth (Observable Gauge)
|
|
11
|
+
*
|
|
12
|
+
* @packageDocumentation
|
|
13
|
+
*/
|
|
14
|
+
import type { Meter } from '@opentelemetry/api';
|
|
15
|
+
import type { CircuitBreakerMetricsRecorder } from '../CircuitBreaker';
|
|
16
|
+
/**
|
|
17
|
+
* Queue depth callback type.
|
|
18
|
+
* Returns the current queue depths for each priority level.
|
|
19
|
+
*/
|
|
20
|
+
export type QueueDepthCallback = () => {
|
|
21
|
+
high: number;
|
|
22
|
+
normal: number;
|
|
23
|
+
low: number;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Circuit breaker state callback type.
|
|
27
|
+
* Returns the current state of a circuit breaker.
|
|
28
|
+
*/
|
|
29
|
+
export type CircuitBreakerStateCallback = () => {
|
|
30
|
+
eventName: string;
|
|
31
|
+
listenerIndex: number;
|
|
32
|
+
state: 0 | 1 | 2;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* OpenTelemetry-based Event Metrics collector.
|
|
36
|
+
*
|
|
37
|
+
* Uses OpenTelemetry API directly for metrics collection, enabling
|
|
38
|
+
* Prometheus export through the OpenTelemetry SDK.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* import { metrics } from '@opentelemetry/api'
|
|
43
|
+
* import { OTelEventMetrics } from '@gravito/core'
|
|
44
|
+
*
|
|
45
|
+
* const meter = metrics.getMeter('@gravito/core', '1.0.0')
|
|
46
|
+
* const eventMetrics = new OTelEventMetrics(meter)
|
|
47
|
+
*
|
|
48
|
+
* // Record dispatch duration
|
|
49
|
+
* eventMetrics.recordDispatchDuration('order:created', 'high', 0.123)
|
|
50
|
+
*
|
|
51
|
+
* // Record listener duration
|
|
52
|
+
* eventMetrics.recordListenerDuration('order:created', 0, 0.456)
|
|
53
|
+
*
|
|
54
|
+
* // Set queue depth callback
|
|
55
|
+
* eventMetrics.setQueueDepthCallback(() => ({
|
|
56
|
+
* high: 10,
|
|
57
|
+
* normal: 50,
|
|
58
|
+
* low: 100
|
|
59
|
+
* }))
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
64
|
+
export declare class OTelEventMetrics implements CircuitBreakerMetricsRecorder {
|
|
65
|
+
private readonly meter;
|
|
66
|
+
private readonly prefix;
|
|
67
|
+
private readonly dispatchDurationHistogram;
|
|
68
|
+
private readonly listenerDurationHistogram;
|
|
69
|
+
private readonly queueDepthGauge;
|
|
70
|
+
private readonly cbStateGauge;
|
|
71
|
+
private readonly cbFailuresCounter;
|
|
72
|
+
private readonly cbSuccessesCounter;
|
|
73
|
+
private readonly cbTransitionsCounter;
|
|
74
|
+
private readonly cbOpenDurationHistogram;
|
|
75
|
+
private queueDepthCallback?;
|
|
76
|
+
private circuitBreakerStateCallbacks;
|
|
77
|
+
private recordedCircuitBreakerStates;
|
|
78
|
+
/**
|
|
79
|
+
* Bucket boundaries for dispatch duration histogram.
|
|
80
|
+
*/
|
|
81
|
+
private readonly dispatchDurationBuckets;
|
|
82
|
+
/**
|
|
83
|
+
* Bucket boundaries for listener duration histogram.
|
|
84
|
+
*/
|
|
85
|
+
private readonly listenerDurationBuckets;
|
|
86
|
+
/**
|
|
87
|
+
* Bucket boundaries for circuit breaker open duration histogram.
|
|
88
|
+
*/
|
|
89
|
+
private readonly cbOpenDurationBuckets;
|
|
90
|
+
/**
|
|
91
|
+
* Create a new OTelEventMetrics instance.
|
|
92
|
+
*
|
|
93
|
+
* @param meter - OpenTelemetry Meter instance
|
|
94
|
+
* @param prefix - Metric name prefix (default: 'gravito_event_')
|
|
95
|
+
*/
|
|
96
|
+
constructor(meter: Meter, prefix?: string);
|
|
97
|
+
/**
|
|
98
|
+
* Record event dispatch duration.
|
|
99
|
+
*
|
|
100
|
+
* @param eventName - Name of the event
|
|
101
|
+
* @param priority - Priority level (high, normal, low)
|
|
102
|
+
* @param durationSeconds - Duration in seconds
|
|
103
|
+
*/
|
|
104
|
+
recordDispatchDuration(eventName: string, priority: string, durationSeconds: number): void;
|
|
105
|
+
/**
|
|
106
|
+
* Record listener execution duration.
|
|
107
|
+
*
|
|
108
|
+
* @param eventName - Name of the event
|
|
109
|
+
* @param listenerIndex - Index of the listener in the callback list
|
|
110
|
+
* @param durationSeconds - Duration in seconds
|
|
111
|
+
*/
|
|
112
|
+
recordListenerDuration(eventName: string, listenerIndex: number, durationSeconds: number): void;
|
|
113
|
+
/**
|
|
114
|
+
* Set the callback for queue depth observable gauge.
|
|
115
|
+
*
|
|
116
|
+
* The callback will be invoked when metrics are collected,
|
|
117
|
+
* allowing real-time reporting of queue depths.
|
|
118
|
+
*
|
|
119
|
+
* @param callback - Function returning current queue depths
|
|
120
|
+
*/
|
|
121
|
+
setQueueDepthCallback(callback: QueueDepthCallback): void;
|
|
122
|
+
/**
|
|
123
|
+
* Register a circuit breaker state callback for monitoring.
|
|
124
|
+
*
|
|
125
|
+
* @param key - Unique identifier for the circuit breaker (e.g., "order:created-0")
|
|
126
|
+
* @param callback - Function returning current circuit breaker state
|
|
127
|
+
*/
|
|
128
|
+
registerCircuitBreakerStateCallback(key: string, callback: CircuitBreakerStateCallback): void;
|
|
129
|
+
/**
|
|
130
|
+
* Unregister a circuit breaker state callback.
|
|
131
|
+
*
|
|
132
|
+
* @param key - Unique identifier for the circuit breaker
|
|
133
|
+
*/
|
|
134
|
+
unregisterCircuitBreakerStateCallback(key: string): void;
|
|
135
|
+
/**
|
|
136
|
+
* Record circuit breaker state change.
|
|
137
|
+
*
|
|
138
|
+
* @param name - Name of the circuit breaker (usually event name)
|
|
139
|
+
* @param state - State as number (0=CLOSED, 1=HALF_OPEN, 2=OPEN)
|
|
140
|
+
*/
|
|
141
|
+
recordState(name: string, state: number): void;
|
|
142
|
+
/**
|
|
143
|
+
* Record circuit breaker state transition.
|
|
144
|
+
*
|
|
145
|
+
* @param name - Name of the circuit breaker
|
|
146
|
+
* @param fromState - Previous state
|
|
147
|
+
* @param toState - New state
|
|
148
|
+
*/
|
|
149
|
+
recordTransition(name: string, fromState: string, toState: string): void;
|
|
150
|
+
/**
|
|
151
|
+
* Record circuit breaker failure.
|
|
152
|
+
*
|
|
153
|
+
* @param name - Name of the circuit breaker
|
|
154
|
+
*/
|
|
155
|
+
recordFailure(name: string): void;
|
|
156
|
+
/**
|
|
157
|
+
* Record circuit breaker success.
|
|
158
|
+
*
|
|
159
|
+
* @param name - Name of the circuit breaker
|
|
160
|
+
*/
|
|
161
|
+
recordSuccess(name: string): void;
|
|
162
|
+
/**
|
|
163
|
+
* Record circuit breaker open duration.
|
|
164
|
+
*
|
|
165
|
+
* @param name - Name of the circuit breaker
|
|
166
|
+
* @param seconds - Duration in seconds
|
|
167
|
+
*/
|
|
168
|
+
recordOpenDuration(name: string, seconds: number): void;
|
|
169
|
+
/**
|
|
170
|
+
* Record circuit breaker failure.
|
|
171
|
+
*
|
|
172
|
+
* @param eventName - Name of the event
|
|
173
|
+
* @param listenerIndex - Index of the listener
|
|
174
|
+
*/
|
|
175
|
+
recordCircuitBreakerFailure(eventName: string, listenerIndex: number): void;
|
|
176
|
+
/**
|
|
177
|
+
* Record circuit breaker success.
|
|
178
|
+
*
|
|
179
|
+
* @param eventName - Name of the event
|
|
180
|
+
* @param listenerIndex - Index of the listener
|
|
181
|
+
*/
|
|
182
|
+
recordCircuitBreakerSuccess(eventName: string, listenerIndex: number): void;
|
|
183
|
+
/**
|
|
184
|
+
* Record circuit breaker state transition.
|
|
185
|
+
*
|
|
186
|
+
* @param eventName - Name of the event
|
|
187
|
+
* @param listenerIndex - Index of the listener
|
|
188
|
+
* @param fromState - Previous state (CLOSED, HALF_OPEN, OPEN)
|
|
189
|
+
* @param toState - New state (CLOSED, HALF_OPEN, OPEN)
|
|
190
|
+
*/
|
|
191
|
+
recordCircuitBreakerTransition(eventName: string, listenerIndex: number, fromState: string, toState: string): void;
|
|
192
|
+
/**
|
|
193
|
+
* Record circuit breaker open duration.
|
|
194
|
+
*
|
|
195
|
+
* @param eventName - Name of the event
|
|
196
|
+
* @param listenerIndex - Index of the listener
|
|
197
|
+
* @param durationSeconds - Duration in seconds
|
|
198
|
+
*/
|
|
199
|
+
recordCircuitBreakerOpenDuration(eventName: string, listenerIndex: number, durationSeconds: number): void;
|
|
200
|
+
/**
|
|
201
|
+
* Get the bucket boundaries for dispatch duration histogram.
|
|
202
|
+
*
|
|
203
|
+
* @returns Array of bucket boundaries in seconds
|
|
204
|
+
*/
|
|
205
|
+
getDispatchDurationBuckets(): number[];
|
|
206
|
+
/**
|
|
207
|
+
* Get the bucket boundaries for listener duration histogram.
|
|
208
|
+
*
|
|
209
|
+
* @returns Array of bucket boundaries in seconds
|
|
210
|
+
*/
|
|
211
|
+
getListenerDurationBuckets(): number[];
|
|
212
|
+
/**
|
|
213
|
+
* Get the OpenTelemetry Meter instance.
|
|
214
|
+
*
|
|
215
|
+
* @returns Meter instance
|
|
216
|
+
*/
|
|
217
|
+
getMeter(): Meter;
|
|
218
|
+
/**
|
|
219
|
+
* Get the metric name prefix.
|
|
220
|
+
*
|
|
221
|
+
* @returns Metric name prefix
|
|
222
|
+
*/
|
|
223
|
+
getPrefix(): string;
|
|
224
|
+
/**
|
|
225
|
+
* Get the bucket boundaries for circuit breaker open duration histogram.
|
|
226
|
+
*
|
|
227
|
+
* @returns Array of bucket boundaries in seconds
|
|
228
|
+
*/
|
|
229
|
+
getCircuitBreakerOpenDurationBuckets(): number[];
|
|
230
|
+
/**
|
|
231
|
+
* Get all registered circuit breaker state callback keys.
|
|
232
|
+
*
|
|
233
|
+
* @returns Array of registered keys
|
|
234
|
+
*/
|
|
235
|
+
getRegisteredCircuitBreakers(): string[];
|
|
236
|
+
/**
|
|
237
|
+
* Clear all circuit breaker state callbacks.
|
|
238
|
+
*/
|
|
239
|
+
clearCircuitBreakerCallbacks(): void;
|
|
240
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @gravito/core - Observable Hook Manager
|
|
3
|
+
*
|
|
4
|
+
* Wraps HookManager with observability support (metrics and tracing).
|
|
5
|
+
*/
|
|
6
|
+
import { HookManager, type HookManagerConfig } from '../../HookManager';
|
|
7
|
+
import type { EventOptions } from '../EventOptions';
|
|
8
|
+
import { EventMetrics } from './EventMetrics';
|
|
9
|
+
import { EventTracer } from './EventTracer';
|
|
10
|
+
import { EventTracing } from './EventTracing';
|
|
11
|
+
/**
|
|
12
|
+
* Configuration for observability features.
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export interface ObservabilityConfig {
|
|
16
|
+
/**
|
|
17
|
+
* Enable observability features.
|
|
18
|
+
* @default false
|
|
19
|
+
*/
|
|
20
|
+
enabled?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* MetricsRegistry instance from @gravito/monitor.
|
|
23
|
+
* Required if metrics collection is enabled.
|
|
24
|
+
*/
|
|
25
|
+
metrics?: any;
|
|
26
|
+
/**
|
|
27
|
+
* Enable OpenTelemetry distributed tracing.
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
tracing?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Prefix for metric names.
|
|
33
|
+
* @default 'gravito_event_'
|
|
34
|
+
*/
|
|
35
|
+
metricsPrefix?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Observable Hook Manager - extends HookManager with observability.
|
|
39
|
+
*
|
|
40
|
+
* Provides metrics and distributed tracing for event dispatch and listener execution.
|
|
41
|
+
* Maintains 100% backward compatibility with HookManager.
|
|
42
|
+
*
|
|
43
|
+
* @public
|
|
44
|
+
*/
|
|
45
|
+
export declare class ObservableHookManager extends HookManager {
|
|
46
|
+
private eventMetrics?;
|
|
47
|
+
private eventTracer?;
|
|
48
|
+
private eventTracing?;
|
|
49
|
+
private obsConfig;
|
|
50
|
+
/**
|
|
51
|
+
* Create a new ObservableHookManager instance.
|
|
52
|
+
*
|
|
53
|
+
* @param config - HookManager configuration
|
|
54
|
+
* @param obsConfig - Observability configuration
|
|
55
|
+
*/
|
|
56
|
+
constructor(config?: HookManagerConfig, obsConfig?: ObservabilityConfig);
|
|
57
|
+
/**
|
|
58
|
+
* Run all registered actions asynchronously via priority queue with observability.
|
|
59
|
+
*
|
|
60
|
+
* This override adds metrics and tracing to the base implementation.
|
|
61
|
+
*
|
|
62
|
+
* @template TArgs - The type of arguments passed to the action.
|
|
63
|
+
* @param hook - The name of the hook.
|
|
64
|
+
* @param args - The arguments to pass to the callbacks.
|
|
65
|
+
* @param options - Event options for async dispatch.
|
|
66
|
+
*/
|
|
67
|
+
doActionAsync<TArgs = unknown>(hook: string, args: TArgs, options?: EventOptions): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Run all registered actions synchronously with observability.
|
|
70
|
+
*
|
|
71
|
+
* This override adds metrics and tracing to the base implementation.
|
|
72
|
+
*
|
|
73
|
+
* @template TArgs - The type of arguments passed to the action.
|
|
74
|
+
* @param hook - The name of the hook.
|
|
75
|
+
* @param args - The arguments to pass to the callbacks.
|
|
76
|
+
*/
|
|
77
|
+
doActionSync<TArgs = unknown>(hook: string, args: TArgs): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Get the EventMetrics instance.
|
|
80
|
+
*
|
|
81
|
+
* @returns EventMetrics instance if observability is enabled, undefined otherwise
|
|
82
|
+
*/
|
|
83
|
+
getMetrics(): EventMetrics | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Get the EventTracer instance.
|
|
86
|
+
*
|
|
87
|
+
* @returns EventTracer instance if tracing is enabled, undefined otherwise
|
|
88
|
+
*/
|
|
89
|
+
getTracer(): EventTracer | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* Update observability configuration at runtime.
|
|
92
|
+
*
|
|
93
|
+
* @param config - New observability configuration
|
|
94
|
+
*/
|
|
95
|
+
setObservabilityConfig(config: Partial<ObservabilityConfig>): void;
|
|
96
|
+
/**
|
|
97
|
+
* Get the EventTracing instance.
|
|
98
|
+
*
|
|
99
|
+
* @returns EventTracing instance if tracing is enabled, undefined otherwise
|
|
100
|
+
*/
|
|
101
|
+
getEventTracing(): EventTracing | undefined;
|
|
102
|
+
/**
|
|
103
|
+
* Get current observability configuration.
|
|
104
|
+
*
|
|
105
|
+
* @returns Current observability configuration
|
|
106
|
+
*/
|
|
107
|
+
getObservabilityConfig(): ObservabilityConfig;
|
|
108
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @public
|
|
3
|
+
*/
|
|
4
|
+
export { EventMetrics } from './EventMetrics';
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export { EventTracer } from './EventTracer';
|
|
9
|
+
/**
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export { EventTracing, type EventTracingConfig, getEventTracing } from './EventTracing';
|
|
13
|
+
/**
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export { type ObservabilityConfig, ObservableHookManager } from './ObservableHookManager';
|
|
17
|
+
/**
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export { OTelEventMetrics, type QueueDepthCallback } from './OTelEventMetrics';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal metric types for event observability.
|
|
3
|
+
* Avoids importing @gravito/monitor from core to prevent circular dependency.
|
|
4
|
+
* Runtime implementations are provided by @gravito/monitor MetricsRegistry.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export interface EventMetricCounter {
|
|
9
|
+
inc(labels: Record<string, string>): void;
|
|
10
|
+
}
|
|
11
|
+
export interface EventMetricGauge {
|
|
12
|
+
set(value: number, labels: Record<string, string>): void;
|
|
13
|
+
}
|
|
14
|
+
export interface EventMetricHistogram {
|
|
15
|
+
observe(value: number, labels: Record<string, string>): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { ActionCallback } from '../HookManager';
|
|
2
|
+
import type { EventOptions } from './EventOptions';
|
|
3
|
+
/**
|
|
4
|
+
* Event task for priority queue processing.
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export interface EventTask {
|
|
8
|
+
/**
|
|
9
|
+
* Unique identifier for this event task.
|
|
10
|
+
*/
|
|
11
|
+
id: string;
|
|
12
|
+
/**
|
|
13
|
+
* Event hook name.
|
|
14
|
+
*/
|
|
15
|
+
hook: string;
|
|
16
|
+
/**
|
|
17
|
+
* Event payload/arguments.
|
|
18
|
+
*/
|
|
19
|
+
args: unknown;
|
|
20
|
+
/**
|
|
21
|
+
* Event options.
|
|
22
|
+
*/
|
|
23
|
+
options: EventOptions;
|
|
24
|
+
/**
|
|
25
|
+
* Callbacks to execute for this event.
|
|
26
|
+
*/
|
|
27
|
+
callbacks: ActionCallback[];
|
|
28
|
+
/**
|
|
29
|
+
* Timestamp when the event was created.
|
|
30
|
+
*/
|
|
31
|
+
createdAt: number;
|
|
32
|
+
/**
|
|
33
|
+
* Partition key for ordering (if applicable).
|
|
34
|
+
*/
|
|
35
|
+
partitionKey?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Number of retry attempts made.
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
retryCount?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Timestamp when the event first failed.
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
firstFailedAt?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Last error encountered.
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
lastError?: Error;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Strategy for handling backpressure when the queue is full.
|
|
54
|
+
*/
|
|
55
|
+
export type BackpressureStrategy = 'reject' | 'drop-oldest' | 'drop-newest' | 'ignore';
|
|
56
|
+
/**
|
|
57
|
+
* Configuration for the event priority queue.
|
|
58
|
+
*/
|
|
59
|
+
export interface EventQueueConfig {
|
|
60
|
+
/**
|
|
61
|
+
* Maximum number of pending events in the queue.
|
|
62
|
+
* If exceeded, the backpressure strategy is applied.
|
|
63
|
+
* @default undefined (unbounded)
|
|
64
|
+
*/
|
|
65
|
+
maxSize?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Strategy to use when the queue is full.
|
|
68
|
+
* - 'reject': Throw an error (default)
|
|
69
|
+
* - 'drop-oldest': Drop the oldest lowest-priority event
|
|
70
|
+
* - 'drop-newest': Drop the incoming event
|
|
71
|
+
* - 'ignore': Silently drop the incoming event
|
|
72
|
+
* @default 'reject'
|
|
73
|
+
*/
|
|
74
|
+
strategy?: BackpressureStrategy;
|
|
75
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ServiceKey } from '../Container';
|
|
2
|
+
/**
|
|
3
|
+
* CircularDependencyException - Thrown when the container detects an infinite loop.
|
|
4
|
+
*
|
|
5
|
+
* @module @gravito/core
|
|
6
|
+
*/
|
|
7
|
+
export declare class CircularDependencyException extends Error {
|
|
8
|
+
constructor(key: ServiceKey, stack: ServiceKey[]);
|
|
9
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ContentfulStatusCode } from '../http/types';
|
|
2
|
+
/**
|
|
3
|
+
* Options for creating a GravitoException
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export interface ExceptionOptions {
|
|
7
|
+
message?: string;
|
|
8
|
+
cause?: unknown;
|
|
9
|
+
i18nKey?: string;
|
|
10
|
+
i18nParams?: Record<string, string | number>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Base exception class for consistent error handling.
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class GravitoException extends Error {
|
|
17
|
+
readonly status: ContentfulStatusCode;
|
|
18
|
+
readonly code: string;
|
|
19
|
+
readonly i18nKey?: string;
|
|
20
|
+
readonly i18nParams?: Record<string, string | number>;
|
|
21
|
+
constructor(status: number, code: string, options?: ExceptionOptions);
|
|
22
|
+
getLocalizedMessage(t: (key: string, params?: Record<string, string | number>) => string): string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ContentfulStatusCode } from '../http/types';
|
|
2
|
+
import { type ExceptionOptions, GravitoException } from './GravitoException';
|
|
3
|
+
/**
|
|
4
|
+
* Generic HTTP Exception
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export declare class HttpException extends GravitoException {
|
|
8
|
+
constructor(status: ContentfulStatusCode, options?: ExceptionOptions);
|
|
9
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GravitoException } from './GravitoException';
|
|
2
|
+
/**
|
|
3
|
+
* Exception thrown when a database model is not found.
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export declare class ModelNotFoundException extends GravitoException {
|
|
7
|
+
readonly model: string;
|
|
8
|
+
readonly id?: string | number;
|
|
9
|
+
constructor(model: string, id?: string | number);
|
|
10
|
+
}
|