@dronedeploy/rocos-js-sdk 2.6.1 → 3.0.0-alpha.20

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 (618) hide show
  1. package/IRocosSDK.d.ts +3 -26
  2. package/IRocosSDK.js +1 -5
  3. package/README.md +18 -0
  4. package/RocosSDK.d.ts +6 -1
  5. package/RocosSDK.js +103 -95
  6. package/api/StreamRegister.d.ts +1 -1
  7. package/api/StreamRegister.js +23 -12
  8. package/api/atoms/StreamHeartbeat.js +3 -7
  9. package/api/streams/caller/CallerStream.d.ts +6 -6
  10. package/api/streams/caller/CallerStream.js +41 -49
  11. package/api/streams/caller/CallerStreamAbstract.d.ts +6 -11
  12. package/api/streams/caller/CallerStreamAbstract.js +55 -67
  13. package/api/streams/caller/CallerStreamNode.d.ts +6 -6
  14. package/api/streams/caller/CallerStreamNode.js +48 -61
  15. package/api/streams/command/CommandStream.d.ts +2 -4
  16. package/api/streams/command/CommandStream.js +28 -30
  17. package/api/streams/command/CommandStreamAbstract.d.ts +4 -8
  18. package/api/streams/command/CommandStreamAbstract.js +33 -42
  19. package/api/streams/command/CommandStreamNode.d.ts +2 -4
  20. package/api/streams/command/CommandStreamNode.js +16 -40
  21. package/api/streams/control/ControlStream.d.ts +4 -6
  22. package/api/streams/control/ControlStream.js +30 -36
  23. package/api/streams/control/ControlStreamAbstract.d.ts +6 -9
  24. package/api/streams/control/ControlStreamAbstract.js +57 -54
  25. package/api/streams/control/ControlStreamNode.d.ts +3 -5
  26. package/api/streams/control/ControlStreamNode.js +19 -44
  27. package/api/streams/fileAccessor/FileAccessorStream.d.ts +2 -4
  28. package/api/streams/fileAccessor/FileAccessorStream.js +42 -57
  29. package/api/streams/fileAccessor/FileAccessorStreamAbstract.d.ts +4 -9
  30. package/api/streams/fileAccessor/FileAccessorStreamAbstract.js +28 -48
  31. package/api/streams/fileAccessor/FileAccessorStreamNode.d.ts +1 -3
  32. package/api/streams/fileAccessor/FileAccessorStreamNode.js +23 -53
  33. package/api/streams/search/SearchStream.d.ts +2 -5
  34. package/api/streams/search/SearchStream.js +50 -74
  35. package/api/streams/search/SearchStreamAbstract.d.ts +4 -9
  36. package/api/streams/search/SearchStreamAbstract.js +33 -35
  37. package/api/streams/search/SearchStreamNode.d.ts +2 -5
  38. package/api/streams/search/SearchStreamNode.js +23 -48
  39. package/api/streams/telemetry/TelemetryStream.d.ts +4 -4
  40. package/api/streams/telemetry/TelemetryStream.js +49 -78
  41. package/api/streams/telemetry/TelemetryStreamAbstract.d.ts +8 -11
  42. package/api/streams/telemetry/TelemetryStreamAbstract.js +126 -145
  43. package/api/streams/telemetry/TelemetryStreamNode.d.ts +5 -5
  44. package/api/streams/telemetry/TelemetryStreamNode.js +44 -64
  45. package/api/streams/webRTCSignalling/WebRTCSignallingStream.d.ts +5 -10
  46. package/api/streams/webRTCSignalling/WebRTCSignallingStream.js +37 -20
  47. package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.d.ts +10 -13
  48. package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.js +37 -37
  49. package/constants/api.d.ts +14 -5
  50. package/constants/api.js +130 -126
  51. package/constants/auth.d.ts +2 -0
  52. package/constants/auth.js +2 -0
  53. package/constants/grpc.js +5 -8
  54. package/constants/identifier.js +6 -9
  55. package/constants/timezones.d.ts +1 -1
  56. package/constants/timezones.js +1 -4
  57. package/grpc/conker_pb.client.d.ts +78 -0
  58. package/grpc/conker_pb.client.js +55 -0
  59. package/grpc/conker_pb.d.ts +141 -0
  60. package/grpc/conker_pb.grpc-client.d.ts +81 -0
  61. package/grpc/conker_pb.grpc-client.js +58 -0
  62. package/grpc/conker_pb.js +104 -0
  63. package/grpc/filagree_pb.client.d.ts +68 -0
  64. package/grpc/filagree_pb.client.js +48 -0
  65. package/grpc/filagree_pb.d.ts +404 -0
  66. package/grpc/filagree_pb.grpc-client.d.ts +69 -0
  67. package/grpc/filagree_pb.grpc-client.js +51 -0
  68. package/grpc/filagree_pb.js +329 -0
  69. package/grpc/google/protobuf/descriptor_pb.d.ts +1798 -0
  70. package/grpc/google/protobuf/descriptor_pb.js +2378 -0
  71. package/grpc/google/protobuf/empty_pb.d.ts +23 -0
  72. package/grpc/google/protobuf/empty_pb.js +47 -0
  73. package/grpc/pigeon_pb.client.d.ts +96 -0
  74. package/grpc/pigeon_pb.client.js +72 -0
  75. package/grpc/pigeon_pb.d.ts +207 -0
  76. package/grpc/pigeon_pb.grpc-client.d.ts +98 -0
  77. package/grpc/pigeon_pb.grpc-client.js +68 -0
  78. package/grpc/pigeon_pb.js +144 -0
  79. package/grpc/rambo.uri.v1_pb.d.ts +73 -0
  80. package/grpc/rambo.uri.v1_pb.js +48 -0
  81. package/grpc/rambo.v1_pb.client.d.ts +66 -0
  82. package/grpc/rambo.v1_pb.client.js +48 -0
  83. package/grpc/rambo.v1_pb.d.ts +392 -0
  84. package/grpc/rambo.v1_pb.grpc-client.d.ts +56 -0
  85. package/grpc/rambo.v1_pb.grpc-client.js +44 -0
  86. package/grpc/rambo.v1_pb.js +272 -0
  87. package/grpc/serviette.uri.v1_pb.d.ts +89 -0
  88. package/grpc/serviette.uri.v1_pb.js +62 -0
  89. package/grpc/serviette.v1_pb.client.d.ts +225 -0
  90. package/grpc/serviette.v1_pb.client.js +174 -0
  91. package/grpc/serviette.v1_pb.d.ts +827 -0
  92. package/grpc/serviette.v1_pb.grpc-client.d.ts +215 -0
  93. package/grpc/serviette.v1_pb.grpc-client.js +162 -0
  94. package/grpc/serviette.v1_pb.js +553 -0
  95. package/grpc/slowlane_pb.client.d.ts +61 -0
  96. package/grpc/slowlane_pb.client.js +41 -0
  97. package/grpc/slowlane_pb.d.ts +303 -0
  98. package/grpc/slowlane_pb.grpc-client.d.ts +64 -0
  99. package/grpc/slowlane_pb.grpc-client.js +44 -0
  100. package/grpc/slowlane_pb.js +185 -0
  101. package/grpc/teletubby_pb.client.d.ts +145 -0
  102. package/grpc/teletubby_pb.client.js +104 -0
  103. package/grpc/teletubby_pb.d.ts +634 -0
  104. package/grpc/teletubby_pb.grpc-client.d.ts +152 -0
  105. package/grpc/teletubby_pb.grpc-client.js +100 -0
  106. package/grpc/teletubby_pb.js +1264 -0
  107. package/helpers/arrayRemove.js +2 -6
  108. package/helpers/arrayUnique.js +2 -6
  109. package/helpers/average.js +2 -7
  110. package/helpers/callerMessageHelpers.d.ts +14 -0
  111. package/helpers/callerMessageHelpers.js +86 -0
  112. package/helpers/cleanObject.js +17 -19
  113. package/helpers/cleanObject.spec.d.ts +1 -0
  114. package/helpers/cleanObject.spec.js +53 -0
  115. package/helpers/enviroment.js +4 -11
  116. package/helpers/flattenCallsignsLookup.d.ts +1 -1
  117. package/helpers/flattenCallsignsLookup.js +1 -5
  118. package/helpers/flattenObject.js +1 -5
  119. package/helpers/flattenObject.spec.d.ts +1 -0
  120. package/helpers/flattenObject.spec.js +29 -0
  121. package/helpers/flattenOneOf.d.ts +67 -0
  122. package/helpers/flattenOneOf.js +29 -0
  123. package/helpers/flattenOneOf.spec.d.ts +1 -0
  124. package/helpers/flattenOneOf.spec.js +157 -0
  125. package/helpers/formatServiceUrl.js +1 -5
  126. package/helpers/formatServiceUrl.spec.d.ts +1 -0
  127. package/helpers/formatServiceUrl.spec.js +16 -0
  128. package/helpers/generateUUID.js +3 -7
  129. package/helpers/getSubscriptionsDifference.d.ts +3 -3
  130. package/helpers/getSubscriptionsDifference.js +6 -10
  131. package/helpers/getURLSearchParams.d.ts +2 -0
  132. package/helpers/getURLSearchParams.js +9 -0
  133. package/helpers/getURLSearchParams.spec.d.ts +1 -0
  134. package/helpers/getURLSearchParams.spec.js +19 -0
  135. package/helpers/getUniqueConfigKey.js +1 -6
  136. package/helpers/getUniqueId.js +3 -7
  137. package/helpers/getUnixTimeMs.js +1 -5
  138. package/helpers/index.d.ts +3 -1
  139. package/helpers/index.js +5 -15
  140. package/helpers/nanosecondToMillisecond.d.ts +1 -1
  141. package/helpers/nanosecondToMillisecond.js +11 -6
  142. package/helpers/nanosecondToMillisecond.spec.d.ts +1 -0
  143. package/helpers/nanosecondToMillisecond.spec.js +20 -0
  144. package/helpers/randomString.js +1 -5
  145. package/helpers/standardDeviation.js +4 -8
  146. package/helpers/standardDeviation.spec.d.ts +1 -0
  147. package/helpers/standardDeviation.spec.js +11 -0
  148. package/helpers/stringToUint8Array.js +3 -7
  149. package/helpers/uint8ArrayToString.js +3 -8
  150. package/helpers/websandbox/connection.d.ts +67 -0
  151. package/helpers/websandbox/connection.js +133 -0
  152. package/helpers/websandbox/frame/frame.d.ts +12 -0
  153. package/helpers/websandbox/frame/frame.js +22 -0
  154. package/helpers/websandbox/frame/frame.source.d.ts +2 -0
  155. package/helpers/websandbox/frame/frame.source.js +5 -0
  156. package/helpers/websandbox/frame/index.d.ts +2 -0
  157. package/helpers/websandbox/frame/index.js +2 -0
  158. package/helpers/websandbox/frame/worker/index.d.ts +2 -0
  159. package/helpers/websandbox/frame/worker/index.js +2 -0
  160. package/helpers/websandbox/frame/worker/manager.d.ts +11 -0
  161. package/helpers/websandbox/frame/worker/manager.js +67 -0
  162. package/helpers/websandbox/frame/worker/manager.spec.d.ts +4 -0
  163. package/helpers/websandbox/frame/worker/manager.spec.js +127 -0
  164. package/helpers/websandbox/frame/worker/types.d.ts +11 -0
  165. package/helpers/websandbox/frame/worker/types.js +1 -0
  166. package/helpers/websandbox/frame/worker/worker.d.ts +1 -0
  167. package/helpers/websandbox/frame/worker/worker.js +74 -0
  168. package/helpers/websandbox/frame/worker/worker.source.d.ts +2 -0
  169. package/helpers/websandbox/frame/worker/worker.source.js +4 -0
  170. package/helpers/websandbox/index.d.ts +2 -0
  171. package/helpers/websandbox/index.js +2 -0
  172. package/helpers/websandbox/sandbox.d.ts +57 -0
  173. package/helpers/websandbox/sandbox.js +175 -0
  174. package/helpers/websandbox/types.d.ts +13 -0
  175. package/helpers/websandbox/types.js +1 -0
  176. package/index.js +7 -19
  177. package/logger/RocosLogger.js +18 -44
  178. package/models/CallsignStatus.d.ts +6 -0
  179. package/models/CallsignStatus.js +7 -0
  180. package/models/ExportDataQuery.js +1 -5
  181. package/models/ExternalProject.js +1 -5
  182. package/models/IBaseService.d.ts +1 -0
  183. package/models/IBaseService.js +1 -2
  184. package/models/IConfigGroup.js +1 -2
  185. package/models/IDebugLevel.d.ts +1 -1
  186. package/models/IDebugLevel.js +1 -2
  187. package/models/IExportDataQuery.js +1 -2
  188. package/models/IFunctionConfig.js +1 -2
  189. package/models/IInvitation.d.ts +1 -1
  190. package/models/IInvitation.js +1 -2
  191. package/models/IInvitationExists.js +1 -2
  192. package/models/IOperation.js +1 -2
  193. package/models/IPersonalAccessToken.js +1 -2
  194. package/models/IProject.js +1 -2
  195. package/models/IProjectApplication.js +1 -2
  196. package/models/IRobot.d.ts +1 -0
  197. package/models/IRobot.js +1 -2
  198. package/models/IRobotConfig.js +1 -2
  199. package/models/IRobotPlugin.js +1 -2
  200. package/models/IRobotSettings.d.ts +28 -0
  201. package/models/IRobotSettings.js +1 -0
  202. package/models/IRobotTemplate.js +1 -2
  203. package/models/IRocosSDKConfig.d.ts +3 -9
  204. package/models/IRocosSDKConfig.js +1 -2
  205. package/models/ISource.js +1 -2
  206. package/models/IStream.js +1 -2
  207. package/models/IStreamConfig.js +1 -2
  208. package/models/IStreamOptions.js +1 -2
  209. package/models/IStreamSource.js +1 -2
  210. package/models/ISubscriberStatus.js +1 -2
  211. package/models/ITelemetryStreamConfig.js +1 -2
  212. package/models/IToken.d.ts +7 -3
  213. package/models/IToken.js +1 -2
  214. package/models/IWidget.js +1 -2
  215. package/models/IWidgetLineGroup.js +1 -2
  216. package/models/ResponseLevelEnum.d.ts +4 -0
  217. package/models/ResponseLevelEnum.js +6 -5
  218. package/models/Robot.d.ts +1 -0
  219. package/models/Robot.js +1 -5
  220. package/models/RobotConfig.js +1 -5
  221. package/models/RobotPlugin.js +1 -5
  222. package/models/RobotTemplate.js +9 -14
  223. package/models/RocosError.d.ts +1 -0
  224. package/models/RocosError.js +3 -6
  225. package/models/ServiceEnum.d.ts +2 -1
  226. package/models/ServiceEnum.js +3 -5
  227. package/models/Stream.js +4 -8
  228. package/models/StreamOptions.js +1 -5
  229. package/models/StreamSource.js +3 -7
  230. package/models/SubscriberStatusEnum.js +2 -5
  231. package/models/Token.d.ts +36 -4
  232. package/models/Token.js +74 -11
  233. package/models/Token.spec.d.ts +1 -0
  234. package/models/Token.spec.js +108 -0
  235. package/models/Widget.js +4 -8
  236. package/models/WidgetLineGroup.js +1 -5
  237. package/models/asset-storage/AssetModelItem.d.ts +3 -0
  238. package/models/asset-storage/AssetModelItem.js +1 -2
  239. package/models/caller/IRocosCallerMessageChunk.d.ts +8 -2
  240. package/models/caller/IRocosCallerMessageChunk.js +1 -2
  241. package/models/caller/IRocosCallerMessageChunks.d.ts +2 -3
  242. package/models/caller/IRocosCallerMessageChunks.js +1 -2
  243. package/models/caller/IRocosCallerMessageHeartbeat.d.ts +3 -2
  244. package/models/caller/IRocosCallerMessageHeartbeat.js +1 -2
  245. package/models/caller/IRocosCallerMessageResponse.d.ts +3 -2
  246. package/models/caller/IRocosCallerMessageResponse.js +1 -2
  247. package/models/caller/IRocosCallerMessageResponseAck.d.ts +16 -2
  248. package/models/caller/IRocosCallerMessageResponseAck.js +13 -2
  249. package/models/caller/IRocosCallerMessageResponseResult.d.ts +15 -2
  250. package/models/caller/IRocosCallerMessageResponseResult.js +12 -2
  251. package/models/caller/IRocosCallerMessageResponseReturn.d.ts +8 -0
  252. package/models/caller/IRocosCallerMessageResponseReturn.js +1 -0
  253. package/models/caller/IRocosCallerMessageResponseUid.d.ts +10 -2
  254. package/models/caller/IRocosCallerMessageResponseUid.js +7 -2
  255. package/models/caller/IRocosCallerMessageResponses.d.ts +2 -3
  256. package/models/caller/IRocosCallerMessageResponses.js +1 -2
  257. package/models/caller/RocosCallerResultStatus.d.ts +11 -1
  258. package/models/caller/RocosCallerResultStatus.js +12 -5
  259. package/models/caller/RocosResponseLevel.d.ts +6 -0
  260. package/models/caller/RocosResponseLevel.js +7 -0
  261. package/models/caller/index.d.ts +11 -0
  262. package/models/caller/index.js +11 -0
  263. package/models/callsigns/CallsignsEnums.d.ts +3 -3
  264. package/models/callsigns/CallsignsEnums.js +11 -14
  265. package/models/callsigns/CallsignsLookup.js +10 -15
  266. package/models/callsigns/CallsignsQuery.js +1 -5
  267. package/models/callsigns/CallsignsQueryPredicate.js +1 -5
  268. package/models/command/IRocosCommandMessageHeartbeat.d.ts +1 -2
  269. package/models/command/IRocosCommandMessageHeartbeat.js +1 -2
  270. package/models/command/IRocosCommandMessageResponse.d.ts +55 -2
  271. package/models/command/IRocosCommandMessageResponse.js +29 -2
  272. package/models/command/RocosCommandResultStatus.d.ts +11 -1
  273. package/models/command/RocosCommandResultStatus.js +12 -5
  274. package/models/command/index.d.ts +4 -0
  275. package/models/command/index.js +4 -0
  276. package/models/file/FileEnums.d.ts +4 -4
  277. package/models/file/FileEnums.js +9 -12
  278. package/models/index.d.ts +6 -31
  279. package/models/index.js +76 -113
  280. package/models/integrations/Overlay.js +1 -2
  281. package/models/integrations/Plan.js +1 -2
  282. package/models/maps/Map.d.ts +2 -3
  283. package/models/maps/Map.js +1 -2
  284. package/models/maps/Panorama.d.ts +36 -0
  285. package/models/maps/Panorama.js +1 -0
  286. package/models/message/IRocosCallerMessage.js +1 -2
  287. package/models/message/IRocosChangeMessage.js +1 -2
  288. package/models/message/IRocosCommandMessage.js +1 -2
  289. package/models/message/IRocosControlMessage.js +1 -2
  290. package/models/message/IRocosOpResultMessage.d.ts +2 -2
  291. package/models/message/IRocosOpResultMessage.js +1 -2
  292. package/models/message/IRocosSearchMessage.js +1 -2
  293. package/models/message/IRocosSearchRowMessage.js +1 -2
  294. package/models/message/IRocosSearchStatusMessage.js +1 -2
  295. package/models/message/IRocosTelemetryMessage.d.ts +12 -7
  296. package/models/message/IRocosTelemetryMessage.js +1 -2
  297. package/models/message/IStreamStatusMessage.js +1 -2
  298. package/models/message/RocosCallerMessage.d.ts +2 -4
  299. package/models/message/RocosCallerMessage.js +24 -15
  300. package/models/message/RocosCommandMessage.d.ts +2 -3
  301. package/models/message/RocosCommandMessage.js +5 -8
  302. package/models/message/RocosControlMessage.d.ts +1 -1
  303. package/models/message/RocosControlMessage.js +6 -10
  304. package/models/message/RocosOpResultMessage.d.ts +3 -2
  305. package/models/message/RocosOpResultMessage.js +6 -10
  306. package/models/message/RocosSearchMessage.d.ts +1 -1
  307. package/models/message/RocosSearchMessage.js +5 -9
  308. package/models/message/RocosSearchRowMessage.d.ts +1 -1
  309. package/models/message/RocosSearchRowMessage.js +8 -12
  310. package/models/message/RocosTelemetryMessage.d.ts +9 -23
  311. package/models/message/RocosTelemetryMessage.js +51 -93
  312. package/models/message/index.d.ts +17 -0
  313. package/models/message/index.js +17 -0
  314. package/models/params/ICallerParams.d.ts +12 -1
  315. package/models/params/ICallerParams.js +1 -2
  316. package/models/params/ICommandParams.js +1 -2
  317. package/models/params/IControlParams.d.ts +1 -1
  318. package/models/params/IControlParams.js +1 -2
  319. package/models/params/IFileAccessorParams.js +1 -2
  320. package/models/params/ISearchParams.js +1 -2
  321. package/models/params/ITelemetryParams.d.ts +1 -1
  322. package/models/params/ITelemetryParams.js +1 -2
  323. package/models/params/IWebRTCSignallingParams.js +1 -2
  324. package/models/projects/ProjectUser.js +1 -2
  325. package/models/schedule/IScheduleAction.d.ts +1 -1
  326. package/models/schedule/IScheduleAction.js +2 -5
  327. package/models/schedule/IScheduleInfo.js +1 -2
  328. package/models/schedule/IScheduleJob.js +1 -2
  329. package/models/search/SearchQueryFilter.js +1 -5
  330. package/models/search/SearchStreamQuery.js +1 -5
  331. package/models/stream/IBaseStream.js +1 -2
  332. package/models/stream/ICallerStream.js +1 -2
  333. package/models/stream/ICommandStream.js +1 -2
  334. package/models/stream/IControlStream.js +1 -2
  335. package/models/stream/IFileAccessorStream.d.ts +1 -2
  336. package/models/stream/IFileAccessorStream.js +1 -2
  337. package/models/stream/ISearchStream.js +1 -2
  338. package/models/stream/ITelemetryStream.js +1 -2
  339. package/models/stream/IWebRTCSignallingStream.d.ts +51 -16
  340. package/models/stream/IWebRTCSignallingStream.js +1 -7
  341. package/models/types.d.ts +5 -5
  342. package/models/types.js +1 -2
  343. package/models/workflow/Workflow.d.ts +36 -0
  344. package/models/workflow/Workflow.js +1 -0
  345. package/node/RocosSDKNode.d.ts +6 -1
  346. package/node/RocosSDKNode.js +82 -80
  347. package/node/index.js +7 -19
  348. package/package.json +10 -11
  349. package/services/AssetStorageService.d.ts +23 -1
  350. package/services/AssetStorageService.js +53 -24
  351. package/services/AuthService.d.ts +59 -27
  352. package/services/AuthService.js +167 -86
  353. package/services/AuthService.spec.d.ts +1 -0
  354. package/services/AuthService.spec.js +163 -0
  355. package/services/BaseServiceAbstract.d.ts +11 -13
  356. package/services/BaseServiceAbstract.js +18 -24
  357. package/services/BaseStreamService.d.ts +18 -0
  358. package/services/BaseStreamService.js +47 -0
  359. package/services/CallerService.d.ts +37 -17
  360. package/services/CallerService.js +86 -65
  361. package/services/CallerService.spec.d.ts +1 -0
  362. package/services/CallerService.spec.js +227 -0
  363. package/services/CallerServiceNode.js +4 -8
  364. package/services/CommandService.d.ts +5 -17
  365. package/services/CommandService.js +19 -62
  366. package/services/CommandServiceNode.js +4 -8
  367. package/services/ConfigGroupService.js +17 -21
  368. package/services/ControlService.d.ts +5 -17
  369. package/services/ControlService.js +22 -65
  370. package/services/ControlServiceNode.js +4 -8
  371. package/services/DashboardService.js +20 -24
  372. package/services/EvaluatorService.d.ts +11 -0
  373. package/services/EvaluatorService.js +28 -0
  374. package/services/EventService.js +13 -17
  375. package/services/FileAccessorService.d.ts +4 -18
  376. package/services/FileAccessorService.js +14 -62
  377. package/services/FileAccessorServiceNode.js +4 -8
  378. package/services/FunctionService.js +17 -21
  379. package/services/IntegrationService.js +14 -19
  380. package/services/MapService.d.ts +71 -25
  381. package/services/MapService.js +113 -40
  382. package/services/PlatformTimeService.js +8 -12
  383. package/services/PlatformTimeService.spec.d.ts +1 -0
  384. package/services/PlatformTimeService.spec.js +180 -0
  385. package/services/ProfileService.js +36 -40
  386. package/services/ProjectService.js +23 -27
  387. package/services/RobotService.d.ts +2 -6
  388. package/services/RobotService.js +48 -55
  389. package/services/ScheduleService.js +10 -14
  390. package/services/SearchService.d.ts +4 -17
  391. package/services/SearchService.js +24 -59
  392. package/services/SearchServiceNode.js +4 -8
  393. package/services/SpotProvisioningService.d.ts +1 -1
  394. package/services/SpotProvisioningService.js +16 -16
  395. package/services/SpotProvisioningServiceNode.d.ts +1 -1
  396. package/services/SpotProvisioningServiceNode.js +16 -16
  397. package/services/StreamService.js +26 -30
  398. package/services/TelemetryService.d.ts +15 -17
  399. package/services/TelemetryService.js +103 -93
  400. package/services/TelemetryService.spec.d.ts +1 -0
  401. package/services/TelemetryService.spec.js +37 -0
  402. package/services/TelemetryServiceNode.js +4 -8
  403. package/services/TimeSyncerService.js +9 -13
  404. package/services/UserService.js +37 -41
  405. package/services/WebRTCSignallingService.d.ts +4 -4
  406. package/services/WebRTCSignallingService.js +24 -27
  407. package/services/WorkflowService.d.ts +25 -29
  408. package/services/WorkflowService.js +39 -75
  409. package/services/index.d.ts +1 -0
  410. package/services/index.js +27 -38
  411. package/store/RocosStore.js +9 -15
  412. package/demo/angular/.editorconfig +0 -16
  413. package/demo/angular/.eslintignore +0 -4
  414. package/demo/angular/.eslintrc.json +0 -50
  415. package/demo/angular/README.md +0 -36
  416. package/demo/angular/angular.json +0 -132
  417. package/demo/angular/karma.conf.js +0 -44
  418. package/demo/angular/package.json +0 -41
  419. package/demo/angular/src/app/app.component.css +0 -0
  420. package/demo/angular/src/app/app.component.html +0 -9
  421. package/demo/angular/src/app/app.component.ts +0 -10
  422. package/demo/angular/src/app/app.module.ts +0 -38
  423. package/demo/angular/src/app/components/assets/assets.component.css +0 -0
  424. package/demo/angular/src/app/components/assets/assets.component.html +0 -29
  425. package/demo/angular/src/app/components/assets/assets.component.ts +0 -107
  426. package/demo/angular/src/app/components/auth/auth.component.css +0 -0
  427. package/demo/angular/src/app/components/auth/auth.component.html +0 -27
  428. package/demo/angular/src/app/components/auth/auth.component.ts +0 -33
  429. package/demo/angular/src/app/components/caller/caller.component.css +0 -0
  430. package/demo/angular/src/app/components/caller/caller.component.html +0 -22
  431. package/demo/angular/src/app/components/caller/caller.component.ts +0 -61
  432. package/demo/angular/src/app/components/command/command.component.css +0 -0
  433. package/demo/angular/src/app/components/command/command.component.html +0 -22
  434. package/demo/angular/src/app/components/command/command.component.ts +0 -60
  435. package/demo/angular/src/app/components/integrations/integrations.component.ts +0 -43
  436. package/demo/angular/src/app/components/robots/robots.component.css +0 -0
  437. package/demo/angular/src/app/components/robots/robots.component.html +0 -13
  438. package/demo/angular/src/app/components/robots/robots.component.ts +0 -26
  439. package/demo/angular/src/app/components/sdk/sdk.component.css +0 -0
  440. package/demo/angular/src/app/components/sdk/sdk.component.html +0 -43
  441. package/demo/angular/src/app/components/sdk/sdk.component.ts +0 -50
  442. package/demo/angular/src/app/components/subscription/subscription.component.css +0 -0
  443. package/demo/angular/src/app/components/subscription/subscription.component.html +0 -6
  444. package/demo/angular/src/app/components/subscription/subscription.component.ts +0 -40
  445. package/demo/angular/src/app/components/telemetry/telemetry.component.css +0 -0
  446. package/demo/angular/src/app/components/telemetry/telemetry.component.html +0 -19
  447. package/demo/angular/src/app/components/telemetry/telemetry.component.ts +0 -61
  448. package/demo/angular/src/app/components/token/token.component.css +0 -0
  449. package/demo/angular/src/app/components/token/token.component.html +0 -10
  450. package/demo/angular/src/app/components/token/token.component.ts +0 -18
  451. package/demo/angular/src/app/components/video/p2pvideo/index.ts +0 -646
  452. package/demo/angular/src/app/components/video/video-source.ts +0 -315
  453. package/demo/angular/src/app/components/video/video.component.css +0 -6
  454. package/demo/angular/src/app/components/video/video.component.html +0 -54
  455. package/demo/angular/src/app/components/video/video.component.ts +0 -151
  456. package/demo/angular/src/app/services/sdk.service.ts +0 -193
  457. package/demo/angular/src/assets/.gitkeep +0 -0
  458. package/demo/angular/src/assets/HKGrotesk-Bold.otf +0 -0
  459. package/demo/angular/src/assets/HKGrotesk-Regular.otf +0 -0
  460. package/demo/angular/src/assets/logo.svg +0 -16
  461. package/demo/angular/src/environments/environment.prod.ts +0 -3
  462. package/demo/angular/src/environments/environment.ts +0 -16
  463. package/demo/angular/src/favicon.ico +0 -0
  464. package/demo/angular/src/index.html +0 -15
  465. package/demo/angular/src/main.ts +0 -7
  466. package/demo/angular/src/polyfills.ts +0 -53
  467. package/demo/angular/src/styles.css +0 -198
  468. package/demo/angular/tsconfig.app.json +0 -15
  469. package/demo/angular/tsconfig.json +0 -39
  470. package/demo/html/README.md +0 -8
  471. package/demo/html/assets/HKGrotesk-Bold.otf +0 -0
  472. package/demo/html/assets/HKGrotesk-Regular.otf +0 -0
  473. package/demo/html/assets/logo.svg +0 -16
  474. package/demo/html/favicon.ico +0 -0
  475. package/demo/html/index.html +0 -416
  476. package/demo/html/rocos-js-sdk.js +0 -3
  477. package/demo/html/rocos-js-sdk.js.LICENSE.txt +0 -8
  478. package/demo/html/rocos-js-sdk.js.map +0 -1
  479. package/demo/html/styles.css +0 -190
  480. package/demo/node/README.md +0 -17
  481. package/demo/node/index.js +0 -134
  482. package/demo/node/package.json +0 -8
  483. package/demo/react/.env +0 -1
  484. package/demo/react/.env.dist +0 -1
  485. package/demo/react/.eslintrc.json +0 -46
  486. package/demo/react/README.md +0 -65
  487. package/demo/react/package.json +0 -60
  488. package/demo/react/public/favicon.ico +0 -0
  489. package/demo/react/public/index.html +0 -43
  490. package/demo/react/public/logo192.png +0 -0
  491. package/demo/react/public/logo512.png +0 -0
  492. package/demo/react/public/manifest.json +0 -25
  493. package/demo/react/public/robots.txt +0 -3
  494. package/demo/react/src/App.css +0 -190
  495. package/demo/react/src/App.tsx +0 -31
  496. package/demo/react/src/actions/index.ts +0 -8
  497. package/demo/react/src/actions/sdkActions.ts +0 -62
  498. package/demo/react/src/assets/HKGrotesk-Bold.otf +0 -0
  499. package/demo/react/src/assets/HKGrotesk-Regular.otf +0 -0
  500. package/demo/react/src/assets/logo.svg +0 -16
  501. package/demo/react/src/components/AuthForm.tsx +0 -76
  502. package/demo/react/src/components/CallerBox.tsx +0 -53
  503. package/demo/react/src/components/CallerForm.tsx +0 -98
  504. package/demo/react/src/components/CommandBox.tsx +0 -47
  505. package/demo/react/src/components/CommandForm.tsx +0 -98
  506. package/demo/react/src/components/RobotsForm.tsx +0 -51
  507. package/demo/react/src/components/SubscriptionBox.tsx +0 -55
  508. package/demo/react/src/components/TelemetryForm.tsx +0 -98
  509. package/demo/react/src/components/TokenForm.tsx +0 -39
  510. package/demo/react/src/config.json +0 -14
  511. package/demo/react/src/controllers/RocosSDKController.ts +0 -48
  512. package/demo/react/src/helpers/deepEqual.ts +0 -27
  513. package/demo/react/src/hooks/useInput.ts +0 -29
  514. package/demo/react/src/index.css +0 -11
  515. package/demo/react/src/index.tsx +0 -26
  516. package/demo/react/src/react-app-env.d.ts +0 -1
  517. package/demo/react/src/reducers/sdkReducer.ts +0 -133
  518. package/demo/react/src/reportWebVitals.ts +0 -15
  519. package/demo/react/src/selectors/sdkSelector.ts +0 -11
  520. package/demo/react/src/setupTests.ts +0 -5
  521. package/demo/react/src/store.ts +0 -14
  522. package/demo/react/tsconfig.json +0 -26
  523. package/demo/sdk-sizer/dist/sdk-sizer/3rdpartylicenses.txt +0 -975
  524. package/demo/sdk-sizer/dist/sdk-sizer/favicon.ico +0 -0
  525. package/demo/sdk-sizer/dist/sdk-sizer/index.html +0 -12
  526. package/demo/sdk-sizer/dist/sdk-sizer/main.c9183649ce1856ef.js +0 -2
  527. package/demo/sdk-sizer/dist/sdk-sizer/main.c9183649ce1856ef.js.map +0 -1
  528. package/demo/sdk-sizer/dist/sdk-sizer/polyfills.701c8e5d007909aa.js +0 -2
  529. package/demo/sdk-sizer/dist/sdk-sizer/polyfills.701c8e5d007909aa.js.map +0 -1
  530. package/demo/sdk-sizer/dist/sdk-sizer/runtime.00e20e689f5284a8.js +0 -2
  531. package/demo/sdk-sizer/dist/sdk-sizer/runtime.00e20e689f5284a8.js.map +0 -1
  532. package/demo/sdk-sizer/dist/sdk-sizer/stats.json +0 -1
  533. package/demo/sdk-sizer/dist/sdk-sizer/styles.b45f7e627ac8cbce.css +0 -2
  534. package/demo/sdk-sizer/dist/sdk-sizer/styles.b45f7e627ac8cbce.css.map +0 -1
  535. package/grpc/file-accessor/filagree_grpc_pb.d.ts +0 -41
  536. package/grpc/file-accessor/filagree_grpc_pb.js +0 -121
  537. package/grpc/file-accessor/filagree_pb.d.ts +0 -339
  538. package/grpc/file-accessor/filagree_pb.js +0 -2261
  539. package/grpc/file-accessor/filagree_pb_service.d.ts +0 -115
  540. package/grpc/file-accessor/filagree_pb_service.js +0 -257
  541. package/grpc/rambo/rambo.v1_grpc_pb.d.ts +0 -39
  542. package/grpc/rambo/rambo.v1_grpc_pb.js +0 -73
  543. package/grpc/rambo/rambo.v1_pb.d.ts +0 -365
  544. package/grpc/rambo/rambo.v1_pb.js +0 -2469
  545. package/grpc/rambo/rambo.v1_pb_service.d.ts +0 -76
  546. package/grpc/rambo/rambo.v1_pb_service.js +0 -138
  547. package/grpc/rambo/uri.v1_grpc_pb.d.ts +0 -1
  548. package/grpc/rambo/uri.v1_grpc_pb.js +0 -1
  549. package/grpc/rambo/uri.v1_pb.d.ts +0 -80
  550. package/grpc/rambo/uri.v1_pb.js +0 -563
  551. package/grpc/rambo/uri.v1_pb_service.d.ts +0 -3
  552. package/grpc/rambo/uri.v1_pb_service.js +0 -3
  553. package/grpc/robot-control/conker_grpc_pb.d.ts +0 -46
  554. package/grpc/robot-control/conker_grpc_pb.js +0 -143
  555. package/grpc/robot-control/conker_pb.d.ts +0 -168
  556. package/grpc/robot-control/conker_pb.js +0 -1287
  557. package/grpc/robot-control/conker_pb_service.d.ts +0 -126
  558. package/grpc/robot-control/conker_pb_service.js +0 -301
  559. package/grpc/serviette/common.v1_grpc_pb.d.ts +0 -1
  560. package/grpc/serviette/common.v1_grpc_pb.js +0 -1
  561. package/grpc/serviette/common.v1_pb.d.ts +0 -8
  562. package/grpc/serviette/common.v1_pb.js +0 -45
  563. package/grpc/serviette/common.v1_pb_service.d.ts +0 -3
  564. package/grpc/serviette/common.v1_pb_service.js +0 -3
  565. package/grpc/serviette/serviette.v1_grpc_pb.d.ts +0 -137
  566. package/grpc/serviette/serviette.v1_grpc_pb.js +0 -331
  567. package/grpc/serviette/serviette.v1_pb.d.ts +0 -884
  568. package/grpc/serviette/serviette.v1_pb.js +0 -6363
  569. package/grpc/serviette/serviette.v1_pb_service.d.ts +0 -278
  570. package/grpc/serviette/serviette.v1_pb_service.js +0 -699
  571. package/grpc/serviette/uri.v1_grpc_pb.d.ts +0 -1
  572. package/grpc/serviette/uri.v1_grpc_pb.js +0 -1
  573. package/grpc/serviette/uri.v1_pb.d.ts +0 -102
  574. package/grpc/serviette/uri.v1_pb.js +0 -741
  575. package/grpc/serviette/uri.v1_pb_service.d.ts +0 -3
  576. package/grpc/serviette/uri.v1_pb_service.js +0 -3
  577. package/grpc/slowlane/slowlane_grpc_pb.d.ts +0 -38
  578. package/grpc/slowlane/slowlane_grpc_pb.js +0 -132
  579. package/grpc/slowlane/slowlane_pb.d.ts +0 -373
  580. package/grpc/slowlane/slowlane_pb.js +0 -2908
  581. package/grpc/slowlane/slowlane_pb_service.d.ts +0 -112
  582. package/grpc/slowlane/slowlane_pb_service.js +0 -189
  583. package/grpc/teletubby/teletubby_grpc_pb.d.ts +0 -73
  584. package/grpc/teletubby/teletubby_grpc_pb.js +0 -231
  585. package/grpc/teletubby/teletubby_pb.d.ts +0 -647
  586. package/grpc/teletubby/teletubby_pb.js +0 -4786
  587. package/grpc/teletubby/teletubby_pb_service.d.ts +0 -193
  588. package/grpc/teletubby/teletubby_pb_service.js +0 -436
  589. package/grpc/video/pigeon_grpc_pb.d.ts +0 -59
  590. package/grpc/video/pigeon_grpc_pb.js +0 -180
  591. package/grpc/video/pigeon_pb.d.ts +0 -237
  592. package/grpc/video/pigeon_pb.js +0 -1775
  593. package/grpc/video/pigeon_pb_service.d.ts +0 -152
  594. package/grpc/video/pigeon_pb_service.js +0 -292
  595. package/models/ISignupParams.d.ts +0 -8
  596. package/models/ISignupParams.js +0 -2
  597. package/utils/axisangle.d.ts +0 -18
  598. package/utils/axisangle.js +0 -48
  599. package/utils/eulerangles.d.ts +0 -22
  600. package/utils/eulerangles.js +0 -133
  601. package/utils/helperfunctions.d.ts +0 -5
  602. package/utils/helperfunctions.js +0 -50
  603. package/utils/localtransform.d.ts +0 -17
  604. package/utils/localtransform.js +0 -50
  605. package/utils/localtransformtree.d.ts +0 -17
  606. package/utils/localtransformtree.js +0 -88
  607. package/utils/misc.d.ts +0 -17
  608. package/utils/misc.js +0 -23
  609. package/utils/positionvector.d.ts +0 -13
  610. package/utils/positionvector.js +0 -79
  611. package/utils/quaternion.d.ts +0 -20
  612. package/utils/quaternion.js +0 -62
  613. package/utils/rotationmatrix.d.ts +0 -23
  614. package/utils/rotationmatrix.js +0 -262
  615. package/utils/transformationmatrix.d.ts +0 -12
  616. package/utils/transformationmatrix.js +0 -123
  617. package/utils/vector3.d.ts +0 -11
  618. package/utils/vector3.js +0 -61
@@ -2,7 +2,7 @@
2
2
  import { IBaseService, IRocosSDKConfig, RocosError } from '../models';
3
3
  import { BaseServiceAbstract } from './BaseServiceAbstract';
4
4
  import { Timezone } from '../constants/timezones';
5
- declare type SpotImageTag = 'stable' | 'dev' | 'unstable';
5
+ type SpotImageTag = 'stable' | 'dev' | 'unstable';
6
6
  export declare class SpotProvisioningServiceNode extends BaseServiceAbstract implements IBaseService {
7
7
  constructor(config: IRocosSDKConfig);
8
8
  getStatus(): boolean;
@@ -1,34 +1,35 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SpotProvisioningServiceNode = void 0;
4
- const models_1 = require("../models");
5
- const api_1 = require("../constants/api");
6
- const BaseServiceAbstract_1 = require("./BaseServiceAbstract");
7
- const RocosLogger_1 = require("../logger/RocosLogger");
8
- const RocosStore_1 = require("../store/RocosStore");
9
- const formatServiceUrl_1 = require("../helpers/formatServiceUrl");
10
- class SpotProvisioningServiceNode extends BaseServiceAbstract_1.BaseServiceAbstract {
1
+ import { RocosError, errorCodes } from '../models';
2
+ import { API_SPOTTY_URL } from '../constants/api';
3
+ import { BaseServiceAbstract } from './BaseServiceAbstract';
4
+ import { RocosLogger } from '../logger/RocosLogger';
5
+ import { RocosStore } from '../store/RocosStore';
6
+ import { formatServiceUrl } from '../helpers/formatServiceUrl';
7
+ export class SpotProvisioningServiceNode extends BaseServiceAbstract {
11
8
  constructor(config) {
12
9
  super(config);
13
- this.logger = RocosLogger_1.RocosLogger.getInstance(`SpotService(${this.config.url})`);
10
+ this.logger = RocosLogger.getInstance(`SpotService(${this.config.url})`);
14
11
  }
15
12
  getStatus() {
16
13
  return true;
17
14
  }
18
15
  getError(e) {
19
- return new models_1.RocosError(e, models_1.errorCodes.SPOT_SERVICE_ERROR);
16
+ return new RocosError(e, errorCodes.SPOT_SERVICE_ERROR);
20
17
  }
21
18
  async getSpotCoreImage(projectId, profileId, robot, tag = 'stable', patMetadata, timezone) {
22
- const userService = RocosStore_1.RocosStore.getSDKInstance(this.config).getUserService();
19
+ const userService = RocosStore.getSDKInstance(this.config).getUserService();
23
20
  const pat = await userService.createPAT({
24
21
  name: `Spot provisioning token for ${robot.callsign}`,
25
22
  projectId,
26
23
  scope: ['provisioning'],
27
24
  robotDefinitionId: profileId,
28
- metaData: Object.assign({ defaultRobotDefinitionId: profileId, singleUse: true }, patMetadata),
25
+ metaData: {
26
+ defaultRobotDefinitionId: profileId,
27
+ singleUse: true,
28
+ ...patMetadata,
29
+ },
29
30
  ttlDays: 90,
30
31
  });
31
- return this.callPost(formatServiceUrl_1.formatServiceUrl(api_1.API_SPOTTY_URL, { url: this.config.url }, this.config.insecure), {
32
+ return this.callPost(formatServiceUrl(API_SPOTTY_URL, { url: this.config.url }, this.config.insecure), {
32
33
  pat: pat.pat,
33
34
  callsign: robot.callsign,
34
35
  robotName: robot.name,
@@ -40,4 +41,3 @@ class SpotProvisioningServiceNode extends BaseServiceAbstract_1.BaseServiceAbstr
40
41
  });
41
42
  }
42
43
  }
43
- exports.SpotProvisioningServiceNode = SpotProvisioningServiceNode;
@@ -1,21 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StreamService = void 0;
4
- const api_1 = require("../constants/api");
5
- const RocosError_1 = require("../models/RocosError");
6
- const BaseServiceAbstract_1 = require("./BaseServiceAbstract");
7
- const RocosLogger_1 = require("../logger/RocosLogger");
8
- const Stream_1 = require("../models/Stream");
9
- const StreamSource_1 = require("../models/StreamSource");
10
- const cleanObject_1 = require("../helpers/cleanObject");
11
- const formatServiceUrl_1 = require("../helpers/formatServiceUrl");
12
- class StreamService extends BaseServiceAbstract_1.BaseServiceAbstract {
1
+ import { API_PROJECT_CALLSIGN_STREAM_URL, API_PROJECT_STREAM_CALLSIGN_URL, API_PROJECT_STREAM_DATA_URL, API_PROJECT_STREAM_ID_URL, API_PROJECT_STREAM_URL, API_SOURCE_ID_URL, API_SOURCE_URL, API_TEMPLATE_EXPORTER_URL, } from '../constants/api';
2
+ import { RocosError, errorCodes } from '../models/RocosError';
3
+ import { BaseServiceAbstract } from './BaseServiceAbstract';
4
+ import { RocosLogger } from '../logger/RocosLogger';
5
+ import { Stream } from '../models/Stream';
6
+ import { StreamSource } from '../models/StreamSource';
7
+ import { cleanObject } from '../helpers/cleanObject';
8
+ import { formatServiceUrl } from '../helpers/formatServiceUrl';
9
+ export class StreamService extends BaseServiceAbstract {
13
10
  constructor(config) {
14
11
  super(config);
15
- this.logger = RocosLogger_1.RocosLogger.getInstance(`StreamService(${this.config.url})`);
12
+ this.logger = RocosLogger.getInstance(`StreamService(${this.config.url})`);
16
13
  }
17
14
  getError(e) {
18
- return new RocosError_1.RocosError(e, RocosError_1.errorCodes.STREAM_SERVICE_ERROR);
15
+ return new RocosError(e, errorCodes.STREAM_SERVICE_ERROR);
19
16
  }
20
17
  getStatus() {
21
18
  return true;
@@ -28,14 +25,14 @@ class StreamService extends BaseServiceAbstract_1.BaseServiceAbstract {
28
25
  */
29
26
  // TODO: map the response object
30
27
  async create(projectId, stream) {
31
- return this.callPost(formatServiceUrl_1.formatServiceUrl(api_1.API_PROJECT_STREAM_URL, { url: this.config.url, projectId }, this.config.insecure), cleanObject_1.cleanObject(new Stream_1.Stream(stream)), `Failed to create stream for ${projectId}.`);
28
+ return this.callPost(formatServiceUrl(API_PROJECT_STREAM_URL, { url: this.config.url, projectId }, this.config.insecure), cleanObject(new Stream(stream)), `Failed to create stream for ${projectId}.`);
32
29
  }
33
30
  /**
34
31
  * Get streams list by project id.
35
32
  */
36
33
  async list(projectId) {
37
- const data = await this.callGet(formatServiceUrl_1.formatServiceUrl(api_1.API_PROJECT_STREAM_URL, { url: this.config.url, projectId }, this.config.insecure), `Failed to get streams for ${projectId}.`);
38
- return data.map((stream) => cleanObject_1.cleanObject(new Stream_1.Stream(stream)));
34
+ const data = await this.callGet(formatServiceUrl(API_PROJECT_STREAM_URL, { url: this.config.url, projectId }, this.config.insecure), `Failed to get streams for ${projectId}.`);
35
+ return data.map((stream) => cleanObject(new Stream(stream)));
39
36
  }
40
37
  /**
41
38
  * Get stream information by project id and stream id.
@@ -44,8 +41,8 @@ class StreamService extends BaseServiceAbstract_1.BaseServiceAbstract {
44
41
  * @param streamId - Stream Id
45
42
  */
46
43
  async info(projectId, streamId) {
47
- const data = await this.callGet(formatServiceUrl_1.formatServiceUrl(api_1.API_PROJECT_STREAM_ID_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), `Failed to get stream for ${projectId}, streamId ${streamId}.`);
48
- return cleanObject_1.cleanObject(new Stream_1.Stream(data));
44
+ const data = await this.callGet(formatServiceUrl(API_PROJECT_STREAM_ID_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), `Failed to get stream for ${projectId}, streamId ${streamId}.`);
45
+ return cleanObject(new Stream(data));
49
46
  }
50
47
  /**
51
48
  * Add new data to the stream
@@ -56,13 +53,13 @@ class StreamService extends BaseServiceAbstract_1.BaseServiceAbstract {
56
53
  */
57
54
  // TODO: map the response object
58
55
  async addData(projectId, streamId, sources) {
59
- return this.callPut(formatServiceUrl_1.formatServiceUrl(api_1.API_PROJECT_STREAM_DATA_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), { data: sources.map((source) => cleanObject_1.cleanObject(new StreamSource_1.StreamSource(source))) }, `Failed add data to stream for ${projectId}, streamId ${streamId}.`);
56
+ return this.callPut(formatServiceUrl(API_PROJECT_STREAM_DATA_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), { data: sources.map((source) => cleanObject(new StreamSource(source))) }, `Failed add data to stream for ${projectId}, streamId ${streamId}.`);
60
57
  }
61
58
  /**
62
59
  * Get sources for stream.
63
60
  */
64
61
  async sources() {
65
- return this.callGet(formatServiceUrl_1.formatServiceUrl(api_1.API_SOURCE_URL, { url: this.config.url }, this.config.insecure), 'Failed to get sources for stream.');
62
+ return this.callGet(formatServiceUrl(API_SOURCE_URL, { url: this.config.url }, this.config.insecure), 'Failed to get sources for stream.');
66
63
  }
67
64
  /**
68
65
  * Get source info
@@ -70,7 +67,7 @@ class StreamService extends BaseServiceAbstract_1.BaseServiceAbstract {
70
67
  * @param sourceId - Source Id
71
68
  */
72
69
  async sourceInfo(sourceId) {
73
- return this.callGet(formatServiceUrl_1.formatServiceUrl(api_1.API_SOURCE_ID_URL, { url: this.config.url, sourceId }, this.config.insecure), `Failed add et source info for ${sourceId}.`);
70
+ return this.callGet(formatServiceUrl(API_SOURCE_ID_URL, { url: this.config.url, sourceId }, this.config.insecure), `Failed add et source info for ${sourceId}.`);
74
71
  }
75
72
  /**
76
73
  * Get streams list of robot
@@ -79,7 +76,7 @@ class StreamService extends BaseServiceAbstract_1.BaseServiceAbstract {
79
76
  * @param callsign - Robot's Callsign
80
77
  */
81
78
  async streamsForRobot(projectId, callsign) {
82
- return this.callGet(formatServiceUrl_1.formatServiceUrl(api_1.API_PROJECT_CALLSIGN_STREAM_URL, { url: this.config.url, projectId, callsign }, this.config.insecure), `Failed get streams for ${projectId}, callsign ${callsign}.`);
79
+ return this.callGet(formatServiceUrl(API_PROJECT_CALLSIGN_STREAM_URL, { url: this.config.url, projectId, callsign }, this.config.insecure), `Failed get streams for ${projectId}, callsign ${callsign}.`);
83
80
  }
84
81
  /**
85
82
  * Bind robot with stream
@@ -90,7 +87,7 @@ class StreamService extends BaseServiceAbstract_1.BaseServiceAbstract {
90
87
  */
91
88
  // TODO: map the response object
92
89
  async bindRobot(projectId, streamId, callsigns) {
93
- return this.callPut(formatServiceUrl_1.formatServiceUrl(api_1.API_PROJECT_STREAM_CALLSIGN_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), callsigns, `Failed to bind robot with stream for ${projectId}, streamId ${streamId}.`);
90
+ return this.callPut(formatServiceUrl(API_PROJECT_STREAM_CALLSIGN_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), callsigns, `Failed to bind robot with stream for ${projectId}, streamId ${streamId}.`);
94
91
  }
95
92
  /**
96
93
  * Unbind robot with stream
@@ -101,7 +98,7 @@ class StreamService extends BaseServiceAbstract_1.BaseServiceAbstract {
101
98
  */
102
99
  // TODO: map the response object
103
100
  async unbindRobot(projectId, streamId, callsigns) {
104
- return this.callDelete(formatServiceUrl_1.formatServiceUrl(api_1.API_PROJECT_STREAM_CALLSIGN_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), `Failed to unbind robot with stream for ${projectId}, streamId ${streamId}.`, callsigns);
101
+ return this.callDelete(formatServiceUrl(API_PROJECT_STREAM_CALLSIGN_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), `Failed to unbind robot with stream for ${projectId}, streamId ${streamId}.`, callsigns);
105
102
  }
106
103
  /**
107
104
  * Remove streams by list
@@ -111,7 +108,7 @@ class StreamService extends BaseServiceAbstract_1.BaseServiceAbstract {
111
108
  */
112
109
  // TODO: map the response object
113
110
  async removeStreams(projectId, streamIds) {
114
- return this.callDelete(formatServiceUrl_1.formatServiceUrl(api_1.API_PROJECT_STREAM_URL, { url: this.config.url, projectId }, this.config.insecure), `Failed to remove stream for ${projectId}.`, streamIds);
111
+ return this.callDelete(formatServiceUrl(API_PROJECT_STREAM_URL, { url: this.config.url, projectId }, this.config.insecure), `Failed to remove stream for ${projectId}.`, streamIds);
115
112
  }
116
113
  /**
117
114
  * Remove stream data by dataIds list
@@ -122,7 +119,7 @@ class StreamService extends BaseServiceAbstract_1.BaseServiceAbstract {
122
119
  */
123
120
  // TODO: map the response object
124
121
  async removeStreamData(projectId, streamId, dataIds) {
125
- return this.callDelete(formatServiceUrl_1.formatServiceUrl(api_1.API_PROJECT_STREAM_DATA_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), `Failed to remove streams for ${projectId}, streamId ${streamId}.`, dataIds);
122
+ return this.callDelete(formatServiceUrl(API_PROJECT_STREAM_DATA_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), `Failed to remove streams for ${projectId}, streamId ${streamId}.`, dataIds);
126
123
  }
127
124
  /**
128
125
  * Remove stream data by ids list
@@ -133,14 +130,13 @@ class StreamService extends BaseServiceAbstract_1.BaseServiceAbstract {
133
130
  */
134
131
  // TODO: map the response object
135
132
  async removeStreamDataByIds(projectId, streamId, ids) {
136
- return this.callDelete(formatServiceUrl_1.formatServiceUrl(api_1.API_PROJECT_STREAM_DATA_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), `Failed to remove streams for ${projectId}, streamId ${streamId}.`, ids);
133
+ return this.callDelete(formatServiceUrl(API_PROJECT_STREAM_DATA_URL, { url: this.config.url, projectId, streamId }, this.config.insecure), `Failed to remove streams for ${projectId}, streamId ${streamId}.`, ids);
137
134
  }
138
135
  /**
139
136
  * Get stream data exporter templates list
140
137
  */
141
138
  // TODO: map the response object
142
139
  async dataExporterTemplates() {
143
- return this.callGet(formatServiceUrl_1.formatServiceUrl(api_1.API_TEMPLATE_EXPORTER_URL, { url: this.config.url }, this.config.insecure), 'Failed to get data exporters.');
140
+ return this.callGet(formatServiceUrl(API_TEMPLATE_EXPORTER_URL, { url: this.config.url }, this.config.insecure), 'Failed to get data exporters.');
144
141
  }
145
142
  }
146
- exports.StreamService = StreamService;
@@ -1,23 +1,11 @@
1
- import { Observable, Subject } from 'rxjs';
2
- import { ITelemetrySubscriptionParams, ITelemetrySubscriptions } from '../models/params/ITelemetryParams';
3
- import { IBaseService } from '../models/IBaseService';
4
- import { IRocosSDKConfig } from '../models/IRocosSDKConfig';
5
- import { IRocosTelemetryMessage } from '../models/message/IRocosTelemetryMessage';
6
- import { IStreamStatusMessage } from '../models/message/IStreamStatusMessage';
7
- import { ISubscriberStatus } from '../models/ISubscriberStatus';
8
- import { ITelemetryStream } from '../models/stream/ITelemetryStream';
9
- import { ITelemetryStreamConfig } from '../models/ITelemetryStreamConfig';
10
- import { SubscriberStatusEnum } from '../models/SubscriberStatusEnum';
11
- export declare class TelemetryService implements IBaseService, ISubscriberStatus {
12
- private config;
13
- private logger;
14
- private status;
1
+ import { Observable } from 'rxjs';
2
+ import { CallsignStatus, IRocosSDKConfig, IRocosTelemetryMessage, IStreamStatusMessage, ITelemetryStream, ITelemetryStreamConfig, ITelemetrySubscriptionParams, ITelemetrySubscriptions } from '../models';
3
+ import { BaseStreamService } from './BaseStreamService';
4
+ export declare class TelemetryService extends BaseStreamService<ITelemetryStream, ITelemetryStreamConfig> {
15
5
  private statusSubscription;
16
6
  private changeStream$;
17
7
  private streamStatusSubject$;
18
- status$: Subject<SubscriberStatusEnum>;
19
8
  constructor(config: IRocosSDKConfig);
20
- getStatus(): boolean;
21
9
  /**
22
10
  * The main method for subscribing to telemetry messages
23
11
  *
@@ -38,6 +26,16 @@ export declare class TelemetryService implements IBaseService, ISubscriberStatus
38
26
  * @returns An Observable that outputs stream status
39
27
  */
40
28
  getStatusChanges(): Observable<IStreamStatusMessage>;
41
- private initStream;
29
+ /**
30
+ * Subscribes to the heartbeat telemetry and checks we receive one at least every 5s
31
+ * @param projectId
32
+ * @param callsign
33
+ * @param heartbeatTimeoutMs optionally override the deadline for heartbeats (in ms). Default 5000ms
34
+ * @param intervalMs optionally override the interval to check for heartbeats (in ms). Default 2000ms
35
+ */
36
+ getRobotStatusChanges(projectId: string, callsign: string, heartbeatTimeoutMs?: number, intervalMs?: number): Observable<CallsignStatus>;
37
+ protected initStream(stream: ITelemetryStream): Promise<void>;
38
+ private buildScope;
39
+ private createStream;
42
40
  protected getStream(config: ITelemetryStreamConfig): ITelemetryStream;
43
41
  }
@@ -1,41 +1,31 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TelemetryService = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const RocosError_1 = require("../models/RocosError");
6
- const operators_1 = require("rxjs/operators");
7
- const CallsignsLookup_1 = require("../models/callsigns/CallsignsLookup");
8
- const CallsignsEnums_1 = require("../models/callsigns/CallsignsEnums");
9
- const identifier_1 = require("../constants/identifier");
10
- const RocosLogger_1 = require("../logger/RocosLogger");
11
- const RocosStore_1 = require("../store/RocosStore");
12
- const StreamRegister_1 = require("../api/StreamRegister");
13
- const SubscriberStatusEnum_1 = require("../models/SubscriberStatusEnum");
14
- const TelemetryStream_1 = require("../api/streams/telemetry/TelemetryStream");
15
- const arrayUnique_1 = require("../helpers/arrayUnique");
16
- const getUniqueId_1 = require("../helpers/getUniqueId");
17
- class TelemetryService {
1
+ import { BehaviorSubject, catchError, combineLatest, distinctUntilChanged, from, interval, map, mergeAll, of, startWith, } from 'rxjs';
2
+ import { CallsignsLookup, CallsignsLookupType, CallsignStatus, errorCodes, RocosError, SubscriberStatusEnum, } from '../models';
3
+ import { filter, finalize } from 'rxjs/operators';
4
+ import { BaseStreamService } from './BaseStreamService';
5
+ import { IDENTIFIER_NAME_TELEMETRY } from '../constants/identifier';
6
+ import { RocosStore } from '../store/RocosStore';
7
+ import { TelemetryStream } from '../api/streams/telemetry/TelemetryStream';
8
+ import { arrayUnique } from '../helpers/arrayUnique';
9
+ import { getUniqueId } from '../helpers/getUniqueId';
10
+ import { flattenCallsignsLookup } from '../helpers/flattenCallsignsLookup';
11
+ const HEARTBEAT_SOURCE = '/rocos/agent/telemetry/heartbeat';
12
+ const HEARTBEAT_TIMEOUT = 5000; // if no heartbeat within 5 seconds then the robot is considered dead
13
+ export class TelemetryService extends BaseStreamService {
18
14
  constructor(config) {
19
- this.status = false;
20
- this.changeStream$ = new rxjs_1.BehaviorSubject(new Map());
21
- this.status$ = new rxjs_1.Subject();
22
- this.config = config;
23
- this.logger = RocosLogger_1.RocosLogger.getInstance(`TelemetryService(${this.config.url})`);
24
- RocosStore_1.RocosStore.getChangeSubject()
25
- .pipe(operators_1.filter((message) => {
15
+ super('TelemetryService', config);
16
+ this.changeStream$ = new BehaviorSubject(new Map());
17
+ RocosStore.getChangeSubject()
18
+ .pipe(filter((message) => {
26
19
  return message.type === 'telemetry-subscription' && message.url === this.config.url;
27
20
  }))
28
21
  .subscribe((msg) => {
29
22
  this.changeStream$.next(msg.data);
30
23
  });
31
- this.streamStatusSubject$ = new rxjs_1.BehaviorSubject({
24
+ this.streamStatusSubject$ = new BehaviorSubject({
32
25
  scope: 'default',
33
- status: SubscriberStatusEnum_1.SubscriberStatusEnum.STOPPED,
26
+ status: SubscriberStatusEnum.STOPPED,
34
27
  });
35
28
  }
36
- getStatus() {
37
- return this.status;
38
- }
39
29
  /**
40
30
  * The main method for subscribing to telemetry messages
41
31
  *
@@ -44,65 +34,42 @@ class TelemetryService {
44
34
  * @returns An Observable that outputs telemetry messages
45
35
  */
46
36
  subscribe(params) {
47
- var _a, _b;
48
- const sources = (_a = arrayUnique_1.arrayUnique(params.sources).map((item) => item.trim())) !== null && _a !== void 0 ? _a : [];
49
- if (!(params === null || params === void 0 ? void 0 : params.callsigns) && (params === null || params === void 0 ? void 0 : params.query)) {
37
+ const sources = arrayUnique(params.sources).map((item) => item.trim()) ?? [];
38
+ if (!params?.callsigns && params?.query) {
50
39
  this.logger.error('Error: params need to contain either callsigns or query', params);
51
- throw new RocosError_1.RocosError('Params need to contain either callsigns or query.', RocosError_1.errorCodes.TELEMETRY_SERVICE_ERROR);
40
+ throw new RocosError('Params need to contain either callsigns or query.', errorCodes.TELEMETRY_SERVICE_ERROR);
52
41
  }
53
- let callsignsLookup = new CallsignsLookup_1.CallsignsLookup([]);
54
- if (params === null || params === void 0 ? void 0 : params.callsigns) {
42
+ let callsignsLookup = new CallsignsLookup([]);
43
+ if (params?.callsigns) {
55
44
  this.logger.info('subscribe with callsigns', params);
56
- callsignsLookup = new CallsignsLookup_1.CallsignsLookup(params.callsigns);
45
+ callsignsLookup = new CallsignsLookup(params.callsigns);
57
46
  }
58
- else if (params === null || params === void 0 ? void 0 : params.query) {
47
+ else if (params?.query) {
59
48
  this.logger.info('subscribe with query', params);
60
- callsignsLookup = new CallsignsLookup_1.CallsignsLookup(params.query);
61
- }
62
- const scope = (_b = params.scope) !== null && _b !== void 0 ? _b : 'default';
63
- const identifier = StreamRegister_1.StreamRegister.getIdentifier(identifier_1.IDENTIFIER_NAME_TELEMETRY, scope);
64
- const streamRegister = StreamRegister_1.StreamRegister.getInstance();
65
- let stream = streamRegister.getStream(identifier);
66
- if (!stream) {
67
- stream = this.getStream({
68
- url: this.config.url,
69
- projectId: params.projectId,
70
- callsignsLookup,
71
- sources,
72
- token: this.config.token,
73
- scope,
74
- options: this.config.options,
75
- port: this.config.port,
76
- insecure: this.config.insecure,
77
- });
78
- // don't wait for these promises, they can be init after startup
79
- void streamRegister.addStream(stream);
80
- void this.initStream(stream);
81
- stream.statusStream$.subscribe((msg) => {
82
- this.streamStatusSubject$.next({
83
- scope,
84
- status: msg,
85
- });
86
- });
49
+ callsignsLookup = new CallsignsLookup(params.query);
87
50
  }
51
+ // scope is used as a key to generate unique streams
52
+ // ideally there should be just one concurrent stream opened
53
+ const scope = this.buildScope(params, callsignsLookup);
54
+ const callsigns = callsignsLookup.lookupValue;
88
55
  const subscriptionParams = {
89
- uniqueId: getUniqueId_1.getUniqueId(params.projectId, callsignsLookup, sources, scope),
90
- callsigns: callsignsLookup && callsignsLookup.lookupType === CallsignsEnums_1.CallsignsLookupType.List
91
- ? callsignsLookup.lookupValue
92
- : [],
56
+ uniqueId: getUniqueId(params.projectId, callsignsLookup, sources, scope),
57
+ callsigns: callsignsLookup?.lookupType === CallsignsLookupType.List ? callsignsLookup.lookupValue : [],
93
58
  sources,
94
59
  };
95
- stream.addSubscription(subscriptionParams);
96
- const callsigns = callsignsLookup.lookupValue;
97
- if (!this.statusSubscription) {
98
- this.statusSubscription = stream.statusStream$.subscribe((msg) => {
99
- this.status = msg === SubscriberStatusEnum_1.SubscriberStatusEnum.STOPPED || msg === SubscriberStatusEnum_1.SubscriberStatusEnum.ALIVE;
100
- this.status$.next(msg);
101
- });
102
- }
103
- return rxjs_1.from(stream.messageStream$).pipe(operators_1.filter((message) => {
60
+ const stream = this.createStream(params.projectId, callsignsLookup, sources, scope).then((stream) => {
61
+ stream.addSubscription(subscriptionParams);
62
+ if (!this.statusSubscription) {
63
+ this.statusSubscription = stream.statusStream$.subscribe((msg) => {
64
+ this.status = msg === SubscriberStatusEnum.STOPPED || msg === SubscriberStatusEnum.ALIVE;
65
+ this.status$.next(msg);
66
+ });
67
+ }
68
+ return from(stream.messageStream$).pipe(finalize(() => stream?.removeSubscription(subscriptionParams, params.terminateReceiverGroupOnUnsubscribe)));
69
+ });
70
+ return from(stream).pipe(mergeAll(), filter((message) => {
104
71
  return callsigns.includes(message.callsign) && sources.includes(message.source);
105
- }), operators_1.finalize(() => stream === null || stream === void 0 ? void 0 : stream.removeSubscription(subscriptionParams, params.terminateReceiverGroupOnUnsubscribe)));
72
+ }));
106
73
  }
107
74
  /**
108
75
  * A method to keep track of the current subscriptions
@@ -120,25 +87,68 @@ class TelemetryService {
120
87
  getStatusChanges() {
121
88
  return this.streamStatusSubject$.asObservable();
122
89
  }
123
- async initStream(stream) {
124
- // an async callback to set the stream token in case one was not set at startup
125
- if (!this.config.token) {
126
- try {
127
- const authService = RocosStore_1.RocosStore.getSDKInstance(this.config).getAuthService();
128
- const token = await authService.getToken();
129
- if (token === null || token === void 0 ? void 0 : token.value) {
130
- this.config.token = token === null || token === void 0 ? void 0 : token.value;
131
- stream.setToken(this.config.token);
132
- }
90
+ /**
91
+ * Subscribes to the heartbeat telemetry and checks we receive one at least every 5s
92
+ * @param projectId
93
+ * @param callsign
94
+ * @param heartbeatTimeoutMs optionally override the deadline for heartbeats (in ms). Default 5000ms
95
+ * @param intervalMs optionally override the interval to check for heartbeats (in ms). Default 2000ms
96
+ */
97
+ getRobotStatusChanges(projectId, callsign, heartbeatTimeoutMs = HEARTBEAT_TIMEOUT, intervalMs = 2000) {
98
+ const startedAt = Date.now();
99
+ const heartbeatTime$ = this.subscribe({
100
+ projectId,
101
+ sources: [HEARTBEAT_SOURCE],
102
+ callsigns: [callsign],
103
+ }).pipe(map(() => Date.now()));
104
+ return combineLatest([heartbeatTime$.pipe(startWith(startedAt)), interval(intervalMs)]).pipe(map(([lastHeartbeat, _]) => {
105
+ const now = Date.now();
106
+ // If we haven't received a heartbeat, but we've only just started
107
+ if (lastHeartbeat === startedAt && now - startedAt <= heartbeatTimeoutMs) {
108
+ return CallsignStatus.UNKNOWN;
133
109
  }
134
- catch (e) {
135
- this.logger.info('Can not retrieve auth token', e);
110
+ if (now - lastHeartbeat > heartbeatTimeoutMs) {
111
+ return CallsignStatus.OFFLINE;
136
112
  }
137
- }
113
+ return CallsignStatus.ONLINE;
114
+ }), startWith(CallsignStatus.UNKNOWN), distinctUntilChanged(), catchError(() => of(CallsignStatus.ERROR)));
115
+ }
116
+ async initStream(stream) {
117
+ await super.initStream(stream);
138
118
  stream.init();
139
119
  }
120
+ buildScope(params, callsignsLookup) {
121
+ // prefix with project id to avoid stream instance to be shared across projects
122
+ if (params.scope)
123
+ return `${params.projectId}-${params.scope}`;
124
+ this.logger.debug(`No scope is set, generating default`);
125
+ if (callsignsLookup)
126
+ return `${params.projectId}-default-${flattenCallsignsLookup(callsignsLookup).join()}`;
127
+ return `${params.projectId}-default`;
128
+ }
129
+ async createStream(projectId, callsignsLookup, sources, scope) {
130
+ const newStream = await this.createStreamFromConfig(IDENTIFIER_NAME_TELEMETRY, {
131
+ url: this.config.url,
132
+ projectId,
133
+ callsignsLookup,
134
+ sources,
135
+ token: this.config.token,
136
+ scope: scope ?? 'default',
137
+ options: this.config.options,
138
+ port: this.config.port,
139
+ insecure: this.config.insecure,
140
+ });
141
+ if (!newStream.isNew) {
142
+ newStream.stream.statusStream$.subscribe((msg) => {
143
+ this.streamStatusSubject$.next({
144
+ scope,
145
+ status: msg,
146
+ });
147
+ });
148
+ }
149
+ return newStream.stream;
150
+ }
140
151
  getStream(config) {
141
- return new TelemetryStream_1.TelemetryStream(config);
152
+ return new TelemetryStream(config);
142
153
  }
143
154
  }
144
- exports.TelemetryService = TelemetryService;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,37 @@
1
+ import { CallsignStatus } from '../models';
2
+ import { NEVER, delay, from, lastValueFrom, take, throwError } from 'rxjs';
3
+ import { TelemetryService } from './TelemetryService';
4
+ describe('TelemetryService', () => {
5
+ describe('getRobotStatusChanges', () => {
6
+ it('should emit unknown to begin with', async () => {
7
+ const service = new TelemetryService({ url: '', token: '' });
8
+ // Mock 5 heartbeat messages
9
+ jest.spyOn(service, 'subscribe').mockReturnValue(NEVER);
10
+ const lastValue = await lastValueFrom(service.getRobotStatusChanges('project', 'callsign').pipe(take(1)));
11
+ expect(lastValue).toEqual(CallsignStatus.UNKNOWN);
12
+ });
13
+ it('should emit online if the robot emits a heartbeat', async () => {
14
+ const service = new TelemetryService({ url: '', token: '' });
15
+ // Mock 5 heartbeat messages
16
+ jest
17
+ .spyOn(service, 'subscribe')
18
+ .mockReturnValue(from([0, 1, 2, 3, 4]).pipe(delay(100)));
19
+ const lastValue = await lastValueFrom(service.getRobotStatusChanges('project', 'callsign', 1000, 10).pipe(take(2)));
20
+ expect(lastValue).toEqual(CallsignStatus.ONLINE);
21
+ }, 10000);
22
+ it('should emit offline if the robot never emits', async () => {
23
+ const service = new TelemetryService({ url: '', token: '' });
24
+ // Mock 5 heartbeat messages
25
+ jest.spyOn(service, 'subscribe').mockReturnValue(NEVER);
26
+ const lastValue = await lastValueFrom(service.getRobotStatusChanges('project', 'callsign', 100, 10).pipe(take(2)));
27
+ expect(lastValue).toEqual(CallsignStatus.OFFLINE);
28
+ });
29
+ it('should emit an error if the telemetry errors', async () => {
30
+ const service = new TelemetryService({ url: '', token: '' });
31
+ // Mock 5 heartbeat messages
32
+ jest.spyOn(service, 'subscribe').mockReturnValue(throwError(() => new Error('test')));
33
+ const lastValue = await lastValueFrom(service.getRobotStatusChanges('project', 'callsign', 100, 10).pipe(take(2)));
34
+ expect(lastValue).toEqual(CallsignStatus.ERROR);
35
+ });
36
+ });
37
+ });
@@ -1,11 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TelemetryServiceNode = void 0;
4
- const TelemetryService_1 = require("./TelemetryService");
5
- const TelemetryStreamNode_1 = require("../api/streams/telemetry/TelemetryStreamNode");
6
- class TelemetryServiceNode extends TelemetryService_1.TelemetryService {
1
+ import { TelemetryService } from './TelemetryService';
2
+ import { TelemetryStreamNode } from '../api/streams/telemetry/TelemetryStreamNode';
3
+ export class TelemetryServiceNode extends TelemetryService {
7
4
  getStream(config) {
8
- return new TelemetryStreamNode_1.TelemetryStreamNode(config);
5
+ return new TelemetryStreamNode(config);
9
6
  }
10
7
  }
11
- exports.TelemetryServiceNode = TelemetryServiceNode;
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TimeSyncerService = void 0;
4
- const RocosError_1 = require("../models/RocosError");
5
- const api_1 = require("../constants/api");
6
- const BaseServiceAbstract_1 = require("./BaseServiceAbstract");
7
- const RocosLogger_1 = require("../logger/RocosLogger");
8
- const formatServiceUrl_1 = require("../helpers/formatServiceUrl");
9
- class TimeSyncerService extends BaseServiceAbstract_1.BaseServiceAbstract {
1
+ import { RocosError, errorCodes } from '../models/RocosError';
2
+ import { API_SERVER_TIME_URL } from '../constants/api';
3
+ import { BaseServiceAbstract } from './BaseServiceAbstract';
4
+ import { RocosLogger } from '../logger/RocosLogger';
5
+ import { formatServiceUrl } from '../helpers/formatServiceUrl';
6
+ export class TimeSyncerService extends BaseServiceAbstract {
10
7
  constructor(config) {
11
8
  super(config);
12
- this.logger = RocosLogger_1.RocosLogger.getInstance(`TimeSyncerService(${this.config.url})`);
9
+ this.logger = RocosLogger.getInstance(`TimeSyncerService(${this.config.url})`);
13
10
  }
14
11
  getError(e) {
15
- return new RocosError_1.RocosError(e, RocosError_1.errorCodes.TIME_SYNCER_SERVICE_ERROR);
12
+ return new RocosError(e, errorCodes.TIME_SYNCER_SERVICE_ERROR);
16
13
  }
17
14
  getStatus() {
18
15
  return true;
@@ -21,7 +18,6 @@ class TimeSyncerService extends BaseServiceAbstract_1.BaseServiceAbstract {
21
18
  * Get Server Time
22
19
  */
23
20
  getServerTime() {
24
- return this.callGet(formatServiceUrl_1.formatServiceUrl(api_1.API_SERVER_TIME_URL, { url: this.config.url }, this.config.insecure), 'Failed to get server time.');
21
+ return this.callGet(formatServiceUrl(API_SERVER_TIME_URL, { url: this.config.url }, this.config.insecure), 'Failed to get server time.');
25
22
  }
26
23
  }
27
- exports.TimeSyncerService = TimeSyncerService;