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.
- package/LICENSE +21 -0
- package/README.md +222 -0
- package/dist/constants.d.ts +195 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +285 -0
- package/dist/constants.js.map +1 -0
- package/dist/examples/ChatHandlers.d.ts +15 -0
- package/dist/examples/ChatHandlers.d.ts.map +1 -0
- package/dist/examples/ChatHandlers.js +20 -0
- package/dist/examples/ChatHandlers.js.map +1 -0
- package/dist/examples/IoTHandlers.d.ts +12 -0
- package/dist/examples/IoTHandlers.d.ts.map +1 -0
- package/dist/examples/IoTHandlers.js +15 -0
- package/dist/examples/IoTHandlers.js.map +1 -0
- package/dist/handlers/EventHandlers.d.ts +17 -0
- package/dist/handlers/EventHandlers.d.ts.map +1 -0
- package/dist/handlers/EventHandlers.js +20 -0
- package/dist/handlers/EventHandlers.js.map +1 -0
- package/dist/handlers/index.d.ts +14 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +37 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/hooks/useWSE.d.ts +42 -0
- package/dist/hooks/useWSE.d.ts.map +1 -0
- package/dist/hooks/useWSE.js +1224 -0
- package/dist/hooks/useWSE.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/protocols/compression.d.ts +17 -0
- package/dist/protocols/compression.d.ts.map +1 -0
- package/dist/protocols/compression.js +155 -0
- package/dist/protocols/compression.js.map +1 -0
- package/dist/protocols/transformer.d.ts +12 -0
- package/dist/protocols/transformer.d.ts.map +1 -0
- package/dist/protocols/transformer.js +76 -0
- package/dist/protocols/transformer.js.map +1 -0
- package/dist/services/AdaptiveQualityManager.d.ts +44 -0
- package/dist/services/AdaptiveQualityManager.d.ts.map +1 -0
- package/dist/services/AdaptiveQualityManager.js +114 -0
- package/dist/services/AdaptiveQualityManager.js.map +1 -0
- package/dist/services/ConnectionManager.d.ts +92 -0
- package/dist/services/ConnectionManager.d.ts.map +1 -0
- package/dist/services/ConnectionManager.js +852 -0
- package/dist/services/ConnectionManager.js.map +1 -0
- package/dist/services/ConnectionPool.d.ts +74 -0
- package/dist/services/ConnectionPool.d.ts.map +1 -0
- package/dist/services/ConnectionPool.js +430 -0
- package/dist/services/ConnectionPool.js.map +1 -0
- package/dist/services/EventSequencer.d.ts +30 -0
- package/dist/services/EventSequencer.d.ts.map +1 -0
- package/dist/services/EventSequencer.js +152 -0
- package/dist/services/EventSequencer.js.map +1 -0
- package/dist/services/MessageProcessor.d.ts +69 -0
- package/dist/services/MessageProcessor.d.ts.map +1 -0
- package/dist/services/MessageProcessor.js +1050 -0
- package/dist/services/MessageProcessor.js.map +1 -0
- package/dist/services/NetworkMonitor.d.ts +34 -0
- package/dist/services/NetworkMonitor.d.ts.map +1 -0
- package/dist/services/NetworkMonitor.js +143 -0
- package/dist/services/NetworkMonitor.js.map +1 -0
- package/dist/services/OfflineQueue.d.ts +25 -0
- package/dist/services/OfflineQueue.d.ts.map +1 -0
- package/dist/services/OfflineQueue.js +117 -0
- package/dist/services/OfflineQueue.js.map +1 -0
- package/dist/services/RateLimiter.d.ts +25 -0
- package/dist/services/RateLimiter.d.ts.map +1 -0
- package/dist/services/RateLimiter.js +85 -0
- package/dist/services/RateLimiter.js.map +1 -0
- package/dist/stores/useMessageQueueStore.d.ts +23 -0
- package/dist/stores/useMessageQueueStore.d.ts.map +1 -0
- package/dist/stores/useMessageQueueStore.js +188 -0
- package/dist/stores/useMessageQueueStore.js.map +1 -0
- package/dist/stores/useWSEStore.d.ts +54 -0
- package/dist/stores/useWSEStore.d.ts.map +1 -0
- package/dist/stores/useWSEStore.js +464 -0
- package/dist/stores/useWSEStore.js.map +1 -0
- package/dist/types.d.ts +403 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +39 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/circuitBreaker.d.ts +35 -0
- package/dist/utils/circuitBreaker.d.ts.map +1 -0
- package/dist/utils/circuitBreaker.js +145 -0
- package/dist/utils/circuitBreaker.js.map +1 -0
- package/dist/utils/logger.d.ts +46 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +231 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/security.d.ts +74 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +383 -0
- package/dist/utils/security.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWSE.js","sourceRoot":"","sources":["../../client/hooks/useWSE.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { useWSE } from './hooks/useWSE';
|
|
2
|
+
export type { UseWSEConfig } from './hooks/useWSE';
|
|
3
|
+
export * from './types';
|
|
4
|
+
export { useWSEStore } from './stores/useWSEStore';
|
|
5
|
+
export { useMessageQueueStore } from './stores/useMessageQueueStore';
|
|
6
|
+
export { logger, Logger, LogLevel } from './utils/logger';
|
|
7
|
+
export { CircuitBreaker, createCircuitBreaker } from './utils/circuitBreaker';
|
|
8
|
+
export { EventSequencer } from './services/EventSequencer';
|
|
9
|
+
export { AdaptiveQualityManager } from './services/AdaptiveQualityManager';
|
|
10
|
+
export { compressionManager } from './protocols/compression';
|
|
11
|
+
export { eventTransformer } from './protocols/transformer';
|
|
12
|
+
export { ConnectionManager } from './services/ConnectionManager';
|
|
13
|
+
export type { ConnectionManagerConfig } from './services/ConnectionManager';
|
|
14
|
+
export { MessageProcessor } from './services/MessageProcessor';
|
|
15
|
+
export { RateLimiter } from './services/RateLimiter';
|
|
16
|
+
export { ConnectionPool } from './services/ConnectionPool';
|
|
17
|
+
export type { ConnectionPoolConfig } from './services/ConnectionPool';
|
|
18
|
+
export { NetworkMonitor } from './services/NetworkMonitor';
|
|
19
|
+
export { OfflineQueue } from './services/OfflineQueue';
|
|
20
|
+
export type { OfflineQueueConfig } from './services/OfflineQueue';
|
|
21
|
+
export { EventHandlers } from './handlers/EventHandlers';
|
|
22
|
+
export { registerAllHandlers } from './handlers/index';
|
|
23
|
+
export * from './constants';
|
|
24
|
+
export declare const WSE_VERSION = "1.0.0";
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAMnD,cAAc,SAAS,CAAC;AAMxB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAMrE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAMlE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,cAAc,aAAa,CAAC;AAM5B,eAAO,MAAM,WAAW,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// WebSocket Event System - Public Exports
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Main Hook
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
export { useWSE } from './hooks/useWSE';
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Types
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
export * from './types';
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Stores
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
export { useWSEStore } from './stores/useWSEStore';
|
|
16
|
+
export { useMessageQueueStore } from './stores/useMessageQueueStore';
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Utils
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
export { logger, Logger, LogLevel } from './utils/logger';
|
|
21
|
+
export { CircuitBreaker, createCircuitBreaker } from './utils/circuitBreaker';
|
|
22
|
+
export { EventSequencer } from './services/EventSequencer';
|
|
23
|
+
export { AdaptiveQualityManager } from './services/AdaptiveQualityManager';
|
|
24
|
+
export { compressionManager } from './protocols/compression';
|
|
25
|
+
export { eventTransformer } from './protocols/transformer';
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// Services (for advanced usage)
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
export { ConnectionManager } from './services/ConnectionManager';
|
|
30
|
+
export { MessageProcessor } from './services/MessageProcessor';
|
|
31
|
+
export { RateLimiter } from './services/RateLimiter';
|
|
32
|
+
export { ConnectionPool } from './services/ConnectionPool';
|
|
33
|
+
export { NetworkMonitor } from './services/NetworkMonitor';
|
|
34
|
+
export { OfflineQueue } from './services/OfflineQueue';
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
// Handlers (for extending)
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
export { EventHandlers } from './handlers/EventHandlers';
|
|
39
|
+
export { registerAllHandlers } from './handlers/index';
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// Constants
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
export * from './constants';
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// Version Info
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
export const WSE_VERSION = '1.0.0';
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,gFAAgF;AAEhF,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,cAAc,SAAS,CAAC;AAExB,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,cAAc,aAAa,CAAC;AAE5B,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type CompressionLevel = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -1;
|
|
2
|
+
export declare class CompressionManager {
|
|
3
|
+
private compressionThreshold;
|
|
4
|
+
private compressionLevel;
|
|
5
|
+
constructor(compressionThreshold?: number, compressionLevel?: CompressionLevel);
|
|
6
|
+
shouldCompress(data: ArrayBuffer | string): boolean;
|
|
7
|
+
compress(data: ArrayBuffer): ArrayBuffer;
|
|
8
|
+
decompress(data: ArrayBuffer): ArrayBuffer;
|
|
9
|
+
decompressGzip(data: ArrayBuffer): ArrayBuffer;
|
|
10
|
+
packMsgPack(data: any): ArrayBuffer;
|
|
11
|
+
unpackMsgPack(data: ArrayBuffer): any;
|
|
12
|
+
prepareForSending(message: any, useCompression?: boolean): ArrayBuffer;
|
|
13
|
+
processIncoming(data: ArrayBuffer): any;
|
|
14
|
+
}
|
|
15
|
+
export declare const compressionManager: CompressionManager;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=compression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../client/protocols/compression.ts"],"names":[],"mappings":"AAQA,KAAK,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,gBAAgB,CAAmB;gBAGzC,oBAAoB,SAAO,EAC3B,gBAAgB,GAAE,gBAAoB;IAUxC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO;IAQnD,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;IAWxC,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;IA8C1C,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;IAa9C,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,WAAW;IAUnC,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,GAAG;IAarC,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,GAAE,OAAc,GAAG,WAAW;IAsB5E,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,GAAG;CAyBxC;AAGD,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// WebSocket Event System - Compression & MessagePack
|
|
3
|
+
// =============================================================================
|
|
4
|
+
import pako from 'pako';
|
|
5
|
+
import { encode, decode } from '@msgpack/msgpack';
|
|
6
|
+
import { logger } from '../utils/logger';
|
|
7
|
+
export class CompressionManager {
|
|
8
|
+
constructor(compressionThreshold = 1024, compressionLevel = 6) {
|
|
9
|
+
this.compressionThreshold = compressionThreshold;
|
|
10
|
+
this.compressionLevel = compressionLevel;
|
|
11
|
+
}
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Compression
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
shouldCompress(data) {
|
|
16
|
+
const size = typeof data === 'string'
|
|
17
|
+
? new Blob([data]).size
|
|
18
|
+
: data.byteLength;
|
|
19
|
+
return size > this.compressionThreshold;
|
|
20
|
+
}
|
|
21
|
+
compress(data) {
|
|
22
|
+
try {
|
|
23
|
+
const compressed = pako.deflate(new Uint8Array(data), { level: this.compressionLevel });
|
|
24
|
+
logger.debug(`Compressed ${data.byteLength} -> ${compressed.byteLength} bytes`);
|
|
25
|
+
return compressed.buffer;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
logger.error('Compression failed:', error);
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
decompress(data) {
|
|
33
|
+
try {
|
|
34
|
+
const view = new Uint8Array(data);
|
|
35
|
+
logger.debug('Decompressing data:', {
|
|
36
|
+
length: data.byteLength,
|
|
37
|
+
first10Bytes: Array.from(view.slice(0, 10)),
|
|
38
|
+
hexFirst10: Array.from(view.slice(0, 10)).map(b => b.toString(16).padStart(2, '0')).join(' ')
|
|
39
|
+
});
|
|
40
|
+
// Try standard inflate (for zlib format)
|
|
41
|
+
try {
|
|
42
|
+
const decompressed = pako.inflate(view);
|
|
43
|
+
logger.debug(`Decompressed ${data.byteLength} -> ${decompressed.byteLength} bytes (standard inflate)`);
|
|
44
|
+
return decompressed.buffer;
|
|
45
|
+
}
|
|
46
|
+
catch (inflateError) {
|
|
47
|
+
logger.debug('Standard inflate failed:', inflateError.message);
|
|
48
|
+
if (inflateError.message && inflateError.message.includes('header')) {
|
|
49
|
+
logger.debug('Trying raw inflate (no zlib header)...');
|
|
50
|
+
try {
|
|
51
|
+
const decompressed = pako.inflateRaw(view);
|
|
52
|
+
logger.debug(`Decompressed ${data.byteLength} -> ${decompressed.byteLength} bytes (raw inflate)`);
|
|
53
|
+
return decompressed.buffer;
|
|
54
|
+
}
|
|
55
|
+
catch (rawError) {
|
|
56
|
+
logger.debug('Raw inflate also failed:', rawError);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Try gzip as last resort
|
|
60
|
+
try {
|
|
61
|
+
const decompressed = pako.ungzip(view);
|
|
62
|
+
logger.debug(`Decompressed ${data.byteLength} -> ${decompressed.byteLength} bytes (gzip)`);
|
|
63
|
+
return decompressed.buffer;
|
|
64
|
+
}
|
|
65
|
+
catch (gzipError) {
|
|
66
|
+
logger.debug('Gzip decompression also failed');
|
|
67
|
+
}
|
|
68
|
+
throw inflateError;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
logger.error('Decompression failed:', error);
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
decompressGzip(data) {
|
|
77
|
+
try {
|
|
78
|
+
return pako.ungzip(new Uint8Array(data)).buffer;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
logger.error('Gzip decompression failed:', error);
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
// MessagePack
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
packMsgPack(data) {
|
|
89
|
+
try {
|
|
90
|
+
const encoded = encode(data);
|
|
91
|
+
return encoded.buffer.slice(encoded.byteOffset, encoded.byteOffset + encoded.byteLength);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
logger.error('MessagePack encoding failed:', error);
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
unpackMsgPack(data) {
|
|
99
|
+
try {
|
|
100
|
+
return decode(data);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
logger.error('MessagePack decoding failed:', error);
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
// Combined Operations
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
prepareForSending(message, useCompression = true) {
|
|
111
|
+
const packed = this.packMsgPack(message);
|
|
112
|
+
if (useCompression && this.shouldCompress(packed)) {
|
|
113
|
+
const compressed = this.compress(packed);
|
|
114
|
+
if (compressed.byteLength < packed.byteLength) {
|
|
115
|
+
const header = new Uint8Array([67, 58]); // 'C:'
|
|
116
|
+
const result = new Uint8Array(header.length + compressed.byteLength);
|
|
117
|
+
result.set(header);
|
|
118
|
+
result.set(new Uint8Array(compressed), header.length);
|
|
119
|
+
return result.buffer;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const header = new Uint8Array([77, 58]); // 'M:'
|
|
123
|
+
const result = new Uint8Array(header.length + packed.byteLength);
|
|
124
|
+
result.set(header);
|
|
125
|
+
result.set(new Uint8Array(packed), header.length);
|
|
126
|
+
return result.buffer;
|
|
127
|
+
}
|
|
128
|
+
processIncoming(data) {
|
|
129
|
+
const view = new Uint8Array(data);
|
|
130
|
+
if (view.length >= 2 && view[0] === 67 && view[1] === 58) {
|
|
131
|
+
const compressed = data.slice(2);
|
|
132
|
+
const decompressed = this.decompress(compressed);
|
|
133
|
+
return this.unpackMsgPack(decompressed);
|
|
134
|
+
}
|
|
135
|
+
if (view.length >= 2 && view[0] === 77 && view[1] === 58) {
|
|
136
|
+
const packed = data.slice(2);
|
|
137
|
+
return this.unpackMsgPack(packed);
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
return this.unpackMsgPack(data);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
try {
|
|
144
|
+
return JSON.parse(new TextDecoder().decode(data));
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
logger.error('Failed to process incoming data:', error);
|
|
148
|
+
throw new Error('Unknown message format');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Singleton instance
|
|
154
|
+
export const compressionManager = new CompressionManager();
|
|
155
|
+
//# sourceMappingURL=compression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compression.js","sourceRoot":"","sources":["../../client/protocols/compression.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { WSMessage } from '../types';
|
|
2
|
+
export declare class EventTransformer {
|
|
3
|
+
transformForWS(event: any, sequence?: number): WSMessage;
|
|
4
|
+
private transformPayload;
|
|
5
|
+
private extractGenericPayload;
|
|
6
|
+
transformFromWS(wsMessage: WSMessage): any;
|
|
7
|
+
private mapWSEventTypeToInternal;
|
|
8
|
+
isKnownEventType(eventType: string): boolean;
|
|
9
|
+
getWSEventType(internalType: string): string;
|
|
10
|
+
}
|
|
11
|
+
export declare const eventTransformer: EventTransformer;
|
|
12
|
+
//# sourceMappingURL=transformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../client/protocols/transformer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,qBAAa,gBAAgB;IAK3B,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,GAAE,MAAU,GAAG,SAAS;IAuB3D,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,qBAAqB;IAmB7B,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,GAAG;IAY1C,OAAO,CAAC,wBAAwB;IAchC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;CAG7C;AAGD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// WebSocket Event System - Event Transformer
|
|
3
|
+
// =============================================================================
|
|
4
|
+
import { INTERNAL_TO_WS_EVENT_TYPE_MAP } from '../constants';
|
|
5
|
+
export class EventTransformer {
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// Main Transformation
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
transformForWS(event, sequence = 0) {
|
|
10
|
+
const eventType = event.event_type || event.type;
|
|
11
|
+
// Map internal event type to WebSocket event type
|
|
12
|
+
const wsEventType = INTERNAL_TO_WS_EVENT_TYPE_MAP[eventType] || eventType?.toLowerCase() || 'unknown';
|
|
13
|
+
// Extract metadata
|
|
14
|
+
const metadata = event._metadata || {};
|
|
15
|
+
const payload = this.transformPayload(wsEventType, event);
|
|
16
|
+
const wsEvent = {
|
|
17
|
+
v: 2,
|
|
18
|
+
id: metadata.event_id || event.event_id || crypto.randomUUID(),
|
|
19
|
+
t: wsEventType,
|
|
20
|
+
ts: metadata.timestamp || event.timestamp || new Date().toISOString(),
|
|
21
|
+
seq: sequence,
|
|
22
|
+
p: payload,
|
|
23
|
+
};
|
|
24
|
+
return wsEvent;
|
|
25
|
+
}
|
|
26
|
+
transformPayload(wsEventType, event) {
|
|
27
|
+
// Generic payload extraction for all event types.
|
|
28
|
+
// Application-specific transformations should be registered
|
|
29
|
+
// via custom handlers rather than hardcoded here.
|
|
30
|
+
return this.extractGenericPayload(event);
|
|
31
|
+
}
|
|
32
|
+
extractGenericPayload(event) {
|
|
33
|
+
const payload = event.payload || event;
|
|
34
|
+
if ('_metadata' in payload) {
|
|
35
|
+
const { _metadata, ...rest } = payload;
|
|
36
|
+
return rest;
|
|
37
|
+
}
|
|
38
|
+
if ('type' in payload && !('event_type' in payload)) {
|
|
39
|
+
payload.event_type = payload.type;
|
|
40
|
+
}
|
|
41
|
+
return payload;
|
|
42
|
+
}
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Reverse Transformation (WS to Internal)
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
transformFromWS(wsMessage) {
|
|
47
|
+
const internalEvent = {
|
|
48
|
+
event_type: this.mapWSEventTypeToInternal(wsMessage.t),
|
|
49
|
+
timestamp: wsMessage.ts,
|
|
50
|
+
event_id: wsMessage.id,
|
|
51
|
+
sequence: wsMessage.seq,
|
|
52
|
+
...wsMessage.p,
|
|
53
|
+
};
|
|
54
|
+
return internalEvent;
|
|
55
|
+
}
|
|
56
|
+
mapWSEventTypeToInternal(wsType) {
|
|
57
|
+
for (const [internal, ws] of Object.entries(INTERNAL_TO_WS_EVENT_TYPE_MAP)) {
|
|
58
|
+
if (ws === wsType) {
|
|
59
|
+
return internal;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return wsType.charAt(0).toUpperCase() + wsType.slice(1);
|
|
63
|
+
}
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// Utilities
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
isKnownEventType(eventType) {
|
|
68
|
+
return eventType in INTERNAL_TO_WS_EVENT_TYPE_MAP;
|
|
69
|
+
}
|
|
70
|
+
getWSEventType(internalType) {
|
|
71
|
+
return INTERNAL_TO_WS_EVENT_TYPE_MAP[internalType] || internalType.toLowerCase();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Singleton instance
|
|
75
|
+
export const eventTransformer = new EventTransformer();
|
|
76
|
+
//# sourceMappingURL=transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../client/protocols/transformer.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6CAA6C;AAC7C,gFAAgF;AAGhF,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,OAAO,gBAAgB;IAC3B,8EAA8E;IAC9E,sBAAsB;IACtB,8EAA8E;IAE9E,cAAc,CAAC,KAAU,EAAE,WAAmB,CAAC;QAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;QAEjD,kDAAkD;QAClD,MAAM,WAAW,GAAG,6BAA6B,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,WAAW,EAAE,IAAI,SAAS,CAAC;QAEtG,mBAAmB;QACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;QAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAc;YACzB,CAAC,EAAE,CAAC;YACJ,EAAE,EAAE,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE;YAC9D,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrE,GAAG,EAAE,QAAQ;YACb,CAAC,EAAE,OAAO;SACX,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,gBAAgB,CAAC,WAAmB,EAAE,KAAU;QACtD,kDAAkD;QAClD,4DAA4D;QAC5D,kDAAkD;QAClD,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAEO,qBAAqB,CAAC,KAAU;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC;QAEvC,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,MAAM,IAAI,OAAO,IAAI,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;QACpC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,8EAA8E;IAC9E,0CAA0C;IAC1C,8EAA8E;IAE9E,eAAe,CAAC,SAAoB;QAClC,MAAM,aAAa,GAAQ;YACzB,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC;YACtD,SAAS,EAAE,SAAS,CAAC,EAAE;YACvB,QAAQ,EAAE,SAAS,CAAC,EAAE;YACtB,QAAQ,EAAE,SAAS,CAAC,GAAG;YACvB,GAAG,SAAS,CAAC,CAAC;SACf,CAAC;QAEF,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,wBAAwB,CAAC,MAAc;QAC7C,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,EAAE,CAAC;YAC3E,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;gBAClB,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,8EAA8E;IAC9E,YAAY;IACZ,8EAA8E;IAE9E,gBAAgB,CAAC,SAAiB;QAChC,OAAO,SAAS,IAAI,6BAA6B,CAAC;IACpD,CAAC;IAED,cAAc,CAAC,YAAoB;QACjC,OAAO,6BAA6B,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;IACnF,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ConnectionQuality } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Minimal interface for QueryClient integration.
|
|
4
|
+
* Matches TanStack Query's QueryClient.setDefaultOptions signature.
|
|
5
|
+
*/
|
|
6
|
+
interface QueryClientLike {
|
|
7
|
+
setDefaultOptions: (options: {
|
|
8
|
+
queries: Record<string, any>;
|
|
9
|
+
}) => void;
|
|
10
|
+
invalidateQueries: () => void;
|
|
11
|
+
}
|
|
12
|
+
export declare class AdaptiveQualityManager {
|
|
13
|
+
private currentQuality;
|
|
14
|
+
private lastUpdate;
|
|
15
|
+
private queryClient;
|
|
16
|
+
/**
|
|
17
|
+
* @param queryClient Optional QueryClient instance. When provided, React Query
|
|
18
|
+
* defaults are adjusted based on connection quality. When omitted, only
|
|
19
|
+
* CustomEvents are dispatched.
|
|
20
|
+
*/
|
|
21
|
+
constructor(queryClient?: QueryClientLike | null);
|
|
22
|
+
/**
|
|
23
|
+
* Update strategy based on connection quality
|
|
24
|
+
*/
|
|
25
|
+
updateQuality(quality: ConnectionQuality, metrics?: {
|
|
26
|
+
latency?: number;
|
|
27
|
+
jitter?: number;
|
|
28
|
+
packetLoss?: number;
|
|
29
|
+
}): void;
|
|
30
|
+
/**
|
|
31
|
+
* Reset to default conservative mode
|
|
32
|
+
*/
|
|
33
|
+
reset(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Get current quality for diagnostics
|
|
36
|
+
*/
|
|
37
|
+
getCurrentQuality(): ConnectionQuality | null;
|
|
38
|
+
/**
|
|
39
|
+
* Get strategy name for UI display
|
|
40
|
+
*/
|
|
41
|
+
getCurrentStrategyName(): string;
|
|
42
|
+
}
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=AdaptiveQualityManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdaptiveQualityManager.d.ts","sourceRoot":"","sources":["../../client/services/AdaptiveQualityManager.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAqC7C;;;GAGG;AACH,UAAU,eAAe;IACvB,iBAAiB,EAAE,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;IACvE,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAyB;IAE5C;;;;OAIG;gBACS,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI;IAIhD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAwCrH;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,iBAAiB,IAAI,iBAAiB,GAAG,IAAI;IAI7C;;OAEG;IACH,sBAAsB,IAAI,MAAM;CAIjC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// WebSocket Event System - Adaptive Quality Manager
|
|
3
|
+
// =============================================================================
|
|
4
|
+
//
|
|
5
|
+
// Adapts application behavior based on WebSocket connection quality.
|
|
6
|
+
// By default operates standalone (dispatches events only).
|
|
7
|
+
// Optionally accepts a React Query QueryClient to adjust query defaults.
|
|
8
|
+
import { ConnectionQuality } from '../types';
|
|
9
|
+
import { logger } from '../utils/logger';
|
|
10
|
+
// Industry-standard quality strategies
|
|
11
|
+
const STRATEGIES = {
|
|
12
|
+
excellent: {
|
|
13
|
+
staleTime: Infinity,
|
|
14
|
+
refetchInterval: false,
|
|
15
|
+
refetchOnWindowFocus: false,
|
|
16
|
+
name: 'WebSocket Optimized',
|
|
17
|
+
},
|
|
18
|
+
good: {
|
|
19
|
+
staleTime: 60000, // 1 min
|
|
20
|
+
refetchInterval: false,
|
|
21
|
+
refetchOnWindowFocus: false,
|
|
22
|
+
name: 'WebSocket Primary',
|
|
23
|
+
},
|
|
24
|
+
fair: {
|
|
25
|
+
staleTime: 10000, // 10 sec
|
|
26
|
+
refetchInterval: 30000, // 30 sec polling backup
|
|
27
|
+
refetchOnWindowFocus: true,
|
|
28
|
+
name: 'Hybrid Mode',
|
|
29
|
+
},
|
|
30
|
+
poor: {
|
|
31
|
+
staleTime: 5000, // 5 sec
|
|
32
|
+
refetchInterval: 10000, // 10 sec aggressive polling
|
|
33
|
+
refetchOnWindowFocus: true,
|
|
34
|
+
name: 'Polling Fallback',
|
|
35
|
+
},
|
|
36
|
+
unknown: {
|
|
37
|
+
staleTime: 5000,
|
|
38
|
+
refetchInterval: 15000,
|
|
39
|
+
refetchOnWindowFocus: true,
|
|
40
|
+
name: 'Conservative',
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
export class AdaptiveQualityManager {
|
|
44
|
+
/**
|
|
45
|
+
* @param queryClient Optional QueryClient instance. When provided, React Query
|
|
46
|
+
* defaults are adjusted based on connection quality. When omitted, only
|
|
47
|
+
* CustomEvents are dispatched.
|
|
48
|
+
*/
|
|
49
|
+
constructor(queryClient) {
|
|
50
|
+
this.currentQuality = null;
|
|
51
|
+
this.lastUpdate = 0;
|
|
52
|
+
this.queryClient = queryClient ?? null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Update strategy based on connection quality
|
|
56
|
+
*/
|
|
57
|
+
updateQuality(quality, metrics) {
|
|
58
|
+
// Skip if quality hasn't changed
|
|
59
|
+
if (quality === this.currentQuality)
|
|
60
|
+
return;
|
|
61
|
+
const strategy = STRATEGIES[quality] || STRATEGIES.unknown;
|
|
62
|
+
const oldQuality = this.currentQuality;
|
|
63
|
+
this.currentQuality = quality;
|
|
64
|
+
this.lastUpdate = Date.now();
|
|
65
|
+
logger.info(`[AdaptiveQuality] ${oldQuality || 'unknown'} -> ${quality}: ${strategy.name}`);
|
|
66
|
+
if (metrics) {
|
|
67
|
+
logger.info(`[AdaptiveQuality] Metrics:`, metrics);
|
|
68
|
+
}
|
|
69
|
+
// Update React Query defaults if client is available
|
|
70
|
+
if (this.queryClient) {
|
|
71
|
+
this.queryClient.setDefaultOptions({
|
|
72
|
+
queries: {
|
|
73
|
+
staleTime: strategy.staleTime,
|
|
74
|
+
refetchInterval: strategy.refetchInterval,
|
|
75
|
+
refetchOnWindowFocus: strategy.refetchOnWindowFocus,
|
|
76
|
+
refetchOnReconnect: true,
|
|
77
|
+
retry: 3,
|
|
78
|
+
retryDelay: (attemptIndex) => Math.min(1000 * Math.pow(2, attemptIndex), 30000),
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
// If degraded to poor, force refetch all queries
|
|
82
|
+
if (quality === 'poor' && oldQuality !== 'poor') {
|
|
83
|
+
logger.warn('[AdaptiveQuality] Degraded to poor - invalidating all queries');
|
|
84
|
+
this.queryClient.invalidateQueries();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Dispatch event for UI notifications
|
|
88
|
+
window.dispatchEvent(new CustomEvent('connectionQualityChanged', {
|
|
89
|
+
detail: { quality, strategy: strategy.name, metrics },
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Reset to default conservative mode
|
|
94
|
+
*/
|
|
95
|
+
reset() {
|
|
96
|
+
logger.info('[AdaptiveQuality] Resetting to conservative mode');
|
|
97
|
+
this.updateQuality(ConnectionQuality.UNKNOWN);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get current quality for diagnostics
|
|
101
|
+
*/
|
|
102
|
+
getCurrentQuality() {
|
|
103
|
+
return this.currentQuality;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get strategy name for UI display
|
|
107
|
+
*/
|
|
108
|
+
getCurrentStrategyName() {
|
|
109
|
+
if (!this.currentQuality)
|
|
110
|
+
return 'Unknown';
|
|
111
|
+
return STRATEGIES[this.currentQuality]?.name || 'Unknown';
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=AdaptiveQualityManager.js.map
|