wse-client 1.0.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.
Files changed (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +222 -0
  3. package/dist/constants.d.ts +195 -0
  4. package/dist/constants.d.ts.map +1 -0
  5. package/dist/constants.js +285 -0
  6. package/dist/constants.js.map +1 -0
  7. package/dist/examples/ChatHandlers.d.ts +15 -0
  8. package/dist/examples/ChatHandlers.d.ts.map +1 -0
  9. package/dist/examples/ChatHandlers.js +20 -0
  10. package/dist/examples/ChatHandlers.js.map +1 -0
  11. package/dist/examples/IoTHandlers.d.ts +12 -0
  12. package/dist/examples/IoTHandlers.d.ts.map +1 -0
  13. package/dist/examples/IoTHandlers.js +15 -0
  14. package/dist/examples/IoTHandlers.js.map +1 -0
  15. package/dist/handlers/EventHandlers.d.ts +17 -0
  16. package/dist/handlers/EventHandlers.d.ts.map +1 -0
  17. package/dist/handlers/EventHandlers.js +20 -0
  18. package/dist/handlers/EventHandlers.js.map +1 -0
  19. package/dist/handlers/index.d.ts +14 -0
  20. package/dist/handlers/index.d.ts.map +1 -0
  21. package/dist/handlers/index.js +37 -0
  22. package/dist/handlers/index.js.map +1 -0
  23. package/dist/hooks/useWSE.d.ts +42 -0
  24. package/dist/hooks/useWSE.d.ts.map +1 -0
  25. package/dist/hooks/useWSE.js +1224 -0
  26. package/dist/hooks/useWSE.js.map +1 -0
  27. package/dist/index.d.ts +25 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +48 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/protocols/compression.d.ts +17 -0
  32. package/dist/protocols/compression.d.ts.map +1 -0
  33. package/dist/protocols/compression.js +155 -0
  34. package/dist/protocols/compression.js.map +1 -0
  35. package/dist/protocols/transformer.d.ts +12 -0
  36. package/dist/protocols/transformer.d.ts.map +1 -0
  37. package/dist/protocols/transformer.js +76 -0
  38. package/dist/protocols/transformer.js.map +1 -0
  39. package/dist/services/AdaptiveQualityManager.d.ts +44 -0
  40. package/dist/services/AdaptiveQualityManager.d.ts.map +1 -0
  41. package/dist/services/AdaptiveQualityManager.js +114 -0
  42. package/dist/services/AdaptiveQualityManager.js.map +1 -0
  43. package/dist/services/ConnectionManager.d.ts +92 -0
  44. package/dist/services/ConnectionManager.d.ts.map +1 -0
  45. package/dist/services/ConnectionManager.js +852 -0
  46. package/dist/services/ConnectionManager.js.map +1 -0
  47. package/dist/services/ConnectionPool.d.ts +74 -0
  48. package/dist/services/ConnectionPool.d.ts.map +1 -0
  49. package/dist/services/ConnectionPool.js +430 -0
  50. package/dist/services/ConnectionPool.js.map +1 -0
  51. package/dist/services/EventSequencer.d.ts +30 -0
  52. package/dist/services/EventSequencer.d.ts.map +1 -0
  53. package/dist/services/EventSequencer.js +152 -0
  54. package/dist/services/EventSequencer.js.map +1 -0
  55. package/dist/services/MessageProcessor.d.ts +69 -0
  56. package/dist/services/MessageProcessor.d.ts.map +1 -0
  57. package/dist/services/MessageProcessor.js +1050 -0
  58. package/dist/services/MessageProcessor.js.map +1 -0
  59. package/dist/services/NetworkMonitor.d.ts +34 -0
  60. package/dist/services/NetworkMonitor.d.ts.map +1 -0
  61. package/dist/services/NetworkMonitor.js +143 -0
  62. package/dist/services/NetworkMonitor.js.map +1 -0
  63. package/dist/services/OfflineQueue.d.ts +25 -0
  64. package/dist/services/OfflineQueue.d.ts.map +1 -0
  65. package/dist/services/OfflineQueue.js +117 -0
  66. package/dist/services/OfflineQueue.js.map +1 -0
  67. package/dist/services/RateLimiter.d.ts +25 -0
  68. package/dist/services/RateLimiter.d.ts.map +1 -0
  69. package/dist/services/RateLimiter.js +85 -0
  70. package/dist/services/RateLimiter.js.map +1 -0
  71. package/dist/stores/useMessageQueueStore.d.ts +23 -0
  72. package/dist/stores/useMessageQueueStore.d.ts.map +1 -0
  73. package/dist/stores/useMessageQueueStore.js +188 -0
  74. package/dist/stores/useMessageQueueStore.js.map +1 -0
  75. package/dist/stores/useWSEStore.d.ts +54 -0
  76. package/dist/stores/useWSEStore.d.ts.map +1 -0
  77. package/dist/stores/useWSEStore.js +464 -0
  78. package/dist/stores/useWSEStore.js.map +1 -0
  79. package/dist/types.d.ts +403 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +39 -0
  82. package/dist/types.js.map +1 -0
  83. package/dist/utils/circuitBreaker.d.ts +35 -0
  84. package/dist/utils/circuitBreaker.d.ts.map +1 -0
  85. package/dist/utils/circuitBreaker.js +145 -0
  86. package/dist/utils/circuitBreaker.js.map +1 -0
  87. package/dist/utils/logger.d.ts +46 -0
  88. package/dist/utils/logger.d.ts.map +1 -0
  89. package/dist/utils/logger.js +231 -0
  90. package/dist/utils/logger.js.map +1 -0
  91. package/dist/utils/security.d.ts +74 -0
  92. package/dist/utils/security.d.ts.map +1 -0
  93. package/dist/utils/security.js +383 -0
  94. package/dist/utils/security.js.map +1 -0
  95. package/package.json +63 -0
@@ -0,0 +1,152 @@
1
+ // =============================================================================
2
+ // WebSocket Event System - Event Sequencer
3
+ // =============================================================================
4
+ import { logger } from '../utils/logger';
5
+ export class EventSequencer {
6
+ constructor(windowSize = 10000, maxOutOfOrder = 100) {
7
+ this.sequence = 0;
8
+ this.expectedSequence = 0;
9
+ this.cleanupInterval = null;
10
+ this.cleanupCounter = 0;
11
+ this.CLEANUP_INTERVAL = 100;
12
+ this.MAX_AGE_MS = 300000; // 5 minutes
13
+ this.windowSize = windowSize;
14
+ this.maxOutOfOrder = maxOutOfOrder;
15
+ this.seenIds = new Map();
16
+ this.outOfOrderBuffer = new Map();
17
+ this.cleanupInterval = setInterval(() => {
18
+ this.cleanup();
19
+ }, 60000);
20
+ }
21
+ getNextSequence() {
22
+ return ++this.sequence;
23
+ }
24
+ getCurrentSequence() {
25
+ return this.sequence;
26
+ }
27
+ isDuplicate(eventId) {
28
+ const now = Date.now();
29
+ if (this.seenIds.has(eventId)) {
30
+ return true;
31
+ }
32
+ this.seenIds.set(eventId, now);
33
+ this.cleanupCounter++;
34
+ if (this.cleanupCounter >= this.CLEANUP_INTERVAL) {
35
+ this.cleanupCounter = 0;
36
+ this.cleanupOldEntries();
37
+ }
38
+ return false;
39
+ }
40
+ cleanupOldEntries() {
41
+ const cutoff = Date.now() - this.MAX_AGE_MS;
42
+ let removed = 0;
43
+ for (const [id, timestamp] of this.seenIds) {
44
+ if (timestamp < cutoff) {
45
+ this.seenIds.delete(id);
46
+ removed++;
47
+ }
48
+ }
49
+ if (this.seenIds.size > this.windowSize * 1.5) {
50
+ const excess = this.seenIds.size - this.windowSize;
51
+ const entries = Array.from(this.seenIds.entries())
52
+ .sort((a, b) => a[1] - b[1])
53
+ .slice(0, excess);
54
+ entries.forEach(([id]) => {
55
+ this.seenIds.delete(id);
56
+ removed++;
57
+ });
58
+ }
59
+ if (removed > 0) {
60
+ logger.debug(`Cleaned up ${removed} old event IDs`);
61
+ }
62
+ }
63
+ recordSequence(sequence) {
64
+ this.expectedSequence = Math.max(this.expectedSequence, sequence + 1);
65
+ }
66
+ processSequencedEvent(sequence, event) {
67
+ if (sequence === this.expectedSequence) {
68
+ const eventsToDeliver = [event];
69
+ this.expectedSequence = sequence + 1;
70
+ while (this.outOfOrderBuffer.has(this.expectedSequence)) {
71
+ const bufferedEvent = this.outOfOrderBuffer.get(this.expectedSequence);
72
+ this.outOfOrderBuffer.delete(this.expectedSequence);
73
+ eventsToDeliver.push(bufferedEvent);
74
+ this.expectedSequence++;
75
+ }
76
+ return eventsToDeliver;
77
+ }
78
+ if (sequence > this.expectedSequence) {
79
+ if (sequence - this.expectedSequence > this.maxOutOfOrder) {
80
+ logger.warn(`Event sequence ${sequence} too far ahead of expected ${this.expectedSequence}`);
81
+ this.expectedSequence = sequence + 1;
82
+ this.outOfOrderBuffer.clear();
83
+ return [event];
84
+ }
85
+ this.outOfOrderBuffer.set(sequence, {
86
+ ...event,
87
+ _bufferedAt: Date.now()
88
+ });
89
+ return null;
90
+ }
91
+ logger.debug(`Skipping old event with sequence ${sequence}, expected ${this.expectedSequence}`);
92
+ return null;
93
+ }
94
+ getStats() {
95
+ let largestGap = 0;
96
+ if (this.outOfOrderBuffer.size > 0) {
97
+ const sequences = Array.from(this.outOfOrderBuffer.keys()).sort((a, b) => a - b);
98
+ largestGap = sequences[0] - this.expectedSequence;
99
+ }
100
+ return {
101
+ currentSequence: this.sequence,
102
+ expectedSequence: this.expectedSequence,
103
+ duplicateWindowSize: this.seenIds.size,
104
+ outOfOrderBufferSize: this.outOfOrderBuffer.size,
105
+ largestGap,
106
+ };
107
+ }
108
+ cleanup() {
109
+ try {
110
+ const now = Date.now();
111
+ const maxAge = 5 * 60 * 1000;
112
+ let removedBuffered = 0;
113
+ for (const [seq, event] of this.outOfOrderBuffer) {
114
+ const bufferedAt = event._bufferedAt || event.timestamp;
115
+ if (bufferedAt && now - bufferedAt > maxAge) {
116
+ this.outOfOrderBuffer.delete(seq);
117
+ removedBuffered++;
118
+ }
119
+ }
120
+ if (removedBuffered > 0) {
121
+ logger.debug(`Removed ${removedBuffered} old buffered events`);
122
+ }
123
+ if (this.cleanupCounter > 0) {
124
+ this.cleanupOldEntries();
125
+ }
126
+ }
127
+ catch (error) {
128
+ logger.error('Error in EventSequencer cleanup:', error);
129
+ }
130
+ }
131
+ destroy() {
132
+ if (this.cleanupInterval) {
133
+ clearInterval(this.cleanupInterval);
134
+ this.cleanupInterval = null;
135
+ }
136
+ this.seenIds.clear();
137
+ this.outOfOrderBuffer.clear();
138
+ this.sequence = 0;
139
+ this.expectedSequence = 0;
140
+ this.cleanupCounter = 0;
141
+ logger.debug('EventSequencer destroyed');
142
+ }
143
+ reset() {
144
+ this.sequence = 0;
145
+ this.expectedSequence = 0;
146
+ this.seenIds.clear();
147
+ this.outOfOrderBuffer.clear();
148
+ this.cleanupCounter = 0;
149
+ logger.debug('EventSequencer reset');
150
+ }
151
+ }
152
+ //# sourceMappingURL=EventSequencer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventSequencer.js","sourceRoot":"","sources":["../../client/services/EventSequencer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { WSMessage, MessagePriority } from '../types';
2
+ export declare class MessageProcessor {
3
+ private batchSize;
4
+ private batchTimeout;
5
+ private sequencer;
6
+ private compression;
7
+ private messageHandlers;
8
+ private batchTimer;
9
+ private processing;
10
+ private connectionManager;
11
+ private isReady;
12
+ private batchPromise;
13
+ private destroyed;
14
+ private serverReadyProcessed;
15
+ private serverReadyDetails;
16
+ private highFrequencyTypes;
17
+ constructor(batchSize?: number, batchTimeout?: number);
18
+ setConnectionManager(manager: any): void;
19
+ setReady(ready: boolean): void;
20
+ private debugMessage;
21
+ static enableDebugMode(enabled?: boolean): void;
22
+ private handleEventVersion;
23
+ private logPerformanceMetrics;
24
+ processIncoming(data: string | ArrayBuffer): Promise<void>;
25
+ private processTextMessage;
26
+ private processBinaryMessage;
27
+ private routeMessage;
28
+ private registerDefaultHandlers;
29
+ private handleServerReady;
30
+ processPendingServerReady(): void;
31
+ resetServerReadyFlag(): void;
32
+ private handleServerHello;
33
+ private handleConnectionStateChange;
34
+ private handleSubscriptionUpdate;
35
+ private handleError;
36
+ private handleHealthCheck;
37
+ private handleHealthCheckResponse;
38
+ private handleRateLimitWarning;
39
+ private handleConnectionQuality;
40
+ private handleSnapshotComplete;
41
+ private handleHeartbeat;
42
+ private handleDebugResponse;
43
+ private handleSequenceStatsResponse;
44
+ private handleConfigResponse;
45
+ private handleConfigUpdateResponse;
46
+ private handleEncryptionResponse;
47
+ private handleKeyRotationResponse;
48
+ private handleBatchMessage;
49
+ private handleBatchMessageResult;
50
+ private handleMetricsResponse;
51
+ private handleConnectionStateResponse;
52
+ queueOutgoing(message: Partial<WSMessage>, priority?: MessagePriority): boolean;
53
+ private scheduleBatch;
54
+ private processBatchSafe;
55
+ processBatch(): Promise<WSMessage[]>;
56
+ /**
57
+ * Register an event type as high-frequency (uses debug-level logging).
58
+ * High-frequency types are logged at debug level to reduce noise.
59
+ */
60
+ registerHighFrequencyType(type: string): void;
61
+ registerHandler(type: string, handler: (message: WSMessage) => void): void;
62
+ unregisterHandler(type: string): void;
63
+ clearHandlers(): void;
64
+ getRegisteredHandlers(): string[];
65
+ isHandlerRegistered(type: string): boolean;
66
+ waitForHandlers(requiredHandlers: string[], timeout?: number): Promise<boolean>;
67
+ destroy(): void;
68
+ }
69
+ //# sourceMappingURL=MessageProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageProcessor.d.ts","sourceRoot":"","sources":["../../client/services/MessageProcessor.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,SAAS,EAET,eAAe,EAIhB,MAAM,UAAU,CAAC;AASlB,qBAAa,gBAAgB;IA2BzB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,YAAY;IA3BtB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,kBAAkB,CAAa;IAGvC,OAAO,CAAC,kBAAkB,CAMvB;gBAGO,SAAS,GAAE,MAAW,EACtB,YAAY,GAAE,MAAY;IASpC,oBAAoB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAWxC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAW9B,OAAO,CAAC,YAAY;IA4CpB,MAAM,CAAC,eAAe,CAAC,OAAO,GAAE,OAAc,GAAG,IAAI;IAerD,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,qBAAqB;IA6CvB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDhE,OAAO,CAAC,kBAAkB;YAkEZ,oBAAoB;YAiJpB,YAAY;IA4D1B,OAAO,CAAC,uBAAuB;IAwH/B,OAAO,CAAC,iBAAiB;IAuBlB,yBAAyB,IAAI,IAAI;IAOjC,oBAAoB,IAAI,IAAI;IAKnC,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,2BAA2B;IAiCnC,OAAO,CAAC,wBAAwB;IAwBhC,OAAO,CAAC,WAAW;IA0GnB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,uBAAuB;IA0C/B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,yBAAyB;YAenB,kBAAkB;IAWhC,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,6BAA6B;IAmBrC,aAAa,CACX,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,QAAQ,GAAE,eAAwC,GACjD,OAAO;IAuBV,OAAO,CAAC,aAAa;YA0BP,gBAAgB;IAWxB,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAgD1C;;;OAGG;IACH,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7C,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI;IAK1E,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKrC,aAAa,IAAI,IAAI;IAMrB,qBAAqB,IAAI,MAAM,EAAE;IAIjC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1C,eAAe,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBrF,OAAO,IAAI,IAAI;CAehB"}