@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
@@ -0,0 +1,163 @@
1
+ import { issuer } from '../constants/auth';
2
+ import { AuthService } from './AuthService';
3
+ import { Token } from '../models';
4
+ describe('authService', () => {
5
+ const baseDate = new Date(2021, 0, 1, 0, 0, 0, 0);
6
+ beforeEach(() => {
7
+ jest.useFakeTimers();
8
+ jest.setSystemTime(baseDate);
9
+ });
10
+ const expiredDate = new Date(baseDate.getTime() - 1000 * 60 * 5); // 5 minutes ago
11
+ const almostExpiredDate = new Date(baseDate.getTime() + 1000 * 60 * 5); // 5 minutes from now
12
+ const almostAlmostExpiredDate = new Date(baseDate.getTime() + 1000 * 60 * 25); // 35 minutes from now
13
+ const notExpiredDate = new Date(baseDate.getTime() + 1000 * 60 * 60 * 24); // 1 day from now
14
+ const getToken = (config) => {
15
+ const header = {
16
+ alg: 'HS256',
17
+ typ: 'JWT',
18
+ };
19
+ const payload = {
20
+ iat: Math.floor((config.iat ?? expiredDate).getTime() / 1000),
21
+ exp: Math.floor((config.exp ?? notExpiredDate).getTime() / 1000),
22
+ iss: config.iss ?? issuer,
23
+ aud: config.aud ?? 'myaudience',
24
+ sub: config.sub ?? 'mysubject',
25
+ };
26
+ const encodedHeader = Buffer.from(JSON.stringify(header)).toString('base64');
27
+ const encodedPayload = Buffer.from(JSON.stringify(payload)).toString('base64');
28
+ if (config.signature === false) {
29
+ return `${encodedHeader}.${encodedPayload}`;
30
+ }
31
+ return `${encodedHeader}.${encodedPayload}.signature`;
32
+ };
33
+ afterAll(() => jest.useRealTimers());
34
+ describe('getToken', () => {
35
+ it('should return the current token if it is not expired', async () => {
36
+ // Arrange
37
+ const token = getToken({ exp: notExpiredDate });
38
+ const service = new AuthService({
39
+ token,
40
+ url: 'http://localhost:0',
41
+ });
42
+ service.setToken(token);
43
+ // Act
44
+ const newToken = await service.getToken();
45
+ // Assert
46
+ expect(newToken.value).toEqual(token);
47
+ });
48
+ it('should refresh the token if it is about to expire', async () => {
49
+ // Arrange
50
+ const token = getToken({ exp: almostExpiredDate });
51
+ const service = new AuthService({
52
+ token,
53
+ url: 'http://localhost:0',
54
+ });
55
+ service.setToken(token);
56
+ const expected = getToken({ signature: false });
57
+ jest.spyOn(AuthService.prototype, 'refreshToken').mockResolvedValue(new Token(expected));
58
+ // Act
59
+ const newToken = await service.getToken();
60
+ // Assert
61
+ expect(newToken.value).not.toEqual(token);
62
+ expect(newToken.value).toEqual(expected);
63
+ expect(AuthService.prototype.refreshToken).toHaveBeenCalled();
64
+ });
65
+ it('should get a new token if there is no current token', async () => {
66
+ // Arrange
67
+ const token = getToken({ signature: false });
68
+ const service = new AuthService({
69
+ url: 'http://localhost:0',
70
+ token,
71
+ });
72
+ service.clearToken();
73
+ const expected = getToken({ signature: false });
74
+ jest.spyOn(AuthService.prototype, 'getNewUserToken').mockResolvedValue(new Token(expected));
75
+ // Act
76
+ const newToken = await service.getToken();
77
+ // Assert
78
+ expect(newToken.value).toEqual(expected);
79
+ expect(AuthService.prototype.getNewUserToken).toHaveBeenCalled();
80
+ });
81
+ });
82
+ describe('tokenRefreshLoop', () => {
83
+ jest.spyOn(AuthService.prototype, 'refreshTokenIfExpired').mockImplementation(() => {
84
+ // make sure the promise is resolved synchronously
85
+ return {
86
+ catch: () => {
87
+ return {
88
+ finally(onfinally) {
89
+ onfinally?.();
90
+ return Promise.resolve();
91
+ },
92
+ };
93
+ },
94
+ };
95
+ });
96
+ beforeEach(() => {
97
+ jest.clearAllTimers();
98
+ jest.clearAllMocks();
99
+ jest.useFakeTimers();
100
+ jest.setSystemTime(baseDate);
101
+ });
102
+ it('should check the token every 10 minutes', async () => {
103
+ // Arrange
104
+ const token = getToken({ exp: almostAlmostExpiredDate });
105
+ const service = new AuthService({
106
+ token,
107
+ url: 'http://localhost:0',
108
+ });
109
+ service.setToken(token);
110
+ // Act
111
+ service.startTokenRefreshChecker();
112
+ expect(AuthService.prototype.refreshTokenIfExpired).toHaveBeenCalledTimes(1);
113
+ jest.advanceTimersByTime(1000 * 60 * 10); // 10 minutes
114
+ expect(AuthService.prototype.refreshTokenIfExpired).toHaveBeenCalledTimes(2);
115
+ jest.advanceTimersByTime(1000 * 60); // 1 minutes - 24 minutes left
116
+ expect(AuthService.prototype.refreshTokenIfExpired).toHaveBeenCalledTimes(3);
117
+ jest.advanceTimersByTime(1000 * 60 * 10); // 10 minutes - 14 minutes left
118
+ jest.runOnlyPendingTimers(); // wait for the next timer to run
119
+ service.stopTokenRefreshChecker();
120
+ });
121
+ it('should not run again when cancelled', () => {
122
+ // Arrange
123
+ const token = getToken({ exp: notExpiredDate });
124
+ const service = new AuthService({
125
+ token,
126
+ url: 'http://localhost:0',
127
+ });
128
+ service.setToken(token);
129
+ // Act
130
+ service.startTokenRefreshChecker();
131
+ expect(AuthService.prototype.refreshTokenIfExpired).toHaveBeenCalledTimes(1);
132
+ service.stopTokenRefreshChecker();
133
+ jest.runOnlyPendingTimers();
134
+ expect(AuthService.prototype.refreshTokenIfExpired).toHaveBeenCalledTimes(1);
135
+ });
136
+ it('should correctly report running status', () => {
137
+ const token = getToken({ exp: notExpiredDate });
138
+ const service = new AuthService({
139
+ token,
140
+ url: 'http://localhost:0',
141
+ });
142
+ service.setToken(token);
143
+ expect(service.isTokenRefreshCheckerRunning()).toBe(false);
144
+ service.startTokenRefreshChecker();
145
+ expect(service.isTokenRefreshCheckerRunning()).toBe(true);
146
+ service.stopTokenRefreshChecker();
147
+ expect(service.isTokenRefreshCheckerRunning()).toBe(false);
148
+ });
149
+ it('should correctly report running status', () => {
150
+ const token = getToken({ exp: notExpiredDate });
151
+ const service = new AuthService({
152
+ token,
153
+ url: 'http://localhost:0',
154
+ });
155
+ service.setToken(token);
156
+ expect(service.isTokenRefreshCheckerRunning()).toBe(false);
157
+ service.startTokenRefreshChecker();
158
+ expect(service.isTokenRefreshCheckerRunning()).toBe(true);
159
+ service.stopTokenRefreshChecker();
160
+ expect(service.isTokenRefreshCheckerRunning()).toBe(false);
161
+ });
162
+ });
163
+ });
@@ -1,9 +1,7 @@
1
- import { IRocosSDKConfig } from '../models/IRocosSDKConfig';
1
+ import { IRocosSDKConfig, RocosError } from '../models';
2
+ import { QueryParams } from '../helpers';
2
3
  import { Logger } from 'loglevel';
3
- import { RocosError } from '../models/RocosError';
4
- declare type QueryParams = Record<string, string | number | boolean> | URLSearchParams;
5
- declare type ResponseType = 'json' | 'blob' | 'stream' | 'text' | 'raw';
6
- declare type Payload = unknown;
4
+ type ResponseType = 'json' | 'blob' | 'stream' | 'text' | 'raw';
7
5
  interface RequestConfig {
8
6
  /**
9
7
  * Additional headers to send with the request.
@@ -21,18 +19,18 @@ interface RequestConfig {
21
19
  export declare abstract class BaseServiceAbstract {
22
20
  protected config: IRocosSDKConfig;
23
21
  protected logger: Logger;
24
- constructor(config: IRocosSDKConfig);
22
+ protected constructor(config: IRocosSDKConfig);
25
23
  protected abstract getError(e: Error): RocosError;
26
- protected callPost<T = unknown>(url: string, payload: Payload, errorMessage: string, config?: RequestConfig): Promise<T>;
27
- protected callPut<T = unknown>(url: string, payload: Payload, errorMessage: string, config?: RequestConfig): Promise<T>;
28
- protected callDelete<T = unknown>(url: string, errorMessage: string, payload?: unknown): Promise<T>;
29
- protected callGet<T = unknown>(url: string, errorMessage: string, params?: QueryParams, config?: RequestConfig): Promise<T>;
30
- protected call<T = unknown>(url: string, method: 'GET' | 'POST' | 'PUT' | 'DELETE', options: {
24
+ protected callPost<Response = unknown, Payload = unknown>(url: string, payload: Payload, errorMessage: string, config?: RequestConfig): Promise<Response>;
25
+ protected callPut<Response = unknown, Payload = unknown>(url: string, payload: Payload, errorMessage: string, config?: RequestConfig): Promise<Response>;
26
+ protected callDelete<Response = unknown, Payload = unknown>(url: string, errorMessage: string, payload?: Payload): Promise<Response>;
27
+ protected callGet<Response = unknown>(url: string, errorMessage: string, params?: QueryParams, config?: RequestConfig): Promise<Response>;
28
+ protected call<Response = unknown, Payload = unknown>(url: string, method: 'GET' | 'POST' | 'PUT' | 'DELETE', options: {
31
29
  errorMessage: string;
32
30
  config?: RequestConfig;
33
- payload?: unknown;
31
+ payload?: Payload;
34
32
  params?: QueryParams;
35
- }): Promise<T>;
33
+ }): Promise<Response>;
36
34
  private fetchOrThrow;
37
35
  }
38
36
  export {};
@@ -1,8 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseServiceAbstract = void 0;
4
- const RocosError_1 = require("../models/RocosError");
5
- const RocosStore_1 = require("../store/RocosStore");
1
+ import { RocosError } from '../models';
2
+ import { getURLSearchParams } from '../helpers';
3
+ import { RocosStore } from '../store/RocosStore';
6
4
  class HttpError extends Error {
7
5
  constructor(response) {
8
6
  super(response.statusText);
@@ -10,7 +8,7 @@ class HttpError extends Error {
10
8
  this.name = 'HttpError';
11
9
  }
12
10
  }
13
- class BaseServiceAbstract {
11
+ export class BaseServiceAbstract {
14
12
  constructor(config) {
15
13
  this.config = config;
16
14
  }
@@ -27,23 +25,20 @@ class BaseServiceAbstract {
27
25
  return this.call(url, 'GET', { errorMessage, params, config });
28
26
  }
29
27
  async call(url, method, options) {
30
- var _a;
31
28
  const { errorMessage, config, payload, params } = options;
32
29
  try {
33
- // change all params to string
34
- const stringParams = Object.entries(params || {}).reduce((acc, [key, value]) => {
35
- acc[key] = value.toString();
36
- return acc;
37
- }, {});
38
- const formattedUrl = params ? `${url}?${new URLSearchParams(stringParams)}` : url;
30
+ const formattedUrl = params ? `${url}?${getURLSearchParams(params)}` : url;
39
31
  const defaultHeaders = {};
40
- if (!(config === null || config === void 0 ? void 0 : config.public)) {
41
- const token = await RocosStore_1.RocosStore.getSDKInstance(this.config).getAuthService().getToken();
42
- defaultHeaders.Authorization = `Bearer ${token.value}`;
32
+ if (!config?.public) {
33
+ const token = await RocosStore.getSDKInstance(this.config).getAuthService().getToken();
34
+ defaultHeaders.Authorization = token.bearer;
43
35
  }
44
36
  const requestConfig = {
45
37
  method,
46
- headers: Object.assign(Object.assign({}, defaultHeaders), config === null || config === void 0 ? void 0 : config.headers),
38
+ headers: {
39
+ ...defaultHeaders,
40
+ ...config?.headers,
41
+ },
47
42
  };
48
43
  // must check if FormData exists for node support
49
44
  if (typeof FormData !== 'undefined' && payload instanceof FormData) {
@@ -51,19 +46,19 @@ class BaseServiceAbstract {
51
46
  }
52
47
  else if (payload) {
53
48
  requestConfig.body = JSON.stringify(payload);
54
- requestConfig.headers = Object.assign(Object.assign({}, requestConfig.headers), { 'Content-Type': 'application/json' });
49
+ requestConfig.headers = { ...requestConfig.headers, 'Content-Type': 'application/json' };
55
50
  }
56
- return this.fetchOrThrow(formattedUrl, requestConfig, config === null || config === void 0 ? void 0 : config.responseType);
51
+ return this.fetchOrThrow(formattedUrl, requestConfig, config?.responseType);
57
52
  }
58
53
  catch (e) {
59
54
  const message = errorMessage;
60
55
  this.logger.error(message, e);
61
- let httpError = new RocosError_1.RocosError(message);
56
+ let httpError = new RocosError(message);
62
57
  if (e instanceof HttpError) {
63
58
  httpError = this.getError(e);
64
- httpError.statusCode = (_a = e === null || e === void 0 ? void 0 : e.response) === null || _a === void 0 ? void 0 : _a.status;
59
+ httpError.statusCode = e?.response?.status;
65
60
  }
66
- RocosStore_1.RocosStore.getChangeSubject().next({ type: 'http-error', url: this.config.url, data: httpError });
61
+ RocosStore.getChangeSubject().next({ type: 'http-error', url: this.config.url, data: httpError });
67
62
  throw httpError;
68
63
  }
69
64
  }
@@ -87,7 +82,7 @@ class BaseServiceAbstract {
87
82
  case 'json':
88
83
  default: {
89
84
  const textRes = await res.text();
90
- if (!(textRes === null || textRes === void 0 ? void 0 : textRes.trim()))
85
+ if (!textRes?.trim())
91
86
  return undefined;
92
87
  try {
93
88
  return JSON.parse(textRes);
@@ -100,4 +95,3 @@ class BaseServiceAbstract {
100
95
  }
101
96
  }
102
97
  }
103
- exports.BaseServiceAbstract = BaseServiceAbstract;
@@ -0,0 +1,18 @@
1
+ import { IBaseService, IBaseStream, IRocosSDKConfig, IStreamConfig, SubscriberStatusEnum } from '../models';
2
+ import { ISubscriberStatus } from '../models/ISubscriberStatus';
3
+ import { Logger } from 'loglevel';
4
+ import { Subject } from 'rxjs';
5
+ export declare abstract class BaseStreamService<T extends IBaseStream, C extends IStreamConfig = IStreamConfig> implements IBaseService, ISubscriberStatus {
6
+ protected config: IRocosSDKConfig;
7
+ protected logger: Logger;
8
+ protected status: boolean;
9
+ status$: Subject<SubscriberStatusEnum>;
10
+ protected constructor(name: string, config: IRocosSDKConfig);
11
+ getStatus(): boolean;
12
+ protected initStream(stream: T): Promise<void>;
13
+ protected createStreamFromConfig(identifier: string, config: C): Promise<{
14
+ stream: T;
15
+ isNew: boolean;
16
+ }>;
17
+ protected abstract getStream(config: C): T;
18
+ }
@@ -0,0 +1,47 @@
1
+ import { SubscriberStatusEnum, Token } from '../models';
2
+ import { RocosLogger } from '../logger/RocosLogger';
3
+ import { RocosStore } from '../store/RocosStore';
4
+ import { StreamRegister } from '../api/StreamRegister';
5
+ import { Subject } from 'rxjs';
6
+ export class BaseStreamService {
7
+ constructor(name, config) {
8
+ this.status = false;
9
+ this.status$ = new Subject();
10
+ this.config = config;
11
+ this.logger = RocosLogger.getInstance(`${name}(${this.config.url})`);
12
+ }
13
+ getStatus() {
14
+ return this.status;
15
+ }
16
+ async initStream(stream) {
17
+ const authService = RocosStore.getSDKInstance(this.config).getAuthService();
18
+ if (!this.config.token || !authService.isTokenValid(new Token(this.config.token))) {
19
+ try {
20
+ const token = await authService.getToken();
21
+ stream.setToken(token.value);
22
+ }
23
+ catch (e) {
24
+ this.logger.error('Can not retrieve auth token', e);
25
+ throw new Error('Can not retrieve auth token');
26
+ }
27
+ }
28
+ authService.startTokenRefreshChecker();
29
+ }
30
+ async createStreamFromConfig(identifier, config) {
31
+ const identifierWithScope = StreamRegister.getIdentifier(identifier, config.scope);
32
+ const streamRegister = StreamRegister.getInstance();
33
+ let stream = streamRegister.getStream(identifierWithScope);
34
+ let isNew = false;
35
+ if (!stream) {
36
+ isNew = true;
37
+ stream = this.getStream(config);
38
+ stream.statusStream$.subscribe((msg) => {
39
+ this.status = msg === SubscriberStatusEnum.STOPPED || msg === SubscriberStatusEnum.ALIVE;
40
+ this.status$.next(msg);
41
+ });
42
+ await streamRegister.addStream(stream);
43
+ await this.initStream(stream);
44
+ }
45
+ return { stream, isNew };
46
+ }
47
+ }
@@ -1,22 +1,42 @@
1
- import { ICallerInvokeParams, ICallerParams } from '../models/params/ICallerParams';
2
- import { Observable, Subject } from 'rxjs';
3
- import { IBaseService } from '../models/IBaseService';
4
- import { ICallerStream } from '../models/stream/ICallerStream';
5
- import { IRocosCallerMessage } from '../models/message/IRocosCallerMessage';
6
- import { IRocosSDKConfig } from '../models/IRocosSDKConfig';
7
- import { IStreamConfig } from '../models/IStreamConfig';
8
- import { ISubscriberStatus } from '../models/ISubscriberStatus';
9
- import { SubscriberStatusEnum } from '../models/SubscriberStatusEnum';
10
- export declare class CallerService implements IBaseService, ISubscriberStatus {
11
- private config;
12
- private logger;
13
- private status;
14
- status$: Subject<SubscriberStatusEnum>;
1
+ import { ICallerCallParams, ICallerInvokeParams, ICallerParams, ICallerStream, IRocosCallerMessage, IRocosCallerMessageResponseAck, IRocosCallerMessageResponseResult, IRocosCallerMessageResponseReturn, IRocosSDKConfig, IStreamConfig } from '../models';
2
+ import { Observable } from 'rxjs';
3
+ import { BaseStreamService } from './BaseStreamService';
4
+ export declare class CallerService extends BaseStreamService<ICallerStream> {
15
5
  constructor(config: IRocosSDKConfig);
16
- getStatus(): boolean;
17
6
  invokeRequest(params: ICallerInvokeParams): Observable<IRocosCallerMessage>;
18
7
  cancelRequest(params: ICallerParams): Observable<IRocosCallerMessage>;
19
- private createStream;
20
- private initStream;
8
+ /** Call a service and return the response(s).
9
+ *
10
+ * It will complete once a result message is received with a `COMPLETE_SUCCESS` status,
11
+ * or throw an error if the status is not `COMPLETE_SUCCESS`.
12
+ *
13
+ * This is a high level method that wraps the lower level `invokeRequest` method.
14
+ *
15
+ * @see invokeRequest
16
+ * @see call
17
+ */
18
+ callRaw(params: ICallerCallParams): {
19
+ return$: Observable<IRocosCallerMessageResponseReturn>;
20
+ result$: Observable<IRocosCallerMessageResponseResult>;
21
+ ack$: Observable<IRocosCallerMessageResponseAck>;
22
+ };
23
+ /** Call a service and return the response(s) as UTF-8 encoded JSON.
24
+ *
25
+ * It will complete once a result message is received with a `COMPLETE_SUCCESS` status,
26
+ * or throw an error if the status is not `COMPLETE_SUCCESS`.
27
+ *
28
+ * This is a high level method that wraps the lower level `invokeRequest` method.
29
+ *
30
+ * Equivalent to calling `callRaw` and then parsing the return payload as UTF-8 encoded JSON.
31
+ *
32
+ * @see callRaw
33
+ * @see invokeRequest
34
+ */
35
+ call<T = unknown>(params: ICallerCallParams): {
36
+ return$: Observable<T>;
37
+ result$: Observable<IRocosCallerMessageResponseResult>;
38
+ ack$: Observable<IRocosCallerMessageResponseAck>;
39
+ };
40
+ protected createStream(): Promise<ICallerStream>;
21
41
  protected getStream(config: IStreamConfig): ICallerStream;
22
42
  }
@@ -1,26 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CallerService = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const CallerStream_1 = require("../api/streams/caller/CallerStream");
6
- const identifier_1 = require("../constants/identifier");
7
- const RocosLogger_1 = require("../logger/RocosLogger");
8
- const RocosStore_1 = require("../store/RocosStore");
9
- const StreamRegister_1 = require("../api/StreamRegister");
10
- const SubscriberStatusEnum_1 = require("../models/SubscriberStatusEnum");
11
- const operators_1 = require("rxjs/operators");
12
- class CallerService {
1
+ import { ResultStatus, RocosResponseLevel, } from '../models';
2
+ import { Subject, map, mergeMap, take, takeUntil } from 'rxjs';
3
+ import { filter, finalize } from 'rxjs/operators';
4
+ import { getResponses, handleChunkedMessages } from '../helpers/callerMessageHelpers';
5
+ import { BaseStreamService } from './BaseStreamService';
6
+ import { CallerStream } from '../api/streams/caller/CallerStream';
7
+ import { IDENTIFIER_NAME_CALLER } from '../constants/identifier';
8
+ import { v4 } from 'uuid';
9
+ export class CallerService extends BaseStreamService {
13
10
  constructor(config) {
14
- this.status = false;
15
- this.status$ = new rxjs_1.Subject();
16
- this.config = config;
17
- this.logger = RocosLogger_1.RocosLogger.getInstance(`CallerService(${this.config.url})`);
18
- }
19
- getStatus() {
20
- return this.status;
11
+ super('CallerService', config);
21
12
  }
22
13
  invokeRequest(params) {
23
- const subject = new rxjs_1.Subject();
14
+ const subject = new Subject();
24
15
  let subscription;
25
16
  this.createStream()
26
17
  .then((stream) => {
@@ -30,12 +21,12 @@ class CallerService {
30
21
  this.logger.info('invokeRequest error', e);
31
22
  subject.error(e);
32
23
  });
33
- return subject.asObservable().pipe(operators_1.finalize(() => {
34
- subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();
24
+ return subject.asObservable().pipe(finalize(() => {
25
+ subscription?.unsubscribe();
35
26
  }));
36
27
  }
37
28
  cancelRequest(params) {
38
- const subject = new rxjs_1.Subject();
29
+ const subject = new Subject();
39
30
  let subscription;
40
31
  this.createStream()
41
32
  .then((stream) => {
@@ -45,52 +36,82 @@ class CallerService {
45
36
  this.logger.info('invokeRequest error', e);
46
37
  subject.error(e);
47
38
  });
48
- return subject.asObservable().pipe(operators_1.finalize(() => {
49
- subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();
39
+ return subject.asObservable().pipe(finalize(() => {
40
+ subscription?.unsubscribe();
50
41
  }));
51
42
  }
52
- async createStream() {
53
- const scope = 'default';
54
- const identifier = StreamRegister_1.StreamRegister.getIdentifier(identifier_1.IDENTIFIER_NAME_CALLER, scope);
55
- const streamRegister = StreamRegister_1.StreamRegister.getInstance();
56
- let stream = streamRegister.getStream(identifier);
57
- if (!stream) {
58
- stream = this.getStream({
59
- url: this.config.url,
60
- token: this.config.token,
61
- scope,
62
- options: this.config.options,
63
- port: this.config.port,
64
- insecure: this.config.insecure,
65
- });
66
- stream.statusStream$.subscribe((msg) => {
67
- this.status = msg === SubscriberStatusEnum_1.SubscriberStatusEnum.STOPPED || msg === SubscriberStatusEnum_1.SubscriberStatusEnum.ALIVE;
68
- this.status$.next(msg);
69
- });
70
- // don't wait for these promises, they can be init after startup
71
- await streamRegister.addStream(stream);
72
- await this.initStream(stream);
73
- }
74
- return stream;
43
+ /** Call a service and return the response(s).
44
+ *
45
+ * It will complete once a result message is received with a `COMPLETE_SUCCESS` status,
46
+ * or throw an error if the status is not `COMPLETE_SUCCESS`.
47
+ *
48
+ * This is a high level method that wraps the lower level `invokeRequest` method.
49
+ *
50
+ * @see invokeRequest
51
+ * @see call
52
+ */
53
+ callRaw(params) {
54
+ const [component, ...topicItems] = params.source.replace(/^\/+/, '').split('/');
55
+ const topic = topicItems.join('/');
56
+ const payloadString = JSON.stringify(params.payload ?? {});
57
+ const source$ = this.invokeRequest({
58
+ uid: params.options?.uid ?? v4(),
59
+ projectId: params.projectId,
60
+ callsign: params.callsign,
61
+ subSystem: '',
62
+ component,
63
+ topic,
64
+ responseLevelNumber: RocosResponseLevel.ALL,
65
+ payload: payloadString,
66
+ query: params.options?.query,
67
+ }).pipe(mergeMap(getResponses), handleChunkedMessages());
68
+ const result$ = source$.pipe(filter((x) => x.result !== undefined), map((x) => x.result), take(1));
69
+ const resultNotifier$ = result$.pipe(map((x) => {
70
+ if (x.status !== ResultStatus.COMPLETE_SUCCESS)
71
+ throw x;
72
+ return x;
73
+ }));
74
+ const return$ = source$.pipe(filter((x) => x.return !== undefined), map((x) => x.return), takeUntil(resultNotifier$));
75
+ const ack$ = source$.pipe(filter((x) => x.ack !== undefined), map((x) => x.ack), takeUntil(resultNotifier$));
76
+ return {
77
+ return$,
78
+ result$,
79
+ ack$,
80
+ };
75
81
  }
76
- async initStream(stream) {
77
- // an async callback to set the stream token in case one was not set at startup
78
- if (!this.config.token) {
79
- try {
80
- const authService = RocosStore_1.RocosStore.getSDKInstance(this.config).getAuthService();
81
- const token = await authService.getToken();
82
- if (token === null || token === void 0 ? void 0 : token.value) {
83
- this.config.token = token === null || token === void 0 ? void 0 : token.value;
84
- stream.setToken(this.config.token);
85
- }
86
- }
87
- catch (e) {
88
- this.logger.info('Can not retrieve auth token', e);
89
- }
90
- }
82
+ /** Call a service and return the response(s) as UTF-8 encoded JSON.
83
+ *
84
+ * It will complete once a result message is received with a `COMPLETE_SUCCESS` status,
85
+ * or throw an error if the status is not `COMPLETE_SUCCESS`.
86
+ *
87
+ * This is a high level method that wraps the lower level `invokeRequest` method.
88
+ *
89
+ * Equivalent to calling `callRaw` and then parsing the return payload as UTF-8 encoded JSON.
90
+ *
91
+ * @see callRaw
92
+ * @see invokeRequest
93
+ */
94
+ call(params) {
95
+ const stream = this.callRaw(params);
96
+ return {
97
+ ...stream,
98
+ return$: stream.return$.pipe(map((x) => {
99
+ const decoded = new TextDecoder().decode(x.payload);
100
+ return JSON.parse(decoded);
101
+ })),
102
+ };
103
+ }
104
+ async createStream() {
105
+ return (await this.createStreamFromConfig(IDENTIFIER_NAME_CALLER, {
106
+ url: this.config.url,
107
+ token: this.config.token,
108
+ scope: 'default',
109
+ options: this.config.options,
110
+ port: this.config.port,
111
+ insecure: this.config.insecure,
112
+ })).stream;
91
113
  }
92
114
  getStream(config) {
93
- return new CallerStream_1.CallerStream(config);
115
+ return new CallerStream(config);
94
116
  }
95
117
  }
96
- exports.CallerService = CallerService;
@@ -0,0 +1 @@
1
+ export {};