cuki-bailx 1.2.5 → 2.0.7

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 (154) hide show
  1. package/WAProto/AICommon.js +27981 -0
  2. package/WAProto/AICommon.proto +713 -0
  3. package/WAProto/Ephemeral.js +295 -0
  4. package/WAProto/Ephemeral.proto +7 -0
  5. package/WAProto/GenerateStatics.sh +4 -0
  6. package/WAProto/WAProto.proto +4775 -0
  7. package/WAProto/cuki.js +7 -0
  8. package/WAProto/index.js +56886 -17506
  9. package/lib/Defaults/baileys-version.json +2 -2
  10. package/lib/Defaults/index.js +117 -102
  11. package/lib/Socket/Client/index.js +2 -3
  12. package/lib/Socket/Client/{web-socket-client.js → websocket.js} +54 -5
  13. package/lib/Socket/chats.js +97 -90
  14. package/lib/Socket/groups.js +20 -5
  15. package/lib/Socket/index.js +2 -2
  16. package/lib/Socket/messages-recv.js +9 -65
  17. package/lib/Socket/messages-send.js +612 -286
  18. package/lib/Socket/newsletter.js +68 -41
  19. package/lib/Socket/{dugong.js → setup.js} +5 -13
  20. package/lib/Socket/socket.js +58 -32
  21. package/lib/Store/index.js +1 -3
  22. package/lib/Store/make-in-memory-store.js +26 -14
  23. package/lib/Store/make-ordered-dictionary.js +2 -2
  24. package/lib/Types/Label.js +1 -1
  25. package/lib/Types/LabelAssociation.js +1 -1
  26. package/lib/Types/Message.js +0 -2
  27. package/lib/Types/Newsletter.js +3 -17
  28. package/lib/Types/index.js +2 -2
  29. package/lib/Utils/auth-utils.js +6 -13
  30. package/lib/Utils/business.js +2 -2
  31. package/lib/Utils/chat-utils.js +36 -35
  32. package/lib/Utils/crypto.js +71 -29
  33. package/lib/Utils/decode-wa-message.js +65 -56
  34. package/lib/Utils/event-buffer.js +11 -7
  35. package/lib/Utils/generics.js +73 -23
  36. package/lib/Utils/history.js +4 -6
  37. package/lib/Utils/link-preview.js +34 -1
  38. package/lib/Utils/lt-hash.js +6 -6
  39. package/lib/Utils/messages-media.js +479 -161
  40. package/lib/Utils/messages.js +391 -77
  41. package/lib/Utils/noise-handler.js +19 -23
  42. package/lib/Utils/signal.js +47 -36
  43. package/lib/Utils/use-multi-file-auth-state.js +51 -6
  44. package/lib/Utils/validate-connection.js +94 -66
  45. package/lib/WABinary/constants.js +1276 -13
  46. package/lib/WABinary/decode.js +26 -13
  47. package/lib/WABinary/encode.js +39 -17
  48. package/lib/WABinary/generic-utils.js +2 -85
  49. package/lib/WABinary/jid-utils.js +12 -5
  50. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +1 -1
  51. package/lib/index.js +18 -5
  52. package/package.json +100 -105
  53. package/engine-requirements.js +0 -10
  54. package/lib/Defaults/index.d.ts +0 -53
  55. package/lib/Defaults/phonenumber-mcc.json +0 -223
  56. package/lib/Signal/Group/ciphertext-message.d.ts +0 -9
  57. package/lib/Signal/Group/group-session-builder.d.ts +0 -14
  58. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  59. package/lib/Signal/Group/index.d.ts +0 -11
  60. package/lib/Signal/Group/keyhelper.d.ts +0 -10
  61. package/lib/Signal/Group/queue-job.d.ts +0 -1
  62. package/lib/Signal/Group/sender-chain-key.d.ts +0 -13
  63. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -16
  64. package/lib/Signal/Group/sender-key-message.d.ts +0 -18
  65. package/lib/Signal/Group/sender-key-name.d.ts +0 -17
  66. package/lib/Signal/Group/sender-key-record.d.ts +0 -30
  67. package/lib/Signal/Group/sender-key-state.d.ts +0 -38
  68. package/lib/Signal/Group/sender-message-key.d.ts +0 -11
  69. package/lib/Signal/libsignal.d.ts +0 -3
  70. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  71. package/lib/Socket/Client/index.d.ts +0 -3
  72. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  73. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  74. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  75. package/lib/Socket/business.d.ts +0 -171
  76. package/lib/Socket/chats.d.ts +0 -80
  77. package/lib/Socket/dugong.d.ts +0 -219
  78. package/lib/Socket/groups.d.ts +0 -115
  79. package/lib/Socket/index.d.ts +0 -173
  80. package/lib/Socket/messages-recv.d.ts +0 -161
  81. package/lib/Socket/messages-send.d.ts +0 -149
  82. package/lib/Socket/newsletter.d.ts +0 -134
  83. package/lib/Socket/registration.d.ts +0 -267
  84. package/lib/Socket/registration.js +0 -166
  85. package/lib/Socket/socket.d.ts +0 -43
  86. package/lib/Socket/socket.js.bak +0 -630
  87. package/lib/Socket/usync.d.ts +0 -36
  88. package/lib/Store/index.d.ts +0 -3
  89. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  90. package/lib/Store/make-cache-manager-store.js +0 -83
  91. package/lib/Store/make-in-memory-store.d.ts +0 -118
  92. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  93. package/lib/Store/object-repository.d.ts +0 -10
  94. package/lib/Types/Auth.d.ts +0 -110
  95. package/lib/Types/Call.d.ts +0 -13
  96. package/lib/Types/Chat.d.ts +0 -102
  97. package/lib/Types/Contact.d.ts +0 -19
  98. package/lib/Types/Events.d.ts +0 -157
  99. package/lib/Types/GroupMetadata.d.ts +0 -55
  100. package/lib/Types/Label.d.ts +0 -35
  101. package/lib/Types/LabelAssociation.d.ts +0 -29
  102. package/lib/Types/Message.d.ts +0 -273
  103. package/lib/Types/Newsletter.d.ts +0 -92
  104. package/lib/Types/Product.d.ts +0 -78
  105. package/lib/Types/Signal.d.ts +0 -57
  106. package/lib/Types/Socket.d.ts +0 -111
  107. package/lib/Types/State.d.ts +0 -27
  108. package/lib/Types/USync.d.ts +0 -25
  109. package/lib/Types/index.d.ts +0 -57
  110. package/lib/Utils/auth-utils.d.ts +0 -18
  111. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  112. package/lib/Utils/business.d.ts +0 -22
  113. package/lib/Utils/chat-utils.d.ts +0 -71
  114. package/lib/Utils/crypto.d.ts +0 -41
  115. package/lib/Utils/decode-wa-message.d.ts +0 -19
  116. package/lib/Utils/event-buffer.d.ts +0 -35
  117. package/lib/Utils/generics.d.ts +0 -92
  118. package/lib/Utils/history.d.ts +0 -15
  119. package/lib/Utils/index.d.ts +0 -17
  120. package/lib/Utils/link-preview.d.ts +0 -21
  121. package/lib/Utils/logger.d.ts +0 -4
  122. package/lib/Utils/lt-hash.d.ts +0 -12
  123. package/lib/Utils/make-mutex.d.ts +0 -7
  124. package/lib/Utils/messages-media.d.ts +0 -116
  125. package/lib/Utils/messages.d.ts +0 -77
  126. package/lib/Utils/noise-handler.d.ts +0 -21
  127. package/lib/Utils/process-message.d.ts +0 -41
  128. package/lib/Utils/signal.d.ts +0 -32
  129. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  130. package/lib/Utils/validate-connection.d.ts +0 -11
  131. package/lib/WABinary/constants.d.ts +0 -27
  132. package/lib/WABinary/decode.d.ts +0 -7
  133. package/lib/WABinary/encode.d.ts +0 -3
  134. package/lib/WABinary/generic-utils.d.ts +0 -16
  135. package/lib/WABinary/index.d.ts +0 -5
  136. package/lib/WABinary/jid-utils.d.ts +0 -31
  137. package/lib/WABinary/types.d.ts +0 -18
  138. package/lib/WAM/BinaryInfo.d.ts +0 -17
  139. package/lib/WAM/constants.d.ts +0 -38
  140. package/lib/WAM/encode.d.ts +0 -3
  141. package/lib/WAM/index.d.ts +0 -3
  142. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  143. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  144. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  145. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  146. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -25
  147. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -8
  148. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  149. package/lib/WAUSync/USyncQuery.d.ts +0 -28
  150. package/lib/WAUSync/USyncUser.d.ts +0 -12
  151. package/lib/WAUSync/index.d.ts +0 -3
  152. package/lib/index.d.ts +0 -12
  153. package/lib/index.js.bak +0 -48
  154. /package/lib/Socket/Client/{abstract-socket-client.js → types.js} +0 -0
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": [2, 3000, 1023223821]
3
- }
2
+ "version": [2, 3000, 1027934701]
3
+ }
@@ -1,130 +1,145 @@
1
- var __importDefault = this && this.__importDefault || function (a) {
2
- return a && a.__esModule ? a : { "default": a }
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
3
4
  };
4
-
5
- Object.defineProperty(exports, "__esModule", { value: !0 });
6
-
5
+ Object.defineProperty(exports, "__esModule", { value: true });
7
6
  exports.DEFAULT_CACHE_TTLS =
8
- exports.INITIAL_PREKEY_COUNT =
9
- exports.MIN_PREKEY_COUNT =
10
- exports.MEDIA_KEYS =
11
- exports.MEDIA_HKDF_KEY_MAPPING =
12
- exports.MEDIA_PATH_MAP =
13
- exports.DEFAULT_CONNECTION_CONFIG =
14
- exports.PROCESSABLE_HISTORY_TYPES =
15
- exports.WA_CERT_DETAILS =
16
- exports.URL_REGEX =
17
- exports.NOISE_WA_HEADER =
18
- exports.KEY_BUNDLE_TYPE =
19
- exports.DICT_VERSION =
20
- exports.NOISE_MODE =
21
- exports.WA_DEFAULT_EPHEMERAL =
22
- exports.PHONE_CONNECTION_CB =
23
- exports.DEF_TAG_PREFIX =
24
- exports.DEF_CALLBACK_PREFIX =
25
- exports.DEFAULT_ORIGIN =
26
- exports.UNAUTHORIZED_CODES =
27
- void 0;
28
-
29
- const WAProto_1 = require("../../WAProto"),
30
- libsignal_1 = require("../Signal/libsignal"),
31
- Utils_1 = require("../Utils"),
32
- logger_1 = __importDefault(require("../Utils/logger")),
33
- baileys_version_json_1 = require("./baileys-version.json");
34
-
7
+ exports.MIN_UPLOAD_INTERVAL =
8
+ exports.UPLOAD_TIMEOUT =
9
+ exports.INITIAL_PREKEY_COUNT =
10
+ exports.MIN_PREKEY_COUNT =
11
+ exports.MEDIA_KEYS =
12
+ exports.MEDIA_HKDF_KEY_MAPPING =
13
+ exports.MEDIA_PATH_MAP =
14
+ exports.DEFAULT_CONNECTION_CONFIG =
15
+ exports.PROCESSABLE_HISTORY_TYPES =
16
+ exports.WA_CERT_DETAILS =
17
+ exports.URL_REGEX =
18
+ exports.NOISE_WA_HEADER =
19
+ exports.KEY_BUNDLE_TYPE =
20
+ exports.DICT_VERSION =
21
+ exports.NOISE_MODE =
22
+ exports.WA_DEFAULT_EPHEMERAL =
23
+ exports.PHONE_CONNECTION_CB =
24
+ exports.DEF_TAG_PREFIX =
25
+ exports.DEF_CALLBACK_PREFIX =
26
+ exports.CALL_AUDIO_PREFIX =
27
+ exports.CALL_VIDEO_PREFIX =
28
+ exports.DEFAULT_ORIGIN =
29
+ exports.WA_ADV_HOSTED_DEVICE_SIG_PREFIX =
30
+ exports.WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX =
31
+ exports.WA_ADV_DEVICE_SIG_PREFIX =
32
+ exports.WA_ADV_ACCOUNT_SIG_PREFIX =
33
+ exports.UNAUTHORIZED_CODES = void 0;
34
+ // Baileys Kazumarii
35
+ const WAProto_1 = require("../../WAProto");
36
+ const libsignal_1 = require("../Signal/libsignal");
37
+ const Utils_1 = require("../Utils");
38
+ const logger_1 = __importDefault(require("../Utils/logger"));
39
+ const version = [2, 3000, 1027934701];
35
40
  exports.UNAUTHORIZED_CODES = [401, 403, 419];
36
- exports.DEFAULT_ORIGIN = "https://web.whatsapp.com";
37
- exports.DEF_CALLBACK_PREFIX = "CB:";
38
- exports.DEF_TAG_PREFIX = "TAG:";
39
- exports.PHONE_CONNECTION_CB = "CB:Pong";
40
- exports.WA_DEFAULT_EPHEMERAL = 604800;
41
- exports.NOISE_MODE = "Noise_XX_25519_AESGCM_SHA256\x00\x00\x00\x00";
42
- exports.DICT_VERSION = 2;
41
+ exports.DEFAULT_ORIGIN = 'https://web.whatsapp.com';
42
+ exports.CALL_VIDEO_PREFIX = 'https://call.whatsapp.com/video/';
43
+ exports.CALL_AUDIO_PREFIX = 'https://call.whatsapp.com/voice/';
44
+ exports.DEF_CALLBACK_PREFIX = 'CB:';
45
+ exports.DEF_TAG_PREFIX = 'TAG:';
46
+ exports.PHONE_CONNECTION_CB = 'CB:Pong';
47
+ exports.WA_ADV_ACCOUNT_SIG_PREFIX = Buffer.from([6, 0]);
48
+ exports.WA_ADV_DEVICE_SIG_PREFIX = Buffer.from([6, 1]);
49
+ exports.WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX = Buffer.from([6, 5]);
50
+ exports.WA_ADV_HOSTED_DEVICE_SIG_PREFIX = Buffer.from([6, 6]);
51
+ exports.WA_DEFAULT_EPHEMERAL = 7 * 24 * 60 * 60;
52
+ exports.NOISE_MODE = 'Noise_XX_25519_AESGCM_SHA256\0\0\0\0';
53
+ exports.DICT_VERSION = 3;
43
54
  exports.KEY_BUNDLE_TYPE = Buffer.from([5]);
44
55
  exports.NOISE_WA_HEADER = Buffer.from([87, 65, 6, exports.DICT_VERSION]);
45
-
46
56
  exports.URL_REGEX = /https:\/\/(?![^:@\/\s]+:[^:@\/\s]+@)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(:\d+)?(\/[^\s]*)?/g;
47
- exports.WA_CERT_DETAILS = { SERIAL: 0 };
48
-
57
+ exports.WA_CERT_DETAILS = {
58
+ SERIAL: 0,
59
+ };
49
60
  exports.PROCESSABLE_HISTORY_TYPES = [
50
61
  WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.INITIAL_BOOTSTRAP,
51
62
  WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.PUSH_NAME,
52
63
  WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.RECENT,
53
64
  WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.FULL,
54
- WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.ON_DEMAND
65
+ WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.ON_DEMAND,
55
66
  ];
56
-
57
67
  exports.DEFAULT_CONNECTION_CONFIG = {
58
- version: baileys_version_json_1.version,
59
- browser: Utils_1.Browsers.ubuntu("Chrome"),
60
- waWebSocketUrl: "wss://web.whatsapp.com/ws/chat",
61
- connectTimeoutMs: 2E4,
62
- keepAliveIntervalMs: 3E4,
63
- logger: logger_1.default.child({ class: "baileys" }),
64
- printQRInTerminal: !1,
65
- emitOwnEvents: !0,
66
- defaultQueryTimeoutMs: 6E4,
68
+ version: version,
69
+ browser: Utils_1.Browsers.ubuntu('Chrome'),
70
+ waWebSocketUrl: 'wss://web.whatsapp.com/ws/chat',
71
+ connectTimeoutMs: 20000,
72
+ keepAliveIntervalMs: 30000,
73
+ logger: logger_1.default.child({ class: 'baileys' }),
74
+ printQRInTerminal: false,
75
+ emitOwnEvents: true,
76
+ defaultQueryTimeoutMs: 60000,
67
77
  customUploadHosts: [],
68
78
  retryRequestDelayMs: 250,
69
79
  maxMsgRetryCount: 5,
70
- fireInitQueries: !0,
71
- auth: void 0,
72
- markOnlineOnConnect: !0,
73
- syncFullHistory: !1,
74
- patchMessageBeforeSending: a => a,
75
- shouldSyncHistoryMessage: () => !0,
76
- shouldIgnoreJid: () => !1,
80
+ fireInitQueries: true,
81
+ auth: undefined,
82
+ markOnlineOnConnect: true,
83
+ syncFullHistory: true,
84
+ patchMessageBeforeSending: msg => msg,
85
+ shouldSyncHistoryMessage: () => true,
86
+ shouldIgnoreJid: () => false,
77
87
  linkPreviewImageThumbnailWidth: 192,
78
- transactionOpts: { maxCommitRetries: 10, delayBetweenTriesMs: 3E3 },
79
- generateHighQualityLinkPreview: !1,
88
+ transactionOpts: { maxCommitRetries: 10, delayBetweenTriesMs: 3000 },
89
+ generateHighQualityLinkPreview: false,
90
+ enableAutoSessionRecreation: true,
91
+ enableRecentMessageCache: true,
80
92
  options: {},
81
- appStateMacVerification: { patch: !1, snapshot: !1 },
82
- countryCode: "US",
83
- getMessage: async () => { },
84
- cachedGroupMetadata: async () => { },
93
+ appStateMacVerification: {
94
+ patch: false,
95
+ snapshot: false,
96
+ },
97
+ countryCode: 'US',
98
+ getMessage: async () => undefined,
99
+ cachedGroupMetadata: async () => undefined,
85
100
  makeSignalRepository: libsignal_1.makeLibSignalRepository
86
101
  };
87
-
88
102
  exports.MEDIA_PATH_MAP = {
89
- image: "/mms/image",
90
- video: "/mms/video",
91
- document: "/mms/document",
92
- audio: "/mms/audio",
93
- sticker: "/mms/image",
94
- "thumbnail-link": "/mms/image",
95
- "product-catalog-image": "/product/image",
96
- "md-app-state": "",
97
- "md-msg-hist": "/mms/md-app-state"
103
+ image: '/mms/image',
104
+ video: '/mms/video',
105
+ document: '/mms/document',
106
+ audio: '/mms/audio',
107
+ sticker: '/mms/image',
108
+ 'thumbnail-link': '/mms/image',
109
+ 'product-catalog-image': '/product/image',
110
+ 'md-app-state': '',
111
+ 'md-msg-hist': '/mms/md-app-state',
112
+ 'biz-cover-photo': '/pps/biz-cover-photo'
98
113
  };
99
-
100
114
  exports.MEDIA_HKDF_KEY_MAPPING = {
101
- audio: "Audio",
102
- document: "Document",
103
- gif: "Video",
104
- image: "Image",
105
- ppic: "",
106
- product: "Image",
107
- ptt: "Audio",
108
- sticker: "Image",
109
- video: "Video",
110
- "thumbnail-document": "Document Thumbnail",
111
- "thumbnail-image": "Image Thumbnail",
112
- "thumbnail-video": "Video Thumbnail",
113
- "thumbnail-link": "Link Thumbnail",
114
- "md-msg-hist": "History",
115
- "md-app-state": "App State",
116
- "product-catalog-image": "",
117
- "payment-bg-image": "Payment Background",
118
- ptv: "Video"
115
+ 'audio': 'Audio',
116
+ 'document': 'Document',
117
+ 'gif': 'Video',
118
+ 'image': 'Image',
119
+ 'ppic': '',
120
+ 'product': 'Image',
121
+ 'ptt': 'Audio',
122
+ 'sticker': 'Image',
123
+ 'video': 'Video',
124
+ 'thumbnail-document': 'Document Thumbnail',
125
+ 'thumbnail-image': 'Image Thumbnail',
126
+ 'thumbnail-video': 'Video Thumbnail',
127
+ 'thumbnail-link': 'Link Thumbnail',
128
+ 'md-msg-hist': 'History',
129
+ 'md-app-state': 'App State',
130
+ 'product-catalog-image': '',
131
+ 'payment-bg-image': 'Payment Background',
132
+ 'ptv': 'Video',
133
+ 'biz-cover-photo': 'Image'
119
134
  };
120
-
121
135
  exports.MEDIA_KEYS = Object.keys(exports.MEDIA_PATH_MAP);
122
136
  exports.MIN_PREKEY_COUNT = 5;
123
- exports.INITIAL_PREKEY_COUNT = 30;
124
-
137
+ exports.INITIAL_PREKEY_COUNT = 812;
138
+ exports.UPLOAD_TIMEOUT = 30000;
139
+ exports.MIN_UPLOAD_INTERVAL = 5000;
125
140
  exports.DEFAULT_CACHE_TTLS = {
126
- SIGNAL_STORE: 300,
127
- MSG_RETRY: 3600,
128
- CALL_OFFER: 300,
129
- USER_DEVICES: 300
141
+ SIGNAL_STORE: 5 * 60,
142
+ MSG_RETRY: 60 * 60,
143
+ CALL_OFFER: 5 * 60,
144
+ USER_DEVICES: 5 * 60,
130
145
  };
@@ -14,6 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./abstract-socket-client"), exports);
18
- __exportStar(require("./mobile-socket-client"), exports);
19
- __exportStar(require("./web-socket-client"), exports);
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./websocket"), exports);
@@ -6,11 +6,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.WebSocketClient = void 0;
7
7
  const ws_1 = __importDefault(require("ws"));
8
8
  const Defaults_1 = require("../../Defaults");
9
- const abstract_socket_client_1 = require("./abstract-socket-client");
10
- class WebSocketClient extends abstract_socket_client_1.AbstractSocketClient {
9
+ const types_1 = require("./types");
10
+ class WebSocketClient extends types_1.AbstractSocketClient {
11
11
  constructor() {
12
12
  super(...arguments);
13
13
  this.socket = null;
14
+ // queue & dispatch variables for throttling outgoing messages to avoid rate limits
15
+ this._queue = [];
16
+ this._isDispatching = false;
17
+ this._lastDispatch = 0;
18
+ this._minSendIntervalMs = (Defaults_1.DEFAULT_CONNECTION_CONFIG && Defaults_1.DEFAULT_CONNECTION_CONFIG.minSendIntervalMs) || 50;
14
19
  }
15
20
  get isOpen() {
16
21
  var _a;
@@ -53,10 +58,54 @@ class WebSocketClient extends abstract_socket_client_1.AbstractSocketClient {
53
58
  this.socket.close();
54
59
  this.socket = null;
55
60
  }
61
+ async restart() {
62
+ if (this.socket) {
63
+ await new Promise(resolve => {
64
+ this.socket.once('close', resolve);
65
+ this.socket.terminate();
66
+ });
67
+ this.socket = null;
68
+ }
69
+ await this.connect();
70
+ }
56
71
  send(str, cb) {
57
- var _a;
58
- (_a = this.socket) === null || _a === void 0 ? void 0 : _a.send(str, cb);
59
- return Boolean(this.socket);
72
+ // throttle sends to reduce rate-limit likelihood
73
+ const doSend = () => {
74
+ var _a;
75
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.send(str, cb);
76
+ return Boolean(this.socket);
77
+ };
78
+ this._queue.push(doSend);
79
+ this._dispatch();
80
+ return true;
81
+ }
82
+
83
+ _dispatch() {
84
+ if (this._isDispatching) {
85
+ return;
86
+ }
87
+ this._isDispatching = true;
88
+ const tick = () => {
89
+ const now = Date.now();
90
+ if (this._queue.length === 0) {
91
+ this._isDispatching = false;
92
+ return;
93
+ }
94
+ const delta = now - this._lastDispatch;
95
+ const wait = Math.max(0, this._minSendIntervalMs - delta);
96
+ setTimeout(() => {
97
+ const fn = this._queue.shift();
98
+ this._lastDispatch = Date.now();
99
+ try {
100
+ fn && fn();
101
+ }
102
+ catch (_err) {
103
+ // ignore send errors here; they'll surface elsewhere
104
+ }
105
+ tick();
106
+ }, wait);
107
+ };
108
+ tick();
60
109
  }
61
110
  }
62
111
  exports.WebSocketClient = WebSocketClient;