@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.
- package/README.md +211 -0
- package/dist/atlas/src/DB.d.ts +348 -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 +41 -0
- package/dist/atlas/src/connection/Connection.d.ts +112 -0
- package/dist/atlas/src/connection/ConnectionManager.d.ts +180 -0
- package/dist/atlas/src/connection/ReplicaConnectionPool.d.ts +54 -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 +79 -0
- package/dist/atlas/src/drivers/PostgresDriver.d.ts +96 -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 +79 -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 +33 -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/Repository.d.ts +247 -0
- package/dist/atlas/src/orm/index.d.ts +6 -0
- package/dist/atlas/src/orm/model/DirtyTracker.d.ts +121 -0
- package/dist/atlas/src/orm/model/Model.d.ts +458 -0
- package/dist/atlas/src/orm/model/ModelRegistry.d.ts +20 -0
- package/dist/atlas/src/orm/model/concerns/HasAttributes.d.ts +150 -0
- package/dist/atlas/src/orm/model/concerns/HasEvents.d.ts +36 -0
- package/dist/atlas/src/orm/model/concerns/HasPersistence.d.ts +92 -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 +138 -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 +124 -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/pool/AdaptivePoolManager.d.ts +98 -0
- package/dist/atlas/src/pool/PoolHealthChecker.d.ts +91 -0
- package/dist/atlas/src/pool/PoolStrategy.d.ts +129 -0
- package/dist/atlas/src/pool/PoolWarmer.d.ts +92 -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 +643 -0
- package/dist/atlas/src/query/RelationshipResolver.d.ts +23 -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/MigrationGenerator.d.ts +45 -0
- package/dist/atlas/src/schema/Schema.d.ts +131 -0
- package/dist/atlas/src/schema/SchemaDiff.d.ts +73 -0
- package/dist/atlas/src/schema/TypeGenerator.d.ts +57 -0
- package/dist/atlas/src/schema/TypeWriter.d.ts +42 -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/sharding/ShardingManager.d.ts +59 -0
- package/dist/atlas/src/types/index.d.ts +1182 -0
- package/dist/atlas/src/utils/CursorEncoding.d.ts +63 -0
- package/dist/atlas/src/utils/levenshtein.d.ts +9 -0
- package/dist/core/src/Application.d.ts +43 -17
- package/dist/core/src/CommandKernel.d.ts +33 -0
- package/dist/core/src/ConfigManager.d.ts +39 -0
- package/dist/core/src/Container/RequestScopeManager.d.ts +62 -0
- package/dist/core/src/Container/RequestScopeMetrics.d.ts +144 -0
- package/dist/core/src/Container.d.ts +123 -14
- package/dist/core/src/ErrorHandler.d.ts +3 -0
- package/dist/core/src/HookManager.d.ts +517 -8
- package/dist/core/src/PlanetCore.d.ts +141 -7
- package/dist/core/src/RequestContext.d.ts +97 -0
- package/dist/core/src/Router.d.ts +41 -7
- package/dist/core/src/ServiceProvider.d.ts +36 -8
- package/dist/core/src/adapters/GravitoEngineAdapter.d.ts +1 -0
- package/dist/core/src/adapters/PhotonAdapter.d.ts +5 -0
- package/dist/core/src/adapters/bun/BunContext.d.ts +4 -0
- package/dist/core/src/adapters/bun/BunNativeAdapter.d.ts +1 -0
- package/dist/core/src/adapters/types.d.ts +39 -0
- package/dist/core/src/cli/queue-commands.d.ts +6 -0
- package/dist/core/src/engine/AOTRouter.d.ts +7 -12
- package/dist/core/src/engine/FastContext.d.ts +27 -2
- package/dist/core/src/engine/Gravito.d.ts +1 -2
- package/dist/core/src/engine/MinimalContext.d.ts +25 -2
- package/dist/core/src/engine/types.d.ts +9 -1
- package/dist/core/src/error-handling/RequestScopeErrorContext.d.ts +126 -0
- package/dist/core/src/events/BackpressureManager.d.ts +215 -0
- package/dist/core/src/events/CircuitBreaker.d.ts +229 -0
- package/dist/core/src/events/DeadLetterQueue.d.ts +219 -0
- package/dist/core/src/events/EventBackend.d.ts +12 -0
- package/dist/core/src/events/EventOptions.d.ts +204 -0
- package/dist/core/src/events/EventPriorityQueue.d.ts +301 -0
- package/dist/core/src/events/FlowControlStrategy.d.ts +109 -0
- package/dist/core/src/events/IdempotencyCache.d.ts +60 -0
- package/dist/core/src/events/MessageQueueBridge.d.ts +184 -0
- package/dist/core/src/events/PriorityEscalationManager.d.ts +82 -0
- package/dist/core/src/events/RetryScheduler.d.ts +104 -0
- package/dist/core/src/events/WorkerPool.d.ts +98 -0
- package/dist/core/src/events/WorkerPoolConfig.d.ts +153 -0
- package/dist/core/src/events/WorkerPoolMetrics.d.ts +65 -0
- package/dist/core/src/events/aggregation/AggregationWindow.d.ts +77 -0
- package/dist/core/src/events/aggregation/DeduplicationManager.d.ts +135 -0
- package/dist/core/src/events/aggregation/EventAggregationManager.d.ts +108 -0
- package/dist/core/src/events/aggregation/EventBatcher.d.ts +99 -0
- package/dist/core/src/events/aggregation/types.d.ts +117 -0
- package/dist/core/src/events/index.d.ts +25 -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 +332 -0
- package/dist/core/src/events/observability/ObservableHookManager.d.ts +108 -0
- package/dist/core/src/events/observability/StreamWorkerMetrics.d.ts +76 -0
- package/dist/core/src/events/observability/index.d.ts +24 -0
- package/dist/core/src/events/observability/metrics-types.d.ts +16 -0
- package/dist/core/src/events/types.d.ts +134 -0
- package/dist/core/src/exceptions/CircularDependencyException.d.ts +9 -0
- package/dist/core/src/exceptions/index.d.ts +1 -0
- package/dist/core/src/health/HealthProvider.d.ts +67 -0
- package/dist/core/src/http/cookie.d.ts +29 -0
- package/dist/core/src/http/types.d.ts +40 -0
- package/dist/core/src/index.d.ts +26 -4
- 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/observability/Metrics.d.ts +244 -0
- package/dist/core/src/observability/QueueDashboard.d.ts +136 -0
- package/dist/core/src/reliability/DeadLetterQueueManager.d.ts +350 -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/echo/src/OrbitEcho.d.ts +71 -16
- 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 +31 -15
- 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 +37 -18
- package/dist/echo/src/providers/GitHubProvider.d.ts +21 -12
- 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 +20 -12
- 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 -3
- package/dist/echo/src/receive/SignatureValidator.d.ts +33 -0
- package/dist/echo/src/receive/WebhookReceiver.d.ts +139 -21
- 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 +159 -15
- 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 +656 -64
- package/dist/index.js +1327 -189
- package/dist/index.js.map +28 -10
- package/dist/monitor/src/MonitorOrbit.d.ts +43 -0
- package/dist/monitor/src/config.d.ts +106 -0
- package/dist/monitor/src/health/HealthController.d.ts +28 -0
- package/dist/monitor/src/health/HealthRegistry.d.ts +80 -0
- package/dist/monitor/src/health/index.d.ts +36 -0
- package/dist/monitor/src/index.d.ts +13 -0
- package/dist/monitor/src/metrics/MetricsController.d.ts +22 -0
- package/dist/monitor/src/metrics/MetricsRegistry.d.ts +136 -0
- package/dist/monitor/src/metrics/index.d.ts +11 -0
- package/dist/monitor/src/tracing/TracingManager.d.ts +97 -0
- package/dist/monitor/src/tracing/index.d.ts +10 -0
- package/dist/photon/src/index.d.ts +74 -5
- package/dist/photon/src/middleware/binary.d.ts +12 -15
- package/dist/photon/src/middleware/htmx.d.ts +39 -0
- package/dist/photon/src/middleware/ratelimit-redis.d.ts +50 -0
- package/dist/photon/src/middleware/ratelimit.d.ts +161 -0
- package/dist/photon/src/openapi.d.ts +19 -0
- package/package.json +8 -6
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event aggregation manager (FS-102)
|
|
3
|
+
*
|
|
4
|
+
* Coordinates deduplication and batching for optimal event processing:
|
|
5
|
+
* - Event deduplication (pattern-based or idempotency-key based)
|
|
6
|
+
* - Micro-batching (time and size dual-trigger)
|
|
7
|
+
* - Backpressure-aware window adjustment
|
|
8
|
+
* - Complete statistics tracking
|
|
9
|
+
*
|
|
10
|
+
* Ported from: examples/flash-sale-fullstack/src/cache/events/EventAggregator.ts
|
|
11
|
+
*/
|
|
12
|
+
import type { BackpressureManager } from '../BackpressureManager';
|
|
13
|
+
import type { EventTask } from '../types';
|
|
14
|
+
import { AggregationWindow } from './AggregationWindow';
|
|
15
|
+
import { DeduplicationManager } from './DeduplicationManager';
|
|
16
|
+
import { EventBatcher } from './EventBatcher';
|
|
17
|
+
import type { AggregationConfig, AggregationStats } from './types';
|
|
18
|
+
/**
|
|
19
|
+
* Event aggregation manager.
|
|
20
|
+
*/
|
|
21
|
+
export declare class EventAggregationManager {
|
|
22
|
+
private deduplicator;
|
|
23
|
+
private batcher;
|
|
24
|
+
private window;
|
|
25
|
+
private config;
|
|
26
|
+
private backpressureManager?;
|
|
27
|
+
private submitToQueueFn?;
|
|
28
|
+
private disabled;
|
|
29
|
+
/**
|
|
30
|
+
* Create an event aggregation manager.
|
|
31
|
+
*/
|
|
32
|
+
constructor(config?: Partial<AggregationConfig>);
|
|
33
|
+
/**
|
|
34
|
+
* Set backpressure manager for window adjustment.
|
|
35
|
+
* FS-103:Also sets BackpressureManager on AggregationWindow for feedback loop.
|
|
36
|
+
*/
|
|
37
|
+
setBackpressureManager(backpressure: BackpressureManager): void;
|
|
38
|
+
/**
|
|
39
|
+
* Set the actual queue submission function.
|
|
40
|
+
*/
|
|
41
|
+
setSubmitToQueueFn(fn: (tasks: EventTask[]) => Promise<void>): void;
|
|
42
|
+
/**
|
|
43
|
+
* Submit an event for aggregation.
|
|
44
|
+
*
|
|
45
|
+
* Returns true if accepted, false if rejected due to backpressure.
|
|
46
|
+
*/
|
|
47
|
+
submit(task: EventTask): Promise<boolean>;
|
|
48
|
+
/**
|
|
49
|
+
* Submit multiple events.
|
|
50
|
+
*/
|
|
51
|
+
submitBatch(tasks: EventTask[]): Promise<number>;
|
|
52
|
+
/**
|
|
53
|
+
* Flush current batch to queue.
|
|
54
|
+
*/
|
|
55
|
+
flush(): Promise<EventTask[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Get aggregation statistics.
|
|
58
|
+
*/
|
|
59
|
+
getStats(): AggregationStats;
|
|
60
|
+
/**
|
|
61
|
+
* Reset statistics.
|
|
62
|
+
*/
|
|
63
|
+
resetStats(): void;
|
|
64
|
+
/**
|
|
65
|
+
* Clear aggregation state.
|
|
66
|
+
*/
|
|
67
|
+
clear(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Check if there are pending events.
|
|
70
|
+
*/
|
|
71
|
+
hasPending(): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Get pending event count.
|
|
74
|
+
*/
|
|
75
|
+
getPendingCount(): number;
|
|
76
|
+
/**
|
|
77
|
+
* Disable the aggregation manager.
|
|
78
|
+
*/
|
|
79
|
+
disable(): void;
|
|
80
|
+
/**
|
|
81
|
+
* Enable the aggregation manager.
|
|
82
|
+
*/
|
|
83
|
+
enable(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Check if aggregation manager is enabled.
|
|
86
|
+
*/
|
|
87
|
+
isEnabled(): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Shutdown the aggregation manager.
|
|
90
|
+
*/
|
|
91
|
+
shutdown(): Promise<EventTask[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Submit deduplicated events to queue.
|
|
94
|
+
*/
|
|
95
|
+
private submitToQueue;
|
|
96
|
+
/**
|
|
97
|
+
* Get deduplication manager (for testing).
|
|
98
|
+
*/
|
|
99
|
+
__getDeduplicator(): DeduplicationManager;
|
|
100
|
+
/**
|
|
101
|
+
* Get event batcher (for testing).
|
|
102
|
+
*/
|
|
103
|
+
__getBatcher(): EventBatcher;
|
|
104
|
+
/**
|
|
105
|
+
* Get aggregation window (for testing).
|
|
106
|
+
*/
|
|
107
|
+
__getWindow(): AggregationWindow;
|
|
108
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event batcher for microbatching optimization (FS-102)
|
|
3
|
+
*
|
|
4
|
+
* Implements dual-trigger batching:
|
|
5
|
+
* - Time window trigger (default 50ms)
|
|
6
|
+
* - Batch size trigger (default 50 events)
|
|
7
|
+
*
|
|
8
|
+
* Expected improvements: 10-15% throughput increase
|
|
9
|
+
*
|
|
10
|
+
* Ported from: examples/flash-sale-fullstack/src/cache/events/BatchSubmitter.ts
|
|
11
|
+
*/
|
|
12
|
+
import type { EventTask } from '../types';
|
|
13
|
+
import type { BatchStats } from './types';
|
|
14
|
+
/**
|
|
15
|
+
* Event batcher for optimizing submission throughput.
|
|
16
|
+
*/
|
|
17
|
+
export declare class EventBatcher {
|
|
18
|
+
private queue;
|
|
19
|
+
private readonly batchSize;
|
|
20
|
+
private readonly flushIntervalMs;
|
|
21
|
+
private flushTimer;
|
|
22
|
+
private stats;
|
|
23
|
+
private submitFn;
|
|
24
|
+
/**
|
|
25
|
+
* Create an event batcher.
|
|
26
|
+
*
|
|
27
|
+
* @param batchSize - Batch size threshold (default 50)
|
|
28
|
+
* @param flushIntervalMs - Time window (ms, default 50)
|
|
29
|
+
* @param submitFn - Function to submit batches
|
|
30
|
+
*/
|
|
31
|
+
constructor(batchSize: number | undefined, flushIntervalMs: number | undefined, submitFn: (tasks: EventTask[]) => Promise<void>);
|
|
32
|
+
/**
|
|
33
|
+
* Enqueue an event.
|
|
34
|
+
*
|
|
35
|
+
* Automatically triggers flush if:
|
|
36
|
+
* 1. Batch size is reached
|
|
37
|
+
* 2. Time window expires
|
|
38
|
+
*/
|
|
39
|
+
enqueue(task: EventTask): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Enqueue multiple events.
|
|
42
|
+
*/
|
|
43
|
+
enqueueBatch(tasks: EventTask[]): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Flush queued events.
|
|
46
|
+
*
|
|
47
|
+
* @param auto - Whether this is an auto-triggered flush
|
|
48
|
+
* @returns Array of flushed events
|
|
49
|
+
*/
|
|
50
|
+
flush(auto?: boolean): Promise<EventTask[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Get statistics.
|
|
53
|
+
*/
|
|
54
|
+
getStats(): BatchStats;
|
|
55
|
+
/**
|
|
56
|
+
* Get pending event count.
|
|
57
|
+
*/
|
|
58
|
+
getPendingCount(): number;
|
|
59
|
+
/**
|
|
60
|
+
* Check if there are pending events.
|
|
61
|
+
*/
|
|
62
|
+
hasPending(): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Clear the queue.
|
|
65
|
+
*/
|
|
66
|
+
clear(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Reset statistics.
|
|
69
|
+
*/
|
|
70
|
+
resetStats(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Stop the batcher and flush remaining events.
|
|
73
|
+
*/
|
|
74
|
+
stop(): Promise<EventTask[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Start time-window timer.
|
|
77
|
+
*/
|
|
78
|
+
private startTimer;
|
|
79
|
+
/**
|
|
80
|
+
* Clear timer.
|
|
81
|
+
*/
|
|
82
|
+
private clearTimer;
|
|
83
|
+
/**
|
|
84
|
+
* Adjust batch size.
|
|
85
|
+
*/
|
|
86
|
+
setBatchSize(newSize: number): void;
|
|
87
|
+
/**
|
|
88
|
+
* Adjust flush interval.
|
|
89
|
+
*/
|
|
90
|
+
setFlushInterval(_newIntervalMs: number): void;
|
|
91
|
+
/**
|
|
92
|
+
* Get batch size.
|
|
93
|
+
*/
|
|
94
|
+
getBatchSize(): number;
|
|
95
|
+
/**
|
|
96
|
+
* Get flush interval.
|
|
97
|
+
*/
|
|
98
|
+
getFlushInterval(): number;
|
|
99
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event aggregation and deduplication types (FS-102)
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
import { BackpressureState } from '../BackpressureManager';
|
|
6
|
+
/**
|
|
7
|
+
* Deduplication statistics.
|
|
8
|
+
*/
|
|
9
|
+
export interface DeduplicationStats {
|
|
10
|
+
/** Total events submitted */
|
|
11
|
+
totalEvents: number;
|
|
12
|
+
/** Events after deduplication */
|
|
13
|
+
deduplicatedEvents: number;
|
|
14
|
+
/** Events removed by deduplication */
|
|
15
|
+
removedCount: number;
|
|
16
|
+
/** Number of patterns aggregated */
|
|
17
|
+
patternsAggregated: number;
|
|
18
|
+
/** Deduplication rate (%) */
|
|
19
|
+
deduplicationRate: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Batch submission statistics.
|
|
23
|
+
*/
|
|
24
|
+
export interface BatchStats {
|
|
25
|
+
/** Total batches submitted */
|
|
26
|
+
totalBatches: number;
|
|
27
|
+
/** Total events submitted */
|
|
28
|
+
totalEvents: number;
|
|
29
|
+
/** Average batch size */
|
|
30
|
+
averageBatchSize: number;
|
|
31
|
+
/** Average batch latency (ms) */
|
|
32
|
+
averageBatchLatency: number;
|
|
33
|
+
/** Last flush timestamp */
|
|
34
|
+
lastFlushTime: number;
|
|
35
|
+
/** Pending events in queue */
|
|
36
|
+
pendingEvents: number;
|
|
37
|
+
/** Auto-triggered flushes */
|
|
38
|
+
autoFlushCount: number;
|
|
39
|
+
/** Manual flushes */
|
|
40
|
+
manualFlushCount: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Aggregation window statistics.
|
|
44
|
+
*/
|
|
45
|
+
export interface WindowStats {
|
|
46
|
+
/** Current window size (ms) */
|
|
47
|
+
currentWindowMs: number;
|
|
48
|
+
/** Minimum window size (ms) */
|
|
49
|
+
minWindowMs: number;
|
|
50
|
+
/** Maximum window size (ms) */
|
|
51
|
+
maxWindowMs: number;
|
|
52
|
+
/** Last window adjustment reason */
|
|
53
|
+
lastAdjustmentReason?: string;
|
|
54
|
+
/** Window adjustment count */
|
|
55
|
+
adjustmentCount: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Complete aggregation statistics.
|
|
59
|
+
*/
|
|
60
|
+
export interface AggregationStats {
|
|
61
|
+
deduplication: DeduplicationStats;
|
|
62
|
+
batching: BatchStats;
|
|
63
|
+
window: WindowStats;
|
|
64
|
+
timestamp: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Aggregation configuration options.
|
|
68
|
+
*/
|
|
69
|
+
export interface AggregationConfig {
|
|
70
|
+
/** Enable aggregation (default: false) */
|
|
71
|
+
enabled: boolean;
|
|
72
|
+
/** Window size in milliseconds (default: 200) */
|
|
73
|
+
windowMs?: number;
|
|
74
|
+
/** Batch size threshold (default: 50) */
|
|
75
|
+
batchSize?: number;
|
|
76
|
+
/** Deduplication strategy */
|
|
77
|
+
deduplication?: 'pattern' | 'idempotencyKey' | 'off';
|
|
78
|
+
/** Deduplication pattern (string or function) */
|
|
79
|
+
pattern?: string | ((args: unknown) => string);
|
|
80
|
+
/** Merge priority when deduplicating */
|
|
81
|
+
mergePriority?: 'highest' | 'earliest' | 'latest';
|
|
82
|
+
/** Enable background cleanup (default: true) */
|
|
83
|
+
enableCleanup?: boolean;
|
|
84
|
+
/** Cleanup interval (ms, default: 5 minutes) */
|
|
85
|
+
cleanupIntervalMs?: number;
|
|
86
|
+
/** TTL for deduplication entries (ms, default: 10 minutes) */
|
|
87
|
+
ttlMs?: number;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Default aggregation configuration.
|
|
91
|
+
*/
|
|
92
|
+
export declare const DEFAULT_AGGREGATION_CONFIG: Required<AggregationConfig>;
|
|
93
|
+
/**
|
|
94
|
+
* Priority order for merge decisions.
|
|
95
|
+
*/
|
|
96
|
+
export declare const PRIORITY_ORDER: Record<string, number>;
|
|
97
|
+
/**
|
|
98
|
+
* Backpressure-aware window configuration.
|
|
99
|
+
*/
|
|
100
|
+
export interface WindowAdjustmentConfig {
|
|
101
|
+
/** Window for NORMAL backpressure state */
|
|
102
|
+
normalMs: number;
|
|
103
|
+
/** Window for WARNING backpressure state */
|
|
104
|
+
warningMs: number;
|
|
105
|
+
/** Window for CRITICAL backpressure state */
|
|
106
|
+
criticalMs: number;
|
|
107
|
+
/** Window for OVERFLOW backpressure state */
|
|
108
|
+
overflowMs: number;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Default window adjustment configuration based on backpressure.
|
|
112
|
+
*/
|
|
113
|
+
export declare const DEFAULT_WINDOW_ADJUSTMENT: WindowAdjustmentConfig;
|
|
114
|
+
/**
|
|
115
|
+
* Get suggested window size based on backpressure state.
|
|
116
|
+
*/
|
|
117
|
+
export declare function getSuggestedWindow(state: BackpressureState, config?: WindowAdjustmentConfig): number;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event system exports for async event dispatch.
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
export type { BackpressureConfig, BackpressureDecision, BackpressureMetricsSnapshot, } from './BackpressureManager';
|
|
6
|
+
export { BackpressureManager, BackpressureState } from './BackpressureManager';
|
|
7
|
+
export type { CircuitBreakerOptions } from './CircuitBreaker';
|
|
8
|
+
export { CircuitBreaker, CircuitBreakerState } from './CircuitBreaker';
|
|
9
|
+
export type { DLQEntry, DLQFilter } from './DeadLetterQueue';
|
|
10
|
+
export { DeadLetterQueue } from './DeadLetterQueue';
|
|
11
|
+
export * from './EventBackend';
|
|
12
|
+
export type { EventOptions } from './EventOptions';
|
|
13
|
+
export { DEFAULT_EVENT_OPTIONS } from './EventOptions';
|
|
14
|
+
export { EventPriorityQueue } from './EventPriorityQueue';
|
|
15
|
+
export type { FlowControlContext, FlowControlStrategy } from './FlowControlStrategy';
|
|
16
|
+
export { CompositeStrategy, createDefaultStrategies, PriorityRebalanceStrategy, QueueDepthStrategy, RateLimitStrategy, StarvationProtectionStrategy, } from './FlowControlStrategy';
|
|
17
|
+
export type { EventStatus, MessageQueueBridgeConfig } from './MessageQueueBridge';
|
|
18
|
+
export { MessageQueueBridge } from './MessageQueueBridge';
|
|
19
|
+
export * from './observability';
|
|
20
|
+
export type { QueueStats, RetrySchedulerConfig } from './RetryScheduler';
|
|
21
|
+
export { RetryScheduler } from './RetryScheduler';
|
|
22
|
+
export type { BackpressureStrategy, EventQueueConfig, EventTask } from './types';
|
|
23
|
+
export { WorkerPool } from './WorkerPool';
|
|
24
|
+
export type { WorkerPoolConfig, WorkerPoolStats, WorkerStats } from './WorkerPoolConfig';
|
|
25
|
+
export { WorkerPoolMetrics } from './WorkerPoolMetrics';
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @gravito/core - Event System Metrics
|
|
3
|
+
*
|
|
4
|
+
* Manages metric collection for event dispatch and listener execution.
|
|
5
|
+
*/
|
|
6
|
+
import type { EventMetricGauge, EventMetricHistogram } from './metrics-types';
|
|
7
|
+
/**
|
|
8
|
+
* Event metrics collector for monitoring and observability.
|
|
9
|
+
*
|
|
10
|
+
* Collects 6 core metrics:
|
|
11
|
+
* - Event dispatch latency (Histogram)
|
|
12
|
+
* - Listener execution time (Histogram)
|
|
13
|
+
* - Queue depth by priority (Gauge)
|
|
14
|
+
* - Failure count by error type (Counter)
|
|
15
|
+
* - Timeout count (Counter)
|
|
16
|
+
* - Processed event count by status (Counter)
|
|
17
|
+
*
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export declare class EventMetrics {
|
|
21
|
+
private dispatchLatency;
|
|
22
|
+
private listenerExecutionTime;
|
|
23
|
+
private queueDepthGauge;
|
|
24
|
+
private failureCounter;
|
|
25
|
+
private timeoutCounter;
|
|
26
|
+
private processedCounter;
|
|
27
|
+
private circuitBreakerStateGauge;
|
|
28
|
+
private circuitBreakerTransitionsCounter;
|
|
29
|
+
private circuitBreakerFailuresCounter;
|
|
30
|
+
private circuitBreakerSuccessesCounter;
|
|
31
|
+
private circuitBreakerOpenDurationHistogram;
|
|
32
|
+
/**
|
|
33
|
+
* Create a new EventMetrics instance.
|
|
34
|
+
*
|
|
35
|
+
* @param registry - MetricsRegistry from @gravito/monitor
|
|
36
|
+
* @param prefix - Metric name prefix (default: 'gravito_event_')
|
|
37
|
+
*/
|
|
38
|
+
constructor(registry: any, // MetricsRegistry type
|
|
39
|
+
prefix?: string);
|
|
40
|
+
/**
|
|
41
|
+
* Record event dispatch latency.
|
|
42
|
+
*
|
|
43
|
+
* @param eventName - Name of the event
|
|
44
|
+
* @param priority - Priority level (high, normal, low)
|
|
45
|
+
* @param seconds - Duration in seconds
|
|
46
|
+
*/
|
|
47
|
+
recordDispatchLatency(eventName: string, priority: string, seconds: number): void;
|
|
48
|
+
/**
|
|
49
|
+
* Record listener execution time.
|
|
50
|
+
*
|
|
51
|
+
* @param eventName - Name of the event
|
|
52
|
+
* @param index - Index of the listener in the callback list
|
|
53
|
+
* @param seconds - Duration in seconds
|
|
54
|
+
*/
|
|
55
|
+
recordListenerExecution(eventName: string, index: number, seconds: number): void;
|
|
56
|
+
/**
|
|
57
|
+
* Update queue depth gauge for a specific priority.
|
|
58
|
+
*
|
|
59
|
+
* @param priority - Priority level (high, normal, low)
|
|
60
|
+
* @param depth - Current queue depth
|
|
61
|
+
*/
|
|
62
|
+
updateQueueDepth(priority: string, depth: number): void;
|
|
63
|
+
/**
|
|
64
|
+
* Record event processing failure.
|
|
65
|
+
*
|
|
66
|
+
* @param eventName - Name of the event
|
|
67
|
+
* @param errorType - Type of error (e.g., 'TypeError', 'TimeoutError')
|
|
68
|
+
*/
|
|
69
|
+
recordFailure(eventName: string, errorType: string): void;
|
|
70
|
+
/**
|
|
71
|
+
* Record event processing timeout.
|
|
72
|
+
*
|
|
73
|
+
* @param eventName - Name of the event
|
|
74
|
+
*/
|
|
75
|
+
recordTimeout(eventName: string): void;
|
|
76
|
+
/**
|
|
77
|
+
* Record processed event (success or failure).
|
|
78
|
+
*
|
|
79
|
+
* @param eventName - Name of the event
|
|
80
|
+
* @param status - Processing status ('success' or 'failure')
|
|
81
|
+
*/
|
|
82
|
+
recordProcessed(eventName: string, status: 'success' | 'failure'): void;
|
|
83
|
+
/**
|
|
84
|
+
* Get reference to dispatch latency histogram.
|
|
85
|
+
* @internal
|
|
86
|
+
*/
|
|
87
|
+
getDispatchLatencyHistogram(): EventMetricHistogram;
|
|
88
|
+
/**
|
|
89
|
+
* Get reference to listener execution time histogram.
|
|
90
|
+
* @internal
|
|
91
|
+
*/
|
|
92
|
+
getListenerExecutionHistogram(): EventMetricHistogram;
|
|
93
|
+
/**
|
|
94
|
+
* Get reference to queue depth gauge.
|
|
95
|
+
* @internal
|
|
96
|
+
*/
|
|
97
|
+
getQueueDepthGauge(): EventMetricGauge;
|
|
98
|
+
/**
|
|
99
|
+
* Record circuit breaker state change.
|
|
100
|
+
*
|
|
101
|
+
* @param eventName - Name of the event
|
|
102
|
+
* @param state - Circuit breaker state (0=CLOSED, 1=HALF_OPEN, 2=OPEN)
|
|
103
|
+
*/
|
|
104
|
+
recordCircuitBreakerState(eventName: string, state: number): void;
|
|
105
|
+
/**
|
|
106
|
+
* Record circuit breaker state transition.
|
|
107
|
+
*
|
|
108
|
+
* @param eventName - Name of the event
|
|
109
|
+
* @param fromState - Previous state
|
|
110
|
+
* @param toState - New state
|
|
111
|
+
*/
|
|
112
|
+
recordCircuitBreakerTransition(eventName: string, fromState: string, toState: string): void;
|
|
113
|
+
/**
|
|
114
|
+
* Record circuit breaker failure.
|
|
115
|
+
*
|
|
116
|
+
* @param eventName - Name of the event
|
|
117
|
+
*/
|
|
118
|
+
recordCircuitBreakerFailure(eventName: string): void;
|
|
119
|
+
/**
|
|
120
|
+
* Record circuit breaker success.
|
|
121
|
+
*
|
|
122
|
+
* @param eventName - Name of the event
|
|
123
|
+
*/
|
|
124
|
+
recordCircuitBreakerSuccess(eventName: string): void;
|
|
125
|
+
/**
|
|
126
|
+
* Record circuit breaker OPEN duration.
|
|
127
|
+
*
|
|
128
|
+
* @param eventName - Name of the event
|
|
129
|
+
* @param seconds - Duration in seconds
|
|
130
|
+
*/
|
|
131
|
+
recordCircuitBreakerOpenDuration(eventName: string, seconds: number): void;
|
|
132
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @gravito/core - Event System Tracer
|
|
3
|
+
*
|
|
4
|
+
* Manages OpenTelemetry distributed tracing for event dispatch.
|
|
5
|
+
*/
|
|
6
|
+
import type { Span } from '@opentelemetry/api';
|
|
7
|
+
/**
|
|
8
|
+
* Event tracer for distributed tracing support.
|
|
9
|
+
*
|
|
10
|
+
* Integrates with OpenTelemetry to provide:
|
|
11
|
+
* - Event dispatch tracing
|
|
12
|
+
* - Listener execution tracing
|
|
13
|
+
* - Error recording
|
|
14
|
+
* - Span hierarchy
|
|
15
|
+
*
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
export declare class EventTracer {
|
|
19
|
+
private tracer;
|
|
20
|
+
/**
|
|
21
|
+
* Create a new EventTracer instance.
|
|
22
|
+
*
|
|
23
|
+
* @param tracerName - Name of the tracer (default: '@gravito/core')
|
|
24
|
+
*/
|
|
25
|
+
constructor(tracerName?: string);
|
|
26
|
+
/**
|
|
27
|
+
* Start a span for event dispatch.
|
|
28
|
+
*
|
|
29
|
+
* @param eventName - Name of the event
|
|
30
|
+
* @param callbackCount - Number of callbacks registered for this event
|
|
31
|
+
* @param priority - Priority level (high, normal, low)
|
|
32
|
+
* @returns Span for the event dispatch
|
|
33
|
+
*/
|
|
34
|
+
startDispatchSpan(eventName: string, callbackCount: number, priority: string): Span;
|
|
35
|
+
/**
|
|
36
|
+
* Start a span for listener execution.
|
|
37
|
+
*
|
|
38
|
+
* @param _parentSpan - Parent span for this listener
|
|
39
|
+
* @param eventName - Name of the event
|
|
40
|
+
* @param listenerIndex - Index of the listener in the callback list
|
|
41
|
+
* @returns Child span for the listener execution
|
|
42
|
+
*/
|
|
43
|
+
startListenerSpan(_parentSpan: Span, eventName: string, listenerIndex: number): Span;
|
|
44
|
+
/**
|
|
45
|
+
* Record an error in the span.
|
|
46
|
+
*
|
|
47
|
+
* @param span - Span to record error in
|
|
48
|
+
* @param error - Error that occurred
|
|
49
|
+
*/
|
|
50
|
+
recordError(span: Span, error: Error): void;
|
|
51
|
+
/**
|
|
52
|
+
* End a span with a specific status.
|
|
53
|
+
*
|
|
54
|
+
* @param span - Span to end
|
|
55
|
+
* @param status - Status ('ok' or 'error')
|
|
56
|
+
*/
|
|
57
|
+
endSpan(span: Span, status?: 'ok' | 'error'): void;
|
|
58
|
+
/**
|
|
59
|
+
* Create a timer span for measuring duration.
|
|
60
|
+
*
|
|
61
|
+
* @param eventName - Name of the event
|
|
62
|
+
* @returns Object with span and duration recording function
|
|
63
|
+
*/
|
|
64
|
+
startTimer(eventName: string): {
|
|
65
|
+
span: Span;
|
|
66
|
+
endTimer: (status?: 'ok' | 'error') => void;
|
|
67
|
+
};
|
|
68
|
+
}
|