@quotemedia.com/streamer 2.21.0 → 2.24.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.
@@ -452,6 +452,10 @@ var Stream = function () {
452
452
  this.pendingUnsubscriptions = {};
453
453
  this.pendingExchangeSubscriptions = {};
454
454
  this.pendingExchangeUnsubscriptions = {};
455
+ this.pendingNewsSubscriptions = {};
456
+ this.pendingNewsUnsubscriptions = {};
457
+ this.pendingAlertSubscription = {};
458
+ this.pendingTradeSubscription = {};
455
459
 
456
460
  this.on("error", function (err) {
457
461
  _this.log.warn(err);
@@ -576,6 +580,110 @@ var Stream = function () {
576
580
  });
577
581
  };
578
582
 
583
+ Stream.prototype.subscribeNews = function subscribeNews(newsFilters, optsOrCallback, callbackOrNothing) {
584
+
585
+ var opts = optsOrCallback && typeof optsOrCallback !== "function" ? optsOrCallback : null;
586
+ var callback = callbackOrNothing ? callbackOrNothing : optsOrCallback && typeof optsOrCallback === "function" ? optsOrCallback : null;
587
+
588
+ if (this.isClosed()) {
589
+ var event = events.error("Stream is disconnected", {
590
+ code: -1,
591
+ reason: "Already disconnected"
592
+ });
593
+ this.events.fire("error", event);
594
+ if (callback) {
595
+ callback(event);
596
+ }
597
+ return;
598
+ }
599
+
600
+ var newsSub = {
601
+ callback: callback,
602
+ mimetype: this.format,
603
+ id: [],
604
+ result: {
605
+ newsFilters: [],
606
+ rejectedNewsFilters: [],
607
+ unentitledNewsFilters: []
608
+ }
609
+ };
610
+ //check for empty filters
611
+ if (newsFilters.length === 0) {
612
+ callback(null, newsSub.result);
613
+ }
614
+ var request = this.buildNewsSubscribeRequest(newsFilters, newsSub, _streamerApi.messages.control.Action.SUBSCRIBE, opts);
615
+
616
+ var id = this.requestid.next();
617
+ this.pendingNewsSubscriptions[id] = newsSub;
618
+
619
+ request.id = id;
620
+
621
+ this.send(request);
622
+ };
623
+
624
+ Stream.prototype.subUnsubAlerts = function subUnsubAlerts(operation, optsOrCallback, callbackOrNothing) {
625
+
626
+ var opts = optsOrCallback && typeof optsOrCallback !== "function" ? optsOrCallback : null;
627
+ var callback = callbackOrNothing ? callbackOrNothing : optsOrCallback && typeof optsOrCallback === "function" ? optsOrCallback : null;
628
+
629
+ if (this.isClosed()) {
630
+ var event = events.error("Stream is disconnected", {
631
+ code: -1,
632
+ reason: "Already disconnected"
633
+ });
634
+ this.events.fire("error", event);
635
+ return;
636
+ }
637
+
638
+ var subscription = {
639
+ id: [],
640
+ mimetype: this.format,
641
+ callback: callback,
642
+ result: {
643
+ operation: ""
644
+ }
645
+ };
646
+
647
+ var request = this.buildAlertsSubUnsubRequest(operation, subscription);
648
+ var id = this.requestid.next();
649
+ subscription.id.push(id);
650
+ this.pendingAlertSubscription[id] = subscription;
651
+ request.id = id;
652
+
653
+ this.send(request);
654
+ };
655
+
656
+ Stream.prototype.subscribeTrade = function subscribeTrade(operation, optsOrCallback, callbackOrNothing) {
657
+ var opts = optsOrCallback && typeof optsOrCallback !== "function" ? optsOrCallback : null;
658
+ var callback = callbackOrNothing ? callbackOrNothing : optsOrCallback && typeof optsOrCallback === "function" ? optsOrCallback : null;
659
+
660
+ if (this.isClosed()) {
661
+ var event = events.error("Stream is disconnected", {
662
+ code: -1,
663
+ reason: "Already disconnected"
664
+ });
665
+ this.events.fire("error", event);
666
+ return;
667
+ }
668
+
669
+ var tradeSub = {
670
+ id: [],
671
+ mimetype: this.format,
672
+ callback: callback,
673
+ result: {
674
+ operation: ""
675
+ }
676
+ };
677
+
678
+ var request = this.buildTradeSubscribeRequest(operation, tradeSub);
679
+ var id = this.requestid.next();
680
+ tradeSub.id.push(id);
681
+ this.pendingTradeSubscription[id] = tradeSub;
682
+ request.id = id;
683
+
684
+ this.send(request);
685
+ };
686
+
579
687
  Stream.prototype.getSessionStats = function getSessionStats() {
580
688
  if (this.isClosed()) {
581
689
  var event = events.error("Stream is disconnected", {
@@ -589,6 +697,54 @@ var Stream = function () {
589
697
  this.send(msg);
590
698
  };
591
699
 
700
+ Stream.prototype.cmdFilterRefreshNews = function cmdFilterRefreshNews(callbackOrNothing) {
701
+ var callback = callbackOrNothing ? callbackOrNothing : optsOrCallback && typeof optsOrCallback === "function" ? optsOrCallback : null;
702
+
703
+ if (this.isClosed()) {
704
+ var event = events.error("Stream is disconnected", {
705
+ code: -1,
706
+ reason: "Already disconnected"
707
+ });
708
+ this.events.fire("error", event);
709
+ if (callback) {
710
+ callback(event);
711
+ }
712
+ return;
713
+ }
714
+
715
+ var newsCmdFilterRefresh = {
716
+ callback: callback,
717
+ mimetype: this.format
718
+ };
719
+
720
+ var request = this.buildNewsCommandRequest(newsCmdFilterRefresh, 'NEWSCMDFILTERREFRESH');
721
+ this.send(request);
722
+ };
723
+
724
+ Stream.prototype.cmdFilterNews = function cmdFilterNews(callbackOrNothing) {
725
+ var callback = callbackOrNothing ? callbackOrNothing : optsOrCallback && typeof optsOrCallback === "function" ? optsOrCallback : null;
726
+
727
+ if (this.isClosed()) {
728
+ var event = events.error("Stream is disconnected", {
729
+ code: -1,
730
+ reason: "Already disconnected"
731
+ });
732
+ this.events.fire("error", event);
733
+ if (callback) {
734
+ callback(event);
735
+ }
736
+ return;
737
+ }
738
+
739
+ var newsCmdFilter = {
740
+ callback: callback,
741
+ mimetype: this.format
742
+ };
743
+
744
+ var request = this.buildNewsCommandRequest(newsCmdFilter, 'NEWSCMDFILTER');
745
+ this.send(request);
746
+ };
747
+
592
748
  Stream.prototype.unsubscribe = function unsubscribe(symbols, types, optsOrCallback, callbackOrNothing) {
593
749
  var _this4 = this;
594
750
 
@@ -690,6 +846,49 @@ var Stream = function () {
690
846
  });
691
847
  };
692
848
 
849
+ Stream.prototype.unsubscribeNews = function unsubscribeNews(newsFilters, optsOrCallback, callbackOrNothing) {
850
+ newsFilters = Array.isArray(newsFilters) ? newsFilters : [newsFilters];
851
+
852
+ var opts = optsOrCallback && typeof optsOrCallback !== "function" ? optsOrCallback : null;
853
+ var callback = callbackOrNothing ? callbackOrNothing : optsOrCallback && typeof optsOrCallback === "function" ? optsOrCallback : null;
854
+
855
+ if (this.isClosed()) {
856
+ var event = events.error("Stream is disconnected", {
857
+ code: -1,
858
+ reason: "Already disconnected"
859
+ });
860
+ this.events.fire("error", event);
861
+ if (callback) {
862
+ callback(event);
863
+ }
864
+ return;
865
+ }
866
+
867
+ var unsubscription = {
868
+ callback: callback,
869
+ mimetype: this.format,
870
+ id: [],
871
+ result: {
872
+ unsubscribed: []
873
+ }
874
+ };
875
+
876
+ if (newsFilters.length === 0) {
877
+ if (callback) {
878
+ callback(null, unsubscription.result);
879
+ }
880
+ }
881
+
882
+ var request = this.buildNewsSubscribeRequest(newsFilters, unsubscription, _streamerApi.messages.control.Action.UNSUBSCRIBE, opts);
883
+
884
+ var id = this.requestid.next();
885
+ unsubscription.id.push(id);
886
+ this.pendingNewsUnsubscriptions[id] = unsubscription;
887
+ request.id = id;
888
+
889
+ this.send(request);
890
+ };
891
+
693
892
  Stream.prototype._handlejsonmsg = function _handlejsonmsg(msg) {
694
893
  if ((0, _streamerUtils.iscontrolmessage)(msg)) {
695
894
  this.handlectrlmsg(msg);
@@ -752,6 +951,38 @@ var Stream = function () {
752
951
  return msg;
753
952
  };
754
953
 
954
+ Stream.prototype.buildNewsSubscribeRequest = function buildNewsSubscribeRequest(newsFilters, sub, action, opts) {
955
+ var msg = new _streamerApi.messages.control.NewsSubscribeMessage();
956
+ msg.action = action;
957
+ msg.newsFilters = newsFilters;
958
+ msg.mimetype = sub.mimetype;
959
+ if (opts && opts.skipHeavyInitialLoad) {
960
+ msg.skipHeavyInitialLoad = opts.skipHeavyInitialLoad === '0' ? false : true;
961
+ }
962
+ return msg;
963
+ };
964
+
965
+ Stream.prototype.buildAlertsSubUnsubRequest = function buildAlertsSubUnsubRequest(opr, subscription) {
966
+ var msg = new _streamerApi.messages.control.AlertsSubUnsubMessage();
967
+ msg.operation = opr;
968
+ msg.mimetype = subscription.mimetype;
969
+ return msg;
970
+ };
971
+
972
+ Stream.prototype.buildTradeSubscribeRequest = function buildTradeSubscribeRequest(operation, sub) {
973
+ var msg = new _streamerApi.messages.control.TradeSubscribeMessage();
974
+ msg.operation = operation;
975
+ msg.mimetype = sub.mimetype;
976
+ return msg;
977
+ };
978
+
979
+ Stream.prototype.buildNewsCommandRequest = function buildNewsCommandRequest(sub, newsAction) {
980
+ var msg = new _streamerApi.messages.control.NewsCommandMessage();
981
+ msg.newsAction = newsAction;
982
+ msg.mimetype = sub.mimetype;
983
+ return msg;
984
+ };
985
+
755
986
  Stream.prototype._getUpdatedNumberOfEntitlements = function _getUpdatedNumberOfEntitlements(numberOfSubscriptionTypes, currentApproximateNumberOfEntitlements, symbol, isSubscribeToOrderbook) {
756
987
  var result = currentApproximateNumberOfEntitlements;
757
988
  if (isSubscribeToOrderbook && symbol.endsWith(CONSOLIDATED_SYMBOL_SUFFIX)) {
@@ -775,12 +1006,30 @@ var Stream = function () {
775
1006
  case _streamerApi.messages.MessageTypeNames.ctrl.EXCHANGE_RESPONSE:
776
1007
  this.onExchangeSubscribeResponse(msg);
777
1008
  break;
1009
+ case _streamerApi.messages.MessageTypeNames.ctrl.NEWS_SUBSCRIBE_RESPONSE:
1010
+ this.onNewsSubscribeResponse(msg);
1011
+ break;
1012
+ case _streamerApi.messages.MessageTypeNames.ctrl.ALERTS_SUBUNSUB_RESPONSE:
1013
+ this.onAlertsSubUnsubResponse(msg);
1014
+ break;
1015
+ case _streamerApi.messages.MessageTypeNames.ctrl.TRADE_SUBSCRIBE_RESPONSE:
1016
+ this.onTradeSubscribeResponse(msg);
1017
+ break;
778
1018
  case _streamerApi.messages.MessageTypeNames.ctrl.UNSUBSCRIBE_RESPONSE:
779
1019
  this.onUnsubscribeResponse(msg);
780
1020
  break;
781
1021
  case _streamerApi.messages.MessageTypeNames.ctrl.EXCHANGE_UNSUBSCRIBE_RESPONSE:
782
1022
  this.onExchangeUnsubscribeResponse(msg);
783
1023
  break;
1024
+ case _streamerApi.messages.MessageTypeNames.ctrl.NEWS_UNSUBSCRIBE_RESPONSE:
1025
+ this.onNewsUnsubscribeResponse(msg);
1026
+ break;
1027
+ case _streamerApi.messages.MessageTypeNames.ctrl.NEWS_CMD_FILTER_REFRESH_RESPONSE:
1028
+ this.onNewsCmdFilterRefreshResponse(msg);
1029
+ break;
1030
+ case _streamerApi.messages.MessageTypeNames.ctrl.NEWS_CMD_FILTER_RESPONSE:
1031
+ this.onNewsCmdFilterResponse(msg);
1032
+ break;
784
1033
  case _streamerApi.messages.MessageTypeNames.ctrl.CONNECT_RESPONSE:
785
1034
  this.onConnectResponse(msg);
786
1035
  break;
@@ -930,6 +1179,236 @@ var Stream = function () {
930
1179
  }
931
1180
  };
932
1181
 
1182
+ Stream.prototype.onNewsSubscribeResponse = function onNewsSubscribeResponse(msg) {
1183
+ var newsSub = this.pendingNewsSubscriptions[msg.__id];
1184
+ var callback = newsSub.callback;
1185
+
1186
+ (0, _utils.removeFromArray)(newsSub.id, msg.__id);
1187
+ delete this.pendingNewsSubscriptions[msg.__id];
1188
+
1189
+ var result = newsSub.result;
1190
+
1191
+ console.log(msg);
1192
+ if (msg.code != 200) {
1193
+ var event = events.error("Error subscribing to news", {
1194
+ code: msg.code,
1195
+ reason: msg.reason
1196
+ });
1197
+ this.events.fire("error", event);
1198
+ if (callback) {
1199
+ newsSub.callback(event);
1200
+ }
1201
+ return;
1202
+ }
1203
+ if (msg.newsFilters) {
1204
+ for (var _iterator4 = msg.newsFilters, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
1205
+ var _ref4;
1206
+
1207
+ if (_isArray4) {
1208
+ if (_i4 >= _iterator4.length) break;
1209
+ _ref4 = _iterator4[_i4++];
1210
+ } else {
1211
+ _i4 = _iterator4.next();
1212
+ if (_i4.done) break;
1213
+ _ref4 = _i4.value;
1214
+ }
1215
+
1216
+ var newsFilter = _ref4;
1217
+
1218
+ result.newsFilters.push(newsFilter);
1219
+ }
1220
+ }
1221
+ if (msg.rejectedNewsFilters) {
1222
+ for (var _iterator5 = msg.rejectedNewsFilters, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
1223
+ var _ref5;
1224
+
1225
+ if (_isArray5) {
1226
+ if (_i5 >= _iterator5.length) break;
1227
+ _ref5 = _iterator5[_i5++];
1228
+ } else {
1229
+ _i5 = _iterator5.next();
1230
+ if (_i5.done) break;
1231
+ _ref5 = _i5.value;
1232
+ }
1233
+
1234
+ var rejectedFilter = _ref5;
1235
+
1236
+ result.rejectedNewsFilters.push(rejectedFilter);
1237
+ }
1238
+ }
1239
+ if (msg.unentitledNewsFilters) {
1240
+ for (var _iterator6 = msg.unentitledNewsFilters, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
1241
+ var _ref6;
1242
+
1243
+ if (_isArray6) {
1244
+ if (_i6 >= _iterator6.length) break;
1245
+ _ref6 = _iterator6[_i6++];
1246
+ } else {
1247
+ _i6 = _iterator6.next();
1248
+ if (_i6.done) break;
1249
+ _ref6 = _i6.value;
1250
+ }
1251
+
1252
+ var unentitledFilter = _ref6;
1253
+
1254
+ result.unentitledNewsFilters.push(unentitledFilter);
1255
+ }
1256
+ }
1257
+
1258
+ if (newsSub.id.length === 0) {
1259
+ if (callback) {
1260
+ callback(null, newsSub.result);
1261
+ }
1262
+ }
1263
+ };
1264
+
1265
+ Stream.prototype.onAlertsSubUnsubResponse = function onAlertsSubUnsubResponse(msg) {
1266
+ var alertsSub = this.pendingAlertSubscription[msg.__id];
1267
+ var callback = alertsSub.callback;
1268
+
1269
+ (0, _utils.removeFromArray)(alertsSub.id, msg.__id);
1270
+ delete this.pendingAlertSubscription[msg.__id];
1271
+
1272
+ console.log(msg);
1273
+ if (msg.code != 200 && !alertsSub.failed) {
1274
+ alertsSub.failed = true;
1275
+ var event = events.error("Error subscribing", {
1276
+ code: msg.code,
1277
+ reason: msg.reason
1278
+ });
1279
+ this.events.fire("error", event);
1280
+ if (callback) {
1281
+ alertsSub.callback(event);
1282
+ }
1283
+ return;
1284
+ }
1285
+
1286
+ var result = alertsSub.result;
1287
+
1288
+ if (msg.operation) {
1289
+ this.log.debug('Alerts ' + msg.operation);
1290
+ result.operation = msg.operation;
1291
+ }
1292
+
1293
+ if (alertsSub.id.length === 0) {
1294
+ if (callback) {
1295
+ callback(null, alertsSub.result);
1296
+ }
1297
+ }
1298
+ };
1299
+
1300
+ Stream.prototype.onTradeSubscribeResponse = function onTradeSubscribeResponse(msg) {
1301
+ var tradeSub = this.pendingTradeSubscription[msg.__id];
1302
+ var callback = tradeSub.callback;
1303
+
1304
+ (0, _utils.removeFromArray)(tradeSub.id, msg.__id);
1305
+ delete this.pendingTradeSubscription[msg.__id];
1306
+
1307
+ console.log(msg);
1308
+ if (msg.code != 200 && !tradeSub.failed) {
1309
+ tradeSub.failed = true;
1310
+ var event = events.error("Error subscribing", {
1311
+ code: msg.code,
1312
+ reason: msg.reason
1313
+ });
1314
+ this.events.fire("error", event);
1315
+ if (callback) {
1316
+ tradeSub.callback(event);
1317
+ }
1318
+ return;
1319
+ }
1320
+
1321
+ var result = tradeSub.result;
1322
+
1323
+ if (msg.operation) {
1324
+ this.log.debug('Trade ' + msg.operation);
1325
+ result.operation = msg.operation;
1326
+ }
1327
+
1328
+ if (tradeSub.id.length === 0) {
1329
+ if (callback) {
1330
+ callback(null, tradeSub.result);
1331
+ }
1332
+ }
1333
+ };
1334
+
1335
+ Stream.prototype.onNewsUnsubscribeResponse = function onNewsUnsubscribeResponse(msg) {
1336
+ var newsUnsub = this.pendingNewsUnsubscriptions[msg.__id];
1337
+ var callback = newsUnsub.callback;
1338
+
1339
+ (0, _utils.removeFromArray)(newsUnsub.id, msg.__id);
1340
+ delete this.pendingNewsUnsubscriptions[msg.__id];
1341
+
1342
+ console.log("msg", msg);
1343
+ var result = newsUnsub.result;
1344
+
1345
+ if (msg.code != 200 && !newsUnsub.failed) {
1346
+ newsUnsub.failed = true;
1347
+ var event = events.error("Error unsubscribing to news", {
1348
+ code: msg.code,
1349
+ reason: msg.reason
1350
+ });
1351
+ this.events.fire("error", event);
1352
+ if (callback) {
1353
+ newsUnsub.callback(event);
1354
+ }
1355
+ return;
1356
+ }
1357
+
1358
+ if (msg.newsFilters) {
1359
+ for (var _iterator7 = msg.newsFilters, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
1360
+ var _ref7;
1361
+
1362
+ if (_isArray7) {
1363
+ if (_i7 >= _iterator7.length) break;
1364
+ _ref7 = _iterator7[_i7++];
1365
+ } else {
1366
+ _i7 = _iterator7.next();
1367
+ if (_i7.done) break;
1368
+ _ref7 = _i7.value;
1369
+ }
1370
+
1371
+ var newsFilter = _ref7;
1372
+
1373
+ result.unsubscribed.push(newsFilter);
1374
+ }
1375
+ }
1376
+
1377
+ if (newsUnsub.id.length === 0) {
1378
+ if (callback) {
1379
+ callback(null, newsUnsub.result);
1380
+ }
1381
+ }
1382
+ };
1383
+
1384
+ Stream.prototype.onNewsCmdFilterRefreshResponse = function onNewsCmdFilterRefreshResponse(msg) {
1385
+ console.log("msg", msg);
1386
+ if (msg.code != 200) {
1387
+ var event = events.error("Error Refreshing News Filters", {
1388
+ code: msg.code,
1389
+ reason: msg.reason
1390
+ });
1391
+ this.events.fire("error", event);
1392
+ return;
1393
+ }
1394
+
1395
+ this.events.fire("msg", msg);
1396
+ };
1397
+
1398
+ Stream.prototype.onNewsCmdFilterResponse = function onNewsCmdFilterResponse(msg) {
1399
+ console.log("msg", msg);
1400
+ if (msg.code != 200) {
1401
+ var event = events.error("Error Getting News Filters Status", {
1402
+ code: msg.code,
1403
+ reason: msg.reason
1404
+ });
1405
+ this.events.fire("error", event);
1406
+ return;
1407
+ }
1408
+
1409
+ this.events.fire("filter status", msg);
1410
+ };
1411
+
933
1412
  Stream.prototype.onUnsubscribeResponse = function onUnsubscribeResponse(msg) {
934
1413
  var unsubscription = this.pendingUnsubscriptions[msg.__id];
935
1414
  var callback = unsubscription.callback;
@@ -1574,7 +2053,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
1574
2053
  attachHeadersAsQueryString: true,
1575
2054
  executeCallbackBeforeReconnect: false,
1576
2055
  readyState: 0,
1577
- withCredentials: false,
2056
+ withCredentials: true,
1578
2057
  trackMessageLength: false,
1579
2058
  messageDelimiter: '|',
1580
2059
  connectTimeout: -1,
@@ -5156,6 +5635,15 @@ fmt.Formatter = function () {
5156
5635
  this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.EXCHANGE_SUBSCRIBE] = this._fmtexchangesubscribe;
5157
5636
  this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.EXCHANGE_RESPONSE] = this._fmtexchangesubscriberesponse;
5158
5637
  this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.EXCHANGE_UNSUBSCRIBE_RESPONSE] = this._fmtexchangeunsubscriberesponse;
5638
+ this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.ALERTS_SUBUNSUB] = this._fmtalertsubunsub;
5639
+ this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.ALERTS_SUBUNSUB_RESPONSE] = this._fmtalertsubunsubresponse;
5640
+ this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.NEWS_SUBSCRIBE] = this._fmtnewssubscribe;
5641
+ this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.NEWS_SUBSCRIBE_RESPONSE] = this._fmtnewssubscriberesponse;
5642
+ this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.TRADE_SUBSCRIBE] = this._fmttradesubscribe;
5643
+ this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.TRADE_SUBSCRIBE_RESPONSE] = this._fmttradesubscriberesponse;
5644
+ this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.NEWS_UNSUBSCRIBE_RESPONSE] = this._fmtnewsunsubscriberesponse;
5645
+ this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.NEWS_CMD_FILTER_REFRESH_RESPONSE] = this._fmtnewscmdfilterrefreshresponse;
5646
+ this.formatters[_streamerApi.messages.MessageTypeNames.ctrl.NEWS_CMD_FILTER_RESPONSE] = this._fmtnewscmdfilterresponse;
5159
5647
 
5160
5648
  //
5161
5649
  this.formatters[_streamerApi.messages.MessageTypeNames.data.QUOTE] = this._fmtquote;
@@ -5175,6 +5663,8 @@ fmt.Formatter = function () {
5175
5663
  this.formatters[_streamerApi.messages.MessageTypeNames.data.IVGREEKS] = this._fmtivgreeks;
5176
5664
  this.formatters[_streamerApi.messages.MessageTypeNames.data.IMBALANCESTATUS] = this._fmtimbalancestatus;
5177
5665
  this.formatters[_streamerApi.messages.MessageTypeNames.data.ALERT] = this._fmtalert;
5666
+ this.formatters[_streamerApi.messages.MessageTypeNames.data.NEWS] = this._fmtnews;
5667
+ this.formatters[_streamerApi.messages.MessageTypeNames.data.TRADENOTIFICATION] = this._fmttradeNotification;
5178
5668
  };
5179
5669
 
5180
5670
  fmt.Formatter._UNKOWNTYPE = '__UNKNOWN__';
@@ -5553,6 +6043,8 @@ fmt.Formatter.prototype._fmtbookorder = function (val) {
5553
6043
  s.sep();
5554
6044
  s.append(val.locateCode);
5555
6045
  s.sep();
6046
+ s.append(val.excode);
6047
+ s.sep();
5556
6048
  s.append(val.orderID);
5557
6049
  s.sep();
5558
6050
  s.append(val.orderReference);
@@ -5621,6 +6113,8 @@ fmt.Formatter.prototype._fmtsymbolinfo = function (val) {
5621
6113
  s.append(val.pqe);
5622
6114
  s.sep();
5623
6115
  s.append(val.caveatEmptor);
6116
+ s.sep();
6117
+ s.append(val.boardLotSize);
5624
6118
  return s.toString();
5625
6119
  };
5626
6120
 
@@ -5691,6 +6185,60 @@ fmt.Formatter.prototype._fmtalert = function (val) {
5691
6185
  return s.toString();
5692
6186
  };
5693
6187
 
6188
+ fmt.Formatter.prototype._fmtnews = function (val) {
6189
+ var s = new fmt.StringBuilder();
6190
+ s.append('N');
6191
+ s.sep();
6192
+ s.append(val.storyId);
6193
+ s.sep();
6194
+ s.datetime(val.timestamp);
6195
+ s.sep();
6196
+ s.append(val.storyUrl);
6197
+ s.sep();
6198
+ s.append(val.epochtime);
6199
+ s.sep();
6200
+ s.append(val.headline);
6201
+ s.sep();
6202
+ s.append(val.source);
6203
+ s.sep();
6204
+ s.append(val.sourceId);
6205
+ s.sep();
6206
+ s.append(val.lang);
6207
+ s.sep();
6208
+ s.append(val.symbol);
6209
+ s.sep();
6210
+ s.append(val.excode);
6211
+ s.sep();
6212
+ s.append(val.exgroup);
6213
+ s.sep();
6214
+ s.append(val.topic);
6215
+ s.sep();
6216
+ s.append(val.thumbnailUrl);
6217
+ s.sep();
6218
+ s.append(val.newsUrl);
6219
+ s.sep();
6220
+ s.append(val.videoUrl);
6221
+ s.sep();
6222
+ s.append(val.videoImageUrl);
6223
+
6224
+ return s.toString();
6225
+ };
6226
+
6227
+ fmt.Formatter.prototype._fmttradeNotification = function (val) {
6228
+ var s = new fmt.StringBuilder();
6229
+ s.append("TN");
6230
+ s.sep();
6231
+ s.append(val.accountId);
6232
+ s.sep();
6233
+ s.append(val.brokerId);
6234
+ s.sep();
6235
+ s.append(val.message);
6236
+ s.sep();
6237
+ s.append(val.eventType);
6238
+
6239
+ return s.toString();
6240
+ };
6241
+
5694
6242
  fmt.Formatter.prototype._fmtheartbeat = function (val) {
5695
6243
  var s = new fmt.StringBuilder();
5696
6244
  s.append("HEARBEAT");
@@ -5713,6 +6261,27 @@ fmt.Formatter.prototype._fmtexchangesubscribe = function (val) {
5713
6261
  return s.toString();
5714
6262
  };
5715
6263
 
6264
+ fmt.Formatter.prototype._fmtalertsubunsub = function (val) {
6265
+ var s = new fmt.StringBuilder();
6266
+ s.append('ALERT');
6267
+ // TODO
6268
+ return s.toString();
6269
+ };
6270
+
6271
+ fmt.Formatter.prototype._fmttradesubscribe = function (val) {
6272
+ var s = new fmt.StringBuilder();
6273
+ s.append('TRADE');
6274
+ // TODO
6275
+ return s.toString();
6276
+ };
6277
+
6278
+ fmt.Formatter.prototype._fmtnewssubscribe = function (val) {
6279
+ var s = new fmt.StringBuilder();
6280
+ s.append('NEWS SUBSCRIBE');
6281
+ // TODO
6282
+ return s.toString();
6283
+ };
6284
+
5716
6285
  fmt.Formatter.prototype._fmtstats = function (val) {
5717
6286
  var s = new fmt.StringBuilder();
5718
6287
  s.append('STATS');
@@ -5737,6 +6306,56 @@ fmt.Formatter.prototype._fmtexchangesubscriberesponse = function (val) {
5737
6306
  return s.toString();
5738
6307
  };
5739
6308
 
6309
+ fmt.Formatter.prototype._fmtalertsubunsubresponse = function (val) {
6310
+ var s = new fmt.StringBuilder();
6311
+ s.append('ALERT SUBSCRIBED');
6312
+ // TODO
6313
+ return s.toString();
6314
+ };
6315
+
6316
+ fmt.Formatter.prototype._fmttradesubscriberesponse = function (val) {
6317
+ var s = new fmt.StringBuilder();
6318
+ s.append('TRADE SUBSCRIBED');
6319
+ // TODO
6320
+ return s.toString();
6321
+ };
6322
+
6323
+ fmt.Formatter.prototype._fmtnewssubscriberesponse = function (val) {
6324
+ var s = new fmt.StringBuilder();
6325
+ s.append('NEWS SUBSCRIBED');
6326
+ s.sep();
6327
+ this.__baseresponse(val, s);
6328
+ // TODO
6329
+ return s.toString();
6330
+ };
6331
+
6332
+ fmt.Formatter.prototype._fmtnewsunsubscriberesponse = function (val) {
6333
+ var s = new fmt.StringBuilder();
6334
+ s.append('NEWS UNSUBSCRIBED');
6335
+ s.sep();
6336
+ this.__baseresponse(val, s);
6337
+ // TODO
6338
+ return s.toString();
6339
+ };
6340
+
6341
+ fmt.Formatter.prototype._fmtnewscmdfilterrefreshresponse = function (val) {
6342
+ var s = new fmt.StringBuilder();
6343
+ s.append('NEWS COMMAND FILTER REFRESH');
6344
+ s.sep();
6345
+ this.__baseresponse(val, s);
6346
+ // TODO
6347
+ return s.toString();
6348
+ };
6349
+
6350
+ fmt.Formatter.prototype._fmtnewscmdfilterresponse = function (val) {
6351
+ var s = new fmt.StringBuilder();
6352
+ s.append('NEWS COMMAND FILTER');
6353
+ s.sep();
6354
+ this.__baseresponse(val, s);
6355
+ // TODO
6356
+ return s.toString();
6357
+ };
6358
+
5740
6359
  fmt.Formatter.prototype._fmtunsubscriberesponse = function (val) {
5741
6360
  var s = new fmt.StringBuilder();
5742
6361
  s.append('UN-SUBSCRIBED');
@@ -9009,6 +9628,7 @@ var BookOrderDecoder = function () {
9009
9628
  out.display = def.BookOrderFlags.isDisplay(flags);
9010
9629
  out.orderChangeType = _Qitch2["default"].bookOrderChangeType(src, offset + def.CHANGE_TYPE_OFFSET);
9011
9630
  out.orderReference = _Qitch2["default"].orderreference(src, offset + def.ORDER_REFERENCE_OFFSET);
9631
+ out.excode = _Qitch2["default"].excode(src, offset + def.EXCODE_OFFSET);
9012
9632
  return out;
9013
9633
  };
9014
9634
 
@@ -9707,6 +10327,7 @@ var SymbolInfoDecoder = function () {
9707
10327
  resultingMessage.regSHOStatus = _Qitch2["default"].asciichar(src, offset + def.REGSHOSTATUS_OFFSET);
9708
10328
  resultingMessage.pqe = _Qitch2["default"].sbyte(src, offset + def.PQE_OFFSET) > 0;
9709
10329
  resultingMessage.caveatEmptor = _Qitch2["default"].sbyte(src, offset + def.CAVEATEMPTOR_OFFSET) > 0;
10330
+ resultingMessage.boardLotSize = _Qitch2["default"].int32(src, offset + def.BOARDLOTSIZE_OFFSET);
9710
10331
 
9711
10332
  return resultingMessage;
9712
10333
  };
@@ -10109,7 +10730,7 @@ var LENGTH = exports.LENGTH = ORDER_REFERENCE_OFFSET + _QitchConstants.ORDER_REF
10109
10730
  "use strict";
10110
10731
 
10111
10732
  exports.__esModule = true;
10112
- exports.BookOrderFlags = exports.LENGTH = exports.ORDER_REFERENCE_OFFSET = exports.CHANGE_TYPE_OFFSET = exports.FLAGS_OFFSET = exports.LASTUPDATE_OFFSET = exports.SIZE_OFFSET = exports.PRICE_OFFSET = exports.SIDE_OFFSET = exports.ORDERID_OFFSET = exports.MMID_OFFSET = exports.SYMBOL_OFFSET = exports.TIMESTAMP_OFFSET = exports.TYPEID = undefined;
10733
+ exports.BookOrderFlags = exports.LENGTH = exports.EXCODE_OFFSET = exports.ORDER_REFERENCE_OFFSET = exports.CHANGE_TYPE_OFFSET = exports.FLAGS_OFFSET = exports.LASTUPDATE_OFFSET = exports.SIZE_OFFSET = exports.PRICE_OFFSET = exports.SIDE_OFFSET = exports.ORDERID_OFFSET = exports.MMID_OFFSET = exports.SYMBOL_OFFSET = exports.TIMESTAMP_OFFSET = exports.TYPEID = undefined;
10113
10734
 
10114
10735
  var _QitchConstants = require("../QitchConstants");
10115
10736
 
@@ -10128,7 +10749,8 @@ var LASTUPDATE_OFFSET = exports.LASTUPDATE_OFFSET = SIZE_OFFSET + _QitchConstant
10128
10749
  var FLAGS_OFFSET = exports.FLAGS_OFFSET = LASTUPDATE_OFFSET + _QitchConstants.TIMESTAMP_LENGTH;
10129
10750
  var CHANGE_TYPE_OFFSET = exports.CHANGE_TYPE_OFFSET = FLAGS_OFFSET + _QitchConstants.INT_LENGTH;
10130
10751
  var ORDER_REFERENCE_OFFSET = exports.ORDER_REFERENCE_OFFSET = CHANGE_TYPE_OFFSET + _QitchConstants.ASCIICHAR_LENGTH;
10131
- var LENGTH = exports.LENGTH = ORDER_REFERENCE_OFFSET + _QitchConstants.ORDER_REFERENCE_LENGTH;
10752
+ var EXCODE_OFFSET = exports.EXCODE_OFFSET = ORDER_REFERENCE_OFFSET + _QitchConstants.ORDER_REFERENCE_LENGTH;
10753
+ var LENGTH = exports.LENGTH = EXCODE_OFFSET + _QitchConstants.EXCODE_LENGTH;
10132
10754
 
10133
10755
  var BookOrderFlags = exports.BookOrderFlags = function () {
10134
10756
  function BookOrderFlags() {
@@ -10546,7 +11168,7 @@ var LENGTH = exports.LENGTH = DECIMALBIDSIZE_OFFSET + _QitchConstants.DOUBLE_LEN
10546
11168
  "use strict";
10547
11169
 
10548
11170
  exports.__esModule = true;
10549
- exports.LENGTH = exports.CAVEATEMPTOR_OFFSET = exports.PQE_OFFSET = exports.REGSHOSTATUS_OFFSET = exports.HALTINDICATOR_OFFSET = exports.HALTSTATUS_OFFSET = exports.CURRENCYID_OFFSET = exports.INSTRUMENTTYPE_OFFSET = exports.EXCODE_OFFSET = exports.LOCATECODE_OFFSET = exports.SYMBOL_OFFSET = exports.TYPEID = undefined;
11171
+ exports.LENGTH = exports.BOARDLOTSIZE_OFFSET = exports.CAVEATEMPTOR_OFFSET = exports.PQE_OFFSET = exports.REGSHOSTATUS_OFFSET = exports.HALTINDICATOR_OFFSET = exports.HALTSTATUS_OFFSET = exports.CURRENCYID_OFFSET = exports.INSTRUMENTTYPE_OFFSET = exports.EXCODE_OFFSET = exports.LOCATECODE_OFFSET = exports.SYMBOL_OFFSET = exports.TYPEID = undefined;
10550
11172
 
10551
11173
  var _QitchConstants = require("../QitchConstants");
10552
11174
 
@@ -10562,7 +11184,8 @@ var HALTINDICATOR_OFFSET = exports.HALTINDICATOR_OFFSET = HALTSTATUS_OFFSET + _Q
10562
11184
  var REGSHOSTATUS_OFFSET = exports.REGSHOSTATUS_OFFSET = HALTINDICATOR_OFFSET + _QitchConstants.BYTE_LENGTH;
10563
11185
  var PQE_OFFSET = exports.PQE_OFFSET = REGSHOSTATUS_OFFSET + _QitchConstants.ASCIICHAR_LENGTH;
10564
11186
  var CAVEATEMPTOR_OFFSET = exports.CAVEATEMPTOR_OFFSET = PQE_OFFSET + _QitchConstants.BYTE_LENGTH;
10565
- var LENGTH = exports.LENGTH = CAVEATEMPTOR_OFFSET + _QitchConstants.BYTE_LENGTH;
11187
+ var BOARDLOTSIZE_OFFSET = exports.BOARDLOTSIZE_OFFSET = CAVEATEMPTOR_OFFSET + _QitchConstants.BYTE_LENGTH;
11188
+ var LENGTH = exports.LENGTH = BOARDLOTSIZE_OFFSET + _QitchConstants.INT_LENGTH;
10566
11189
  }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],require("timers").setImmediate,require("timers").clearImmediate,"/lib/qitch/marketDataDefinition/SymbolInfoDef.js","/lib/qitch/marketDataDefinition")
10567
11190
  },{"../QitchConstants":26,"_process":114,"buffer":104,"timers":135}],85:[function(require,module,exports){
10568
11191
  (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,setImmediate,clearImmediate,__filename,__dirname){
@@ -10975,7 +11598,7 @@ exports.__esModule = true;
10975
11598
  */
10976
11599
 
10977
11600
  var LIBRARY_NAME = exports.LIBRARY_NAME = "JavaScript";
10978
- var VERSION = exports.VERSION = "2.21.0";
11601
+ var VERSION = exports.VERSION = "2.24.0";
10979
11602
 
10980
11603
  /**
10981
11604
  * Streamer message api namespace.
@@ -11027,7 +11650,17 @@ messages.MessageTypeNames = {
11027
11650
  STATS_RESPONSE: 'C13',
11028
11651
  EXCHANGE_SUBSCRIBE: 'C14',
11029
11652
  EXCHANGE_RESPONSE: 'C15',
11030
- EXCHANGE_UNSUBSCRIBE_RESPONSE: 'C16'
11653
+ EXCHANGE_UNSUBSCRIBE_RESPONSE: 'C16',
11654
+ NEWS_SUBSCRIBE: 'C17',
11655
+ NEWS_SUBSCRIBE_RESPONSE: 'C18',
11656
+ ALERTS_SUBUNSUB: 'C19',
11657
+ ALERTS_SUBUNSUB_RESPONSE: 'C20',
11658
+ TRADE_SUBSCRIBE: 'C21',
11659
+ TRADE_SUBSCRIBE_RESPONSE: 'C22',
11660
+ NEWS_UNSUBSCRIBE_RESPONSE: 'C23',
11661
+ NEWS_COMMAND: 'C24',
11662
+ NEWS_CMD_FILTER_REFRESH_RESPONSE: 'C25',
11663
+ NEWS_CMD_FILTER_RESPONSE: 'C26'
11031
11664
  },
11032
11665
  /**
11033
11666
  * Name space for data message type identifiers.<br>
@@ -11051,7 +11684,9 @@ messages.MessageTypeNames = {
11051
11684
  LIMITUPLIMITDOWN: 'D14',
11052
11685
  IVGREEKS: 'D15',
11053
11686
  IMBALANCESTATUS: 'D16',
11054
- ALERT: 'D17'
11687
+ ALERT: 'D17',
11688
+ NEWS: 'D18',
11689
+ TRADENOTIFICATION: 'D19'
11055
11690
  }
11056
11691
  };
11057
11692
 
@@ -11177,6 +11812,103 @@ messages.control.ExchangeSubscribeMessage = function () {
11177
11812
  };
11178
11813
  messages.control.ExchangeSubscribeMessage.prototype = new messages.control.CtrlMessage();
11179
11814
 
11815
+ /**
11816
+ * Creates an news subscribe message.
11817
+ * @constructor
11818
+ */
11819
+ messages.control.NewsSubscribeMessage = function () {
11820
+ this.init(messages.MessageTypeNames.ctrl.NEWS_SUBSCRIBE);
11821
+
11822
+ /**
11823
+ * The action the server will taken when receiving this message.
11824
+ * @type {string}
11825
+ * @see exports.messages.control.Action
11826
+ */
11827
+ this.action = null;
11828
+
11829
+ /**
11830
+ * The news filters to subscribe for.
11831
+ * @type {Array.<string>}
11832
+ */
11833
+ this.newsFilters = null;
11834
+
11835
+ /**
11836
+ * Requested message mime-type format.
11837
+ * @type {string}
11838
+ * @see exports.messages.MimeTypes
11839
+ */
11840
+ this.mimetype = null;
11841
+ };
11842
+ messages.control.NewsSubscribeMessage.prototype = new messages.control.CtrlMessage();
11843
+
11844
+ /**
11845
+ * Creates an news reset message.
11846
+ * @constructor
11847
+ */
11848
+ messages.control.NewsCommandMessage = function () {
11849
+ this.init(messages.MessageTypeNames.ctrl.NEWS_COMMAND);
11850
+
11851
+ /**
11852
+ * The action the server will taken when receiving this message.
11853
+ * @type {string}
11854
+ * @see exports.messages.control.Action
11855
+ */
11856
+ this.newsAction = null;
11857
+
11858
+ /**
11859
+ * Requested message mime-type format.
11860
+ * @type {string}
11861
+ * @see exports.messages.MimeTypes
11862
+ */
11863
+ this.mimetype = null;
11864
+ };
11865
+ messages.control.NewsCommandMessage.prototype = new messages.control.CtrlMessage();
11866
+
11867
+ /**
11868
+ * Creates an news subscribe message.
11869
+ * @constructor
11870
+ */
11871
+ messages.control.AlertsSubUnsubMessage = function () {
11872
+ this.init(messages.MessageTypeNames.ctrl.ALERTS_SUBUNSUB);
11873
+
11874
+ /**
11875
+ * sub/unsub for alerts.
11876
+ * @type {string}
11877
+ */
11878
+ this.operation = null;
11879
+
11880
+ /**
11881
+ * Requested message mime-type format.
11882
+ * @type {string}
11883
+ * @see exports.messages.MimeTypes
11884
+ */
11885
+ this.mimetype = null;
11886
+ };
11887
+ messages.control.AlertsSubUnsubMessage.prototype = new messages.control.CtrlMessage();
11888
+
11889
+ /**
11890
+ * Creates Trade notification subscribe message.
11891
+ * @constructor
11892
+ */
11893
+
11894
+ messages.control.TradeSubscribeMessage = function () {
11895
+ this.init(messages.MessageTypeNames.ctrl.TRADE_SUBSCRIBE);
11896
+
11897
+ /**
11898
+ * The subscribe/un-subscribe for trade notifications.
11899
+ * @type {Array.<string>}
11900
+ */
11901
+ this.operation = null;
11902
+
11903
+ /**
11904
+ * Requested message mime-type format.
11905
+ * @type {string}
11906
+ * @see exports.messages.MimeTypes
11907
+ */
11908
+ this.mimetype = null;
11909
+ };
11910
+ messages.control.TradeSubscribeMessage.prototype = new messages.control.CtrlMessage();
11911
+
11180
11912
  /**
11181
11913
  * Base class for response exports.
11182
11914
  * @abstract
@@ -11235,6 +11967,16 @@ messages.control.ExchangeSubscribeResponse = function () {
11235
11967
 
11236
11968
  messages.control.ExchangeSubscribeResponse.prototype = new messages.control.BaseResponse();
11237
11969
 
11970
+ /**
11971
+ * Creates Trade notification subscribe response message.
11972
+ * @constructor
11973
+ */
11974
+ messages.control.TradeSubscribeResponse = function () {
11975
+ this.init(messages.MessageTypeNames.ctrl.TRADE_SUBSCRIBE_RESPONSE);
11976
+ };
11977
+
11978
+ messages.control.TradeSubscribeResponse.prototype = new messages.control.BaseResponse();
11979
+
11238
11980
  /**
11239
11981
  * Creates an un-subscribe response message.
11240
11982
  * @constructor
@@ -11260,6 +12002,21 @@ messages.control.ExchangeUnsubscribeResponse = function () {
11260
12002
 
11261
12003
  messages.control.ExchangeUnsubscribeResponse.prototype = new messages.control.BaseResponse();
11262
12004
 
12005
+ /**
12006
+ * Creates an news un-subscribe response message.
12007
+ * @constructor
12008
+ */
12009
+ messages.control.NewsUnsubscribeResponse = function () {
12010
+ this.init(messages.MessageTypeNames.ctrl.NEWS_UNSUBSCRIBE_RESPONSE);
12011
+
12012
+ /**
12013
+ *
12014
+ * @type {Array.<messages.control.StreamEntitlement>}
12015
+ */
12016
+ this.unsubscribed = null;
12017
+ };
12018
+ messages.control.NewsUnsubscribeResponse.prototype = new messages.control.BaseResponse();
12019
+
11263
12020
  /**
11264
12021
  * Creates a stream entitlement info.
11265
12022
  * @constructor
@@ -11421,6 +12178,11 @@ messages.control.StatsResponse = function () {
11421
12178
  * @type {number}
11422
12179
  */
11423
12180
  this.numberOfSubscribedExchanges = null;
12181
+ /**
12182
+ *
12183
+ * @type {number}
12184
+ */
12185
+ this.numberOfSubscribedTrades = null;
11424
12186
  };
11425
12187
  messages.control.StatsResponse.prototype = new messages.control.BaseResponse();
11426
12188
 
@@ -11482,6 +12244,17 @@ messages.control.Action = {
11482
12244
  UNSUBSCRIBE: "UNSUBSCRIBE"
11483
12245
  };
11484
12246
 
12247
+ /**
12248
+ * Enumeration for associations.
12249
+ * @enum
12250
+ * @readonly
12251
+ */
12252
+ messages.control.Association = {
12253
+ AND: "AND",
12254
+ OR: "OR",
12255
+ NOT: "NOT"
12256
+ };
12257
+
11485
12258
  /**
11486
12259
  * Enumeration for streaming message types.
11487
12260
  * @enum