cuki-bailx 1.2.5 → 1.2.6

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 (157) hide show
  1. package/LICENSE +21 -0
  2. package/WAProto/GenerateStatics.sh +4 -0
  3. package/WAProto/WAProto.proto +4775 -0
  4. package/WAProto/index.js +56886 -17506
  5. package/engine-requirements.js +1 -1
  6. package/lib/Defaults/index.js +98 -108
  7. package/lib/Defaults/vyzen-baileysx-version.json +3 -0
  8. package/lib/Signal/libsignal.js +2 -0
  9. package/lib/Socket/Client/index.js +2 -3
  10. package/lib/Socket/Client/{web-socket-client.js → websocket.js} +54 -5
  11. package/lib/Socket/chats.js +224 -173
  12. package/lib/Socket/groups.js +20 -5
  13. package/lib/Socket/index.js +2 -2
  14. package/lib/Socket/messages-recv.js +10 -66
  15. package/lib/Socket/messages-send.js +379 -312
  16. package/lib/Socket/newsletter.js +54 -40
  17. package/lib/Socket/socket.js +58 -32
  18. package/lib/Store/index.js +1 -3
  19. package/lib/Store/make-in-memory-store.js +27 -15
  20. package/lib/Store/make-ordered-dictionary.js +2 -2
  21. package/lib/Types/Label.js +1 -1
  22. package/lib/Types/LabelAssociation.js +1 -1
  23. package/lib/Types/Message.js +0 -2
  24. package/lib/Types/Newsletter.js +3 -17
  25. package/lib/Types/index.js +2 -2
  26. package/lib/Utils/auth-utils.js +6 -13
  27. package/lib/Utils/baileys-event-stream.js +1 -1
  28. package/lib/Utils/browser-utils.js +35 -0
  29. package/lib/Utils/business.js +2 -2
  30. package/lib/Utils/chat-utils.js +36 -35
  31. package/lib/Utils/crypto.js +71 -29
  32. package/lib/Utils/decode-wa-message.js +65 -56
  33. package/lib/Utils/event-buffer.js +13 -9
  34. package/lib/Utils/generics.js +107 -29
  35. package/lib/Utils/history.js +4 -6
  36. package/lib/Utils/index.js +2 -0
  37. package/lib/Utils/link-preview.js +34 -1
  38. package/lib/Utils/lt-hash.js +6 -6
  39. package/lib/Utils/message-retry-manager.js +128 -0
  40. package/lib/Utils/messages-media.js +263 -115
  41. package/lib/Utils/messages.js +500 -93
  42. package/lib/Utils/noise-handler.js +18 -23
  43. package/lib/Utils/process-message.js +108 -25
  44. package/lib/Utils/signal.js +37 -35
  45. package/lib/Utils/use-multi-file-auth-state.js +51 -6
  46. package/lib/Utils/validate-connection.js +90 -66
  47. package/lib/WABinary/constants.js +1276 -13
  48. package/lib/WABinary/decode.js +26 -13
  49. package/lib/WABinary/encode.js +39 -17
  50. package/lib/WABinary/generic-utils.js +2 -85
  51. package/lib/WABinary/jid-utils.js +28 -5
  52. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +1 -1
  53. package/lib/index.js +18 -5
  54. package/package.json +109 -104
  55. package/lib/Defaults/baileys-version.json +0 -3
  56. package/lib/Defaults/index.d.ts +0 -53
  57. package/lib/Defaults/phonenumber-mcc.json +0 -223
  58. package/lib/Signal/Group/ciphertext-message.d.ts +0 -9
  59. package/lib/Signal/Group/group-session-builder.d.ts +0 -14
  60. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  61. package/lib/Signal/Group/index.d.ts +0 -11
  62. package/lib/Signal/Group/keyhelper.d.ts +0 -10
  63. package/lib/Signal/Group/queue-job.d.ts +0 -1
  64. package/lib/Signal/Group/sender-chain-key.d.ts +0 -13
  65. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -16
  66. package/lib/Signal/Group/sender-key-message.d.ts +0 -18
  67. package/lib/Signal/Group/sender-key-name.d.ts +0 -17
  68. package/lib/Signal/Group/sender-key-record.d.ts +0 -30
  69. package/lib/Signal/Group/sender-key-state.d.ts +0 -38
  70. package/lib/Signal/Group/sender-message-key.d.ts +0 -11
  71. package/lib/Signal/libsignal.d.ts +0 -3
  72. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  73. package/lib/Socket/Client/index.d.ts +0 -3
  74. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  75. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  76. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  77. package/lib/Socket/business.d.ts +0 -171
  78. package/lib/Socket/chats.d.ts +0 -80
  79. package/lib/Socket/dugong.d.ts +0 -219
  80. package/lib/Socket/dugong.js +0 -441
  81. package/lib/Socket/groups.d.ts +0 -115
  82. package/lib/Socket/index.d.ts +0 -173
  83. package/lib/Socket/messages-recv.d.ts +0 -161
  84. package/lib/Socket/messages-send.d.ts +0 -149
  85. package/lib/Socket/newsletter.d.ts +0 -134
  86. package/lib/Socket/registration.d.ts +0 -267
  87. package/lib/Socket/registration.js +0 -166
  88. package/lib/Socket/socket.d.ts +0 -43
  89. package/lib/Socket/socket.js.bak +0 -630
  90. package/lib/Socket/usync.d.ts +0 -36
  91. package/lib/Store/index.d.ts +0 -3
  92. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  93. package/lib/Store/make-cache-manager-store.js +0 -83
  94. package/lib/Store/make-in-memory-store.d.ts +0 -118
  95. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  96. package/lib/Store/object-repository.d.ts +0 -10
  97. package/lib/Types/Auth.d.ts +0 -110
  98. package/lib/Types/Call.d.ts +0 -13
  99. package/lib/Types/Chat.d.ts +0 -102
  100. package/lib/Types/Contact.d.ts +0 -19
  101. package/lib/Types/Events.d.ts +0 -157
  102. package/lib/Types/GroupMetadata.d.ts +0 -55
  103. package/lib/Types/Label.d.ts +0 -35
  104. package/lib/Types/LabelAssociation.d.ts +0 -29
  105. package/lib/Types/Message.d.ts +0 -273
  106. package/lib/Types/Newsletter.d.ts +0 -92
  107. package/lib/Types/Product.d.ts +0 -78
  108. package/lib/Types/Signal.d.ts +0 -57
  109. package/lib/Types/Socket.d.ts +0 -111
  110. package/lib/Types/State.d.ts +0 -27
  111. package/lib/Types/USync.d.ts +0 -25
  112. package/lib/Types/index.d.ts +0 -57
  113. package/lib/Utils/auth-utils.d.ts +0 -18
  114. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  115. package/lib/Utils/business.d.ts +0 -22
  116. package/lib/Utils/chat-utils.d.ts +0 -71
  117. package/lib/Utils/crypto.d.ts +0 -41
  118. package/lib/Utils/decode-wa-message.d.ts +0 -19
  119. package/lib/Utils/event-buffer.d.ts +0 -35
  120. package/lib/Utils/generics.d.ts +0 -92
  121. package/lib/Utils/history.d.ts +0 -15
  122. package/lib/Utils/index.d.ts +0 -17
  123. package/lib/Utils/link-preview.d.ts +0 -21
  124. package/lib/Utils/logger.d.ts +0 -4
  125. package/lib/Utils/lt-hash.d.ts +0 -12
  126. package/lib/Utils/make-mutex.d.ts +0 -7
  127. package/lib/Utils/messages-media.d.ts +0 -116
  128. package/lib/Utils/messages.d.ts +0 -77
  129. package/lib/Utils/noise-handler.d.ts +0 -21
  130. package/lib/Utils/process-message.d.ts +0 -41
  131. package/lib/Utils/signal.d.ts +0 -32
  132. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  133. package/lib/Utils/validate-connection.d.ts +0 -11
  134. package/lib/WABinary/constants.d.ts +0 -27
  135. package/lib/WABinary/decode.d.ts +0 -7
  136. package/lib/WABinary/encode.d.ts +0 -3
  137. package/lib/WABinary/generic-utils.d.ts +0 -16
  138. package/lib/WABinary/index.d.ts +0 -5
  139. package/lib/WABinary/jid-utils.d.ts +0 -31
  140. package/lib/WABinary/types.d.ts +0 -18
  141. package/lib/WAM/BinaryInfo.d.ts +0 -17
  142. package/lib/WAM/constants.d.ts +0 -38
  143. package/lib/WAM/encode.d.ts +0 -3
  144. package/lib/WAM/index.d.ts +0 -3
  145. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  146. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  147. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  148. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  149. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -25
  150. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -8
  151. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  152. package/lib/WAUSync/USyncQuery.d.ts +0 -28
  153. package/lib/WAUSync/USyncUser.d.ts +0 -12
  154. package/lib/WAUSync/index.d.ts +0 -3
  155. package/lib/index.d.ts +0 -12
  156. package/lib/index.js.bak +0 -48
  157. /package/lib/Socket/Client/{abstract-socket-client.js → types.js} +0 -0
@@ -7,4 +7,4 @@ if (major < 20) {
7
7
  ` Please upgrade to Node.js 20+ to proceed.\n`
8
8
  );
9
9
  process.exit(1);
10
- }
10
+ }
@@ -1,130 +1,120 @@
1
- var __importDefault = this && this.__importDefault || function (a) {
2
- return a && a.__esModule ? a : { "default": a }
3
- };
4
-
5
- Object.defineProperty(exports, "__esModule", { value: !0 });
6
-
7
- 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");
1
+ // BAILEYS BY VYZEN MAU APA LU?
34
2
 
3
+ "use strict";
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.DEFAULT_CACHE_TTLS = exports.MIN_UPLOAD_INTERVAL = exports.UPLOAD_TIMEOUT = exports.INITIAL_PREKEY_COUNT = exports.MIN_PREKEY_COUNT = exports.MEDIA_KEYS = exports.MEDIA_HKDF_KEY_MAPPING = exports.MEDIA_PATH_MAP = exports.DEFAULT_CONNECTION_CONFIG = exports.PROCESSABLE_HISTORY_TYPES = exports.WA_CERT_DETAILS = exports.URL_REGEX = exports.NOISE_WA_HEADER = exports.KEY_BUNDLE_TYPE = exports.DICT_VERSION = exports.NOISE_MODE = exports.WA_DEFAULT_EPHEMERAL = exports.WA_ADV_HOSTED_DEVICE_SIG_PREFIX = exports.WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX = exports.WA_ADV_DEVICE_SIG_PREFIX = exports.WA_ADV_ACCOUNT_SIG_PREFIX = exports.UNAUTHORIZED_CODES = exports.version = void 0;
9
+ const WAProto_1 = require("../../WAProto");
10
+ const libsignal_1 = require("../Signal/libsignal");
11
+ const browser_utils_1 = require("../Utils/browser-utils");
12
+ const logger_1 = __importDefault(require("../Utils/logger"));
13
+ exports.version = [2, 3000, 1027934701];
35
14
  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;
15
+ exports.DEFAULT_ORIGIN = 'https://web.whatsapp.com';
16
+ exports.CALL_VIDEO_PREFIX = 'https://call.whatsapp.com/video/';
17
+ exports.CALL_AUDIO_PREFIX = 'https://call.whatsapp.com/voice/';
18
+ exports.DEF_CALLBACK_PREFIX = 'CB:';
19
+ exports.DEF_TAG_PREFIX = 'TAG:';
20
+ exports.PHONE_CONNECTION_CB = 'CB:Pong';
21
+ exports.WA_ADV_ACCOUNT_SIG_PREFIX = Buffer.from([6, 0]);
22
+ exports.WA_ADV_DEVICE_SIG_PREFIX = Buffer.from([6, 1]);
23
+ exports.WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX = Buffer.from([6, 5]);
24
+ exports.WA_ADV_HOSTED_DEVICE_SIG_PREFIX = Buffer.from([6, 6]);
25
+ exports.WA_DEFAULT_EPHEMERAL = 7 * 24 * 60 * 60;
26
+ exports.NOISE_MODE = 'Noise_XX_25519_AESGCM_SHA256\0\0\0\0';
27
+ exports.DICT_VERSION = 3;
43
28
  exports.KEY_BUNDLE_TYPE = Buffer.from([5]);
44
29
  exports.NOISE_WA_HEADER = Buffer.from([87, 65, 6, exports.DICT_VERSION]);
45
-
46
30
  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
-
31
+ exports.WA_CERT_DETAILS = {
32
+ SERIAL: 0
33
+ };
49
34
  exports.PROCESSABLE_HISTORY_TYPES = [
50
- WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.INITIAL_BOOTSTRAP,
51
- WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.PUSH_NAME,
52
- WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.RECENT,
53
- WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.FULL,
54
- WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.ON_DEMAND
35
+ WAProto_1.proto.HistorySync.HistorySyncType.INITIAL_BOOTSTRAP,
36
+ WAProto_1.proto.HistorySync.HistorySyncType.PUSH_NAME,
37
+ WAProto_1.proto.HistorySync.HistorySyncType.RECENT,
38
+ WAProto_1.proto.HistorySync.HistorySyncType.FULL,
39
+ WAProto_1.proto.HistorySync.HistorySyncType.ON_DEMAND,
40
+ WAProto_1.proto.HistorySync.HistorySyncType.NON_BLOCKING_DATA,
41
+ WAProto_1.proto.HistorySync.HistorySyncType.INITIAL_STATUS_V3,
55
42
  ];
56
-
57
43
  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,
44
+ version: exports.version,
45
+ browser: (0, browser_utils_1.Browsers)('Chrome'),
46
+ waWebSocketUrl: 'wss://web.whatsapp.com/ws/chat',
47
+ connectTimeoutMs: 20_000,
48
+ keepAliveIntervalMs: 30_000,
49
+ logger: logger_1.default.child({ class: 'baileys' }),
50
+ emitOwnEvents: true,
51
+ defaultQueryTimeoutMs: 60_000,
67
52
  customUploadHosts: [],
68
53
  retryRequestDelayMs: 250,
69
54
  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,
55
+ fireInitQueries: true,
56
+ auth: undefined,
57
+ markOnlineOnConnect: true,
58
+ syncFullHistory: true,
59
+ patchMessageBeforeSending: msg => msg,
60
+ shouldSyncHistoryMessage: () => true,
61
+ shouldIgnoreJid: () => false,
77
62
  linkPreviewImageThumbnailWidth: 192,
78
- transactionOpts: { maxCommitRetries: 10, delayBetweenTriesMs: 3E3 },
79
- generateHighQualityLinkPreview: !1,
63
+ transactionOpts: { maxCommitRetries: 10, delayBetweenTriesMs: 3000 },
64
+ generateHighQualityLinkPreview: false,
65
+ enableAutoSessionRecreation: true,
66
+ enableRecentMessageCache: true,
80
67
  options: {},
81
- appStateMacVerification: { patch: !1, snapshot: !1 },
82
- countryCode: "US",
83
- getMessage: async () => { },
84
- cachedGroupMetadata: async () => { },
68
+ appStateMacVerification: {
69
+ patch: false,
70
+ snapshot: false
71
+ },
72
+ countryCode: 'US',
73
+ getMessage: async () => undefined,
74
+ cachedGroupMetadata: async () => undefined,
85
75
  makeSignalRepository: libsignal_1.makeLibSignalRepository
86
76
  };
87
-
88
77
  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"
78
+ image: '/mms/image',
79
+ video: '/mms/video',
80
+ document: '/mms/document',
81
+ audio: '/mms/audio',
82
+ sticker: '/mms/image',
83
+ 'thumbnail-link': '/mms/image',
84
+ 'product-catalog-image': '/product/image',
85
+ 'md-app-state': '',
86
+ 'md-msg-hist': '/mms/md-app-state',
87
+ 'biz-cover-photo': '/pps/biz-cover-photo'
98
88
  };
99
-
100
89
  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"
90
+ audio: 'Audio',
91
+ document: 'Document',
92
+ gif: 'Video',
93
+ image: 'Image',
94
+ ppic: '',
95
+ product: 'Image',
96
+ ptt: 'Audio',
97
+ sticker: 'Image',
98
+ video: 'Video',
99
+ 'thumbnail-document': 'Document Thumbnail',
100
+ 'thumbnail-image': 'Image Thumbnail',
101
+ 'thumbnail-video': 'Video Thumbnail',
102
+ 'thumbnail-link': 'Link Thumbnail',
103
+ 'md-msg-hist': 'History',
104
+ 'md-app-state': 'App State',
105
+ 'product-catalog-image': '',
106
+ 'payment-bg-image': 'Payment Background',
107
+ ptv: 'Video',
108
+ 'biz-cover-photo': 'Image'
119
109
  };
120
-
121
110
  exports.MEDIA_KEYS = Object.keys(exports.MEDIA_PATH_MAP);
122
111
  exports.MIN_PREKEY_COUNT = 5;
123
- exports.INITIAL_PREKEY_COUNT = 30;
124
-
112
+ exports.INITIAL_PREKEY_COUNT = 812;
113
+ exports.UPLOAD_TIMEOUT = 30000;
114
+ exports.MIN_UPLOAD_INTERVAL = 5000;
125
115
  exports.DEFAULT_CACHE_TTLS = {
126
- SIGNAL_STORE: 300,
127
- MSG_RETRY: 3600,
128
- CALL_OFFER: 300,
129
- USER_DEVICES: 300
130
- };
116
+ SIGNAL_STORE: 5 * 60,
117
+ MSG_RETRY: 60 * 60,
118
+ CALL_OFFER: 5 * 60,
119
+ USER_DEVICES: 5 * 60
120
+ };
@@ -0,0 +1,3 @@
1
+ {
2
+ "version": [2, 3000, 1027934701]
3
+ }
@@ -1,3 +1,5 @@
1
+ // BAILEYS BY VYZEN MAU APA LU?
2
+
1
3
  "use strict";
2
4
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
5
  if (k2 === undefined) k2 = k;
@@ -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;