@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
@@ -1,13 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSubscriptionsDifference = void 0;
4
- const arrayRemove_1 = require("./arrayRemove");
5
- const getSubscriptionsDifference = (before, after) => {
6
- const toRemove = Object.assign({}, before);
7
- const toAdd = Object.assign({}, after);
1
+ import { arrayRemove } from './arrayRemove';
2
+ export const getSubscriptionsDifference = (before, after) => {
3
+ const toRemove = { ...before };
4
+ const toAdd = { ...after };
8
5
  Object.keys(before).forEach((key) => {
9
6
  if (after[key]) {
10
- toRemove[key] = arrayRemove_1.arrayRemove(toRemove[key], after[key]);
7
+ toRemove[key] = arrayRemove(toRemove[key], after[key]);
11
8
  if (!toRemove[key].length) {
12
9
  delete toRemove[key];
13
10
  }
@@ -15,7 +12,7 @@ const getSubscriptionsDifference = (before, after) => {
15
12
  });
16
13
  Object.keys(after).forEach((key) => {
17
14
  if (before[key]) {
18
- toAdd[key] = arrayRemove_1.arrayRemove(toAdd[key], before[key]);
15
+ toAdd[key] = arrayRemove(toAdd[key], before[key]);
19
16
  if (!toAdd[key].length) {
20
17
  delete toAdd[key];
21
18
  }
@@ -36,4 +33,3 @@ const getSubscriptionsDifference = (before, after) => {
36
33
  },
37
34
  };
38
35
  };
39
- exports.getSubscriptionsDifference = getSubscriptionsDifference;
@@ -0,0 +1,2 @@
1
+ export type QueryParams = Record<string, string | number | boolean> | URLSearchParams;
2
+ export declare const getURLSearchParams: (params: QueryParams) => URLSearchParams;
@@ -0,0 +1,9 @@
1
+ export const getURLSearchParams = (params) => {
2
+ if (params instanceof URLSearchParams)
3
+ return params;
4
+ const stringParams = Object.entries(params ?? {}).reduce((acc, [key, value]) => {
5
+ acc[key] = value.toString();
6
+ return acc;
7
+ }, {});
8
+ return new URLSearchParams(stringParams);
9
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import { getURLSearchParams } from './getURLSearchParams';
2
+ describe('getURLSearchParams', () => {
3
+ it('Should return the original param if URLSearchParams', () => {
4
+ const param = new URLSearchParams();
5
+ const searchParam = getURLSearchParams(param);
6
+ expect(searchParam).toBe(param);
7
+ });
8
+ it('Should a new URLSearchParams ', () => {
9
+ const param = {
10
+ foo: 'bar',
11
+ bar: true,
12
+ foobar: 123,
13
+ };
14
+ const searchParam = getURLSearchParams(param);
15
+ expect(searchParam.get('foo')).toBe('bar');
16
+ expect(searchParam.get('bar')).toBe('true');
17
+ expect(searchParam.get('foobar')).toBe('123');
18
+ });
19
+ });
@@ -1,19 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUniqueConfigKey = void 0;
4
1
  /**
5
2
  * Flattens and orders the sdk config props to make a unique key
6
3
  *
7
4
  * @param config - SDK config {@link IRocosSDKConfig}
8
5
  */
9
- const getUniqueConfigKey = (config) => {
6
+ export const getUniqueConfigKey = (config) => {
10
7
  return Object.keys(config)
11
8
  .sort()
12
9
  .map((item) => {
13
- // @ts-ignore
14
10
  return item !== 'token' ? `${item}:${config[item]}` : false;
15
11
  })
16
12
  .filter(Boolean)
17
13
  .join();
18
14
  };
19
- exports.getUniqueConfigKey = getUniqueConfigKey;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUniqueId = void 0;
4
- const flattenCallsignsLookup_1 = require("./flattenCallsignsLookup");
1
+ import { flattenCallsignsLookup } from './flattenCallsignsLookup';
5
2
  /**
6
3
  *
7
4
  * @param projectId
@@ -9,7 +6,6 @@ const flattenCallsignsLookup_1 = require("./flattenCallsignsLookup");
9
6
  * @param sources
10
7
  * @param scope
11
8
  */
12
- const getUniqueId = (projectId, callsignsLookup, sources, scope) => {
13
- return [projectId, ...flattenCallsignsLookup_1.flattenCallsignsLookup(callsignsLookup), ...sources.sort(), scope].join();
9
+ export const getUniqueId = (projectId, callsignsLookup, sources, scope) => {
10
+ return [projectId, ...flattenCallsignsLookup(callsignsLookup), ...sources.sort(), scope].join();
14
11
  };
15
- exports.getUniqueId = getUniqueId;
@@ -1,8 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUnixTimeMs = void 0;
4
- const getUnixTimeMs = (offsetMs, baseOn = new Date()) => {
1
+ export const getUnixTimeMs = (offsetMs, baseOn = new Date()) => {
5
2
  const newDate = new Date(baseOn.getTime() + offsetMs);
6
3
  return newDate.getTime(); // Convert date to ms.
7
4
  };
8
- exports.getUnixTimeMs = getUnixTimeMs;
@@ -1,3 +1,5 @@
1
- export * from './generateUUID';
2
1
  export * from './average';
3
2
  export * from './standardDeviation';
3
+ export * from './generateUUID';
4
+ export * from './getURLSearchParams';
5
+ export * from './websandbox';
package/helpers/index.js CHANGED
@@ -1,15 +1,5 @@
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("./generateUUID"), exports);
14
- __exportStar(require("./average"), exports);
15
- __exportStar(require("./standardDeviation"), exports);
1
+ export * from './average';
2
+ export * from './standardDeviation';
3
+ export * from './generateUUID';
4
+ export * from './getURLSearchParams';
5
+ export * from './websandbox';
@@ -1 +1 @@
1
- export declare const nanosecondToMillisecond: (nanoNum: number) => number;
1
+ export declare const nanosecondToMillisecond: (nano: number | string) => number;
@@ -1,7 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nanosecondToMillisecond = void 0;
4
- const nanosecondToMillisecond = (nanoNum) => {
5
- return nanoNum / 1000000;
1
+ function isNumber(n) {
2
+ return typeof n === 'number';
3
+ }
4
+ export const nanosecondToMillisecond = (nano) => {
5
+ if (isNumber(nano)) {
6
+ return nano / 1e6;
7
+ }
8
+ if (nano.length < 16) {
9
+ return Number(nano) / 1e6;
10
+ }
11
+ return Number(nano.slice(0, -6) + '.' + nano.slice(-6));
6
12
  };
7
- exports.nanosecondToMillisecond = nanosecondToMillisecond;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import { nanosecondToMillisecond } from './nanosecondToMillisecond';
2
+ describe('nanosecondToMillisecond', () => {
3
+ it.each `
4
+ input | expected
5
+ ${'0.0001'} | ${0.0000000001}
6
+ ${'1'} | ${0.000001}
7
+ ${'1000000'} | ${1}
8
+ ${'10000000'} | ${10}
9
+ ${'-100000006'} | ${-100.000006}
10
+ ${'1000000000000000000'} | ${1000000000000}
11
+ ${'1234567891011100001'} | ${1234567891011.100001}
12
+ ${'1234567891011100000'} | ${1234567891011.1}
13
+ ${0.0001} | ${0.0000000001}
14
+ ${1} | ${0.000001}
15
+ ${1000000} | ${1}
16
+ ${1000000000000001} | ${1000000000.000001}
17
+ `('should convert $input to $expected', ({ input, expected }) => {
18
+ expect(nanosecondToMillisecond(input)).toBe(expected);
19
+ });
20
+ });
@@ -1,7 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.randomString = void 0;
4
- const randomString = () => {
1
+ export const randomString = () => {
5
2
  return Math.random().toString(16).substr(2);
6
3
  };
7
- exports.randomString = randomString;
@@ -1,16 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.standardDeviation = void 0;
4
- const average_1 = require("./average");
5
- const standardDeviation = (numbers) => {
6
- const avg = average_1.average(numbers);
1
+ import { average } from './average';
2
+ export const standardDeviation = (numbers) => {
3
+ const avg = average(numbers);
7
4
  const squareDiffs = numbers.map((value) => {
8
5
  const diff = value - avg;
9
6
  const sqrDiff = diff * diff;
10
7
  return sqrDiff;
11
8
  });
12
- const avgSquareDiff = average_1.average(squareDiffs);
9
+ const avgSquareDiff = average(squareDiffs);
13
10
  const stdDev = Math.sqrt(avgSquareDiff);
14
11
  return stdDev;
15
12
  };
16
- exports.standardDeviation = standardDeviation;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ import { standardDeviation } from './standardDeviation';
2
+ describe('standardDeviation', () => {
3
+ it('should calculate standard deviation correctly', () => {
4
+ let numbers = [10, 12, 23, 23, 16, 23, 21, 16];
5
+ let stdDev = standardDeviation(numbers);
6
+ expect(Math.abs(stdDev - 4.8989794855664)).toBeLessThan(0.000001);
7
+ numbers = [100, 12, 23, 23, 116, 23, 21, 162];
8
+ stdDev = standardDeviation(numbers);
9
+ expect(Math.abs(stdDev - 53.702886328394)).toBeLessThan(0.000001);
10
+ });
11
+ });
@@ -1,14 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stringToUint8Array = void 0;
4
- const buffer_1 = require("buffer");
5
- const stringToUint8Array = (input) => {
1
+ import { Buffer } from 'buffer';
2
+ export const stringToUint8Array = (input) => {
6
3
  input = input ? input : '';
7
- const buf = new buffer_1.Buffer(input);
4
+ const buf = new Buffer(input);
8
5
  const result = new Uint8Array(buf.length);
9
6
  for (let i = 0; i < buf.length; i++) {
10
7
  result[i] = buf[i];
11
8
  }
12
9
  return result;
13
10
  };
14
- exports.stringToUint8Array = stringToUint8Array;
@@ -1,15 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.uint8ArrayToString = void 0;
4
- const uint8ArrayToString = (arr) => {
1
+ export const uint8ArrayToString = (arr) => {
5
2
  if (!arr) {
6
3
  return '';
7
4
  }
8
5
  const strArr = [];
9
- arr === null || arr === void 0 ? void 0 : arr.forEach((element) => {
6
+ arr?.forEach((element) => {
10
7
  strArr.push(String.fromCharCode(element));
11
8
  });
12
- const str = strArr.join('');
13
- return str;
9
+ return strArr.join('');
14
10
  };
15
- exports.uint8ArrayToString = uint8ArrayToString;
@@ -0,0 +1,67 @@
1
+ import { APIDeclaration } from './types';
2
+ export interface ConnectionOptions {
3
+ allowedSenderOrigin?: string;
4
+ debugMode: boolean;
5
+ }
6
+ type ListenerCallback = (e: MessageEvent<Message>) => void;
7
+ declare enum MessageType {
8
+ RESPONSE = "response",
9
+ MESSAGE = "message"
10
+ }
11
+ interface BaseMessageData {
12
+ type: MessageType;
13
+ callId: string;
14
+ }
15
+ interface ResponseData extends BaseMessageData {
16
+ type: MessageType.RESPONSE;
17
+ success: boolean;
18
+ result: unknown;
19
+ }
20
+ interface MessageData extends BaseMessageData {
21
+ type: MessageType.MESSAGE;
22
+ methodName: string;
23
+ arguments: unknown[];
24
+ }
25
+ type Message = MessageData | ResponseData;
26
+ export default class Connection<Local extends APIDeclaration<Local>, Remote extends APIDeclaration<Remote>> {
27
+ private readonly name;
28
+ private incrementalID;
29
+ private readonly options;
30
+ private readonly postMessageInternal;
31
+ private callbacks;
32
+ private serviceMethods;
33
+ constructor(name: string, postMessage: typeof window.postMessage, methods: Local, registerOnMessageListener: (listener: ListenerCallback) => void, options?: Partial<ConnectionOptions>);
34
+ /** Call a remote method
35
+ *
36
+ * returns a promise that resolves when the remote responds
37
+ *
38
+ * @param name - name of remote method to call
39
+ * @param args - arguments to pass to remote method
40
+ */
41
+ callRemoteMethod<Method extends keyof Remote>(name: Method, ...args: Parameters<Remote[Method]>): Promise<ReturnType<Remote[Method]>>;
42
+ private onMessageListener;
43
+ private callLocalMethod;
44
+ /** Respond to remote call
45
+ *
46
+ * @param id - remote call ID
47
+ * @param result - result to pass to calling function
48
+ * @param success - whether the call was successful
49
+ */
50
+ private responseOtherSide;
51
+ /** Store a callback to be called when the remote responds
52
+ *
53
+ * @param success - callback to be called on success
54
+ * @param failure - callback to be called on failure
55
+ */
56
+ private registerCallback;
57
+ /** Calls and deletes stored callback
58
+ *
59
+ * @param callId - ID of callback to call
60
+ * @param success - whether the call was successful
61
+ * @param result - result of remote call
62
+ */
63
+ private popCallback;
64
+ private postMessage;
65
+ private log;
66
+ }
67
+ export {};
@@ -0,0 +1,133 @@
1
+ var MessageType;
2
+ (function (MessageType) {
3
+ MessageType["RESPONSE"] = "response";
4
+ MessageType["MESSAGE"] = "message";
5
+ })(MessageType || (MessageType = {}));
6
+ const defaultOptions = {
7
+ allowedSenderOrigin: undefined,
8
+ debugMode: false,
9
+ };
10
+ export default class Connection {
11
+ constructor(name, postMessage, methods, registerOnMessageListener, options = {}) {
12
+ this.callbacks = new Map();
13
+ this.serviceMethods = new Map();
14
+ this.name = name;
15
+ this.options = { ...defaultOptions, ...options };
16
+ this.log('Created connection w/ allowedOrigin:', this.options.allowedSenderOrigin);
17
+ this.serviceMethods = new Map(Object.entries(methods));
18
+ // Assign a random starting ID to this connection
19
+ const [id] = crypto.getRandomValues(new Uint32Array(1));
20
+ this.incrementalID = id;
21
+ this.postMessageInternal = postMessage;
22
+ registerOnMessageListener((e) => this.onMessageListener(e));
23
+ }
24
+ /** Call a remote method
25
+ *
26
+ * returns a promise that resolves when the remote responds
27
+ *
28
+ * @param name - name of remote method to call
29
+ * @param args - arguments to pass to remote method
30
+ */
31
+ callRemoteMethod(name, ...args) {
32
+ this.log('Calling Remote Method', {
33
+ name,
34
+ args,
35
+ });
36
+ return new Promise((resolve, reject) => {
37
+ const id = this.registerCallback(resolve, reject);
38
+ this.postMessage({
39
+ callId: id,
40
+ type: MessageType.MESSAGE,
41
+ methodName: name,
42
+ arguments: args,
43
+ });
44
+ });
45
+ }
46
+ onMessageListener(e) {
47
+ this.log('Received message', e);
48
+ const { data } = e;
49
+ const { allowedSenderOrigin } = this.options;
50
+ if (allowedSenderOrigin && e.origin !== allowedSenderOrigin) {
51
+ console.warn(`Received message from invalid origin: ${e.origin}`);
52
+ }
53
+ switch (data.type) {
54
+ case MessageType.RESPONSE:
55
+ this.popCallback(data.callId, data.success, data.result);
56
+ return;
57
+ case MessageType.MESSAGE:
58
+ this.callLocalMethod(data.methodName, data.arguments)
59
+ .then((res) => this.responseOtherSide(data.callId, res))
60
+ .catch((err) => this.responseOtherSide(data.callId, err, false));
61
+ }
62
+ }
63
+ async callLocalMethod(methodName, args) {
64
+ this.log('calling local method', methodName, args);
65
+ const method = this.serviceMethods.get(methodName);
66
+ if (!method) {
67
+ throw new Error(`service method ${methodName} not found`);
68
+ }
69
+ return method(...args);
70
+ }
71
+ /** Respond to remote call
72
+ *
73
+ * @param id - remote call ID
74
+ * @param result - result to pass to calling function
75
+ * @param success - whether the call was successful
76
+ */
77
+ responseOtherSide(id, result, success = true) {
78
+ this.log('responding to remote call', { id, result, success });
79
+ const doPost = (result) => {
80
+ this.postMessage({
81
+ callId: id,
82
+ type: MessageType.RESPONSE,
83
+ success,
84
+ result,
85
+ });
86
+ };
87
+ try {
88
+ doPost(result);
89
+ }
90
+ catch (err) {
91
+ if (err instanceof DOMException) {
92
+ doPost(JSON.parse(JSON.stringify(result)));
93
+ }
94
+ }
95
+ }
96
+ /** Store a callback to be called when the remote responds
97
+ *
98
+ * @param success - callback to be called on success
99
+ * @param failure - callback to be called on failure
100
+ */
101
+ registerCallback(success, failure) {
102
+ const id = (++this.incrementalID).toString();
103
+ this.log('registering callback for id', id);
104
+ this.callbacks.set(id, { success, failure });
105
+ return id;
106
+ }
107
+ /** Calls and deletes stored callback
108
+ *
109
+ * @param callId - ID of callback to call
110
+ * @param success - whether the call was successful
111
+ * @param result - result of remote call
112
+ */
113
+ popCallback(callId, success, result) {
114
+ this.log('calling callback for id', callId, { success, result });
115
+ const callbacks = this.callbacks.get(callId);
116
+ if (success) {
117
+ callbacks?.success(result);
118
+ }
119
+ else {
120
+ callbacks?.failure(result);
121
+ }
122
+ this.callbacks.delete(callId);
123
+ }
124
+ postMessage(data, targetOrigin = '*') {
125
+ this.log('sending message', { data, targetOrigin });
126
+ this.postMessageInternal(data, targetOrigin);
127
+ }
128
+ log(...args) {
129
+ if (this.options.debugMode) {
130
+ console.debug(`[${this.name}]`, ...args);
131
+ }
132
+ }
133
+ }
@@ -0,0 +1,12 @@
1
+ import { Task } from '../types';
2
+ export interface FrameMethods {
3
+ startTask: (task: Task) => unknown;
4
+ }
5
+ declare class Frame {
6
+ private connection;
7
+ private workerManager;
8
+ constructor();
9
+ private runCode;
10
+ }
11
+ declare const frame: Frame;
12
+ export default frame;
@@ -0,0 +1,22 @@
1
+ // this file is bundled via webpack and included in the iframe source
2
+ import Connection from '../connection';
3
+ import WorkerManager from './worker';
4
+ class Frame {
5
+ constructor() {
6
+ const isDebugMode = !!window?.debugMode;
7
+ this.connection = new Connection('FRAME', window.parent.postMessage.bind(window.parent), {
8
+ startTask: this.runCode.bind(this),
9
+ }, (listener) => {
10
+ window.addEventListener('message', listener);
11
+ }, {
12
+ debugMode: isDebugMode,
13
+ });
14
+ void this.connection.callRemoteMethod('iframeInitialised');
15
+ this.workerManager = new WorkerManager();
16
+ }
17
+ async runCode(task) {
18
+ return this.workerManager.execute(task);
19
+ }
20
+ }
21
+ const frame = new Frame();
22
+ export default frame;
@@ -0,0 +1,2 @@
1
+ declare const source: string;
2
+ export default source;
@@ -0,0 +1,5 @@
1
+ // Auto-generated file
2
+ /* eslint-disable */
3
+ import __WORKER_SOURCE__ from './worker/worker.source';
4
+ const source = `(()=>{"use strict";var e={880:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.RESPONSE="response",e.MESSAGE="message"}(s||(s={}));const r={allowedSenderOrigin:void 0,debugMode:!1};t.default=class{constructor(e,t,s,i,o={}){this.callbacks=new Map,this.serviceMethods=new Map,this.name=e,this.options={...r,...o},this.log("Created connection w/ allowedOrigin:",this.options.allowedSenderOrigin),this.serviceMethods=new Map(Object.entries(s));const[n]=crypto.getRandomValues(new Uint32Array(1));this.incrementalID=n,this.postMessageInternal=t,i((e=>this.onMessageListener(e)))}callRemoteMethod(e,...t){return this.log("Calling Remote Method",{name:e,args:t}),new Promise(((r,i)=>{const o=this.registerCallback(r,i);this.postMessage({callId:o,type:s.MESSAGE,methodName:e,arguments:t})}))}onMessageListener(e){this.log("Received message",e);const{data:t}=e,{allowedSenderOrigin:r}=this.options;switch(r&&e.origin!==r&&console.warn(\`Received message from invalid origin: \${e.origin}\`),t.type){case s.RESPONSE:return void this.popCallback(t.callId,t.success,t.result);case s.MESSAGE:this.callLocalMethod(t.methodName,t.arguments).then((e=>this.responseOtherSide(t.callId,e))).catch((e=>this.responseOtherSide(t.callId,e,!1)))}}async callLocalMethod(e,t){this.log("calling local method",e,t);const s=this.serviceMethods.get(e);if(!s)throw new Error(\`service method \${e} not found\`);return s(...t)}responseOtherSide(e,t,r=!0){this.log("responding to remote call",{id:e,result:t,success:r});const i=t=>{this.postMessage({callId:e,type:s.RESPONSE,success:r,result:t})};try{i(t)}catch(e){e instanceof DOMException&&i(JSON.parse(JSON.stringify(t)))}}registerCallback(e,t){const s=(++this.incrementalID).toString();return this.log("registering callback for id",s),this.callbacks.set(s,{success:e,failure:t}),s}popCallback(e,t,s){this.log("calling callback for id",e,{success:t,result:s});const r=this.callbacks.get(e);t?r?.success(s):r?.failure(s),this.callbacks.delete(e)}postMessage(e,t="*"){this.log("sending message",{data:e,targetOrigin:t}),this.postMessageInternal(e,t)}log(...e){this.options.debugMode&&console.debug(\`[\${this.name}]\`,...e)}}},306:function(e,t,s){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(s(880)),o=r(s(54)),n=new class{constructor(){const e=!!window?.debugMode;this.connection=new i.default("FRAME",window.parent.postMessage.bind(window.parent),{startTask:this.runCode.bind(this)},(e=>{window.addEventListener("message",e)}),{debugMode:e}),this.connection.callRemoteMethod("iframeInitialised"),this.workerManager=new o.default}async runCode(e){return this.workerManager.execute(e)}};t.default=n},54:function(e,t,s){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(s(420));t.default=i.default},420:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.messageListeners=new Map,this.worker=this.createWorker()}async execute(e){const t={...e,contextVariable:e.contextVariable??"ctx"},s=this.runTask(t),r=new Promise(((t,s)=>{const r=AbortSignal.timeout(e.timeout);r.addEventListener("abort",(()=>{s(r.reason)}))}));return Promise.race([s,r]).catch((e=>{throw"TimeoutError"===e.name&&this.terminate(),e})).finally((()=>{this.removeMessageListener(e.id)}))}terminate(){for(const e of this.messageListeners.values())this.worker.removeEventListener("message",e);this.worker.terminate(),this.worker=this.createWorker()}runTask(e){return new Promise(((t,s)=>{const r=r=>{const{data:i}=r;i.id===e.id&&(i.success?t(i.result):s(i.result))};this.messageListeners.set(e.id,r),this.worker.addEventListener("message",r),this.worker.postMessage(e)}))}createWorker(){const e=URL.createObjectURL(new Blob(["${__WORKER_SOURCE__.replace(/(['`"$])/g, '\\$1')}"],{type:"application/javascript"}));return new Worker(e)}removeMessageListener(e){const t=this.messageListeners.get(e);t&&this.worker.removeEventListener("message",t)}}}},t={};!function s(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,s),o.exports}(306)})();`;
5
+ export default source;
@@ -0,0 +1,2 @@
1
+ import source from './frame.source';
2
+ export default source;
@@ -0,0 +1,2 @@
1
+ import source from './frame.source';
2
+ export default source;
@@ -0,0 +1,2 @@
1
+ import Manager from './manager';
2
+ export default Manager;
@@ -0,0 +1,2 @@
1
+ import Manager from './manager';
2
+ export default Manager;
@@ -0,0 +1,11 @@
1
+ import { Task } from '../../types';
2
+ export default class Manager {
3
+ private worker;
4
+ private messageListeners;
5
+ constructor();
6
+ execute(task: Task): Promise<unknown>;
7
+ terminate(): void;
8
+ private runTask;
9
+ private createWorker;
10
+ private removeMessageListener;
11
+ }
@@ -0,0 +1,67 @@
1
+ // this token (__WORKER_SOURCE__) is replaced by webpack with the source of the worker
2
+ const WORKER_SOURCE = '__WORKER_SOURCE__';
3
+ export default class Manager {
4
+ constructor() {
5
+ this.messageListeners = new Map();
6
+ this.worker = this.createWorker();
7
+ }
8
+ async execute(task) {
9
+ const workerTask = {
10
+ ...task,
11
+ contextVariable: task.contextVariable ?? 'ctx',
12
+ };
13
+ const result = this.runTask(workerTask);
14
+ const timeout = new Promise((_, reject) => {
15
+ const signal = AbortSignal.timeout(task.timeout);
16
+ signal.addEventListener('abort', () => {
17
+ reject(signal.reason);
18
+ });
19
+ });
20
+ return Promise.race([result, timeout])
21
+ .catch((e) => {
22
+ if (e.name === 'TimeoutError') {
23
+ this.terminate();
24
+ }
25
+ throw e;
26
+ })
27
+ .finally(() => {
28
+ this.removeMessageListener(task.id);
29
+ });
30
+ }
31
+ terminate() {
32
+ for (const listener of this.messageListeners.values()) {
33
+ this.worker.removeEventListener('message', listener);
34
+ }
35
+ this.worker.terminate();
36
+ this.worker = this.createWorker();
37
+ }
38
+ runTask(task) {
39
+ return new Promise((resolve, reject) => {
40
+ const listener = (event) => {
41
+ const { data } = event;
42
+ if (data.id === task.id) {
43
+ if (data.success) {
44
+ resolve(data.result);
45
+ }
46
+ else {
47
+ reject(data.result);
48
+ }
49
+ }
50
+ };
51
+ this.messageListeners.set(task.id, listener);
52
+ this.worker.addEventListener('message', listener);
53
+ this.worker.postMessage(task);
54
+ });
55
+ }
56
+ createWorker() {
57
+ const blob = URL.createObjectURL(new Blob([WORKER_SOURCE], { type: 'application/javascript' }));
58
+ return new Worker(blob);
59
+ }
60
+ removeMessageListener(id) {
61
+ const listener = this.messageListeners.get(id);
62
+ if (!listener) {
63
+ return;
64
+ }
65
+ this.worker.removeEventListener('message', listener);
66
+ }
67
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+ export {};