@ariva-mds/mds 2.13.0 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (535) hide show
  1. package/lib/cjs/index.js +102 -65
  2. package/lib/cjs/types/index.d.ts +30 -11
  3. package/lib/cjs/types/index.d.ts.map +1 -1
  4. package/lib/esm/index.mjs +108 -68
  5. package/lib/esm/types/index.d.ts +30 -11
  6. package/lib/esm/types/index.d.ts.map +1 -1
  7. package/package.json +1 -1
  8. package/lib/cjs/models/Alarm.js +0 -84
  9. package/lib/cjs/models/AlarmAllOf.js +0 -73
  10. package/lib/cjs/models/AlarmId.js +0 -50
  11. package/lib/cjs/models/AlarmReachedEvent.js +0 -87
  12. package/lib/cjs/models/AlarmReachedEventAllOf.js +0 -51
  13. package/lib/cjs/models/AlarmValue.js +0 -52
  14. package/lib/cjs/models/AlarmsReachedGet200Response.js +0 -87
  15. package/lib/cjs/models/BidAskHistory.js +0 -61
  16. package/lib/cjs/models/BidAskHistoryAllOf.js +0 -51
  17. package/lib/cjs/models/BidAskHistoryData.js +0 -62
  18. package/lib/cjs/models/ContinuationToken.js +0 -50
  19. package/lib/cjs/models/IdFieldsInstrument.js +0 -50
  20. package/lib/cjs/models/IdFieldsListing.js +0 -58
  21. package/lib/cjs/models/InstrumentsGet200Response.js +0 -53
  22. package/lib/cjs/models/InstrumentsGet200Response1.js +0 -61
  23. package/lib/cjs/models/InstrumentsInstrumentIdListingsGet200Response.js +0 -51
  24. package/lib/cjs/models/InstrumentsInstrumentIdMarketstatesGet200Response.js +0 -51
  25. package/lib/cjs/models/ListTotalResultCount.js +0 -50
  26. package/lib/cjs/models/Listingdata.js +0 -66
  27. package/lib/cjs/models/ListingdataCefFields.js +0 -55
  28. package/lib/cjs/models/ListingdataT7Fields.js +0 -53
  29. package/lib/cjs/models/ListingdataWithId.js +0 -74
  30. package/lib/cjs/models/ListingdataWithIdAndQuality.js +0 -77
  31. package/lib/cjs/models/ListingdataWithIdAndQualityAllOf.js +0 -51
  32. package/lib/cjs/models/ListsListIdTopTradecountGet200Response.js +0 -51
  33. package/lib/cjs/models/Marketdepth.js +0 -58
  34. package/lib/cjs/models/MarketdepthEntry.js +0 -54
  35. package/lib/cjs/models/MarketdepthT7Fields.js +0 -66
  36. package/lib/cjs/models/MarketdepthWithId.js +0 -71
  37. package/lib/cjs/models/MarketdepthWithIdAllOf.js +0 -51
  38. package/lib/cjs/models/Marketstate.js +0 -88
  39. package/lib/cjs/models/MarketstateResponseSearch.js +0 -100
  40. package/lib/cjs/models/MarketstateResponseSearchAllOf.js +0 -50
  41. package/lib/cjs/models/MarketstateWithIdAllOf.js +0 -50
  42. package/lib/cjs/models/MarketstatesGet200Response.js +0 -51
  43. package/lib/cjs/models/MarketstatesGet200Response1.js +0 -100
  44. package/lib/cjs/models/MarketstatesInstrumentIdSourceIdMarketdepthGet200Response.js +0 -71
  45. package/lib/cjs/models/Masterdata.js +0 -59
  46. package/lib/cjs/models/MasterdataWithId.js +0 -61
  47. package/lib/cjs/models/OfficialSymbols.js +0 -69
  48. package/lib/cjs/models/OfficialSymbolsCommodity.js +0 -52
  49. package/lib/cjs/models/OfficialSymbolsCrypto.js +0 -52
  50. package/lib/cjs/models/OfficialSymbolsCurrency.js +0 -52
  51. package/lib/cjs/models/OfficialSymbolsEurexFuture.js +0 -52
  52. package/lib/cjs/models/OfficialSymbolsEurexOption.js +0 -56
  53. package/lib/cjs/models/PerformanceData.js +0 -64
  54. package/lib/cjs/models/PerformanceDataAllOf.js +0 -56
  55. package/lib/cjs/models/PerformanceDataForTimeRange.js +0 -106
  56. package/lib/cjs/models/Sourcedata.js +0 -57
  57. package/lib/cjs/models/SourcesGet200Response.js +0 -51
  58. package/lib/cjs/models/SourcesSourceIdListingsGet200Response.js +0 -53
  59. package/lib/cjs/models/SourcesSourceIdListingsGet200Response1.js +0 -74
  60. package/lib/cjs/models/SourcesSourceIdMarketstatesGet200Response.js +0 -53
  61. package/lib/cjs/models/SourcesSourceIdMarketstatesGet200Response1.js +0 -98
  62. package/lib/cjs/models/SourcesSourceIdTradetickerGet200Response.js +0 -53
  63. package/lib/cjs/models/SourcesSourceIdTradetickerGet200Response1.js +0 -64
  64. package/lib/cjs/models/StringValueMultiRange.js +0 -52
  65. package/lib/cjs/models/TickHistory.js +0 -61
  66. package/lib/cjs/models/TickHistoryAllOf.js +0 -51
  67. package/lib/cjs/models/TickHistoryData.js +0 -58
  68. package/lib/cjs/models/TimeRange.js +0 -51
  69. package/lib/cjs/models/Timeseries.js +0 -61
  70. package/lib/cjs/models/TimeseriesAllOf.js +0 -51
  71. package/lib/cjs/models/TimeseriesData.js +0 -64
  72. package/lib/cjs/models/TopflopEntry.js +0 -76
  73. package/lib/cjs/models/TopflopEntryAllOf.js +0 -66
  74. package/lib/cjs/models/TopflopList.js +0 -51
  75. package/lib/cjs/models/TradetickerEvent.js +0 -64
  76. package/lib/cjs/models/TradetickerEventAllOf.js +0 -54
  77. package/lib/cjs/models/Tradingtime.js +0 -62
  78. package/lib/cjs/models/TradingtimeByAssetDefinition.js +0 -54
  79. package/lib/cjs/models/TradingtimeDefinition.js +0 -87
  80. package/lib/cjs/models/TradingtimeDetails.js +0 -60
  81. package/lib/cjs/models/TradingtimeException.js +0 -50
  82. package/lib/cjs/models/TradingtimeInfoReply.js +0 -57
  83. package/lib/cjs/models/TradingtimePartialException.js +0 -53
  84. package/lib/cjs/models/WebSocketCommandAuthenticate.js +0 -50
  85. package/lib/cjs/models/WebSocketCommandCancel.js +0 -50
  86. package/lib/cjs/models/WebSocketCommandGetSource.js +0 -50
  87. package/lib/cjs/models/WebSocketCommandHeartbeat.js +0 -50
  88. package/lib/cjs/models/WebSocketCommandListInstrumentListings.js +0 -50
  89. package/lib/cjs/models/WebSocketCommandPriority.js +0 -52
  90. package/lib/cjs/models/WebSocketCommandSubscribeListTopflop.js +0 -67
  91. package/lib/cjs/models/WebSocketCommandSubscribeMarketstates.js +0 -53
  92. package/lib/cjs/models/WebSocketCommandSubscribeSourceTradeticker.js +0 -59
  93. package/lib/cjs/models/WebSocketMessage.js +0 -73
  94. package/lib/cjs/models/WebSocketRequest.js +0 -77
  95. package/lib/cjs/models/index.js +0 -116
  96. package/lib/cjs/types/models/Alarm.d.ts +0 -100
  97. package/lib/cjs/types/models/Alarm.d.ts.map +0 -1
  98. package/lib/cjs/types/models/AlarmAllOf.d.ts +0 -69
  99. package/lib/cjs/types/models/AlarmAllOf.d.ts.map +0 -1
  100. package/lib/cjs/types/models/AlarmId.d.ts +0 -32
  101. package/lib/cjs/types/models/AlarmId.d.ts.map +0 -1
  102. package/lib/cjs/types/models/AlarmReachedEvent.d.ts +0 -107
  103. package/lib/cjs/types/models/AlarmReachedEvent.d.ts.map +0 -1
  104. package/lib/cjs/types/models/AlarmReachedEventAllOf.d.ts +0 -33
  105. package/lib/cjs/types/models/AlarmReachedEventAllOf.d.ts.map +0 -1
  106. package/lib/cjs/types/models/AlarmValue.d.ts +0 -38
  107. package/lib/cjs/types/models/AlarmValue.d.ts.map +0 -1
  108. package/lib/cjs/types/models/AlarmsReachedGet200Response.d.ts +0 -107
  109. package/lib/cjs/types/models/AlarmsReachedGet200Response.d.ts.map +0 -1
  110. package/lib/cjs/types/models/BidAskHistory.d.ts +0 -64
  111. package/lib/cjs/types/models/BidAskHistory.d.ts.map +0 -1
  112. package/lib/cjs/types/models/BidAskHistoryAllOf.d.ts +0 -33
  113. package/lib/cjs/types/models/BidAskHistoryAllOf.d.ts.map +0 -1
  114. package/lib/cjs/types/models/BidAskHistoryData.d.ts +0 -69
  115. package/lib/cjs/types/models/BidAskHistoryData.d.ts.map +0 -1
  116. package/lib/cjs/types/models/ContinuationToken.d.ts +0 -32
  117. package/lib/cjs/types/models/ContinuationToken.d.ts.map +0 -1
  118. package/lib/cjs/types/models/IdFieldsInstrument.d.ts +0 -32
  119. package/lib/cjs/types/models/IdFieldsInstrument.d.ts.map +0 -1
  120. package/lib/cjs/types/models/IdFieldsListing.d.ts +0 -57
  121. package/lib/cjs/types/models/IdFieldsListing.d.ts.map +0 -1
  122. package/lib/cjs/types/models/InstrumentsGet200Response.d.ts +0 -39
  123. package/lib/cjs/types/models/InstrumentsGet200Response.d.ts.map +0 -1
  124. package/lib/cjs/types/models/InstrumentsGet200Response1.d.ts +0 -67
  125. package/lib/cjs/types/models/InstrumentsGet200Response1.d.ts.map +0 -1
  126. package/lib/cjs/types/models/InstrumentsInstrumentIdListingsGet200Response.d.ts +0 -33
  127. package/lib/cjs/types/models/InstrumentsInstrumentIdListingsGet200Response.d.ts.map +0 -1
  128. package/lib/cjs/types/models/InstrumentsInstrumentIdMarketstatesGet200Response.d.ts +0 -33
  129. package/lib/cjs/types/models/InstrumentsInstrumentIdMarketstatesGet200Response.d.ts.map +0 -1
  130. package/lib/cjs/types/models/ListTotalResultCount.d.ts +0 -32
  131. package/lib/cjs/types/models/ListTotalResultCount.d.ts.map +0 -1
  132. package/lib/cjs/types/models/Listingdata.d.ts +0 -77
  133. package/lib/cjs/types/models/Listingdata.d.ts.map +0 -1
  134. package/lib/cjs/types/models/ListingdataCefFields.d.ts +0 -45
  135. package/lib/cjs/types/models/ListingdataCefFields.d.ts.map +0 -1
  136. package/lib/cjs/types/models/ListingdataT7Fields.d.ts +0 -39
  137. package/lib/cjs/types/models/ListingdataT7Fields.d.ts.map +0 -1
  138. package/lib/cjs/types/models/ListingdataWithId.d.ts +0 -102
  139. package/lib/cjs/types/models/ListingdataWithId.d.ts.map +0 -1
  140. package/lib/cjs/types/models/ListingdataWithIdAndQuality.d.ts +0 -109
  141. package/lib/cjs/types/models/ListingdataWithIdAndQuality.d.ts.map +0 -1
  142. package/lib/cjs/types/models/ListingdataWithIdAndQualityAllOf.d.ts +0 -33
  143. package/lib/cjs/types/models/ListingdataWithIdAndQualityAllOf.d.ts.map +0 -1
  144. package/lib/cjs/types/models/ListsListIdTopTradecountGet200Response.d.ts +0 -33
  145. package/lib/cjs/types/models/ListsListIdTopTradecountGet200Response.d.ts.map +0 -1
  146. package/lib/cjs/types/models/Marketdepth.d.ts +0 -52
  147. package/lib/cjs/types/models/Marketdepth.d.ts.map +0 -1
  148. package/lib/cjs/types/models/MarketdepthEntry.d.ts +0 -44
  149. package/lib/cjs/types/models/MarketdepthEntry.d.ts.map +0 -1
  150. package/lib/cjs/types/models/MarketdepthT7Fields.d.ts +0 -80
  151. package/lib/cjs/types/models/MarketdepthT7Fields.d.ts.map +0 -1
  152. package/lib/cjs/types/models/MarketdepthWithId.d.ts +0 -90
  153. package/lib/cjs/types/models/MarketdepthWithId.d.ts.map +0 -1
  154. package/lib/cjs/types/models/MarketdepthWithIdAllOf.d.ts +0 -33
  155. package/lib/cjs/types/models/MarketdepthWithIdAllOf.d.ts.map +0 -1
  156. package/lib/cjs/types/models/Marketstate.d.ts +0 -130
  157. package/lib/cjs/types/models/Marketstate.d.ts.map +0 -1
  158. package/lib/cjs/types/models/MarketstateResponseSearch.d.ts +0 -169
  159. package/lib/cjs/types/models/MarketstateResponseSearch.d.ts.map +0 -1
  160. package/lib/cjs/types/models/MarketstateResponseSearchAllOf.d.ts +0 -34
  161. package/lib/cjs/types/models/MarketstateResponseSearchAllOf.d.ts.map +0 -1
  162. package/lib/cjs/types/models/MarketstateWithIdAllOf.d.ts +0 -32
  163. package/lib/cjs/types/models/MarketstateWithIdAllOf.d.ts.map +0 -1
  164. package/lib/cjs/types/models/MarketstatesGet200Response.d.ts +0 -33
  165. package/lib/cjs/types/models/MarketstatesGet200Response.d.ts.map +0 -1
  166. package/lib/cjs/types/models/MarketstatesGet200Response1.d.ts +0 -169
  167. package/lib/cjs/types/models/MarketstatesGet200Response1.d.ts.map +0 -1
  168. package/lib/cjs/types/models/MarketstatesInstrumentIdSourceIdMarketdepthGet200Response.d.ts +0 -90
  169. package/lib/cjs/types/models/MarketstatesInstrumentIdSourceIdMarketdepthGet200Response.d.ts.map +0 -1
  170. package/lib/cjs/types/models/Masterdata.d.ts +0 -61
  171. package/lib/cjs/types/models/Masterdata.d.ts.map +0 -1
  172. package/lib/cjs/types/models/MasterdataWithId.d.ts +0 -67
  173. package/lib/cjs/types/models/MasterdataWithId.d.ts.map +0 -1
  174. package/lib/cjs/types/models/OfficialSymbols.d.ts +0 -79
  175. package/lib/cjs/types/models/OfficialSymbols.d.ts.map +0 -1
  176. package/lib/cjs/types/models/OfficialSymbolsCommodity.d.ts +0 -38
  177. package/lib/cjs/types/models/OfficialSymbolsCommodity.d.ts.map +0 -1
  178. package/lib/cjs/types/models/OfficialSymbolsCrypto.d.ts +0 -38
  179. package/lib/cjs/types/models/OfficialSymbolsCrypto.d.ts.map +0 -1
  180. package/lib/cjs/types/models/OfficialSymbolsCurrency.d.ts +0 -38
  181. package/lib/cjs/types/models/OfficialSymbolsCurrency.d.ts.map +0 -1
  182. package/lib/cjs/types/models/OfficialSymbolsEurexFuture.d.ts +0 -38
  183. package/lib/cjs/types/models/OfficialSymbolsEurexFuture.d.ts.map +0 -1
  184. package/lib/cjs/types/models/OfficialSymbolsEurexOption.d.ts +0 -50
  185. package/lib/cjs/types/models/OfficialSymbolsEurexOption.d.ts.map +0 -1
  186. package/lib/cjs/types/models/PerformanceData.d.ts +0 -71
  187. package/lib/cjs/types/models/PerformanceData.d.ts.map +0 -1
  188. package/lib/cjs/types/models/PerformanceDataAllOf.d.ts +0 -46
  189. package/lib/cjs/types/models/PerformanceDataAllOf.d.ts.map +0 -1
  190. package/lib/cjs/types/models/PerformanceDataForTimeRange.d.ts +0 -185
  191. package/lib/cjs/types/models/PerformanceDataForTimeRange.d.ts.map +0 -1
  192. package/lib/cjs/types/models/Sourcedata.d.ts +0 -54
  193. package/lib/cjs/types/models/Sourcedata.d.ts.map +0 -1
  194. package/lib/cjs/types/models/SourcesGet200Response.d.ts +0 -33
  195. package/lib/cjs/types/models/SourcesGet200Response.d.ts.map +0 -1
  196. package/lib/cjs/types/models/SourcesSourceIdListingsGet200Response.d.ts +0 -39
  197. package/lib/cjs/types/models/SourcesSourceIdListingsGet200Response.d.ts.map +0 -1
  198. package/lib/cjs/types/models/SourcesSourceIdListingsGet200Response1.d.ts +0 -102
  199. package/lib/cjs/types/models/SourcesSourceIdListingsGet200Response1.d.ts.map +0 -1
  200. package/lib/cjs/types/models/SourcesSourceIdMarketstatesGet200Response.d.ts +0 -39
  201. package/lib/cjs/types/models/SourcesSourceIdMarketstatesGet200Response.d.ts.map +0 -1
  202. package/lib/cjs/types/models/SourcesSourceIdMarketstatesGet200Response1.d.ts +0 -161
  203. package/lib/cjs/types/models/SourcesSourceIdMarketstatesGet200Response1.d.ts.map +0 -1
  204. package/lib/cjs/types/models/SourcesSourceIdTradetickerGet200Response.d.ts +0 -39
  205. package/lib/cjs/types/models/SourcesSourceIdTradetickerGet200Response.d.ts.map +0 -1
  206. package/lib/cjs/types/models/SourcesSourceIdTradetickerGet200Response1.d.ts +0 -71
  207. package/lib/cjs/types/models/SourcesSourceIdTradetickerGet200Response1.d.ts.map +0 -1
  208. package/lib/cjs/types/models/StringValueMultiRange.d.ts +0 -38
  209. package/lib/cjs/types/models/StringValueMultiRange.d.ts.map +0 -1
  210. package/lib/cjs/types/models/TickHistory.d.ts +0 -64
  211. package/lib/cjs/types/models/TickHistory.d.ts.map +0 -1
  212. package/lib/cjs/types/models/TickHistoryAllOf.d.ts +0 -33
  213. package/lib/cjs/types/models/TickHistoryAllOf.d.ts.map +0 -1
  214. package/lib/cjs/types/models/TickHistoryData.d.ts +0 -57
  215. package/lib/cjs/types/models/TickHistoryData.d.ts.map +0 -1
  216. package/lib/cjs/types/models/TimeRange.d.ts +0 -39
  217. package/lib/cjs/types/models/TimeRange.d.ts.map +0 -1
  218. package/lib/cjs/types/models/Timeseries.d.ts +0 -64
  219. package/lib/cjs/types/models/Timeseries.d.ts.map +0 -1
  220. package/lib/cjs/types/models/TimeseriesAllOf.d.ts +0 -33
  221. package/lib/cjs/types/models/TimeseriesAllOf.d.ts.map +0 -1
  222. package/lib/cjs/types/models/TimeseriesData.d.ts +0 -74
  223. package/lib/cjs/types/models/TimeseriesData.d.ts.map +0 -1
  224. package/lib/cjs/types/models/TopflopEntry.d.ts +0 -103
  225. package/lib/cjs/types/models/TopflopEntry.d.ts.map +0 -1
  226. package/lib/cjs/types/models/TopflopEntryAllOf.d.ts +0 -72
  227. package/lib/cjs/types/models/TopflopEntryAllOf.d.ts.map +0 -1
  228. package/lib/cjs/types/models/TopflopList.d.ts +0 -33
  229. package/lib/cjs/types/models/TopflopList.d.ts.map +0 -1
  230. package/lib/cjs/types/models/TradetickerEvent.d.ts +0 -71
  231. package/lib/cjs/types/models/TradetickerEvent.d.ts.map +0 -1
  232. package/lib/cjs/types/models/TradetickerEventAllOf.d.ts +0 -40
  233. package/lib/cjs/types/models/TradetickerEventAllOf.d.ts.map +0 -1
  234. package/lib/cjs/types/models/Tradingtime.d.ts +0 -64
  235. package/lib/cjs/types/models/Tradingtime.d.ts.map +0 -1
  236. package/lib/cjs/types/models/TradingtimeByAssetDefinition.d.ts +0 -40
  237. package/lib/cjs/types/models/TradingtimeByAssetDefinition.d.ts.map +0 -1
  238. package/lib/cjs/types/models/TradingtimeDefinition.d.ts +0 -137
  239. package/lib/cjs/types/models/TradingtimeDefinition.d.ts.map +0 -1
  240. package/lib/cjs/types/models/TradingtimeDetails.d.ts +0 -62
  241. package/lib/cjs/types/models/TradingtimeDetails.d.ts.map +0 -1
  242. package/lib/cjs/types/models/TradingtimeException.d.ts +0 -32
  243. package/lib/cjs/types/models/TradingtimeException.d.ts.map +0 -1
  244. package/lib/cjs/types/models/TradingtimeInfoReply.d.ts +0 -51
  245. package/lib/cjs/types/models/TradingtimeInfoReply.d.ts.map +0 -1
  246. package/lib/cjs/types/models/TradingtimePartialException.d.ts +0 -39
  247. package/lib/cjs/types/models/TradingtimePartialException.d.ts.map +0 -1
  248. package/lib/cjs/types/models/WebSocketCommandAuthenticate.d.ts +0 -32
  249. package/lib/cjs/types/models/WebSocketCommandAuthenticate.d.ts.map +0 -1
  250. package/lib/cjs/types/models/WebSocketCommandCancel.d.ts +0 -32
  251. package/lib/cjs/types/models/WebSocketCommandCancel.d.ts.map +0 -1
  252. package/lib/cjs/types/models/WebSocketCommandGetSource.d.ts +0 -32
  253. package/lib/cjs/types/models/WebSocketCommandGetSource.d.ts.map +0 -1
  254. package/lib/cjs/types/models/WebSocketCommandHeartbeat.d.ts +0 -32
  255. package/lib/cjs/types/models/WebSocketCommandHeartbeat.d.ts.map +0 -1
  256. package/lib/cjs/types/models/WebSocketCommandListInstrumentListings.d.ts +0 -32
  257. package/lib/cjs/types/models/WebSocketCommandListInstrumentListings.d.ts.map +0 -1
  258. package/lib/cjs/types/models/WebSocketCommandPriority.d.ts +0 -38
  259. package/lib/cjs/types/models/WebSocketCommandPriority.d.ts.map +0 -1
  260. package/lib/cjs/types/models/WebSocketCommandSubscribeListTopflop.d.ts +0 -66
  261. package/lib/cjs/types/models/WebSocketCommandSubscribeListTopflop.d.ts.map +0 -1
  262. package/lib/cjs/types/models/WebSocketCommandSubscribeMarketstates.d.ts +0 -39
  263. package/lib/cjs/types/models/WebSocketCommandSubscribeMarketstates.d.ts.map +0 -1
  264. package/lib/cjs/types/models/WebSocketCommandSubscribeSourceTradeticker.d.ts +0 -57
  265. package/lib/cjs/types/models/WebSocketCommandSubscribeSourceTradeticker.d.ts.map +0 -1
  266. package/lib/cjs/types/models/WebSocketMessage.d.ts +0 -91
  267. package/lib/cjs/types/models/WebSocketMessage.d.ts.map +0 -1
  268. package/lib/cjs/types/models/WebSocketRequest.d.ts +0 -95
  269. package/lib/cjs/types/models/WebSocketRequest.d.ts.map +0 -1
  270. package/lib/cjs/types/models/index.d.ts +0 -99
  271. package/lib/cjs/types/models/index.d.ts.map +0 -1
  272. package/lib/esm/models/Alarm.js +0 -77
  273. package/lib/esm/models/AlarmAllOf.js +0 -66
  274. package/lib/esm/models/AlarmId.js +0 -43
  275. package/lib/esm/models/AlarmReachedEvent.js +0 -80
  276. package/lib/esm/models/AlarmReachedEventAllOf.js +0 -44
  277. package/lib/esm/models/AlarmValue.js +0 -45
  278. package/lib/esm/models/AlarmsReachedGet200Response.js +0 -80
  279. package/lib/esm/models/BidAskHistory.js +0 -54
  280. package/lib/esm/models/BidAskHistoryAllOf.js +0 -44
  281. package/lib/esm/models/BidAskHistoryData.js +0 -55
  282. package/lib/esm/models/ContinuationToken.js +0 -43
  283. package/lib/esm/models/IdFieldsInstrument.js +0 -43
  284. package/lib/esm/models/IdFieldsListing.js +0 -51
  285. package/lib/esm/models/InstrumentsGet200Response.js +0 -46
  286. package/lib/esm/models/InstrumentsGet200Response1.js +0 -54
  287. package/lib/esm/models/InstrumentsInstrumentIdListingsGet200Response.js +0 -44
  288. package/lib/esm/models/InstrumentsInstrumentIdMarketstatesGet200Response.js +0 -44
  289. package/lib/esm/models/ListTotalResultCount.js +0 -43
  290. package/lib/esm/models/Listingdata.js +0 -59
  291. package/lib/esm/models/ListingdataCefFields.js +0 -48
  292. package/lib/esm/models/ListingdataT7Fields.js +0 -46
  293. package/lib/esm/models/ListingdataWithId.js +0 -67
  294. package/lib/esm/models/ListingdataWithIdAndQuality.js +0 -70
  295. package/lib/esm/models/ListingdataWithIdAndQualityAllOf.js +0 -44
  296. package/lib/esm/models/ListsListIdTopTradecountGet200Response.js +0 -44
  297. package/lib/esm/models/Marketdepth.js +0 -51
  298. package/lib/esm/models/MarketdepthEntry.js +0 -47
  299. package/lib/esm/models/MarketdepthT7Fields.js +0 -59
  300. package/lib/esm/models/MarketdepthWithId.js +0 -64
  301. package/lib/esm/models/MarketdepthWithIdAllOf.js +0 -44
  302. package/lib/esm/models/Marketstate.js +0 -81
  303. package/lib/esm/models/MarketstateResponseSearch.js +0 -93
  304. package/lib/esm/models/MarketstateResponseSearchAllOf.js +0 -43
  305. package/lib/esm/models/MarketstateWithIdAllOf.js +0 -43
  306. package/lib/esm/models/MarketstatesGet200Response.js +0 -44
  307. package/lib/esm/models/MarketstatesGet200Response1.js +0 -93
  308. package/lib/esm/models/MarketstatesInstrumentIdSourceIdMarketdepthGet200Response.js +0 -64
  309. package/lib/esm/models/Masterdata.js +0 -52
  310. package/lib/esm/models/MasterdataWithId.js +0 -54
  311. package/lib/esm/models/OfficialSymbols.js +0 -62
  312. package/lib/esm/models/OfficialSymbolsCommodity.js +0 -45
  313. package/lib/esm/models/OfficialSymbolsCrypto.js +0 -45
  314. package/lib/esm/models/OfficialSymbolsCurrency.js +0 -45
  315. package/lib/esm/models/OfficialSymbolsEurexFuture.js +0 -45
  316. package/lib/esm/models/OfficialSymbolsEurexOption.js +0 -49
  317. package/lib/esm/models/PerformanceData.js +0 -57
  318. package/lib/esm/models/PerformanceDataAllOf.js +0 -49
  319. package/lib/esm/models/PerformanceDataForTimeRange.js +0 -99
  320. package/lib/esm/models/Sourcedata.js +0 -50
  321. package/lib/esm/models/SourcesGet200Response.js +0 -44
  322. package/lib/esm/models/SourcesSourceIdListingsGet200Response.js +0 -46
  323. package/lib/esm/models/SourcesSourceIdListingsGet200Response1.js +0 -67
  324. package/lib/esm/models/SourcesSourceIdMarketstatesGet200Response.js +0 -46
  325. package/lib/esm/models/SourcesSourceIdMarketstatesGet200Response1.js +0 -91
  326. package/lib/esm/models/SourcesSourceIdTradetickerGet200Response.js +0 -46
  327. package/lib/esm/models/SourcesSourceIdTradetickerGet200Response1.js +0 -57
  328. package/lib/esm/models/StringValueMultiRange.js +0 -45
  329. package/lib/esm/models/TickHistory.js +0 -54
  330. package/lib/esm/models/TickHistoryAllOf.js +0 -44
  331. package/lib/esm/models/TickHistoryData.js +0 -51
  332. package/lib/esm/models/TimeRange.js +0 -45
  333. package/lib/esm/models/Timeseries.js +0 -54
  334. package/lib/esm/models/TimeseriesAllOf.js +0 -44
  335. package/lib/esm/models/TimeseriesData.js +0 -57
  336. package/lib/esm/models/TopflopEntry.js +0 -69
  337. package/lib/esm/models/TopflopEntryAllOf.js +0 -59
  338. package/lib/esm/models/TopflopList.js +0 -44
  339. package/lib/esm/models/TradetickerEvent.js +0 -57
  340. package/lib/esm/models/TradetickerEventAllOf.js +0 -47
  341. package/lib/esm/models/Tradingtime.js +0 -55
  342. package/lib/esm/models/TradingtimeByAssetDefinition.js +0 -47
  343. package/lib/esm/models/TradingtimeDefinition.js +0 -80
  344. package/lib/esm/models/TradingtimeDetails.js +0 -53
  345. package/lib/esm/models/TradingtimeException.js +0 -43
  346. package/lib/esm/models/TradingtimeInfoReply.js +0 -50
  347. package/lib/esm/models/TradingtimePartialException.js +0 -46
  348. package/lib/esm/models/WebSocketCommandAuthenticate.js +0 -43
  349. package/lib/esm/models/WebSocketCommandCancel.js +0 -43
  350. package/lib/esm/models/WebSocketCommandGetSource.js +0 -43
  351. package/lib/esm/models/WebSocketCommandHeartbeat.js +0 -43
  352. package/lib/esm/models/WebSocketCommandListInstrumentListings.js +0 -43
  353. package/lib/esm/models/WebSocketCommandPriority.js +0 -45
  354. package/lib/esm/models/WebSocketCommandSubscribeListTopflop.js +0 -60
  355. package/lib/esm/models/WebSocketCommandSubscribeMarketstates.js +0 -46
  356. package/lib/esm/models/WebSocketCommandSubscribeSourceTradeticker.js +0 -52
  357. package/lib/esm/models/WebSocketMessage.js +0 -66
  358. package/lib/esm/models/WebSocketRequest.js +0 -70
  359. package/lib/esm/models/index.js +0 -100
  360. package/lib/esm/types/models/Alarm.d.ts +0 -100
  361. package/lib/esm/types/models/Alarm.d.ts.map +0 -1
  362. package/lib/esm/types/models/AlarmAllOf.d.ts +0 -69
  363. package/lib/esm/types/models/AlarmAllOf.d.ts.map +0 -1
  364. package/lib/esm/types/models/AlarmId.d.ts +0 -32
  365. package/lib/esm/types/models/AlarmId.d.ts.map +0 -1
  366. package/lib/esm/types/models/AlarmReachedEvent.d.ts +0 -107
  367. package/lib/esm/types/models/AlarmReachedEvent.d.ts.map +0 -1
  368. package/lib/esm/types/models/AlarmReachedEventAllOf.d.ts +0 -33
  369. package/lib/esm/types/models/AlarmReachedEventAllOf.d.ts.map +0 -1
  370. package/lib/esm/types/models/AlarmValue.d.ts +0 -38
  371. package/lib/esm/types/models/AlarmValue.d.ts.map +0 -1
  372. package/lib/esm/types/models/AlarmsReachedGet200Response.d.ts +0 -107
  373. package/lib/esm/types/models/AlarmsReachedGet200Response.d.ts.map +0 -1
  374. package/lib/esm/types/models/BidAskHistory.d.ts +0 -64
  375. package/lib/esm/types/models/BidAskHistory.d.ts.map +0 -1
  376. package/lib/esm/types/models/BidAskHistoryAllOf.d.ts +0 -33
  377. package/lib/esm/types/models/BidAskHistoryAllOf.d.ts.map +0 -1
  378. package/lib/esm/types/models/BidAskHistoryData.d.ts +0 -69
  379. package/lib/esm/types/models/BidAskHistoryData.d.ts.map +0 -1
  380. package/lib/esm/types/models/ContinuationToken.d.ts +0 -32
  381. package/lib/esm/types/models/ContinuationToken.d.ts.map +0 -1
  382. package/lib/esm/types/models/IdFieldsInstrument.d.ts +0 -32
  383. package/lib/esm/types/models/IdFieldsInstrument.d.ts.map +0 -1
  384. package/lib/esm/types/models/IdFieldsListing.d.ts +0 -57
  385. package/lib/esm/types/models/IdFieldsListing.d.ts.map +0 -1
  386. package/lib/esm/types/models/InstrumentsGet200Response.d.ts +0 -39
  387. package/lib/esm/types/models/InstrumentsGet200Response.d.ts.map +0 -1
  388. package/lib/esm/types/models/InstrumentsGet200Response1.d.ts +0 -67
  389. package/lib/esm/types/models/InstrumentsGet200Response1.d.ts.map +0 -1
  390. package/lib/esm/types/models/InstrumentsInstrumentIdListingsGet200Response.d.ts +0 -33
  391. package/lib/esm/types/models/InstrumentsInstrumentIdListingsGet200Response.d.ts.map +0 -1
  392. package/lib/esm/types/models/InstrumentsInstrumentIdMarketstatesGet200Response.d.ts +0 -33
  393. package/lib/esm/types/models/InstrumentsInstrumentIdMarketstatesGet200Response.d.ts.map +0 -1
  394. package/lib/esm/types/models/ListTotalResultCount.d.ts +0 -32
  395. package/lib/esm/types/models/ListTotalResultCount.d.ts.map +0 -1
  396. package/lib/esm/types/models/Listingdata.d.ts +0 -77
  397. package/lib/esm/types/models/Listingdata.d.ts.map +0 -1
  398. package/lib/esm/types/models/ListingdataCefFields.d.ts +0 -45
  399. package/lib/esm/types/models/ListingdataCefFields.d.ts.map +0 -1
  400. package/lib/esm/types/models/ListingdataT7Fields.d.ts +0 -39
  401. package/lib/esm/types/models/ListingdataT7Fields.d.ts.map +0 -1
  402. package/lib/esm/types/models/ListingdataWithId.d.ts +0 -102
  403. package/lib/esm/types/models/ListingdataWithId.d.ts.map +0 -1
  404. package/lib/esm/types/models/ListingdataWithIdAndQuality.d.ts +0 -109
  405. package/lib/esm/types/models/ListingdataWithIdAndQuality.d.ts.map +0 -1
  406. package/lib/esm/types/models/ListingdataWithIdAndQualityAllOf.d.ts +0 -33
  407. package/lib/esm/types/models/ListingdataWithIdAndQualityAllOf.d.ts.map +0 -1
  408. package/lib/esm/types/models/ListsListIdTopTradecountGet200Response.d.ts +0 -33
  409. package/lib/esm/types/models/ListsListIdTopTradecountGet200Response.d.ts.map +0 -1
  410. package/lib/esm/types/models/Marketdepth.d.ts +0 -52
  411. package/lib/esm/types/models/Marketdepth.d.ts.map +0 -1
  412. package/lib/esm/types/models/MarketdepthEntry.d.ts +0 -44
  413. package/lib/esm/types/models/MarketdepthEntry.d.ts.map +0 -1
  414. package/lib/esm/types/models/MarketdepthT7Fields.d.ts +0 -80
  415. package/lib/esm/types/models/MarketdepthT7Fields.d.ts.map +0 -1
  416. package/lib/esm/types/models/MarketdepthWithId.d.ts +0 -90
  417. package/lib/esm/types/models/MarketdepthWithId.d.ts.map +0 -1
  418. package/lib/esm/types/models/MarketdepthWithIdAllOf.d.ts +0 -33
  419. package/lib/esm/types/models/MarketdepthWithIdAllOf.d.ts.map +0 -1
  420. package/lib/esm/types/models/Marketstate.d.ts +0 -130
  421. package/lib/esm/types/models/Marketstate.d.ts.map +0 -1
  422. package/lib/esm/types/models/MarketstateResponseSearch.d.ts +0 -169
  423. package/lib/esm/types/models/MarketstateResponseSearch.d.ts.map +0 -1
  424. package/lib/esm/types/models/MarketstateResponseSearchAllOf.d.ts +0 -34
  425. package/lib/esm/types/models/MarketstateResponseSearchAllOf.d.ts.map +0 -1
  426. package/lib/esm/types/models/MarketstateWithIdAllOf.d.ts +0 -32
  427. package/lib/esm/types/models/MarketstateWithIdAllOf.d.ts.map +0 -1
  428. package/lib/esm/types/models/MarketstatesGet200Response.d.ts +0 -33
  429. package/lib/esm/types/models/MarketstatesGet200Response.d.ts.map +0 -1
  430. package/lib/esm/types/models/MarketstatesGet200Response1.d.ts +0 -169
  431. package/lib/esm/types/models/MarketstatesGet200Response1.d.ts.map +0 -1
  432. package/lib/esm/types/models/MarketstatesInstrumentIdSourceIdMarketdepthGet200Response.d.ts +0 -90
  433. package/lib/esm/types/models/MarketstatesInstrumentIdSourceIdMarketdepthGet200Response.d.ts.map +0 -1
  434. package/lib/esm/types/models/Masterdata.d.ts +0 -61
  435. package/lib/esm/types/models/Masterdata.d.ts.map +0 -1
  436. package/lib/esm/types/models/MasterdataWithId.d.ts +0 -67
  437. package/lib/esm/types/models/MasterdataWithId.d.ts.map +0 -1
  438. package/lib/esm/types/models/OfficialSymbols.d.ts +0 -79
  439. package/lib/esm/types/models/OfficialSymbols.d.ts.map +0 -1
  440. package/lib/esm/types/models/OfficialSymbolsCommodity.d.ts +0 -38
  441. package/lib/esm/types/models/OfficialSymbolsCommodity.d.ts.map +0 -1
  442. package/lib/esm/types/models/OfficialSymbolsCrypto.d.ts +0 -38
  443. package/lib/esm/types/models/OfficialSymbolsCrypto.d.ts.map +0 -1
  444. package/lib/esm/types/models/OfficialSymbolsCurrency.d.ts +0 -38
  445. package/lib/esm/types/models/OfficialSymbolsCurrency.d.ts.map +0 -1
  446. package/lib/esm/types/models/OfficialSymbolsEurexFuture.d.ts +0 -38
  447. package/lib/esm/types/models/OfficialSymbolsEurexFuture.d.ts.map +0 -1
  448. package/lib/esm/types/models/OfficialSymbolsEurexOption.d.ts +0 -50
  449. package/lib/esm/types/models/OfficialSymbolsEurexOption.d.ts.map +0 -1
  450. package/lib/esm/types/models/PerformanceData.d.ts +0 -71
  451. package/lib/esm/types/models/PerformanceData.d.ts.map +0 -1
  452. package/lib/esm/types/models/PerformanceDataAllOf.d.ts +0 -46
  453. package/lib/esm/types/models/PerformanceDataAllOf.d.ts.map +0 -1
  454. package/lib/esm/types/models/PerformanceDataForTimeRange.d.ts +0 -185
  455. package/lib/esm/types/models/PerformanceDataForTimeRange.d.ts.map +0 -1
  456. package/lib/esm/types/models/Sourcedata.d.ts +0 -54
  457. package/lib/esm/types/models/Sourcedata.d.ts.map +0 -1
  458. package/lib/esm/types/models/SourcesGet200Response.d.ts +0 -33
  459. package/lib/esm/types/models/SourcesGet200Response.d.ts.map +0 -1
  460. package/lib/esm/types/models/SourcesSourceIdListingsGet200Response.d.ts +0 -39
  461. package/lib/esm/types/models/SourcesSourceIdListingsGet200Response.d.ts.map +0 -1
  462. package/lib/esm/types/models/SourcesSourceIdListingsGet200Response1.d.ts +0 -102
  463. package/lib/esm/types/models/SourcesSourceIdListingsGet200Response1.d.ts.map +0 -1
  464. package/lib/esm/types/models/SourcesSourceIdMarketstatesGet200Response.d.ts +0 -39
  465. package/lib/esm/types/models/SourcesSourceIdMarketstatesGet200Response.d.ts.map +0 -1
  466. package/lib/esm/types/models/SourcesSourceIdMarketstatesGet200Response1.d.ts +0 -161
  467. package/lib/esm/types/models/SourcesSourceIdMarketstatesGet200Response1.d.ts.map +0 -1
  468. package/lib/esm/types/models/SourcesSourceIdTradetickerGet200Response.d.ts +0 -39
  469. package/lib/esm/types/models/SourcesSourceIdTradetickerGet200Response.d.ts.map +0 -1
  470. package/lib/esm/types/models/SourcesSourceIdTradetickerGet200Response1.d.ts +0 -71
  471. package/lib/esm/types/models/SourcesSourceIdTradetickerGet200Response1.d.ts.map +0 -1
  472. package/lib/esm/types/models/StringValueMultiRange.d.ts +0 -38
  473. package/lib/esm/types/models/StringValueMultiRange.d.ts.map +0 -1
  474. package/lib/esm/types/models/TickHistory.d.ts +0 -64
  475. package/lib/esm/types/models/TickHistory.d.ts.map +0 -1
  476. package/lib/esm/types/models/TickHistoryAllOf.d.ts +0 -33
  477. package/lib/esm/types/models/TickHistoryAllOf.d.ts.map +0 -1
  478. package/lib/esm/types/models/TickHistoryData.d.ts +0 -57
  479. package/lib/esm/types/models/TickHistoryData.d.ts.map +0 -1
  480. package/lib/esm/types/models/TimeRange.d.ts +0 -39
  481. package/lib/esm/types/models/TimeRange.d.ts.map +0 -1
  482. package/lib/esm/types/models/Timeseries.d.ts +0 -64
  483. package/lib/esm/types/models/Timeseries.d.ts.map +0 -1
  484. package/lib/esm/types/models/TimeseriesAllOf.d.ts +0 -33
  485. package/lib/esm/types/models/TimeseriesAllOf.d.ts.map +0 -1
  486. package/lib/esm/types/models/TimeseriesData.d.ts +0 -74
  487. package/lib/esm/types/models/TimeseriesData.d.ts.map +0 -1
  488. package/lib/esm/types/models/TopflopEntry.d.ts +0 -103
  489. package/lib/esm/types/models/TopflopEntry.d.ts.map +0 -1
  490. package/lib/esm/types/models/TopflopEntryAllOf.d.ts +0 -72
  491. package/lib/esm/types/models/TopflopEntryAllOf.d.ts.map +0 -1
  492. package/lib/esm/types/models/TopflopList.d.ts +0 -33
  493. package/lib/esm/types/models/TopflopList.d.ts.map +0 -1
  494. package/lib/esm/types/models/TradetickerEvent.d.ts +0 -71
  495. package/lib/esm/types/models/TradetickerEvent.d.ts.map +0 -1
  496. package/lib/esm/types/models/TradetickerEventAllOf.d.ts +0 -40
  497. package/lib/esm/types/models/TradetickerEventAllOf.d.ts.map +0 -1
  498. package/lib/esm/types/models/Tradingtime.d.ts +0 -64
  499. package/lib/esm/types/models/Tradingtime.d.ts.map +0 -1
  500. package/lib/esm/types/models/TradingtimeByAssetDefinition.d.ts +0 -40
  501. package/lib/esm/types/models/TradingtimeByAssetDefinition.d.ts.map +0 -1
  502. package/lib/esm/types/models/TradingtimeDefinition.d.ts +0 -137
  503. package/lib/esm/types/models/TradingtimeDefinition.d.ts.map +0 -1
  504. package/lib/esm/types/models/TradingtimeDetails.d.ts +0 -62
  505. package/lib/esm/types/models/TradingtimeDetails.d.ts.map +0 -1
  506. package/lib/esm/types/models/TradingtimeException.d.ts +0 -32
  507. package/lib/esm/types/models/TradingtimeException.d.ts.map +0 -1
  508. package/lib/esm/types/models/TradingtimeInfoReply.d.ts +0 -51
  509. package/lib/esm/types/models/TradingtimeInfoReply.d.ts.map +0 -1
  510. package/lib/esm/types/models/TradingtimePartialException.d.ts +0 -39
  511. package/lib/esm/types/models/TradingtimePartialException.d.ts.map +0 -1
  512. package/lib/esm/types/models/WebSocketCommandAuthenticate.d.ts +0 -32
  513. package/lib/esm/types/models/WebSocketCommandAuthenticate.d.ts.map +0 -1
  514. package/lib/esm/types/models/WebSocketCommandCancel.d.ts +0 -32
  515. package/lib/esm/types/models/WebSocketCommandCancel.d.ts.map +0 -1
  516. package/lib/esm/types/models/WebSocketCommandGetSource.d.ts +0 -32
  517. package/lib/esm/types/models/WebSocketCommandGetSource.d.ts.map +0 -1
  518. package/lib/esm/types/models/WebSocketCommandHeartbeat.d.ts +0 -32
  519. package/lib/esm/types/models/WebSocketCommandHeartbeat.d.ts.map +0 -1
  520. package/lib/esm/types/models/WebSocketCommandListInstrumentListings.d.ts +0 -32
  521. package/lib/esm/types/models/WebSocketCommandListInstrumentListings.d.ts.map +0 -1
  522. package/lib/esm/types/models/WebSocketCommandPriority.d.ts +0 -38
  523. package/lib/esm/types/models/WebSocketCommandPriority.d.ts.map +0 -1
  524. package/lib/esm/types/models/WebSocketCommandSubscribeListTopflop.d.ts +0 -66
  525. package/lib/esm/types/models/WebSocketCommandSubscribeListTopflop.d.ts.map +0 -1
  526. package/lib/esm/types/models/WebSocketCommandSubscribeMarketstates.d.ts +0 -39
  527. package/lib/esm/types/models/WebSocketCommandSubscribeMarketstates.d.ts.map +0 -1
  528. package/lib/esm/types/models/WebSocketCommandSubscribeSourceTradeticker.d.ts +0 -57
  529. package/lib/esm/types/models/WebSocketCommandSubscribeSourceTradeticker.d.ts.map +0 -1
  530. package/lib/esm/types/models/WebSocketMessage.d.ts +0 -91
  531. package/lib/esm/types/models/WebSocketMessage.d.ts.map +0 -1
  532. package/lib/esm/types/models/WebSocketRequest.d.ts +0 -95
  533. package/lib/esm/types/models/WebSocketRequest.d.ts.map +0 -1
  534. package/lib/esm/types/models/index.d.ts +0 -99
  535. package/lib/esm/types/models/index.d.ts.map +0 -1
package/lib/cjs/index.js CHANGED
@@ -24,10 +24,12 @@ class MdsConnectionState {
24
24
  constructor() {
25
25
  this.isConnected = false;
26
26
  this.isAuthenticated = false;
27
+ this.lastUpdate = new Date();
27
28
  }
28
29
  connectionOpened() {
29
30
  this.isConnected = true;
30
31
  this.isAuthenticated = false;
32
+ this.lastUpdate = new Date();
31
33
  }
32
34
  connectionClosed() {
33
35
  this.isConnected = false;
@@ -39,87 +41,129 @@ class MdsConnectionState {
39
41
  authenticationEnded() {
40
42
  this.isAuthenticated = false;
41
43
  }
44
+ messageReceived() {
45
+ this.lastUpdate = new Date();
46
+ }
47
+ isTimedOut() {
48
+ return Date.now() - this.lastUpdate.getTime() < 20000; // 20 seconds timeout
49
+ }
42
50
  }
43
51
  exports.MdsConnectionState = MdsConnectionState;
52
+ class RunningRequest {
53
+ static withObservable(request, observableSubscriber) {
54
+ const n = new RunningRequest();
55
+ n.observableSubscriber = observableSubscriber;
56
+ n.request = request;
57
+ return n;
58
+ }
59
+ static withPromise(request, resolve, reject) {
60
+ const n = new RunningRequest();
61
+ n.promiseResolve = resolve;
62
+ n.promiseReject = reject;
63
+ n.request = request;
64
+ return n;
65
+ }
66
+ }
44
67
  class MdsConnection {
68
+ /**
69
+ * construct an MdsCoonnection
70
+ */
45
71
  constructor(websocketUrl, authdataCallback, options = { debug: false }) {
46
72
  this.state = new MdsConnectionState();
47
73
  this.waitingForAuthentification = [];
48
- this.counter = 0;
49
- this.runningRequestsObservable = new Map();
50
- this.runningRequestsPromise = new Map();
51
- this.runningRequestsParameters = new Map();
52
- this.replayRequestsOnOpen = new Map();
74
+ this.waitingForReconnect = [];
75
+ this.nextGeneratedRequestId = 0;
76
+ this.runningRequests = new Map();
53
77
  this.isDebug = false;
54
78
  this.authdataCallback = authdataCallback;
55
- this.websocketUrl = websocketUrl;
56
79
  this.isDebug = options.debug ? true : false;
57
- this.websocket = new reconnecting_websocket_1.default(this.websocketUrl, [], options.wsOptions);
58
- this.stayAuthenticated();
80
+ this.websocket = new reconnecting_websocket_1.default(websocketUrl, [], options.wsOptions);
59
81
  const outer = this;
82
+ // open-handler -> resend open requests from previous connection
60
83
  this.websocket.onopen = function () {
84
+ outer.debug("websocket open, resending " + JSON.stringify(outer.waitingForReconnect));
61
85
  outer.state.connectionOpened();
62
86
  // @ts-ignore
63
- for (let [key, value] of outer.replayRequestsOnOpen) {
64
- if (!value.subscribeAuthentication) {
65
- outer.sendWhenAuthenticated(value);
66
- }
67
- else {
68
- outer.websocket.send(JSON.stringify(value));
69
- }
87
+ for (const request of outer.waitingForReconnect) {
88
+ outer.sendAsSoonAsAuthenticationPermits(request.request);
70
89
  }
71
90
  };
91
+ // close handler -> store open requests for resending on reconnect
72
92
  this.websocket.onclose = function () {
93
+ outer.debug("websocket closed, queuing " + JSON.stringify(outer.waitingForReconnect));
73
94
  outer.state.connectionClosed();
74
- outer.replayRequestsOnOpen = new Map(outer.runningRequestsParameters);
75
- outer.debug("close");
95
+ outer.waitingForReconnect = Array.from(outer.runningRequests.values());
76
96
  };
77
97
  this.websocket.onmessage = function (e) {
78
98
  outer.processWebsocketMessageEvent(e);
79
99
  };
100
+ this.stayAuthenticated();
101
+ setInterval(() => {
102
+ if (!outer.state.isTimedOut()) {
103
+ outer.debug("websocket timed out, calling reconnect");
104
+ outer.websocket.reconnect();
105
+ }
106
+ }, 1000);
80
107
  }
108
+ /**
109
+ * create a hearbeat observable that can be subscribed to
110
+ */
81
111
  heartbeat() {
82
112
  return this.observable({ 'heartbeat': {} }, true)
83
113
  .pipe((0, rxjs_1.map)((x) => x.dataHeartbeat));
84
114
  }
115
+ /**
116
+ * create a MarketstateUpdate observable that can be subscribed to, contains both full state and delta for every marketstate
117
+ */
85
118
  marketstates(marketstateQueries) {
86
119
  const full = new Map();
87
120
  return this.marketstateUpdates(marketstateQueries)
88
121
  .pipe((0, rxjs_1.map)((update) => {
89
122
  let existingEntry = update.marketstateId ? full.get(update.marketstateId) : null;
90
- if (existingEntry) {
91
- const existingJson = (0, MarketstateWithId_1.MarketstateWithIdToJSON)(existingEntry);
92
- const updateJson = (0, MarketstateWithId_1.MarketstateWithIdToJSON)(update);
93
- for (let key in updateJson) {
94
- if (!(updateJson[key] == undefined)) {
95
- existingJson[key] = updateJson[key];
96
- }
97
- }
98
- existingEntry = (0, MarketstateWithId_1.MarketstateWithIdFromJSON)(existingJson);
99
- if (update.marketstateId) {
123
+ if (update.marketstateId) {
124
+ if (existingEntry) {
125
+ existingEntry = this.updateExistingMarketstateWithDeltaUpdate(existingEntry, update);
100
126
  full.set(update.marketstateId, existingEntry);
101
127
  }
102
- }
103
- else {
104
- existingEntry = update;
105
- if (update.marketstateId) {
128
+ else {
129
+ existingEntry = update;
106
130
  full.set(update.marketstateId, existingEntry);
107
131
  }
108
132
  }
109
133
  return new MarketstateUpdate(existingEntry, update);
110
134
  }));
111
135
  }
136
+ /**
137
+ * create a Marketstate observable that can be subscribed to, contains only delta for every marketstate
138
+ */
112
139
  marketstateUpdates(marketstateQueries) {
113
140
  return this.observable({ 'subscribeMarketstates': { 'marketstateQueries': marketstateQueries } }, true)
114
141
  .pipe((0, rxjs_1.map)((x) => (0, MarketstateWithId_1.MarketstateWithIdFromJSON)(x.dataMarketstate)));
115
142
  }
143
+ /**
144
+ * create a Marketstate observable that can be subscribed to, contains only full state for every marketstate
145
+ */
116
146
  marketstatesStates(marketstateQueries) {
117
147
  return this.marketstates(marketstateQueries).pipe((0, rxjs_1.map)((x) => x.state));
118
148
  }
149
+ /**
150
+ * sets the priority for sources
151
+ */
119
152
  priority(sources) {
120
153
  return this.promise({ 'priority': { 'sources': sources } });
121
154
  }
122
- sendWhenAuthenticated(json) {
155
+ updateExistingMarketstateWithDeltaUpdate(existingEntry, update) {
156
+ const existingJson = (0, MarketstateWithId_1.MarketstateWithIdToJSON)(existingEntry);
157
+ const updateJson = (0, MarketstateWithId_1.MarketstateWithIdToJSON)(update);
158
+ for (let key in updateJson) {
159
+ if (!(updateJson[key] == undefined)) {
160
+ existingJson[key] = updateJson[key];
161
+ }
162
+ }
163
+ existingEntry = (0, MarketstateWithId_1.MarketstateWithIdFromJSON)(existingJson);
164
+ return existingEntry;
165
+ }
166
+ sendAsSoonAsAuthenticationPermits(json) {
123
167
  if (this.state.isAuthenticated || json.subscribeAuthentication) {
124
168
  this.websocket.send(JSON.stringify(json));
125
169
  }
@@ -134,8 +178,8 @@ class MdsConnection {
134
178
  next(x) {
135
179
  if (x.dataAuthentication.secondsToLive > 30) {
136
180
  subscriber.next(x);
137
- for (const json of outer.waitingForAuthentification) {
138
- outer.websocket.send(JSON.stringify(json));
181
+ for (const requestParameter of outer.waitingForAuthentification) {
182
+ outer.websocket.send(JSON.stringify(requestParameter));
139
183
  }
140
184
  outer.waitingForAuthentification = [];
141
185
  outer.state.authenticationAccepted();
@@ -155,21 +199,20 @@ class MdsConnection {
155
199
  .subscribe((c) => outer.debug("auth outer " + c));
156
200
  }
157
201
  generateNextRequestId() {
158
- return "request-" + this.counter++;
202
+ return "request-" + this.nextGeneratedRequestId++;
159
203
  }
160
204
  observable(req, sendEventWithoutAuthentification = false) {
161
205
  const requestId = this.generateNextRequestId();
162
206
  req.requestId = requestId;
163
207
  const outer = this;
164
208
  const observable = new rxjs_1.Observable((subscriber) => {
165
- outer.runningRequestsObservable.set(requestId, subscriber);
166
- outer.runningRequestsParameters.set(requestId, req);
167
- outer.sendWhenAuthenticated(req);
209
+ outer.runningRequests.set(requestId, RunningRequest.withObservable(req, subscriber));
210
+ outer.sendAsSoonAsAuthenticationPermits(req);
168
211
  // Provide a way of canceling and disposing the resources
169
212
  return function unsubscribe() {
170
- if (outer.runningRequestsObservable.has(requestId)) {
171
- outer.runningRequestsObservable.delete(requestId);
172
- outer.runningRequestsParameters.delete(requestId);
213
+ let runningRequest = outer.runningRequests.get(requestId);
214
+ if (runningRequest && runningRequest.observableSubscriber) {
215
+ outer.runningRequests.delete(requestId);
173
216
  outer.websocket.send(JSON.stringify({
174
217
  'cancel': { 'requestId': requestId }
175
218
  }));
@@ -183,47 +226,41 @@ class MdsConnection {
183
226
  req.requestId = requestId;
184
227
  const outer = this;
185
228
  const promise = new Promise((resolve, reject) => {
186
- outer.runningRequestsPromise.set(requestId, { 'resolve': resolve, 'reject': reject });
187
- outer.runningRequestsParameters.set(requestId, req);
188
- outer.sendWhenAuthenticated(req);
229
+ outer.runningRequests.set(requestId, RunningRequest.withPromise(req, resolve, reject));
230
+ outer.sendAsSoonAsAuthenticationPermits(req);
189
231
  });
190
232
  return promise;
191
233
  }
192
234
  processWebsocketMessageEvent(e) {
193
235
  const msg = JSON.parse(e.data);
194
236
  this.debug("we received " + JSON.stringify(msg));
195
- const promise = this.runningRequestsPromise.get(msg.requestId);
196
- const subscriber = this.runningRequestsObservable.get(msg.requestId);
197
- if (promise) {
237
+ const request = this.runningRequests.get(msg.requestId);
238
+ this.state.messageReceived();
239
+ if (request && request.promiseResolve) {
198
240
  if (msg.isError) {
199
- promise.reject(msg.errorMessage);
200
- this.runningRequestsPromise.delete(msg.requestId);
201
- this.runningRequestsParameters.delete(msg.requestId);
241
+ request.promiseReject(msg.errorMessage);
242
+ this.runningRequests.delete(msg.requestId);
202
243
  }
203
244
  else if (msg.isComplete == true) {
204
- promise.resolve(msg);
205
- this.runningRequestsPromise.delete(msg.requestId);
206
- this.runningRequestsParameters.delete(msg.requestId);
245
+ request.promiseResolve(msg);
246
+ this.runningRequests.delete(msg.requestId);
207
247
  }
208
248
  else {
209
- promise.reject("strange message " + msg);
210
- this.runningRequestsPromise.delete(msg.requestId);
211
- this.runningRequestsParameters.delete(msg.requestId);
249
+ request.promiseReject(msg.errorMessage);
250
+ this.runningRequests.delete(msg.requestId);
212
251
  }
213
252
  }
214
- else if (subscriber) {
215
- if (msg.isError) {
216
- this.runningRequestsObservable.delete(msg.requestId);
217
- this.runningRequestsParameters.delete(msg.requestId);
218
- subscriber.error(msg.errorMessage);
253
+ else if (request && request.observableSubscriber) {
254
+ if (msg.isError == true) {
255
+ this.runningRequests.delete(msg.requestId);
256
+ request.observableSubscriber.error(msg.errorMessage);
219
257
  }
220
258
  else if (msg.isComplete == true) {
221
- this.runningRequestsObservable.delete(msg.requestId);
222
- this.runningRequestsParameters.delete(msg.requestId);
223
- subscriber.complete();
259
+ this.runningRequests.delete(msg.requestId);
260
+ request.observableSubscriber.complete();
224
261
  }
225
262
  else {
226
- subscriber.next(msg);
263
+ request.observableSubscriber.next(msg);
227
264
  }
228
265
  }
229
266
  }
@@ -1,5 +1,5 @@
1
- import { Observable } from 'rxjs';
2
1
  import { Options as ReconnectingWebSocketOptions } from 'reconnecting-websocket';
2
+ import { Observable } from 'rxjs';
3
3
  import { MarketstateWithId } from './models/MarketstateWithId';
4
4
  export declare class MdsAuthdata {
5
5
  token: string;
@@ -13,34 +13,53 @@ export declare class MarketstateUpdate {
13
13
  export declare class MdsConnectionState {
14
14
  isConnected: boolean;
15
15
  isAuthenticated: boolean;
16
+ lastUpdate: Date;
16
17
  connectionOpened(): void;
17
18
  connectionClosed(): void;
18
19
  authenticationAccepted(): void;
19
20
  authenticationEnded(): void;
21
+ messageReceived(): void;
22
+ isTimedOut(): boolean;
20
23
  }
21
- export type Options = {
24
+ export type MdsOptions = {
22
25
  debug?: boolean;
23
26
  wsOptions?: ReconnectingWebSocketOptions;
24
27
  };
25
28
  export declare class MdsConnection {
26
- private websocketUrl;
27
29
  private websocket;
30
+ private readonly authdataCallback;
28
31
  private state;
29
32
  private waitingForAuthentification;
30
- private counter;
31
- private readonly runningRequestsObservable;
32
- private readonly runningRequestsPromise;
33
- private readonly runningRequestsParameters;
34
- private replayRequestsOnOpen;
35
- private readonly authdataCallback;
33
+ private waitingForReconnect;
34
+ private nextGeneratedRequestId;
35
+ private readonly runningRequests;
36
36
  private isDebug;
37
- constructor(websocketUrl: string, authdataCallback: () => Promise<MdsAuthdata>, options?: Options);
37
+ /**
38
+ * construct an MdsCoonnection
39
+ */
40
+ constructor(websocketUrl: string, authdataCallback: () => Promise<MdsAuthdata>, options?: MdsOptions);
41
+ /**
42
+ * create a hearbeat observable that can be subscribed to
43
+ */
38
44
  heartbeat(): Observable<String>;
45
+ /**
46
+ * create a MarketstateUpdate observable that can be subscribed to, contains both full state and delta for every marketstate
47
+ */
39
48
  marketstates(marketstateQueries: String[]): Observable<MarketstateUpdate>;
49
+ /**
50
+ * create a Marketstate observable that can be subscribed to, contains only delta for every marketstate
51
+ */
40
52
  marketstateUpdates(marketstateQueries: String[]): Observable<MarketstateWithId>;
53
+ /**
54
+ * create a Marketstate observable that can be subscribed to, contains only full state for every marketstate
55
+ */
41
56
  marketstatesStates(marketstateQueries: String[]): Observable<MarketstateWithId>;
57
+ /**
58
+ * sets the priority for sources
59
+ */
42
60
  priority(sources: string[]): Promise<void>;
43
- private sendWhenAuthenticated;
61
+ private updateExistingMarketstateWithDeltaUpdate;
62
+ private sendAsSoonAsAuthenticationPermits;
44
63
  private stayAuthenticated;
45
64
  private generateNextRequestId;
46
65
  private observable;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,UAAU,EAAqB,MAAM,MAAM,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,4BAA4B,EAAC,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAC,iBAAiB,EAAqD,MAAM,4BAA4B,CAAA;AAGhH,qBAAa,WAAW;IAEb,KAAK,EAAE,MAAM,CAAC;gBAET,KAAK,EAAE,MAAM;CAI5B;AAID,qBAAa,iBAAiB;IAEnB,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAG,iBAAiB,CAAA;gBAErB,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;CAKtC;AAED,qBAAa,kBAAkB;IACpB,WAAW,EAAG,OAAO,CAAS;IAC9B,eAAe,EAAG,OAAO,CAAS;IAEzC,gBAAgB;IAKhB,gBAAgB;IAKhB,sBAAsB;IAItB,mBAAmB;CAGtB;AAED,MAAM,MAAM,OAAO,GAAG;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,4BAA4B,CAAC;CAC5C,CAAC;AAEF,qBAAa,aAAa;IAEtB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,KAAK,CAAiD;IAC9D,OAAO,CAAC,0BAA0B,CAAc;IAEhD,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAA2C;IACrF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA+B;IACtE,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAA+B;IACzE,OAAO,CAAC,oBAAoB,CAA+B;IAE3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAC9D,OAAO,CAAC,OAAO,CAAkB;gBAErB,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,GAAE,OAA0B;IAmC5G,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC;IAK/B,YAAY,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC;IA4BzE,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAK/E,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAM/E,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,UAAU;IA4BlB,OAAO,CAAC,OAAO;IAkBf,OAAO,CAAC,4BAA4B;IAkCpC,OAAO,CAAC,KAAK;CAKhB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAA8B,EAAC,OAAO,IAAI,4BAA4B,EAAC,MAAM,wBAAwB,CAAC;AACtG,OAAO,EAAM,UAAU,EAAqB,MAAM,MAAM,CAAC;AACzD,OAAO,EAAC,iBAAiB,EAAqD,MAAM,4BAA4B,CAAA;AAGhH,qBAAa,WAAW;IAEb,KAAK,EAAE,MAAM,CAAC;gBAET,KAAK,EAAE,MAAM;CAI5B;AAGD,qBAAa,iBAAiB;IAEnB,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAA;gBAEpB,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;CAKtC;AAGD,qBAAa,kBAAkB;IACpB,WAAW,EAAE,OAAO,CAAS;IAC7B,eAAe,EAAE,OAAO,CAAS;IACjC,UAAU,EAAE,IAAI,CAAc;IAErC,gBAAgB;IAMhB,gBAAgB;IAKhB,sBAAsB;IAItB,mBAAmB;IAInB,eAAe;IAIR,UAAU;CAGpB;AAGD,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,4BAA4B,CAAC;CAC5C,CAAC;AAyBF,qBAAa,aAAa;IAEtB,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAE9D,OAAO,CAAC,KAAK,CAAgD;IAE7D,OAAO,CAAC,0BAA0B,CAAa;IAC/C,OAAO,CAAC,mBAAmB,CAAwB;IAEnD,OAAO,CAAC,sBAAsB,CAAa;IAE3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;IAE1E,OAAO,CAAC,OAAO,CAAkB;IAGjC;;OAEG;gBAES,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,GAAE,UAA2B;IAyCpH;;OAEG;IAEI,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC;IAKtC;;OAEG;IAEI,YAAY,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAmBhF;;OAEG;IAEI,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAKtF;;OAEG;IAEI,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAMtF;;OAEG;IAEI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD,OAAO,CAAC,wCAAwC;IAehD,OAAO,CAAC,iCAAiC;IASzC,OAAO,CAAC,iBAAiB;IAuCzB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,UAAU;IA2BlB,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,4BAA4B;IA6BpC,OAAO,CAAC,KAAK;CAKhB"}
package/lib/esm/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import ReconnectingWebSocket from 'reconnecting-websocket';
2
2
  import { map, Observable, repeat } from 'rxjs';
3
- import { MarketstateWithIdToJSON, MarketstateWithIdFromJSON } from './models/MarketstateWithId';
3
+ import { MarketstateWithIdFromJSON, MarketstateWithIdToJSON } from './models/MarketstateWithId';
4
4
  export class MdsAuthdata {
5
5
  token;
6
6
  constructor(token) {
@@ -18,9 +18,11 @@ export class MarketstateUpdate {
18
18
  export class MdsConnectionState {
19
19
  isConnected = false;
20
20
  isAuthenticated = false;
21
+ lastUpdate = new Date();
21
22
  connectionOpened() {
22
23
  this.isConnected = true;
23
24
  this.isAuthenticated = false;
25
+ this.lastUpdate = new Date();
24
26
  }
25
27
  connectionClosed() {
26
28
  this.isConnected = false;
@@ -32,89 +34,134 @@ export class MdsConnectionState {
32
34
  authenticationEnded() {
33
35
  this.isAuthenticated = false;
34
36
  }
37
+ messageReceived() {
38
+ this.lastUpdate = new Date();
39
+ }
40
+ isTimedOut() {
41
+ return Date.now() - this.lastUpdate.getTime() < 20000; // 20 seconds timeout
42
+ }
43
+ }
44
+ class RunningRequest {
45
+ observableSubscriber;
46
+ promiseResolve;
47
+ promiseReject;
48
+ request;
49
+ static withObservable(request, observableSubscriber) {
50
+ const n = new RunningRequest();
51
+ n.observableSubscriber = observableSubscriber;
52
+ n.request = request;
53
+ return n;
54
+ }
55
+ static withPromise(request, resolve, reject) {
56
+ const n = new RunningRequest();
57
+ n.promiseResolve = resolve;
58
+ n.promiseReject = reject;
59
+ n.request = request;
60
+ return n;
61
+ }
35
62
  }
36
63
  export class MdsConnection {
37
- websocketUrl;
38
64
  websocket;
65
+ authdataCallback;
39
66
  state = new MdsConnectionState();
40
67
  waitingForAuthentification = [];
41
- counter = 0;
42
- runningRequestsObservable = new Map();
43
- runningRequestsPromise = new Map();
44
- runningRequestsParameters = new Map();
45
- replayRequestsOnOpen = new Map();
46
- authdataCallback;
68
+ waitingForReconnect = [];
69
+ nextGeneratedRequestId = 0;
70
+ runningRequests = new Map();
47
71
  isDebug = false;
72
+ /**
73
+ * construct an MdsCoonnection
74
+ */
48
75
  constructor(websocketUrl, authdataCallback, options = { debug: false }) {
49
76
  this.authdataCallback = authdataCallback;
50
- this.websocketUrl = websocketUrl;
51
77
  this.isDebug = options.debug ? true : false;
52
- this.websocket = new ReconnectingWebSocket(this.websocketUrl, [], options.wsOptions);
53
- this.stayAuthenticated();
78
+ this.websocket = new ReconnectingWebSocket(websocketUrl, [], options.wsOptions);
54
79
  const outer = this;
80
+ // open-handler -> resend open requests from previous connection
55
81
  this.websocket.onopen = function () {
82
+ outer.debug("websocket open, resending " + JSON.stringify(outer.waitingForReconnect));
56
83
  outer.state.connectionOpened();
57
84
  // @ts-ignore
58
- for (let [key, value] of outer.replayRequestsOnOpen) {
59
- if (!value.subscribeAuthentication) {
60
- outer.sendWhenAuthenticated(value);
61
- }
62
- else {
63
- outer.websocket.send(JSON.stringify(value));
64
- }
85
+ for (const request of outer.waitingForReconnect) {
86
+ outer.sendAsSoonAsAuthenticationPermits(request.request);
65
87
  }
66
88
  };
89
+ // close handler -> store open requests for resending on reconnect
67
90
  this.websocket.onclose = function () {
91
+ outer.debug("websocket closed, queuing " + JSON.stringify(outer.waitingForReconnect));
68
92
  outer.state.connectionClosed();
69
- outer.replayRequestsOnOpen = new Map(outer.runningRequestsParameters);
70
- outer.debug("close");
93
+ outer.waitingForReconnect = Array.from(outer.runningRequests.values());
71
94
  };
72
95
  this.websocket.onmessage = function (e) {
73
96
  outer.processWebsocketMessageEvent(e);
74
97
  };
98
+ this.stayAuthenticated();
99
+ setInterval(() => {
100
+ if (!outer.state.isTimedOut()) {
101
+ outer.debug("websocket timed out, calling reconnect");
102
+ outer.websocket.reconnect();
103
+ }
104
+ }, 1000);
75
105
  }
106
+ /**
107
+ * create a hearbeat observable that can be subscribed to
108
+ */
76
109
  heartbeat() {
77
110
  return this.observable({ 'heartbeat': {} }, true)
78
111
  .pipe(map((x) => x.dataHeartbeat));
79
112
  }
113
+ /**
114
+ * create a MarketstateUpdate observable that can be subscribed to, contains both full state and delta for every marketstate
115
+ */
80
116
  marketstates(marketstateQueries) {
81
117
  const full = new Map();
82
118
  return this.marketstateUpdates(marketstateQueries)
83
119
  .pipe(map((update) => {
84
120
  let existingEntry = update.marketstateId ? full.get(update.marketstateId) : null;
85
- if (existingEntry) {
86
- const existingJson = MarketstateWithIdToJSON(existingEntry);
87
- const updateJson = MarketstateWithIdToJSON(update);
88
- for (let key in updateJson) {
89
- if (!(updateJson[key] == undefined)) {
90
- existingJson[key] = updateJson[key];
91
- }
92
- }
93
- existingEntry = MarketstateWithIdFromJSON(existingJson);
94
- if (update.marketstateId) {
121
+ if (update.marketstateId) {
122
+ if (existingEntry) {
123
+ existingEntry = this.updateExistingMarketstateWithDeltaUpdate(existingEntry, update);
95
124
  full.set(update.marketstateId, existingEntry);
96
125
  }
97
- }
98
- else {
99
- existingEntry = update;
100
- if (update.marketstateId) {
126
+ else {
127
+ existingEntry = update;
101
128
  full.set(update.marketstateId, existingEntry);
102
129
  }
103
130
  }
104
131
  return new MarketstateUpdate(existingEntry, update);
105
132
  }));
106
133
  }
134
+ /**
135
+ * create a Marketstate observable that can be subscribed to, contains only delta for every marketstate
136
+ */
107
137
  marketstateUpdates(marketstateQueries) {
108
138
  return this.observable({ 'subscribeMarketstates': { 'marketstateQueries': marketstateQueries } }, true)
109
139
  .pipe(map((x) => MarketstateWithIdFromJSON(x.dataMarketstate)));
110
140
  }
141
+ /**
142
+ * create a Marketstate observable that can be subscribed to, contains only full state for every marketstate
143
+ */
111
144
  marketstatesStates(marketstateQueries) {
112
145
  return this.marketstates(marketstateQueries).pipe(map((x) => x.state));
113
146
  }
147
+ /**
148
+ * sets the priority for sources
149
+ */
114
150
  priority(sources) {
115
151
  return this.promise({ 'priority': { 'sources': sources } });
116
152
  }
117
- sendWhenAuthenticated(json) {
153
+ updateExistingMarketstateWithDeltaUpdate(existingEntry, update) {
154
+ const existingJson = MarketstateWithIdToJSON(existingEntry);
155
+ const updateJson = MarketstateWithIdToJSON(update);
156
+ for (let key in updateJson) {
157
+ if (!(updateJson[key] == undefined)) {
158
+ existingJson[key] = updateJson[key];
159
+ }
160
+ }
161
+ existingEntry = MarketstateWithIdFromJSON(existingJson);
162
+ return existingEntry;
163
+ }
164
+ sendAsSoonAsAuthenticationPermits(json) {
118
165
  if (this.state.isAuthenticated || json.subscribeAuthentication) {
119
166
  this.websocket.send(JSON.stringify(json));
120
167
  }
@@ -129,8 +176,8 @@ export class MdsConnection {
129
176
  next(x) {
130
177
  if (x.dataAuthentication.secondsToLive > 30) {
131
178
  subscriber.next(x);
132
- for (const json of outer.waitingForAuthentification) {
133
- outer.websocket.send(JSON.stringify(json));
179
+ for (const requestParameter of outer.waitingForAuthentification) {
180
+ outer.websocket.send(JSON.stringify(requestParameter));
134
181
  }
135
182
  outer.waitingForAuthentification = [];
136
183
  outer.state.authenticationAccepted();
@@ -150,21 +197,20 @@ export class MdsConnection {
150
197
  .subscribe((c) => outer.debug("auth outer " + c));
151
198
  }
152
199
  generateNextRequestId() {
153
- return "request-" + this.counter++;
200
+ return "request-" + this.nextGeneratedRequestId++;
154
201
  }
155
202
  observable(req, sendEventWithoutAuthentification = false) {
156
203
  const requestId = this.generateNextRequestId();
157
204
  req.requestId = requestId;
158
205
  const outer = this;
159
206
  const observable = new Observable((subscriber) => {
160
- outer.runningRequestsObservable.set(requestId, subscriber);
161
- outer.runningRequestsParameters.set(requestId, req);
162
- outer.sendWhenAuthenticated(req);
207
+ outer.runningRequests.set(requestId, RunningRequest.withObservable(req, subscriber));
208
+ outer.sendAsSoonAsAuthenticationPermits(req);
163
209
  // Provide a way of canceling and disposing the resources
164
210
  return function unsubscribe() {
165
- if (outer.runningRequestsObservable.has(requestId)) {
166
- outer.runningRequestsObservable.delete(requestId);
167
- outer.runningRequestsParameters.delete(requestId);
211
+ let runningRequest = outer.runningRequests.get(requestId);
212
+ if (runningRequest && runningRequest.observableSubscriber) {
213
+ outer.runningRequests.delete(requestId);
168
214
  outer.websocket.send(JSON.stringify({
169
215
  'cancel': { 'requestId': requestId }
170
216
  }));
@@ -178,47 +224,41 @@ export class MdsConnection {
178
224
  req.requestId = requestId;
179
225
  const outer = this;
180
226
  const promise = new Promise((resolve, reject) => {
181
- outer.runningRequestsPromise.set(requestId, { 'resolve': resolve, 'reject': reject });
182
- outer.runningRequestsParameters.set(requestId, req);
183
- outer.sendWhenAuthenticated(req);
227
+ outer.runningRequests.set(requestId, RunningRequest.withPromise(req, resolve, reject));
228
+ outer.sendAsSoonAsAuthenticationPermits(req);
184
229
  });
185
230
  return promise;
186
231
  }
187
232
  processWebsocketMessageEvent(e) {
188
233
  const msg = JSON.parse(e.data);
189
234
  this.debug("we received " + JSON.stringify(msg));
190
- const promise = this.runningRequestsPromise.get(msg.requestId);
191
- const subscriber = this.runningRequestsObservable.get(msg.requestId);
192
- if (promise) {
235
+ const request = this.runningRequests.get(msg.requestId);
236
+ this.state.messageReceived();
237
+ if (request && request.promiseResolve) {
193
238
  if (msg.isError) {
194
- promise.reject(msg.errorMessage);
195
- this.runningRequestsPromise.delete(msg.requestId);
196
- this.runningRequestsParameters.delete(msg.requestId);
239
+ request.promiseReject(msg.errorMessage);
240
+ this.runningRequests.delete(msg.requestId);
197
241
  }
198
242
  else if (msg.isComplete == true) {
199
- promise.resolve(msg);
200
- this.runningRequestsPromise.delete(msg.requestId);
201
- this.runningRequestsParameters.delete(msg.requestId);
243
+ request.promiseResolve(msg);
244
+ this.runningRequests.delete(msg.requestId);
202
245
  }
203
246
  else {
204
- promise.reject("strange message " + msg);
205
- this.runningRequestsPromise.delete(msg.requestId);
206
- this.runningRequestsParameters.delete(msg.requestId);
247
+ request.promiseReject(msg.errorMessage);
248
+ this.runningRequests.delete(msg.requestId);
207
249
  }
208
250
  }
209
- else if (subscriber) {
210
- if (msg.isError) {
211
- this.runningRequestsObservable.delete(msg.requestId);
212
- this.runningRequestsParameters.delete(msg.requestId);
213
- subscriber.error(msg.errorMessage);
251
+ else if (request && request.observableSubscriber) {
252
+ if (msg.isError == true) {
253
+ this.runningRequests.delete(msg.requestId);
254
+ request.observableSubscriber.error(msg.errorMessage);
214
255
  }
215
256
  else if (msg.isComplete == true) {
216
- this.runningRequestsObservable.delete(msg.requestId);
217
- this.runningRequestsParameters.delete(msg.requestId);
218
- subscriber.complete();
257
+ this.runningRequests.delete(msg.requestId);
258
+ request.observableSubscriber.complete();
219
259
  }
220
260
  else {
221
- subscriber.next(msg);
261
+ request.observableSubscriber.next(msg);
222
262
  }
223
263
  }
224
264
  }