@dronedeploy/rocos-js-sdk 0.0.1 → 3.0.0-alpha.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (470) hide show
  1. package/IRocosSDK.d.ts +55 -0
  2. package/IRocosSDK.js +2 -0
  3. package/README.md +108 -0
  4. package/RocosSDK.d.ts +138 -0
  5. package/RocosSDK.js +292 -0
  6. package/api/StreamRegister.d.ts +13 -0
  7. package/api/StreamRegister.js +69 -0
  8. package/api/atoms/StreamHeartbeat.d.ts +27 -0
  9. package/api/atoms/StreamHeartbeat.js +111 -0
  10. package/api/streams/caller/CallerStream.d.ts +13 -0
  11. package/api/streams/caller/CallerStream.js +77 -0
  12. package/api/streams/caller/CallerStreamAbstract.d.ts +23 -0
  13. package/api/streams/caller/CallerStreamAbstract.js +87 -0
  14. package/api/streams/caller/CallerStreamNode.d.ts +13 -0
  15. package/api/streams/caller/CallerStreamNode.js +115 -0
  16. package/api/streams/command/CommandStream.d.ts +10 -0
  17. package/api/streams/command/CommandStream.js +66 -0
  18. package/api/streams/command/CommandStreamAbstract.d.ts +20 -0
  19. package/api/streams/command/CommandStreamAbstract.js +63 -0
  20. package/api/streams/command/CommandStreamNode.d.ts +10 -0
  21. package/api/streams/command/CommandStreamNode.js +69 -0
  22. package/api/streams/control/ControlStream.d.ts +12 -0
  23. package/api/streams/control/ControlStream.js +75 -0
  24. package/api/streams/control/ControlStreamAbstract.d.ts +25 -0
  25. package/api/streams/control/ControlStreamAbstract.js +111 -0
  26. package/api/streams/control/ControlStreamNode.d.ts +12 -0
  27. package/api/streams/control/ControlStreamNode.js +73 -0
  28. package/api/streams/fileAccessor/FileAccessorStream.d.ts +8 -0
  29. package/api/streams/fileAccessor/FileAccessorStream.js +59 -0
  30. package/api/streams/fileAccessor/FileAccessorStreamAbstract.d.ts +21 -0
  31. package/api/streams/fileAccessor/FileAccessorStreamAbstract.js +62 -0
  32. package/api/streams/fileAccessor/FileAccessorStreamNode.d.ts +8 -0
  33. package/api/streams/fileAccessor/FileAccessorStreamNode.js +66 -0
  34. package/api/streams/search/SearchStream.d.ts +13 -0
  35. package/api/streams/search/SearchStream.js +96 -0
  36. package/api/streams/search/SearchStreamAbstract.d.ts +25 -0
  37. package/api/streams/search/SearchStreamAbstract.js +72 -0
  38. package/api/streams/search/SearchStreamNode.d.ts +13 -0
  39. package/api/streams/search/SearchStreamNode.js +118 -0
  40. package/api/streams/telemetry/TelemetryStream.d.ts +17 -0
  41. package/api/streams/telemetry/TelemetryStream.js +97 -0
  42. package/api/streams/telemetry/TelemetryStreamAbstract.d.ts +59 -0
  43. package/api/streams/telemetry/TelemetryStreamAbstract.js +402 -0
  44. package/api/streams/telemetry/TelemetryStreamNode.d.ts +21 -0
  45. package/api/streams/telemetry/TelemetryStreamNode.js +175 -0
  46. package/api/streams/webRTCSignalling/WebRTCSignallingStream.d.ts +39 -0
  47. package/api/streams/webRTCSignalling/WebRTCSignallingStream.js +84 -0
  48. package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.d.ts +29 -0
  49. package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.js +65 -0
  50. package/constants/api.d.ts +127 -0
  51. package/constants/api.js +127 -0
  52. package/constants/auth.d.ts +2 -0
  53. package/constants/auth.js +2 -0
  54. package/constants/grpc.d.ts +5 -0
  55. package/constants/grpc.js +5 -0
  56. package/constants/identifier.d.ts +6 -0
  57. package/constants/identifier.js +6 -0
  58. package/constants/timezones.d.ts +2 -0
  59. package/constants/timezones.js +427 -0
  60. package/grpc/conker_pb.client.d.ts +78 -0
  61. package/grpc/conker_pb.client.js +55 -0
  62. package/grpc/conker_pb.d.ts +141 -0
  63. package/grpc/conker_pb.grpc-client.d.ts +81 -0
  64. package/grpc/conker_pb.grpc-client.js +58 -0
  65. package/grpc/conker_pb.js +104 -0
  66. package/grpc/filagree_pb.client.d.ts +68 -0
  67. package/grpc/filagree_pb.client.js +48 -0
  68. package/grpc/filagree_pb.d.ts +404 -0
  69. package/grpc/filagree_pb.grpc-client.d.ts +69 -0
  70. package/grpc/filagree_pb.grpc-client.js +51 -0
  71. package/grpc/filagree_pb.js +329 -0
  72. package/grpc/google/protobuf/descriptor_pb.d.ts +1798 -0
  73. package/grpc/google/protobuf/descriptor_pb.js +2378 -0
  74. package/grpc/google/protobuf/empty_pb.d.ts +23 -0
  75. package/grpc/google/protobuf/empty_pb.js +47 -0
  76. package/grpc/pigeon_pb.client.d.ts +96 -0
  77. package/grpc/pigeon_pb.client.js +72 -0
  78. package/grpc/pigeon_pb.d.ts +207 -0
  79. package/grpc/pigeon_pb.grpc-client.d.ts +98 -0
  80. package/grpc/pigeon_pb.grpc-client.js +68 -0
  81. package/grpc/pigeon_pb.js +144 -0
  82. package/grpc/rambo.uri.v1_pb.d.ts +73 -0
  83. package/grpc/rambo.uri.v1_pb.js +48 -0
  84. package/grpc/rambo.v1_pb.client.d.ts +66 -0
  85. package/grpc/rambo.v1_pb.client.js +48 -0
  86. package/grpc/rambo.v1_pb.d.ts +392 -0
  87. package/grpc/rambo.v1_pb.grpc-client.d.ts +56 -0
  88. package/grpc/rambo.v1_pb.grpc-client.js +44 -0
  89. package/grpc/rambo.v1_pb.js +272 -0
  90. package/grpc/serviette.uri.v1_pb.d.ts +89 -0
  91. package/grpc/serviette.uri.v1_pb.js +62 -0
  92. package/grpc/serviette.v1_pb.client.d.ts +225 -0
  93. package/grpc/serviette.v1_pb.client.js +174 -0
  94. package/grpc/serviette.v1_pb.d.ts +827 -0
  95. package/grpc/serviette.v1_pb.grpc-client.d.ts +215 -0
  96. package/grpc/serviette.v1_pb.grpc-client.js +162 -0
  97. package/grpc/serviette.v1_pb.js +553 -0
  98. package/grpc/slowlane_pb.client.d.ts +61 -0
  99. package/grpc/slowlane_pb.client.js +41 -0
  100. package/grpc/slowlane_pb.d.ts +303 -0
  101. package/grpc/slowlane_pb.grpc-client.d.ts +64 -0
  102. package/grpc/slowlane_pb.grpc-client.js +44 -0
  103. package/grpc/slowlane_pb.js +185 -0
  104. package/grpc/teletubby_pb.client.d.ts +145 -0
  105. package/grpc/teletubby_pb.client.js +104 -0
  106. package/grpc/teletubby_pb.d.ts +634 -0
  107. package/grpc/teletubby_pb.grpc-client.d.ts +152 -0
  108. package/grpc/teletubby_pb.grpc-client.js +100 -0
  109. package/grpc/teletubby_pb.js +1264 -0
  110. package/helpers/arrayRemove.d.ts +1 -0
  111. package/helpers/arrayRemove.js +3 -0
  112. package/helpers/arrayUnique.d.ts +1 -0
  113. package/helpers/arrayUnique.js +3 -0
  114. package/helpers/average.d.ts +1 -0
  115. package/helpers/average.js +6 -0
  116. package/helpers/cleanObject.d.ts +1 -0
  117. package/helpers/cleanObject.js +18 -0
  118. package/helpers/cleanObject.spec.d.ts +1 -0
  119. package/helpers/cleanObject.spec.js +53 -0
  120. package/helpers/enviroment.d.ts +8 -0
  121. package/helpers/enviroment.js +13 -0
  122. package/helpers/flattenCallsignsLookup.d.ts +2 -0
  123. package/helpers/flattenCallsignsLookup.js +6 -0
  124. package/helpers/flattenObject.d.ts +1 -0
  125. package/helpers/flattenObject.js +13 -0
  126. package/helpers/flattenObject.spec.d.ts +1 -0
  127. package/helpers/flattenObject.spec.js +29 -0
  128. package/helpers/flattenOneOf.d.ts +67 -0
  129. package/helpers/flattenOneOf.js +29 -0
  130. package/helpers/flattenOneOf.spec.d.ts +1 -0
  131. package/helpers/flattenOneOf.spec.js +157 -0
  132. package/helpers/formatServiceUrl.d.ts +1 -0
  133. package/helpers/formatServiceUrl.js +7 -0
  134. package/helpers/formatServiceUrl.spec.d.ts +1 -0
  135. package/helpers/formatServiceUrl.spec.js +16 -0
  136. package/helpers/generateUUID.d.ts +1 -0
  137. package/helpers/generateUUID.js +4 -0
  138. package/helpers/getSubscriptionsDifference.d.ts +10 -0
  139. package/helpers/getSubscriptionsDifference.js +35 -0
  140. package/helpers/getUniqueConfigKey.d.ts +7 -0
  141. package/helpers/getUniqueConfigKey.js +14 -0
  142. package/helpers/getUniqueId.d.ts +9 -0
  143. package/helpers/getUniqueId.js +11 -0
  144. package/helpers/getUnixTimeMs.d.ts +1 -0
  145. package/helpers/getUnixTimeMs.js +4 -0
  146. package/helpers/index.d.ts +3 -0
  147. package/helpers/index.js +3 -0
  148. package/helpers/nanosecondToMillisecond.d.ts +1 -0
  149. package/helpers/nanosecondToMillisecond.js +12 -0
  150. package/helpers/nanosecondToMillisecond.spec.d.ts +1 -0
  151. package/helpers/nanosecondToMillisecond.spec.js +20 -0
  152. package/helpers/randomString.d.ts +1 -0
  153. package/helpers/randomString.js +3 -0
  154. package/helpers/standardDeviation.d.ts +1 -0
  155. package/helpers/standardDeviation.js +12 -0
  156. package/helpers/standardDeviation.spec.d.ts +1 -0
  157. package/helpers/standardDeviation.spec.js +11 -0
  158. package/helpers/stringToUint8Array.d.ts +1 -0
  159. package/helpers/stringToUint8Array.js +10 -0
  160. package/helpers/uint8ArrayToString.d.ts +1 -0
  161. package/helpers/uint8ArrayToString.js +10 -0
  162. package/index.d.ts +7 -0
  163. package/index.js +7 -0
  164. package/logger/RocosLogger.d.ts +7 -0
  165. package/logger/RocosLogger.js +37 -0
  166. package/models/CallsignStatus.d.ts +6 -0
  167. package/models/CallsignStatus.js +7 -0
  168. package/models/ExportDataQuery.d.ts +8 -0
  169. package/models/ExportDataQuery.js +13 -0
  170. package/models/ExternalProject.d.ts +6 -0
  171. package/models/ExternalProject.js +2 -0
  172. package/models/IBaseService.d.ts +4 -0
  173. package/models/IBaseService.js +1 -0
  174. package/models/IConfigGroup.d.ts +5 -0
  175. package/models/IConfigGroup.js +1 -0
  176. package/models/IDebugLevel.d.ts +2 -0
  177. package/models/IDebugLevel.js +1 -0
  178. package/models/IExportDataQuery.d.ts +9 -0
  179. package/models/IExportDataQuery.js +1 -0
  180. package/models/IFunctionConfig.d.ts +8 -0
  181. package/models/IFunctionConfig.js +1 -0
  182. package/models/IInvitation.d.ts +6 -0
  183. package/models/IInvitation.js +1 -0
  184. package/models/IInvitationExists.d.ts +4 -0
  185. package/models/IInvitationExists.js +1 -0
  186. package/models/IOperation.d.ts +6 -0
  187. package/models/IOperation.js +1 -0
  188. package/models/IPersonalAccessToken.d.ts +16 -0
  189. package/models/IPersonalAccessToken.js +1 -0
  190. package/models/IProject.d.ts +4 -0
  191. package/models/IProject.js +1 -0
  192. package/models/IProjectApplication.d.ts +6 -0
  193. package/models/IProjectApplication.js +1 -0
  194. package/models/IRobot.d.ts +18 -0
  195. package/models/IRobot.js +1 -0
  196. package/models/IRobotConfig.d.ts +8 -0
  197. package/models/IRobotConfig.js +1 -0
  198. package/models/IRobotPlugin.d.ts +3 -0
  199. package/models/IRobotPlugin.js +1 -0
  200. package/models/IRobotSettings.d.ts +28 -0
  201. package/models/IRobotSettings.js +1 -0
  202. package/models/IRobotTemplate.d.ts +10 -0
  203. package/models/IRobotTemplate.js +1 -0
  204. package/models/IRocosSDKConfig.d.ts +19 -0
  205. package/models/IRocosSDKConfig.js +1 -0
  206. package/models/ISource.d.ts +8 -0
  207. package/models/ISource.js +1 -0
  208. package/models/IStream.d.ts +9 -0
  209. package/models/IStream.js +1 -0
  210. package/models/IStreamConfig.d.ts +9 -0
  211. package/models/IStreamConfig.js +1 -0
  212. package/models/IStreamOptions.d.ts +7 -0
  213. package/models/IStreamOptions.js +1 -0
  214. package/models/IStreamSource.d.ts +8 -0
  215. package/models/IStreamSource.js +1 -0
  216. package/models/ISubscriberStatus.d.ts +5 -0
  217. package/models/ISubscriberStatus.js +1 -0
  218. package/models/ITelemetryStreamConfig.d.ts +7 -0
  219. package/models/ITelemetryStreamConfig.js +1 -0
  220. package/models/IToken.d.ts +9 -0
  221. package/models/IToken.js +1 -0
  222. package/models/IWidget.d.ts +25 -0
  223. package/models/IWidget.js +1 -0
  224. package/models/IWidgetLineGroup.d.ts +8 -0
  225. package/models/IWidgetLineGroup.js +1 -0
  226. package/models/ResponseLevelEnum.d.ts +10 -0
  227. package/models/ResponseLevelEnum.js +11 -0
  228. package/models/Robot.d.ts +20 -0
  229. package/models/Robot.js +8 -0
  230. package/models/RobotConfig.d.ts +10 -0
  231. package/models/RobotConfig.js +5 -0
  232. package/models/RobotPlugin.d.ts +5 -0
  233. package/models/RobotPlugin.js +5 -0
  234. package/models/RobotTemplate.d.ts +12 -0
  235. package/models/RobotTemplate.js +25 -0
  236. package/models/RocosError.d.ts +30 -0
  237. package/models/RocosError.js +39 -0
  238. package/models/ServiceEnum.d.ts +26 -0
  239. package/models/ServiceEnum.js +27 -0
  240. package/models/Stream.d.ts +10 -0
  241. package/models/Stream.js +11 -0
  242. package/models/StreamOptions.d.ts +9 -0
  243. package/models/StreamOptions.js +33 -0
  244. package/models/StreamSource.d.ts +10 -0
  245. package/models/StreamSource.js +11 -0
  246. package/models/SubscriberStatusEnum.d.ts +6 -0
  247. package/models/SubscriberStatusEnum.js +7 -0
  248. package/models/Token.d.ts +40 -0
  249. package/models/Token.js +78 -0
  250. package/models/Token.spec.d.ts +1 -0
  251. package/models/Token.spec.js +108 -0
  252. package/models/Widget.d.ts +27 -0
  253. package/models/Widget.js +12 -0
  254. package/models/WidgetLineGroup.d.ts +10 -0
  255. package/models/WidgetLineGroup.js +5 -0
  256. package/models/asset-storage/AssetModelItem.d.ts +29 -0
  257. package/models/asset-storage/AssetModelItem.js +1 -0
  258. package/models/caller/IRocosCallerMessageChunk.d.ts +10 -0
  259. package/models/caller/IRocosCallerMessageChunk.js +1 -0
  260. package/models/caller/IRocosCallerMessageChunks.d.ts +4 -0
  261. package/models/caller/IRocosCallerMessageChunks.js +1 -0
  262. package/models/caller/IRocosCallerMessageHeartbeat.d.ts +3 -0
  263. package/models/caller/IRocosCallerMessageHeartbeat.js +1 -0
  264. package/models/caller/IRocosCallerMessageResponse.d.ts +10 -0
  265. package/models/caller/IRocosCallerMessageResponse.js +1 -0
  266. package/models/caller/IRocosCallerMessageResponseAck.d.ts +16 -0
  267. package/models/caller/IRocosCallerMessageResponseAck.js +13 -0
  268. package/models/caller/IRocosCallerMessageResponseResult.d.ts +15 -0
  269. package/models/caller/IRocosCallerMessageResponseResult.js +12 -0
  270. package/models/caller/IRocosCallerMessageResponseReturn.d.ts +8 -0
  271. package/models/caller/IRocosCallerMessageResponseReturn.js +1 -0
  272. package/models/caller/IRocosCallerMessageResponseUid.d.ts +10 -0
  273. package/models/caller/IRocosCallerMessageResponseUid.js +7 -0
  274. package/models/caller/IRocosCallerMessageResponses.d.ts +4 -0
  275. package/models/caller/IRocosCallerMessageResponses.js +1 -0
  276. package/models/caller/RocosCallerResultStatus.d.ts +11 -0
  277. package/models/caller/RocosCallerResultStatus.js +12 -0
  278. package/models/caller/RocosResponseLevel.d.ts +6 -0
  279. package/models/caller/RocosResponseLevel.js +7 -0
  280. package/models/caller/index.d.ts +10 -0
  281. package/models/caller/index.js +10 -0
  282. package/models/callsigns/CallsignsEnums.d.ts +13 -0
  283. package/models/callsigns/CallsignsEnums.js +17 -0
  284. package/models/callsigns/CallsignsLookup.d.ts +8 -0
  285. package/models/callsigns/CallsignsLookup.js +28 -0
  286. package/models/callsigns/CallsignsQuery.d.ts +9 -0
  287. package/models/callsigns/CallsignsQuery.js +14 -0
  288. package/models/callsigns/CallsignsQueryPredicate.d.ts +9 -0
  289. package/models/callsigns/CallsignsQueryPredicate.js +15 -0
  290. package/models/command/IRocosCommandMessageHeartbeat.d.ts +1 -0
  291. package/models/command/IRocosCommandMessageHeartbeat.js +1 -0
  292. package/models/command/IRocosCommandMessageResponse.d.ts +55 -0
  293. package/models/command/IRocosCommandMessageResponse.js +29 -0
  294. package/models/command/RocosCommandResultStatus.d.ts +11 -0
  295. package/models/command/RocosCommandResultStatus.js +12 -0
  296. package/models/command/index.d.ts +4 -0
  297. package/models/command/index.js +4 -0
  298. package/models/file/FileEnums.d.ts +30 -0
  299. package/models/file/FileEnums.js +33 -0
  300. package/models/index.d.ts +75 -0
  301. package/models/index.js +75 -0
  302. package/models/integrations/Overlay.d.ts +49 -0
  303. package/models/integrations/Overlay.js +1 -0
  304. package/models/integrations/Plan.d.ts +324 -0
  305. package/models/integrations/Plan.js +1 -0
  306. package/models/maps/Map.d.ts +11 -0
  307. package/models/maps/Map.js +1 -0
  308. package/models/message/IRocosCallerMessage.d.ts +8 -0
  309. package/models/message/IRocosCallerMessage.js +1 -0
  310. package/models/message/IRocosChangeMessage.d.ts +6 -0
  311. package/models/message/IRocosChangeMessage.js +1 -0
  312. package/models/message/IRocosCommandMessage.d.ts +6 -0
  313. package/models/message/IRocosCommandMessage.js +1 -0
  314. package/models/message/IRocosControlMessage.d.ts +7 -0
  315. package/models/message/IRocosControlMessage.js +1 -0
  316. package/models/message/IRocosOpResultMessage.d.ts +6 -0
  317. package/models/message/IRocosOpResultMessage.js +1 -0
  318. package/models/message/IRocosSearchMessage.d.ts +5 -0
  319. package/models/message/IRocosSearchMessage.js +1 -0
  320. package/models/message/IRocosSearchRowMessage.d.ts +9 -0
  321. package/models/message/IRocosSearchRowMessage.js +1 -0
  322. package/models/message/IRocosSearchStatusMessage.d.ts +4 -0
  323. package/models/message/IRocosSearchStatusMessage.js +1 -0
  324. package/models/message/IRocosTelemetryMessage.d.ts +23 -0
  325. package/models/message/IRocosTelemetryMessage.js +1 -0
  326. package/models/message/IStreamStatusMessage.d.ts +5 -0
  327. package/models/message/IStreamStatusMessage.js +1 -0
  328. package/models/message/RocosCallerMessage.d.ts +10 -0
  329. package/models/message/RocosCallerMessage.js +32 -0
  330. package/models/message/RocosCommandMessage.d.ts +9 -0
  331. package/models/message/RocosCommandMessage.js +13 -0
  332. package/models/message/RocosControlMessage.d.ts +11 -0
  333. package/models/message/RocosControlMessage.js +14 -0
  334. package/models/message/RocosOpResultMessage.d.ts +10 -0
  335. package/models/message/RocosOpResultMessage.js +18 -0
  336. package/models/message/RocosSearchMessage.d.ts +9 -0
  337. package/models/message/RocosSearchMessage.js +24 -0
  338. package/models/message/RocosSearchRowMessage.d.ts +13 -0
  339. package/models/message/RocosSearchRowMessage.js +16 -0
  340. package/models/message/RocosTelemetryMessage.d.ts +10 -0
  341. package/models/message/RocosTelemetryMessage.js +63 -0
  342. package/models/message/index.d.ts +17 -0
  343. package/models/message/index.js +17 -0
  344. package/models/params/ICallerParams.d.ts +16 -0
  345. package/models/params/ICallerParams.js +1 -0
  346. package/models/params/ICommandParams.d.ts +9 -0
  347. package/models/params/ICommandParams.js +1 -0
  348. package/models/params/IControlParams.d.ts +8 -0
  349. package/models/params/IControlParams.js +1 -0
  350. package/models/params/IFileAccessorParams.d.ts +11 -0
  351. package/models/params/IFileAccessorParams.js +1 -0
  352. package/models/params/ISearchParams.d.ts +10 -0
  353. package/models/params/ISearchParams.js +1 -0
  354. package/models/params/ITelemetryParams.d.ts +18 -0
  355. package/models/params/ITelemetryParams.js +1 -0
  356. package/models/params/IWebRTCSignallingParams.d.ts +21 -0
  357. package/models/params/IWebRTCSignallingParams.js +1 -0
  358. package/models/projects/ProjectUser.d.ts +6 -0
  359. package/models/projects/ProjectUser.js +1 -0
  360. package/models/schedule/IScheduleAction.d.ts +13 -0
  361. package/models/schedule/IScheduleAction.js +6 -0
  362. package/models/schedule/IScheduleInfo.d.ts +11 -0
  363. package/models/schedule/IScheduleInfo.js +1 -0
  364. package/models/schedule/IScheduleJob.d.ts +12 -0
  365. package/models/schedule/IScheduleJob.js +1 -0
  366. package/models/search/SearchQueryFilter.d.ts +5 -0
  367. package/models/search/SearchQueryFilter.js +5 -0
  368. package/models/search/SearchStreamQuery.d.ts +15 -0
  369. package/models/search/SearchStreamQuery.js +6 -0
  370. package/models/stream/IBaseStream.d.ts +8 -0
  371. package/models/stream/IBaseStream.js +1 -0
  372. package/models/stream/ICallerStream.d.ts +8 -0
  373. package/models/stream/ICallerStream.js +1 -0
  374. package/models/stream/ICommandStream.d.ts +7 -0
  375. package/models/stream/ICommandStream.js +1 -0
  376. package/models/stream/IControlStream.d.ts +9 -0
  377. package/models/stream/IControlStream.js +1 -0
  378. package/models/stream/IFileAccessorStream.d.ts +9 -0
  379. package/models/stream/IFileAccessorStream.js +1 -0
  380. package/models/stream/ISearchStream.d.ts +11 -0
  381. package/models/stream/ISearchStream.js +1 -0
  382. package/models/stream/ITelemetryStream.d.ts +10 -0
  383. package/models/stream/ITelemetryStream.js +1 -0
  384. package/models/stream/IWebRTCSignallingStream.d.ts +76 -0
  385. package/models/stream/IWebRTCSignallingStream.js +1 -0
  386. package/models/types.d.ts +5 -0
  387. package/models/types.js +1 -0
  388. package/node/RocosSDKNode.d.ts +42 -0
  389. package/node/RocosSDKNode.js +143 -0
  390. package/node/index.d.ts +7 -0
  391. package/node/index.js +7 -0
  392. package/package.json +23 -7
  393. package/services/AssetStorageService.d.ts +106 -0
  394. package/services/AssetStorageService.js +169 -0
  395. package/services/AuthService.d.ts +93 -0
  396. package/services/AuthService.js +235 -0
  397. package/services/AuthService.spec.d.ts +1 -0
  398. package/services/AuthService.spec.js +163 -0
  399. package/services/BaseServiceAbstract.d.ts +36 -0
  400. package/services/BaseServiceAbstract.js +101 -0
  401. package/services/BaseStreamService.d.ts +18 -0
  402. package/services/BaseStreamService.js +47 -0
  403. package/services/CallerService.d.ts +10 -0
  404. package/services/CallerService.js +53 -0
  405. package/services/CallerServiceNode.d.ts +6 -0
  406. package/services/CallerServiceNode.js +7 -0
  407. package/services/CommandService.d.ts +9 -0
  408. package/services/CommandService.js +38 -0
  409. package/services/CommandServiceNode.d.ts +6 -0
  410. package/services/CommandServiceNode.js +7 -0
  411. package/services/ConfigGroupService.d.ts +89 -0
  412. package/services/ConfigGroupService.js +153 -0
  413. package/services/ControlService.d.ts +11 -0
  414. package/services/ControlService.js +57 -0
  415. package/services/ControlServiceNode.d.ts +6 -0
  416. package/services/ControlServiceNode.js +7 -0
  417. package/services/DashboardService.d.ts +97 -0
  418. package/services/DashboardService.js +142 -0
  419. package/services/EventService.d.ts +53 -0
  420. package/services/EventService.js +85 -0
  421. package/services/FileAccessorService.d.ts +11 -0
  422. package/services/FileAccessorService.js +37 -0
  423. package/services/FileAccessorServiceNode.d.ts +6 -0
  424. package/services/FileAccessorServiceNode.js +7 -0
  425. package/services/FunctionService.d.ts +68 -0
  426. package/services/FunctionService.js +99 -0
  427. package/services/IntegrationService.d.ts +48 -0
  428. package/services/IntegrationService.js +72 -0
  429. package/services/MapService.d.ts +107 -0
  430. package/services/MapService.js +149 -0
  431. package/services/PlatformTimeService.d.ts +35 -0
  432. package/services/PlatformTimeService.js +156 -0
  433. package/services/PlatformTimeService.spec.d.ts +1 -0
  434. package/services/PlatformTimeService.spec.js +180 -0
  435. package/services/ProfileService.d.ts +244 -0
  436. package/services/ProfileService.js +362 -0
  437. package/services/ProjectService.d.ts +110 -0
  438. package/services/ProjectService.js +160 -0
  439. package/services/RobotService.d.ts +278 -0
  440. package/services/RobotService.js +460 -0
  441. package/services/ScheduleService.d.ts +22 -0
  442. package/services/ScheduleService.js +36 -0
  443. package/services/SearchService.d.ts +12 -0
  444. package/services/SearchService.js +58 -0
  445. package/services/SearchServiceNode.d.ts +6 -0
  446. package/services/SearchServiceNode.js +7 -0
  447. package/services/SpotProvisioningService.d.ts +14 -0
  448. package/services/SpotProvisioningService.js +43 -0
  449. package/services/SpotProvisioningServiceNode.d.ts +15 -0
  450. package/services/SpotProvisioningServiceNode.js +43 -0
  451. package/services/StreamService.d.ts +98 -0
  452. package/services/StreamService.js +142 -0
  453. package/services/TelemetryService.d.ts +40 -0
  454. package/services/TelemetryService.js +142 -0
  455. package/services/TelemetryService.spec.d.ts +1 -0
  456. package/services/TelemetryService.spec.js +37 -0
  457. package/services/TelemetryServiceNode.d.ts +6 -0
  458. package/services/TelemetryServiceNode.js +7 -0
  459. package/services/TimeSyncerService.d.ts +13 -0
  460. package/services/TimeSyncerService.js +23 -0
  461. package/services/UserService.d.ts +200 -0
  462. package/services/UserService.js +315 -0
  463. package/services/WebRTCSignallingService.d.ts +22 -0
  464. package/services/WebRTCSignallingService.js +78 -0
  465. package/services/WorkflowService.d.ts +71 -0
  466. package/services/WorkflowService.js +118 -0
  467. package/services/index.d.ts +26 -0
  468. package/services/index.js +26 -0
  469. package/store/RocosStore.d.ts +31 -0
  470. package/store/RocosStore.js +47 -0
@@ -0,0 +1,27 @@
1
+ export declare class StreamHeartbeat {
2
+ private identifier;
3
+ private callback?;
4
+ private timeout?;
5
+ private beats;
6
+ private interval?;
7
+ private healthInterval?;
8
+ private healthLastSeenDate;
9
+ private healthMisses;
10
+ private healthTimeout;
11
+ private healthMaxTimeout;
12
+ private healthMaxMisses;
13
+ private healthCheckStatusCallback?;
14
+ private healthCheckErrorCallback?;
15
+ private logger;
16
+ constructor(identifier: string);
17
+ setHealthTimeout(healthTimeout: number): StreamHeartbeat;
18
+ setHealthMaxTimeout(healthMaxTimeout: number): StreamHeartbeat;
19
+ setHealthMaxMisses(healthMaxMisses: number): StreamHeartbeat;
20
+ setHealthCheckStatusCallback(healthCheckStatusCallback: (status: boolean) => Promise<void>): StreamHeartbeat;
21
+ setHealthCheckErrorCallback(healthCheckErrorCallback: () => Promise<void>): StreamHeartbeat;
22
+ start(callback: () => void, timeout: number): void;
23
+ stop(): void;
24
+ pump(): number;
25
+ private checkHealth;
26
+ stopHealthCheck(): void;
27
+ }
@@ -0,0 +1,111 @@
1
+ import { RocosLogger } from '../../logger/RocosLogger';
2
+ export class StreamHeartbeat {
3
+ constructor(identifier) {
4
+ this.beats = 0;
5
+ this.healthLastSeenDate = new Date();
6
+ this.healthMisses = 0;
7
+ this.healthTimeout = 6000; // check for healthy heartbeat every 6 seconds
8
+ this.healthMaxTimeout = 10;
9
+ this.healthMaxMisses = 5;
10
+ this.identifier = identifier;
11
+ this.logger = RocosLogger.getInstance(`StreamHeartbeat(${this.identifier})`);
12
+ }
13
+ setHealthTimeout(healthTimeout) {
14
+ this.healthTimeout = healthTimeout;
15
+ return this;
16
+ }
17
+ setHealthMaxTimeout(healthMaxTimeout) {
18
+ this.healthMaxTimeout = healthMaxTimeout;
19
+ return this;
20
+ }
21
+ setHealthMaxMisses(healthMaxMisses) {
22
+ this.healthMaxMisses = healthMaxMisses;
23
+ return this;
24
+ }
25
+ setHealthCheckStatusCallback(healthCheckStatusCallback) {
26
+ this.healthCheckStatusCallback = healthCheckStatusCallback;
27
+ return this;
28
+ }
29
+ setHealthCheckErrorCallback(healthCheckErrorCallback) {
30
+ this.healthCheckErrorCallback = healthCheckErrorCallback;
31
+ return this;
32
+ }
33
+ start(callback, timeout) {
34
+ if (!this.interval) {
35
+ this.callback = callback;
36
+ this.timeout = timeout;
37
+ this.logger.info('Creating stream heartbeat');
38
+ this.interval = setInterval(this.callback, this.timeout);
39
+ }
40
+ else {
41
+ this.logger.warn('Stream heartbeat already exists');
42
+ }
43
+ }
44
+ stop() {
45
+ try {
46
+ this.logger.info('Removing stream heartbeat timer');
47
+ clearInterval(this.interval);
48
+ this.interval = undefined;
49
+ }
50
+ catch (e) {
51
+ this.logger.error(`Error killing stream heartbeat timer ${e}`);
52
+ }
53
+ }
54
+ pump() {
55
+ // if the health check has not started yet, we initialise it
56
+ if (!this.healthInterval) {
57
+ this.logger.debug('Starting health check timer');
58
+ this.healthInterval = setInterval(this.checkHealth, this.healthTimeout);
59
+ this.healthLastSeenDate = new Date();
60
+ this.healthMisses = 0;
61
+ }
62
+ else {
63
+ this.logger.debug(`Updating health check timer: ${this.healthLastSeenDate}, ${this.healthMisses}`);
64
+ this.healthLastSeenDate = new Date();
65
+ this.healthMisses = 0;
66
+ }
67
+ return this.beats++;
68
+ }
69
+ async checkHealth() {
70
+ this.logger.debug('Checking health');
71
+ let status = true;
72
+ // check to see if we have received a heartbeat in in the last few seconds
73
+ const lastSeenInSeconds = (new Date().getTime() - this.healthLastSeenDate.getTime()) / 1000;
74
+ if (lastSeenInSeconds > this.healthMaxTimeout && this.healthMaxMisses) {
75
+ status = false;
76
+ this.healthMisses += 1;
77
+ this.logger.warn(`Heartbeat is more than ${this.healthMaxTimeout} seconds, delay: ${lastSeenInSeconds} seconds, misses: ${this.healthMisses}`);
78
+ if (this.healthMisses === this.healthMaxMisses) {
79
+ this.stopHealthCheck();
80
+ this.logger.error(`Stopping Heartbeat as it is more than ${this.healthMaxTimeout} seconds, delay - ${lastSeenInSeconds} seconds, misses: ${this.healthMisses}`);
81
+ if (this.healthCheckErrorCallback) {
82
+ await this.healthCheckErrorCallback();
83
+ }
84
+ }
85
+ }
86
+ else if (lastSeenInSeconds > this.healthMaxTimeout) {
87
+ status = false;
88
+ this.logger.warn(`Stopping Heartbeat as it is more than ${this.healthMaxTimeout} seconds, delay - ${lastSeenInSeconds} seconds`);
89
+ this.stopHealthCheck();
90
+ if (this.healthCheckErrorCallback) {
91
+ await this.healthCheckErrorCallback();
92
+ }
93
+ }
94
+ if (this.healthCheckStatusCallback) {
95
+ await this.healthCheckStatusCallback(status);
96
+ }
97
+ }
98
+ stopHealthCheck() {
99
+ if (this.healthInterval) {
100
+ try {
101
+ this.logger.info('Stopping timer');
102
+ clearInterval(this.healthInterval);
103
+ this.healthInterval = undefined;
104
+ this.logger.info('Removed timer');
105
+ }
106
+ catch (e) {
107
+ this.logger.error('error removing timer', e);
108
+ }
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,13 @@
1
+ import { ICallerParams, IRocosCallerMessage, IStreamConfig } from '../../../models';
2
+ import { Observable } from 'rxjs';
3
+ import { RequestCancellation, ServiceRequest } from '../../../grpc/serviette.v1_pb';
4
+ import { CallerStreamAbstract } from './CallerStreamAbstract';
5
+ export declare class CallerStream extends CallerStreamAbstract {
6
+ private client;
7
+ constructor(config: IStreamConfig);
8
+ protected callService(request: ServiceRequest, params: ICallerParams): Observable<IRocosCallerMessage>;
9
+ protected cancelService(request: RequestCancellation, params: ICallerParams): Observable<IRocosCallerMessage>;
10
+ private handleStream;
11
+ protected getPayload(payload: string): Uint8Array;
12
+ private getMetadata;
13
+ }
@@ -0,0 +1,77 @@
1
+ import { RocosCallerMessage, SubscriberStatusEnum, } from '../../../models';
2
+ import { Observable } from 'rxjs';
3
+ import { CallerStreamAbstract } from './CallerStreamAbstract';
4
+ import { GrpcWebFetchTransport } from '@protobuf-ts/grpcweb-transport';
5
+ import { RocosLogger } from '../../../logger/RocosLogger';
6
+ import { WebServiceCallerClient } from '../../../grpc/serviette.v1_pb.client';
7
+ import { stringToUint8Array } from '../../../helpers/stringToUint8Array';
8
+ export class CallerStream extends CallerStreamAbstract {
9
+ constructor(config) {
10
+ super(config);
11
+ this.logger = RocosLogger.getInstance(`CallerStream(${this.identifier})`);
12
+ const protocol = config.insecure ? 'http' : 'https';
13
+ const transport = new GrpcWebFetchTransport({
14
+ baseUrl: `${protocol}://${this.url}`,
15
+ });
16
+ this.client = new WebServiceCallerClient(transport);
17
+ }
18
+ callService(request, params) {
19
+ const meta = this.getMetadata(params.projectId, params.callsign, params.subSystem);
20
+ const stream = this.client.callService(request, { meta });
21
+ return this.handleStream(stream, params, 'invoke');
22
+ }
23
+ cancelService(request, params) {
24
+ const meta = this.getMetadata(params.projectId, params.callsign, params.subSystem);
25
+ const stream = this.client.cancelService(request, { meta });
26
+ return this.handleStream(stream, params, 'cancel');
27
+ }
28
+ handleStream(stream, params, requestType) {
29
+ return new Observable((emitter) => {
30
+ this.subscriberStatus = SubscriberStatusEnum.ALIVE;
31
+ this.statusStream$.next(this.subscriberStatus);
32
+ stream.responses.onMessage((message) => {
33
+ const msg = RocosCallerMessage.fromModel(message);
34
+ emitter.next(msg);
35
+ this.logger.debug(`${requestType}Request - on(data)`, {
36
+ message,
37
+ projectId: params.projectId,
38
+ callsign: params.callsign,
39
+ component: params.component,
40
+ topic: params.topic,
41
+ });
42
+ });
43
+ stream.responses.onError((error) => {
44
+ this.logger.debug(`${requestType}Request - on(error)`, {
45
+ error,
46
+ projectId: params.projectId,
47
+ callsign: params.callsign,
48
+ component: params.component,
49
+ topic: params.topic,
50
+ });
51
+ emitter.error(error);
52
+ });
53
+ stream.responses.onComplete(() => {
54
+ this.subscriberStatus = SubscriberStatusEnum.STOPPED;
55
+ this.statusStream$.next(this.subscriberStatus);
56
+ this.logger.debug(`${requestType}Request - on(end)`, {
57
+ projectId: params.projectId,
58
+ callsign: params.callsign,
59
+ component: params.component,
60
+ topic: params.topic,
61
+ });
62
+ emitter.complete();
63
+ });
64
+ });
65
+ }
66
+ getPayload(payload) {
67
+ return stringToUint8Array(payload);
68
+ }
69
+ getMetadata(projectId, callsign, subsystem) {
70
+ return {
71
+ 'authorization': this.token,
72
+ 'r-p': projectId,
73
+ 'r-cs': callsign,
74
+ 'r-s': subsystem ?? '',
75
+ };
76
+ }
77
+ }
@@ -0,0 +1,23 @@
1
+ import { BehaviorSubject, Observable } from 'rxjs';
2
+ import { ICallerInvokeParams, ICallerParams, ICallerStream, IRocosCallerMessage, IStreamConfig, SubscriberStatusEnum } from '../../../models';
3
+ import { RequestCancellation } from '../../../grpc/serviette.v1_pb';
4
+ import { Logger } from 'loglevel';
5
+ export declare abstract class CallerStreamAbstract implements ICallerStream {
6
+ identifier: string;
7
+ statusStream$: BehaviorSubject<SubscriberStatusEnum>;
8
+ protected token: string;
9
+ private scope;
10
+ protected url: string;
11
+ protected subscriberStatus: SubscriberStatusEnum;
12
+ protected logger: Logger;
13
+ protected constructor(config: IStreamConfig);
14
+ protected abstract cancelService(request: RequestCancellation, params: ICallerParams): Observable<IRocosCallerMessage>;
15
+ protected abstract callService(request: RequestCancellation, params: ICallerParams): Observable<IRocosCallerMessage>;
16
+ protected abstract getPayload(payload: string): Uint8Array;
17
+ setToken(token: string): void;
18
+ stopStream(): void;
19
+ invokeRequest(params: ICallerInvokeParams): Observable<IRocosCallerMessage>;
20
+ cancelRequest(params: ICallerParams): Observable<IRocosCallerMessage>;
21
+ private createCancellationRequest;
22
+ private createServiceRequest;
23
+ }
@@ -0,0 +1,87 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { SubscriberStatusEnum, } from '../../../models';
3
+ import { RequestCancellation, ServiceRequest, UIDVersion } from '../../../grpc/serviette.v1_pb';
4
+ import { RocosURI, RocosURIQueryValues, RocosURIScheme } from '../../../grpc/serviette.uri.v1_pb';
5
+ import { IDENTIFIER_NAME_CALLER } from '../../../constants/identifier';
6
+ import { RocosStore } from '../../../store/RocosStore';
7
+ import { StreamRegister } from '../../StreamRegister';
8
+ import { filter } from 'rxjs/operators';
9
+ import { v4 as uuidv4 } from 'uuid';
10
+ export class CallerStreamAbstract {
11
+ constructor(config) {
12
+ this.subscriberStatus = SubscriberStatusEnum.STOPPED;
13
+ this.scope = config.scope;
14
+ this.identifier = StreamRegister.getIdentifier(IDENTIFIER_NAME_CALLER, this.scope);
15
+ this.token = config.token;
16
+ this.url = config.url;
17
+ this.statusStream$ = new BehaviorSubject(SubscriberStatusEnum.STOPPED);
18
+ RocosStore.getChangeSubject()
19
+ .pipe(filter((message) => {
20
+ return message.type === 'token' && message.url === this.url;
21
+ }))
22
+ .subscribe((msg) => {
23
+ this.token = msg.data;
24
+ });
25
+ }
26
+ setToken(token) {
27
+ this.token = token;
28
+ }
29
+ stopStream() {
30
+ // do nothing for now
31
+ }
32
+ invokeRequest(params) {
33
+ this.logger.info('invokeRequest', params);
34
+ const responseLevel = params.responseLevelNumber;
35
+ const request = this.createServiceRequest(params.projectId, params.callsign, params.component, params.topic, responseLevel, params.payload, params.uid, params.query);
36
+ return this.callService(request, params);
37
+ }
38
+ cancelRequest(params) {
39
+ this.logger.info('cancelRequest', params);
40
+ const request = this.createCancellationRequest(params.uid);
41
+ return this.cancelService(request, params);
42
+ }
43
+ createCancellationRequest(uid) {
44
+ return RequestCancellation.create({
45
+ uid: {
46
+ content: {
47
+ oneofKind: 'hash',
48
+ hash: uid,
49
+ },
50
+ },
51
+ });
52
+ }
53
+ createServiceRequest(projectId, callsign, component, topic, responseLevel, payload, uid, query) {
54
+ const uri = RocosURI.create({
55
+ path: {
56
+ project: projectId,
57
+ callsign,
58
+ component,
59
+ topic,
60
+ },
61
+ scheme: RocosURIScheme.GRPC,
62
+ });
63
+ if (query) {
64
+ const queryMap = uri.query;
65
+ Object.keys(query).forEach((key) => {
66
+ queryMap[key] = RocosURIQueryValues.create({
67
+ values: [...query[key]],
68
+ });
69
+ });
70
+ }
71
+ return ServiceRequest.create({
72
+ header: {
73
+ created: Date.now().toString(),
74
+ source: uri,
75
+ responseLevel,
76
+ },
77
+ uid: {
78
+ version: UIDVersion.HEADER_HASH_RAND,
79
+ content: {
80
+ oneofKind: 'hash',
81
+ hash: uid ?? uuidv4(),
82
+ },
83
+ },
84
+ payload: this.getPayload(payload),
85
+ });
86
+ }
87
+ }
@@ -0,0 +1,13 @@
1
+ import { ICallerParams, IRocosCallerMessage, IStreamConfig } from '../../../models';
2
+ import { Observable } from 'rxjs';
3
+ import { RequestCancellation, ServiceRequest } from '../../../grpc/serviette.v1_pb';
4
+ import { CallerStreamAbstract } from './CallerStreamAbstract';
5
+ export declare class CallerStreamNode extends CallerStreamAbstract {
6
+ private client;
7
+ constructor(config: IStreamConfig);
8
+ protected cancelService(request: RequestCancellation, params: ICallerParams): Observable<IRocosCallerMessage>;
9
+ protected callService(request: ServiceRequest, params: ICallerParams): Observable<IRocosCallerMessage>;
10
+ private callStream;
11
+ protected getPayload(payload: string): Uint8Array;
12
+ private getMetadata;
13
+ }
@@ -0,0 +1,115 @@
1
+ import * as grpc from '@grpc/grpc-js';
2
+ import { RocosCallerMessage, SubscriberStatusEnum, } from '../../../models';
3
+ import { Observable } from 'rxjs';
4
+ import { RequestChannelMessage, } from '../../../grpc/serviette.v1_pb';
5
+ import { CallerStreamAbstract } from './CallerStreamAbstract';
6
+ import { RocosLogger } from '../../../logger/RocosLogger';
7
+ import { ServiceCallerClient } from '../../../grpc/serviette.v1_pb.grpc-client';
8
+ export class CallerStreamNode extends CallerStreamAbstract {
9
+ constructor(config) {
10
+ super(config);
11
+ this.logger = RocosLogger.getInstance(`CallerStreamNode(${this.identifier})`);
12
+ const port = config.port ?? 443;
13
+ const credentials = config.insecure ? grpc.credentials.createInsecure() : grpc.credentials.createSsl();
14
+ this.client = new ServiceCallerClient(`${this.url}:${port}`, credentials);
15
+ }
16
+ cancelService(request, params) {
17
+ return this.callStream(RequestChannelMessage.create({
18
+ content: {
19
+ oneofKind: 'cancellations',
20
+ cancellations: {
21
+ cancellations: [request],
22
+ },
23
+ },
24
+ }), params, 'cancel');
25
+ }
26
+ callService(request, params) {
27
+ return this.callStream(RequestChannelMessage.create({
28
+ content: {
29
+ oneofKind: 'requests',
30
+ requests: {
31
+ requests: [request],
32
+ },
33
+ },
34
+ }), params, 'invoke');
35
+ }
36
+ callStream(request, params, requestType) {
37
+ const metadata = this.getMetadata(params.projectId, params.callsign, params.subSystem);
38
+ let call;
39
+ return new Observable((emitter) => {
40
+ call = this.client.callServices(metadata);
41
+ this.logger.info(`${requestType}Request - call`);
42
+ this.subscriberStatus = SubscriberStatusEnum.ALIVE;
43
+ this.statusStream$.next(this.subscriberStatus);
44
+ call.write(request, () => {
45
+ if (this.logger.getLevel().valueOf() <= 2) {
46
+ this.logger.info(`${requestType}Request write completed for - ${JSON.stringify(request, (_, v) => {
47
+ return typeof v === 'bigint' ? `${v.toString()}n` : v;
48
+ })}`);
49
+ }
50
+ });
51
+ call.on('data', (update) => {
52
+ const message = RocosCallerMessage.fromModel(update);
53
+ emitter.next(message);
54
+ this.logger.debug(`${requestType}Request - on(data)`, {
55
+ message,
56
+ projectId: params.projectId,
57
+ callsign: params.callsign,
58
+ component: params.component,
59
+ topic: params.topic,
60
+ });
61
+ });
62
+ call.on('finish', () => {
63
+ this.logger.info(`${requestType}Request - on(finish) all writes are now complete`);
64
+ call.end();
65
+ });
66
+ call.on('end', () => {
67
+ this.subscriberStatus = SubscriberStatusEnum.STOPPED;
68
+ this.statusStream$.next(this.subscriberStatus);
69
+ this.logger.debug(`${requestType}Request - on(end)`, {
70
+ projectId: params.projectId,
71
+ callsign: params.callsign,
72
+ component: params.component,
73
+ topic: params.topic,
74
+ });
75
+ call.pause();
76
+ call.destroy();
77
+ this.client.close();
78
+ emitter.complete();
79
+ });
80
+ call.on('close', () => {
81
+ this.subscriberStatus = SubscriberStatusEnum.STOPPED;
82
+ this.statusStream$.next(this.subscriberStatus);
83
+ this.logger.debug(`${requestType}Request - on(close)`);
84
+ });
85
+ call.on('error', (error) => {
86
+ this.subscriberStatus = SubscriberStatusEnum.ERROR;
87
+ this.statusStream$.next(this.subscriberStatus);
88
+ if (/10 ABORTED: heartbeat watchdog strike/.exec(error.stack)) {
89
+ this.logger.debug(`${requestType}Request grpc Error heartbeat error`, error);
90
+ call.end();
91
+ emitter.complete();
92
+ }
93
+ else {
94
+ this.logger.error(`${requestType}Request - on(error)`, error);
95
+ emitter.error(error);
96
+ }
97
+ });
98
+ return () => {
99
+ this.logger.debug('unsubscribing callStream');
100
+ call.cancel();
101
+ };
102
+ });
103
+ }
104
+ getPayload(payload) {
105
+ return Buffer.from(payload);
106
+ }
107
+ getMetadata(projectId, callsign, subsystem) {
108
+ const meta = new grpc.Metadata();
109
+ meta.add('r-p', projectId);
110
+ meta.add('r-cs', callsign);
111
+ meta.add('r-s', subsystem ?? '');
112
+ meta.add('authorization', this.token);
113
+ return meta;
114
+ }
115
+ }
@@ -0,0 +1,10 @@
1
+ import { ICommandParams, IRocosCommandMessage, IStreamConfig } from '../../../models';
2
+ import { Observable } from 'rxjs';
3
+ import { CommandRequest } from '../../../grpc/rambo.v1_pb';
4
+ import { CommandStreamAbstract } from './CommandStreamAbstract';
5
+ export declare class CommandStream extends CommandStreamAbstract {
6
+ private client;
7
+ constructor(config: IStreamConfig);
8
+ protected callStream(request: CommandRequest, params: ICommandParams): Observable<IRocosCommandMessage>;
9
+ private getMetadata;
10
+ }
@@ -0,0 +1,66 @@
1
+ import { RocosCommandMessage, SubscriberStatusEnum, } from '../../../models';
2
+ import { Observable } from 'rxjs';
3
+ import { CommandClient } from '../../../grpc/rambo.v1_pb.client';
4
+ import { CommandStreamAbstract } from './CommandStreamAbstract';
5
+ import { GrpcWebFetchTransport } from '@protobuf-ts/grpcweb-transport';
6
+ import { RocosLogger } from '../../../logger/RocosLogger';
7
+ export class CommandStream extends CommandStreamAbstract {
8
+ constructor(config) {
9
+ super(config);
10
+ this.logger = RocosLogger.getInstance(`CommandStream(${this.identifier})`);
11
+ const protocol = config.insecure ? 'http' : 'https';
12
+ const transport = new GrpcWebFetchTransport({
13
+ baseUrl: `${protocol}://${this.url}`,
14
+ });
15
+ this.client = new CommandClient(transport);
16
+ }
17
+ callStream(request, params) {
18
+ const metadata = this.getMetadata(params.projectId, params.callsign);
19
+ const abortController = new AbortController();
20
+ return new Observable((emitter) => {
21
+ const call = this.client.callCommand(request, { meta: metadata, abort: abortController.signal });
22
+ this.subscriberStatus = SubscriberStatusEnum.ALIVE;
23
+ this.statusStream$.next(this.subscriberStatus);
24
+ call.responses.onMessage((update) => {
25
+ const message = RocosCommandMessage.fromModel(update);
26
+ emitter.next(message);
27
+ this.logger.debug('invokeRequest - on(data)', {
28
+ message,
29
+ projectId: params.projectId,
30
+ callsign: params.callsign,
31
+ commandId: params.commandId,
32
+ });
33
+ });
34
+ call.responses.onError((error) => {
35
+ this.logger.debug('invokeRequest - on(error)', {
36
+ error,
37
+ projectId: params.projectId,
38
+ callsign: params.callsign,
39
+ commandId: params.commandId,
40
+ });
41
+ emitter.error(error);
42
+ });
43
+ call.responses.onComplete(() => {
44
+ this.subscriberStatus = SubscriberStatusEnum.STOPPED;
45
+ this.statusStream$.next(this.subscriberStatus);
46
+ this.logger.debug('invokeRequest - on(end)', {
47
+ projectId: params.projectId,
48
+ callsign: params.callsign,
49
+ commandId: params.commandId,
50
+ });
51
+ emitter.complete();
52
+ });
53
+ return () => {
54
+ this.logger.debug('unsubscribing commandStream');
55
+ abortController.abort();
56
+ };
57
+ });
58
+ }
59
+ getMetadata(projectId, callsign) {
60
+ return {
61
+ 'authorization': this.token,
62
+ 'r-p': projectId,
63
+ 'r-cs': callsign,
64
+ };
65
+ }
66
+ }
@@ -0,0 +1,20 @@
1
+ import { BehaviorSubject, Observable } from 'rxjs';
2
+ import { ICommandParams, ICommandStream, IRocosCommandMessage, IStreamConfig, SubscriberStatusEnum } from '../../../models';
3
+ import { CommandRequest } from '../../../grpc/rambo.v1_pb';
4
+ import { Logger } from 'loglevel';
5
+ export declare abstract class CommandStreamAbstract implements ICommandStream {
6
+ identifier: string;
7
+ statusStream$: BehaviorSubject<SubscriberStatusEnum>;
8
+ protected token: string;
9
+ private readonly scope;
10
+ protected url: string;
11
+ protected subscriberStatus: SubscriberStatusEnum;
12
+ protected logger: Logger;
13
+ protected constructor(config: IStreamConfig);
14
+ protected abstract callStream(request: CommandRequest, params: ICommandParams): Observable<IRocosCommandMessage>;
15
+ setToken(token: string): void;
16
+ stopStream(): void;
17
+ invokeRequest(params: ICommandParams): Observable<IRocosCommandMessage>;
18
+ private createCommandRequest;
19
+ private createRocosUriPath;
20
+ }
@@ -0,0 +1,63 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { ResponseLevelEnum, SubscriberStatusEnum, } from '../../../models';
3
+ import { RocosUriPath, RocosUriScheme } from '../../../grpc/rambo.uri.v1_pb';
4
+ import { CommandRequest } from '../../../grpc/rambo.v1_pb';
5
+ import { IDENTIFIER_NAME_COMMAND } from '../../../constants/identifier';
6
+ import { RocosStore } from '../../../store/RocosStore';
7
+ import { StreamRegister } from '../../StreamRegister';
8
+ import { filter } from 'rxjs/operators';
9
+ import { getUnixTimeMs } from '../../../helpers/getUnixTimeMs';
10
+ import { randomString } from '../../../helpers/randomString';
11
+ export class CommandStreamAbstract {
12
+ constructor(config) {
13
+ this.subscriberStatus = SubscriberStatusEnum.STOPPED;
14
+ this.scope = config.scope;
15
+ this.identifier = StreamRegister.getIdentifier(IDENTIFIER_NAME_COMMAND, this.scope);
16
+ this.token = config.token;
17
+ this.url = config.url;
18
+ this.statusStream$ = new BehaviorSubject(SubscriberStatusEnum.STOPPED);
19
+ RocosStore.getChangeSubject()
20
+ .pipe(filter((message) => {
21
+ return message.type === 'token' && message.url === this.url;
22
+ }))
23
+ .subscribe((msg) => {
24
+ this.token = msg.data;
25
+ });
26
+ }
27
+ setToken(token) {
28
+ this.token = token;
29
+ }
30
+ stopStream() {
31
+ // do nothing for now
32
+ }
33
+ invokeRequest(params) {
34
+ if (params.timeoutMs === undefined || params.timeoutMs === null) {
35
+ params.timeoutMs = 30 * 1000; // Default 30 seconds.
36
+ }
37
+ this.logger.info('invokeRequest', params);
38
+ const request = this.createCommandRequest(params.projectId, params.callsign, params.commandId, params.parameters, params.timeoutMs, params.responseLevel);
39
+ return this.callStream(request, params);
40
+ }
41
+ createCommandRequest(projectId, callsign, commandId, parameters, timeoutMs = 30 * 1000, // Default 30 seconds.
42
+ responseLevel = ResponseLevelEnum.ALL) {
43
+ const path = this.createRocosUriPath(projectId, callsign, commandId);
44
+ return CommandRequest.create({
45
+ txid: randomString(),
46
+ uri: {
47
+ path,
48
+ scheme: RocosUriScheme.GRPC,
49
+ },
50
+ resLevel: responseLevel.valueOf(),
51
+ deadlineMs: getUnixTimeMs(timeoutMs).toString(),
52
+ parameters,
53
+ });
54
+ }
55
+ createRocosUriPath(projectId, callsign, commandId) {
56
+ return RocosUriPath.create({
57
+ callsign,
58
+ project: projectId,
59
+ component: 'command-executor',
60
+ topic: commandId,
61
+ });
62
+ }
63
+ }
@@ -0,0 +1,10 @@
1
+ import { CommandRequest } from '../../../grpc/rambo.v1_pb';
2
+ import { ICommandParams, IRocosCommandMessage, IStreamConfig } from '../../../models';
3
+ import { Observable } from 'rxjs';
4
+ import { CommandStreamAbstract } from './CommandStreamAbstract';
5
+ export declare class CommandStreamNode extends CommandStreamAbstract {
6
+ private client;
7
+ constructor(config: IStreamConfig);
8
+ protected callStream(request: CommandRequest, params: ICommandParams): Observable<IRocosCommandMessage>;
9
+ private getMetadata;
10
+ }