@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,127 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+ import WorkerManager from './manager';
5
+ const WorkerMocks = {
6
+ postMessage: jest.fn(),
7
+ terminate: jest.fn(),
8
+ addEventListener: jest.fn(),
9
+ removeEventListener: jest.fn(),
10
+ onerror: jest.fn(),
11
+ onmessage: jest.fn(),
12
+ onmessageerror: jest.fn(),
13
+ dispatchEvent: jest.fn(),
14
+ clearAllMocks() {
15
+ this.postMessage.mockClear();
16
+ this.terminate.mockClear();
17
+ this.addEventListener.mockClear();
18
+ this.removeEventListener.mockClear();
19
+ this.onerror.mockClear();
20
+ this.onmessage.mockClear();
21
+ this.onmessageerror.mockClear();
22
+ this.dispatchEvent.mockClear();
23
+ },
24
+ };
25
+ class MockWorkerClass {
26
+ constructor() {
27
+ this.postMessage = WorkerMocks.postMessage;
28
+ this.terminate = WorkerMocks.terminate;
29
+ this.addEventListener = WorkerMocks.addEventListener;
30
+ this.removeEventListener = WorkerMocks.removeEventListener;
31
+ this.onerror = WorkerMocks.onerror;
32
+ this.onmessage = WorkerMocks.onmessage;
33
+ this.onmessageerror = WorkerMocks.onmessageerror;
34
+ this.dispatchEvent = WorkerMocks.dispatchEvent;
35
+ }
36
+ }
37
+ Object.defineProperty(window, 'Worker', {
38
+ value: MockWorkerClass,
39
+ writable: true,
40
+ });
41
+ Object.defineProperty(window, 'URL', {
42
+ value: {
43
+ createObjectURL: jest.fn(),
44
+ },
45
+ });
46
+ // add mock to AbortSignal.timeout
47
+ Object.defineProperty(AbortSignal, 'timeout', {
48
+ value: jest.fn().mockImplementation((timeout) => {
49
+ return new AbortController().signal;
50
+ }),
51
+ });
52
+ const task = {
53
+ id: 'test',
54
+ code: '1',
55
+ timeout: 1000,
56
+ };
57
+ const response = {
58
+ data: {
59
+ id: 'test',
60
+ success: true,
61
+ result: 'test',
62
+ },
63
+ };
64
+ describe('WorkerManager', () => {
65
+ beforeEach(() => {
66
+ WorkerMocks.clearAllMocks();
67
+ });
68
+ it('should send a task to the worker', async () => {
69
+ const listeners = [];
70
+ WorkerMocks.addEventListener.mockImplementation((_, listener) => {
71
+ listeners.push(listener);
72
+ });
73
+ WorkerMocks.postMessage.mockImplementation((msg) => {
74
+ listeners.forEach((listener) => {
75
+ listener(response);
76
+ });
77
+ });
78
+ const manager = new WorkerManager();
79
+ const result = await manager.execute(task);
80
+ expect(result).toEqual('test');
81
+ });
82
+ it('should handle listener for a single task', async () => {
83
+ const listeners = [];
84
+ WorkerMocks.addEventListener.mockImplementation((_, listener) => {
85
+ listeners.push(listener);
86
+ });
87
+ WorkerMocks.removeEventListener.mockImplementation((_, listener) => {
88
+ const index = listeners.indexOf(listener);
89
+ listeners.splice(index, 1);
90
+ });
91
+ const manager = new WorkerManager();
92
+ expect(listeners.length).toEqual(0);
93
+ const result = manager.execute(task);
94
+ expect(listeners.length).toEqual(1);
95
+ listeners[0](response);
96
+ await result;
97
+ expect(listeners.length).toEqual(0);
98
+ });
99
+ it('should handle listener for multiple simultaneous task', async () => {
100
+ const listeners = [];
101
+ WorkerMocks.addEventListener.mockImplementation((_, listener) => {
102
+ listeners.push(listener);
103
+ });
104
+ WorkerMocks.removeEventListener.mockImplementation((_, listener) => {
105
+ const index = listeners.indexOf(listener);
106
+ listeners.splice(index, 1);
107
+ });
108
+ const manager = new WorkerManager();
109
+ expect(listeners.length).toEqual(0);
110
+ const result1 = manager.execute(task);
111
+ const result2 = manager.execute(task);
112
+ expect(listeners.length).toEqual(2);
113
+ const result3 = manager.execute(task);
114
+ expect(listeners.length).toEqual(3);
115
+ const [listener1, listener2, listener3] = listeners;
116
+ listener1(response);
117
+ await result1;
118
+ expect(listeners.length).toEqual(2);
119
+ listener3(response);
120
+ await result3;
121
+ expect(listeners.length).toEqual(1);
122
+ listener2(response);
123
+ await result2;
124
+ expect(listeners.length).toEqual(0);
125
+ expect(WorkerMocks.removeEventListener).toHaveBeenCalledTimes(3);
126
+ });
127
+ });
@@ -0,0 +1,11 @@
1
+ export interface WorkerResult {
2
+ id: string;
3
+ result: unknown;
4
+ success: boolean;
5
+ }
6
+ export interface WorkerTask {
7
+ id: string;
8
+ code: string;
9
+ contextVariable: string;
10
+ context?: unknown;
11
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,74 @@
1
+ const WHITELIST = [
2
+ 'TEMPORARY',
3
+ 'PERSISTENT',
4
+ 'console',
5
+ 'self',
6
+ 'onmessage',
7
+ 'postMessage',
8
+ 'global',
9
+ 'allowed',
10
+ 'Array',
11
+ 'Boolean',
12
+ 'Date',
13
+ 'Function',
14
+ 'Number',
15
+ 'Object',
16
+ 'RegExp',
17
+ 'String',
18
+ 'Error',
19
+ 'EvalError',
20
+ 'RangeError',
21
+ 'ReferenceError',
22
+ 'SyntaxError',
23
+ 'TypeError',
24
+ 'URIError',
25
+ 'decodeURI',
26
+ 'decodeURIComponent',
27
+ 'encodeURI',
28
+ 'encodeURIComponent',
29
+ 'isFinite',
30
+ 'isNaN',
31
+ 'parseFloat',
32
+ 'parseInt',
33
+ 'Infinity',
34
+ 'JSON',
35
+ 'Math',
36
+ 'NaN',
37
+ 'undefined',
38
+ ];
39
+ const windowProps = Object.getOwnPropertyNames(self);
40
+ const protoProps = Object.getOwnPropertyNames(self.__proto__);
41
+ const props = [...windowProps, ...protoProps];
42
+ props.forEach((prop) => {
43
+ if (!WHITELIST.includes(prop)) {
44
+ Object.defineProperty(self, prop, {
45
+ get: () => {
46
+ throw new Error(`Security Exception: cannot access ${prop}`);
47
+ },
48
+ set: () => {
49
+ throw new Error(`Security Exception: cannot set ${prop}`);
50
+ },
51
+ configurable: false,
52
+ });
53
+ }
54
+ });
55
+ // Parses and calls function string with args
56
+ onmessage = (event) => {
57
+ let result;
58
+ let success = true;
59
+ try {
60
+ const fn = Function(event.data.contextVariable, `"use strict";return (${event.data.code});`);
61
+ result = fn(event.data.context);
62
+ }
63
+ catch (e) {
64
+ result = e;
65
+ success = false;
66
+ }
67
+ const message = {
68
+ id: event.data.id,
69
+ result,
70
+ success,
71
+ };
72
+ postMessage(message);
73
+ };
74
+ export {};
@@ -0,0 +1,2 @@
1
+ declare const source: string;
2
+ export default source;
@@ -0,0 +1,4 @@
1
+ // Auto-generated file
2
+ /* eslint-disable */
3
+ const source = `(()=>{"use strict";(()=>{const e=["TEMPORARY","PERSISTENT","console","self","onmessage","postMessage","global","allowed","Array","Boolean","Date","Function","Number","Object","RegExp","String","Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","isFinite","isNaN","parseFloat","parseInt","Infinity","JSON","Math","NaN","undefined"];[...Object.getOwnPropertyNames(self),...Object.getOwnPropertyNames(self.__proto__)].forEach((r=>{e.includes(r)||Object.defineProperty(self,r,{get:()=>{throw new Error(\`Security Exception: cannot access \${r}\`)},set:()=>{throw new Error(\`Security Exception: cannot set \${r}\`)},configurable:!1})})),onmessage=e=>{let r,t=!0;try{r=Function(e.data.contextVariable,\`"use strict";return (\${e.data.code});\`)(e.data.context)}catch(e){r=e,t=!1}const o={id:e.data.id,result:r,success:t};postMessage(o)}})()})();`;
4
+ export default source;
@@ -0,0 +1,2 @@
1
+ import WebSandbox from './sandbox';
2
+ export { WebSandbox };
@@ -0,0 +1,2 @@
1
+ import WebSandbox from './sandbox';
2
+ export { WebSandbox };
@@ -0,0 +1,57 @@
1
+ export interface SandboxOptions extends Required<RunCodeOptions> {
2
+ /** The selector or element to append the iframe to */
3
+ frameContainer: string | Element;
4
+ /** Whether to enable verbose logging */
5
+ debugMode: boolean;
6
+ }
7
+ export interface RunCodeOptions {
8
+ /** The name of the variable to use for the context object */
9
+ contextVariable?: string;
10
+ timeout?: {
11
+ /** The minimum time to wait for a task to complete
12
+ *
13
+ * The worker will attempt to kill the task after this time.
14
+ */
15
+ minimumMs: number;
16
+ /** The maximum time to wait for a task to complete
17
+ *
18
+ * The sandbox will be destroyed and rebuilt after this time.
19
+ */
20
+ maximumMs: number;
21
+ };
22
+ abortSignal?: AbortSignal | null;
23
+ }
24
+ export declare const BaseOptions: SandboxOptions;
25
+ export interface SandboxMethods {
26
+ iframeInitialised: () => void;
27
+ }
28
+ /** A sandbox for running untrusted code in an iframe & embedded web worker.
29
+ *
30
+ * This is a wrapper around the iframe and web worker that provides a simple API for running code in the sandbox.
31
+ * It also provides a context object that can be used to pass data into the sandbox.
32
+ */
33
+ export default class WebSandbox {
34
+ private readonly options;
35
+ private frame;
36
+ private connection?;
37
+ private initialised;
38
+ private frameAbortController;
39
+ static new(options?: Partial<SandboxOptions>): Promise<WebSandbox>;
40
+ private constructor();
41
+ /** Runs code in the sandbox. Can be either a string or a function */
42
+ run<T = unknown>(code: string | (() => T), context?: unknown, options?: RunCodeOptions): Promise<T>;
43
+ /** Destroys the sandbox.
44
+ *
45
+ * This will remove the iframe from the DOM and remove the message listener.
46
+ */
47
+ destroy(): void;
48
+ private initialise;
49
+ private validateOptions;
50
+ private destroyAndRebuild;
51
+ private removeMessageListener;
52
+ private runFunction;
53
+ private runCode;
54
+ private promisifyAbortSignal;
55
+ private createFrame;
56
+ private prepareFrameContent;
57
+ }
@@ -0,0 +1,175 @@
1
+ import Connection from './connection';
2
+ import frameSource from './frame';
3
+ import { generateUUID } from '../generateUUID';
4
+ export const BaseOptions = {
5
+ frameContainer: 'body',
6
+ debugMode: false,
7
+ contextVariable: 'ctx',
8
+ timeout: {
9
+ minimumMs: 1000,
10
+ maximumMs: 1500,
11
+ },
12
+ abortSignal: null,
13
+ };
14
+ /** A sandbox for running untrusted code in an iframe & embedded web worker.
15
+ *
16
+ * This is a wrapper around the iframe and web worker that provides a simple API for running code in the sandbox.
17
+ * It also provides a context object that can be used to pass data into the sandbox.
18
+ */
19
+ export default class WebSandbox {
20
+ static async new(options = {}) {
21
+ const sandbox = new WebSandbox(options);
22
+ await sandbox.initialised;
23
+ return sandbox;
24
+ }
25
+ constructor(options) {
26
+ this.options = { ...BaseOptions, ...options };
27
+ this.frame = this.createFrame();
28
+ this.validateOptions(this.options);
29
+ this.initialised = this.initialise();
30
+ this.frameAbortController = new AbortController();
31
+ if (options.abortSignal) {
32
+ this.promisifyAbortSignal(options.abortSignal).catch(() => {
33
+ void this.destroyAndRebuild(this.frame.id);
34
+ });
35
+ }
36
+ }
37
+ /** Runs code in the sandbox. Can be either a string or a function */
38
+ async run(code, context, options) {
39
+ if (typeof code === 'function') {
40
+ return this.runFunction(code, context);
41
+ }
42
+ return this.runCode(code, context, options);
43
+ }
44
+ /** Destroys the sandbox.
45
+ *
46
+ * This will remove the iframe from the DOM and remove the message listener.
47
+ */
48
+ destroy() {
49
+ this.frameAbortController.abort();
50
+ this.frame.remove();
51
+ this.removeMessageListener();
52
+ }
53
+ initialise() {
54
+ return new Promise((resolve) => {
55
+ this.connection = new Connection('SANDBOX', this.frame.contentWindow.postMessage.bind(this.frame.contentWindow), {
56
+ iframeInitialised: () => resolve(),
57
+ }, (listener) => {
58
+ const sourceCheckListener = (event) => {
59
+ if (event.source !== this.frame.contentWindow) {
60
+ return;
61
+ }
62
+ return listener(event);
63
+ };
64
+ window.addEventListener('message', sourceCheckListener);
65
+ this.removeMessageListener = () => window.removeEventListener('message', sourceCheckListener);
66
+ }, { allowedSenderOrigin: 'null', debugMode: this.options.debugMode });
67
+ });
68
+ }
69
+ validateOptions(options) {
70
+ const minimumTimeout = options.timeout.minimumMs;
71
+ const maximumTimeout = options.timeout.maximumMs;
72
+ if (maximumTimeout < minimumTimeout) {
73
+ throw new Error(`maximum timeout (${maximumTimeout}ms) must be greater than or equal to minimum timeout (${minimumTimeout}ms)`);
74
+ }
75
+ if (minimumTimeout <= 0 || maximumTimeout <= 0) {
76
+ throw new Error('timeout values must be greater than 0');
77
+ }
78
+ if (maximumTimeout > 5000) {
79
+ throw new Error('maximum timeout must be less than or equal to 5000ms');
80
+ }
81
+ }
82
+ async destroyAndRebuild(frameId) {
83
+ if (this.frame.id !== frameId) {
84
+ return;
85
+ }
86
+ this.destroy();
87
+ this.frame = this.createFrame();
88
+ this.frameAbortController = new AbortController();
89
+ await this.initialise();
90
+ }
91
+ removeMessageListener() {
92
+ // replaced by constructor
93
+ }
94
+ async runFunction(fn, context, options) {
95
+ return this.runCode(`(${fn.toString()})()`, context, options);
96
+ }
97
+ async runCode(code, context, options) {
98
+ if (!this.connection) {
99
+ throw new Error('sandbox not initialised');
100
+ }
101
+ this.validateOptions({
102
+ ...this.options,
103
+ ...options,
104
+ });
105
+ const frameId = this.frame.id;
106
+ const timeout = this.promisifyAbortSignal(AbortSignal.timeout(options?.timeout?.maximumMs ?? this.options.timeout.maximumMs));
107
+ const frameAbortedSignal = this.promisifyAbortSignal(this.frameAbortController.signal);
108
+ const userAbortedSignal = options?.abortSignal ? this.promisifyAbortSignal(options.abortSignal) : null;
109
+ const taskId = generateUUID();
110
+ const task = this.connection.callRemoteMethod('startTask', {
111
+ id: taskId,
112
+ code,
113
+ context,
114
+ timeout: this.options.timeout.minimumMs,
115
+ contextVariable: options?.contextVariable ?? this.options.contextVariable,
116
+ });
117
+ const signals = [task, timeout, frameAbortedSignal, userAbortedSignal].filter((i) => i !== null);
118
+ return Promise.race(signals).catch(async (e) => {
119
+ if (e.name === 'TimeoutError') {
120
+ await this.destroyAndRebuild(frameId);
121
+ }
122
+ throw e;
123
+ });
124
+ }
125
+ promisifyAbortSignal(signal) {
126
+ return new Promise((_, reject) => {
127
+ // If the signal is already aborted, immediately throw in order to reject the promise.
128
+ if (signal.aborted) {
129
+ reject(signal.reason);
130
+ }
131
+ // Watch for 'abort' signals
132
+ signal.addEventListener('abort', () => {
133
+ // Stop the main operation
134
+ // Reject the promise with the abort reason.
135
+ reject(signal.reason);
136
+ });
137
+ });
138
+ }
139
+ createFrame() {
140
+ const containerSelector = this.options.frameContainer;
141
+ const container = typeof containerSelector === 'string' ? document.querySelector(containerSelector) : containerSelector;
142
+ if (!container) {
143
+ throw new Error('unable to find container for sandbox');
144
+ }
145
+ const iframe = document.createElement('iframe');
146
+ if (iframe.sandbox) {
147
+ iframe.sandbox.add('allow-scripts');
148
+ }
149
+ else {
150
+ iframe.setAttribute('sandbox', 'allow-scripts');
151
+ }
152
+ iframe.srcdoc = this.prepareFrameContent();
153
+ iframe.style.display = 'none';
154
+ iframe.id = generateUUID();
155
+ container.appendChild(iframe);
156
+ return iframe;
157
+ }
158
+ prepareFrameContent() {
159
+ let script = frameSource;
160
+ if (this.options.debugMode) {
161
+ script = `window.debugMode=true;${script}`;
162
+ }
163
+ return `
164
+ <!DOCTYPE html>
165
+ <html>
166
+ <head>
167
+ <meta charset="UTF-8">
168
+ <script>
169
+ ${script}
170
+ </script>
171
+ </head>
172
+ </html>
173
+ `;
174
+ }
175
+ }
@@ -0,0 +1,13 @@
1
+ type APIMethod = (...args: any[]) => unknown;
2
+ export type API = Map<string, APIMethod>;
3
+ export type APIDeclaration<T> = {
4
+ [K in keyof T]: T[K] extends APIMethod ? T[K] : never;
5
+ };
6
+ export interface Task {
7
+ id: string;
8
+ code: string;
9
+ context?: unknown;
10
+ timeout: number;
11
+ contextVariable?: string;
12
+ }
13
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/index.js CHANGED
@@ -1,19 +1,7 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./constants/grpc"), exports);
14
- __exportStar(require("./constants/timezones"), exports);
15
- __exportStar(require("./helpers"), exports);
16
- __exportStar(require("./models"), exports);
17
- __exportStar(require("./services"), exports);
18
- __exportStar(require("./IRocosSDK"), exports);
19
- __exportStar(require("./RocosSDK"), exports);
1
+ export * from './constants/grpc';
2
+ export * from './constants/timezones';
3
+ export * from './helpers';
4
+ export * from './models';
5
+ export * from './services';
6
+ export * from './IRocosSDK';
7
+ export * from './RocosSDK';
@@ -1,63 +1,37 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.RocosLogger = void 0;
26
- const prefix = __importStar(require("loglevel-plugin-prefix"));
27
- const loglevel_1 = __importDefault(require("loglevel"));
28
- loglevel_1.default.setDefaultLevel('silent');
29
- prefix.reg(loglevel_1.default);
30
- prefix.apply(loglevel_1.default, {
1
+ import * as prefix from 'loglevel-plugin-prefix';
2
+ import log from 'loglevel';
3
+ log.setDefaultLevel('silent');
4
+ prefix.reg(log);
5
+ prefix.apply(log, {
31
6
  format(level, name, timestamp) {
32
7
  return `[${timestamp}] ${level.toUpperCase()} ${name}:`;
33
8
  },
34
9
  });
35
- class RocosLogger {
10
+ export class RocosLogger {
36
11
  static getInstance(name) {
37
12
  if (name) {
38
- const logger = loglevel_1.default.getLogger(name);
39
- logger.setLevel(loglevel_1.default.getLevel());
13
+ const logger = log.getLogger(name);
14
+ logger.setLevel(log.getLevel());
40
15
  return logger;
41
16
  }
42
- return loglevel_1.default;
17
+ return log;
43
18
  }
44
19
  static enableAll() {
45
- loglevel_1.default.enableAll();
46
- for (const name in loglevel_1.default.getLoggers()) {
47
- loglevel_1.default.getLogger(name).enableAll();
20
+ log.enableAll();
21
+ for (const name in log.getLoggers()) {
22
+ log.getLogger(name).enableAll();
48
23
  }
49
24
  }
50
25
  static disableAll() {
51
- loglevel_1.default.disableAll();
52
- for (const name in loglevel_1.default.getLoggers()) {
53
- loglevel_1.default.getLogger(name).disableAll();
26
+ log.disableAll();
27
+ for (const name in log.getLoggers()) {
28
+ log.getLogger(name).disableAll();
54
29
  }
55
30
  }
56
31
  static setLevel(level) {
57
- loglevel_1.default.setLevel(level);
58
- for (const name in loglevel_1.default.getLoggers()) {
59
- loglevel_1.default.getLogger(name).setLevel(loglevel_1.default.getLevel());
32
+ log.setLevel(level);
33
+ for (const name in log.getLoggers()) {
34
+ log.getLogger(name).setLevel(log.getLevel());
60
35
  }
61
36
  }
62
37
  }
63
- exports.RocosLogger = RocosLogger;
@@ -0,0 +1,6 @@
1
+ export declare enum CallsignStatus {
2
+ UNKNOWN = "unknown",
3
+ ONLINE = "online",
4
+ OFFLINE = "offline",
5
+ ERROR = "error"
6
+ }
@@ -0,0 +1,7 @@
1
+ export var CallsignStatus;
2
+ (function (CallsignStatus) {
3
+ CallsignStatus["UNKNOWN"] = "unknown";
4
+ CallsignStatus["ONLINE"] = "online";
5
+ CallsignStatus["OFFLINE"] = "offline";
6
+ CallsignStatus["ERROR"] = "error";
7
+ })(CallsignStatus || (CallsignStatus = {}));
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExportDataQuery = void 0;
4
- class ExportDataQuery {
1
+ export class ExportDataQuery {
5
2
  constructor(init) {
6
3
  this.filters = [];
7
4
  Object.assign(this, init);
@@ -14,4 +11,3 @@ class ExportDataQuery {
14
11
  };
15
12
  }
16
13
  }
17
- exports.ExportDataQuery = ExportDataQuery;
@@ -1,6 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExternalProject = void 0;
4
- class ExternalProject {
1
+ export class ExternalProject {
5
2
  }
6
- exports.ExternalProject = ExternalProject;
@@ -1,3 +1,4 @@
1
1
  export interface IBaseService {
2
2
  getStatus: () => boolean;
3
+ teardown?: (() => void) | (() => Promise<void>);
3
4
  }
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1,2 @@
1
1
  import { LogLevelDesc } from 'loglevel';
2
- export declare type IDebugLevel = LogLevelDesc;
2
+ export type IDebugLevel = LogLevelDesc;
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};