@dronedeploy/rocos-js-sdk 1.0.0-alpha-2 → 2.6.1
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.
- package/IRocosSDK.js +5 -1
- package/README.md +0 -18
- package/RocosSDK.js +95 -93
- package/api/StreamRegister.d.ts +1 -1
- package/api/StreamRegister.js +12 -23
- package/api/atoms/StreamHeartbeat.js +7 -3
- package/api/streams/caller/CallerStream.d.ts +6 -6
- package/api/streams/caller/CallerStream.js +49 -41
- package/api/streams/caller/CallerStreamAbstract.d.ts +11 -6
- package/api/streams/caller/CallerStreamAbstract.js +67 -55
- package/api/streams/caller/CallerStreamNode.d.ts +6 -6
- package/api/streams/caller/CallerStreamNode.js +61 -48
- package/api/streams/command/CommandStream.d.ts +4 -2
- package/api/streams/command/CommandStream.js +30 -28
- package/api/streams/command/CommandStreamAbstract.d.ts +8 -4
- package/api/streams/command/CommandStreamAbstract.js +42 -33
- package/api/streams/command/CommandStreamNode.d.ts +4 -2
- package/api/streams/command/CommandStreamNode.js +40 -16
- package/api/streams/control/ControlStream.d.ts +6 -4
- package/api/streams/control/ControlStream.js +36 -30
- package/api/streams/control/ControlStreamAbstract.d.ts +9 -6
- package/api/streams/control/ControlStreamAbstract.js +54 -57
- package/api/streams/control/ControlStreamNode.d.ts +5 -3
- package/api/streams/control/ControlStreamNode.js +44 -19
- package/api/streams/fileAccessor/FileAccessorStream.d.ts +4 -2
- package/api/streams/fileAccessor/FileAccessorStream.js +57 -42
- package/api/streams/fileAccessor/FileAccessorStreamAbstract.d.ts +9 -4
- package/api/streams/fileAccessor/FileAccessorStreamAbstract.js +48 -28
- package/api/streams/fileAccessor/FileAccessorStreamNode.d.ts +3 -1
- package/api/streams/fileAccessor/FileAccessorStreamNode.js +53 -23
- package/api/streams/search/SearchStream.d.ts +5 -2
- package/api/streams/search/SearchStream.js +74 -50
- package/api/streams/search/SearchStreamAbstract.d.ts +9 -4
- package/api/streams/search/SearchStreamAbstract.js +35 -33
- package/api/streams/search/SearchStreamNode.d.ts +5 -2
- package/api/streams/search/SearchStreamNode.js +48 -23
- package/api/streams/telemetry/TelemetryStream.d.ts +4 -4
- package/api/streams/telemetry/TelemetryStream.js +78 -49
- package/api/streams/telemetry/TelemetryStreamAbstract.d.ts +11 -8
- package/api/streams/telemetry/TelemetryStreamAbstract.js +145 -126
- package/api/streams/telemetry/TelemetryStreamNode.d.ts +5 -5
- package/api/streams/telemetry/TelemetryStreamNode.js +64 -44
- package/api/streams/webRTCSignalling/WebRTCSignallingStream.d.ts +10 -5
- package/api/streams/webRTCSignalling/WebRTCSignallingStream.js +20 -37
- package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.d.ts +13 -10
- package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.js +37 -37
- package/constants/api.d.ts +1 -6
- package/constants/api.js +126 -126
- package/constants/grpc.js +8 -5
- package/constants/identifier.js +9 -6
- package/constants/timezones.d.ts +1 -1
- package/constants/timezones.js +4 -1
- package/demo/angular/.editorconfig +16 -0
- package/demo/angular/.eslintignore +4 -0
- package/demo/angular/.eslintrc.json +50 -0
- package/demo/angular/README.md +36 -0
- package/demo/angular/angular.json +132 -0
- package/demo/angular/karma.conf.js +44 -0
- package/demo/angular/package.json +41 -0
- package/demo/angular/src/app/app.component.css +0 -0
- package/demo/angular/src/app/app.component.html +9 -0
- package/demo/angular/src/app/app.component.ts +10 -0
- package/demo/angular/src/app/app.module.ts +38 -0
- package/demo/angular/src/app/components/assets/assets.component.css +0 -0
- package/demo/angular/src/app/components/assets/assets.component.html +29 -0
- package/demo/angular/src/app/components/assets/assets.component.ts +107 -0
- package/demo/angular/src/app/components/auth/auth.component.css +0 -0
- package/demo/angular/src/app/components/auth/auth.component.html +27 -0
- package/demo/angular/src/app/components/auth/auth.component.ts +33 -0
- package/demo/angular/src/app/components/caller/caller.component.css +0 -0
- package/demo/angular/src/app/components/caller/caller.component.html +22 -0
- package/demo/angular/src/app/components/caller/caller.component.ts +61 -0
- package/demo/angular/src/app/components/command/command.component.css +0 -0
- package/demo/angular/src/app/components/command/command.component.html +22 -0
- package/demo/angular/src/app/components/command/command.component.ts +60 -0
- package/demo/angular/src/app/components/integrations/integrations.component.ts +43 -0
- package/demo/angular/src/app/components/robots/robots.component.css +0 -0
- package/demo/angular/src/app/components/robots/robots.component.html +13 -0
- package/demo/angular/src/app/components/robots/robots.component.ts +26 -0
- package/demo/angular/src/app/components/sdk/sdk.component.css +0 -0
- package/demo/angular/src/app/components/sdk/sdk.component.html +43 -0
- package/demo/angular/src/app/components/sdk/sdk.component.ts +50 -0
- package/demo/angular/src/app/components/subscription/subscription.component.css +0 -0
- package/demo/angular/src/app/components/subscription/subscription.component.html +6 -0
- package/demo/angular/src/app/components/subscription/subscription.component.ts +40 -0
- package/demo/angular/src/app/components/telemetry/telemetry.component.css +0 -0
- package/demo/angular/src/app/components/telemetry/telemetry.component.html +19 -0
- package/demo/angular/src/app/components/telemetry/telemetry.component.ts +61 -0
- package/demo/angular/src/app/components/token/token.component.css +0 -0
- package/demo/angular/src/app/components/token/token.component.html +10 -0
- package/demo/angular/src/app/components/token/token.component.ts +18 -0
- package/demo/angular/src/app/components/video/p2pvideo/index.ts +646 -0
- package/demo/angular/src/app/components/video/video-source.ts +315 -0
- package/demo/angular/src/app/components/video/video.component.css +6 -0
- package/demo/angular/src/app/components/video/video.component.html +54 -0
- package/demo/angular/src/app/components/video/video.component.ts +151 -0
- package/demo/angular/src/app/services/sdk.service.ts +193 -0
- package/demo/angular/src/assets/.gitkeep +0 -0
- package/demo/angular/src/assets/HKGrotesk-Bold.otf +0 -0
- package/demo/angular/src/assets/HKGrotesk-Regular.otf +0 -0
- package/demo/angular/src/assets/logo.svg +16 -0
- package/demo/angular/src/environments/environment.prod.ts +3 -0
- package/demo/angular/src/environments/environment.ts +16 -0
- package/demo/angular/src/favicon.ico +0 -0
- package/demo/angular/src/index.html +15 -0
- package/demo/angular/src/main.ts +7 -0
- package/demo/angular/src/polyfills.ts +53 -0
- package/demo/angular/src/styles.css +198 -0
- package/demo/angular/tsconfig.app.json +15 -0
- package/demo/angular/tsconfig.json +39 -0
- package/demo/html/README.md +8 -0
- package/demo/html/assets/HKGrotesk-Bold.otf +0 -0
- package/demo/html/assets/HKGrotesk-Regular.otf +0 -0
- package/demo/html/assets/logo.svg +16 -0
- package/demo/html/favicon.ico +0 -0
- package/demo/html/index.html +416 -0
- package/demo/html/rocos-js-sdk.js +3 -0
- package/demo/html/rocos-js-sdk.js.LICENSE.txt +8 -0
- package/demo/html/rocos-js-sdk.js.map +1 -0
- package/demo/html/styles.css +190 -0
- package/demo/node/README.md +17 -0
- package/demo/node/index.js +134 -0
- package/demo/node/package.json +8 -0
- package/demo/react/.env +1 -0
- package/demo/react/.env.dist +1 -0
- package/demo/react/.eslintrc.json +46 -0
- package/demo/react/README.md +65 -0
- package/demo/react/package.json +60 -0
- package/demo/react/public/favicon.ico +0 -0
- package/demo/react/public/index.html +43 -0
- package/demo/react/public/logo192.png +0 -0
- package/demo/react/public/logo512.png +0 -0
- package/demo/react/public/manifest.json +25 -0
- package/demo/react/public/robots.txt +3 -0
- package/demo/react/src/App.css +190 -0
- package/demo/react/src/App.tsx +31 -0
- package/demo/react/src/actions/index.ts +8 -0
- package/demo/react/src/actions/sdkActions.ts +62 -0
- package/demo/react/src/assets/HKGrotesk-Bold.otf +0 -0
- package/demo/react/src/assets/HKGrotesk-Regular.otf +0 -0
- package/demo/react/src/assets/logo.svg +16 -0
- package/demo/react/src/components/AuthForm.tsx +76 -0
- package/demo/react/src/components/CallerBox.tsx +53 -0
- package/demo/react/src/components/CallerForm.tsx +98 -0
- package/demo/react/src/components/CommandBox.tsx +47 -0
- package/demo/react/src/components/CommandForm.tsx +98 -0
- package/demo/react/src/components/RobotsForm.tsx +51 -0
- package/demo/react/src/components/SubscriptionBox.tsx +55 -0
- package/demo/react/src/components/TelemetryForm.tsx +98 -0
- package/demo/react/src/components/TokenForm.tsx +39 -0
- package/demo/react/src/config.json +14 -0
- package/demo/react/src/controllers/RocosSDKController.ts +48 -0
- package/demo/react/src/helpers/deepEqual.ts +27 -0
- package/demo/react/src/hooks/useInput.ts +29 -0
- package/demo/react/src/index.css +11 -0
- package/demo/react/src/index.tsx +26 -0
- package/demo/react/src/react-app-env.d.ts +1 -0
- package/demo/react/src/reducers/sdkReducer.ts +133 -0
- package/demo/react/src/reportWebVitals.ts +15 -0
- package/demo/react/src/selectors/sdkSelector.ts +11 -0
- package/demo/react/src/setupTests.ts +5 -0
- package/demo/react/src/store.ts +14 -0
- package/demo/react/tsconfig.json +26 -0
- package/demo/sdk-sizer/dist/sdk-sizer/3rdpartylicenses.txt +975 -0
- package/demo/sdk-sizer/dist/sdk-sizer/favicon.ico +0 -0
- package/demo/sdk-sizer/dist/sdk-sizer/index.html +12 -0
- package/demo/sdk-sizer/dist/sdk-sizer/main.c9183649ce1856ef.js +2 -0
- package/demo/sdk-sizer/dist/sdk-sizer/main.c9183649ce1856ef.js.map +1 -0
- package/demo/sdk-sizer/dist/sdk-sizer/polyfills.701c8e5d007909aa.js +2 -0
- package/demo/sdk-sizer/dist/sdk-sizer/polyfills.701c8e5d007909aa.js.map +1 -0
- package/demo/sdk-sizer/dist/sdk-sizer/runtime.00e20e689f5284a8.js +2 -0
- package/demo/sdk-sizer/dist/sdk-sizer/runtime.00e20e689f5284a8.js.map +1 -0
- package/demo/sdk-sizer/dist/sdk-sizer/stats.json +1 -0
- package/demo/sdk-sizer/dist/sdk-sizer/styles.b45f7e627ac8cbce.css +2 -0
- package/demo/sdk-sizer/dist/sdk-sizer/styles.b45f7e627ac8cbce.css.map +1 -0
- package/grpc/file-accessor/filagree_grpc_pb.d.ts +41 -0
- package/grpc/file-accessor/filagree_grpc_pb.js +121 -0
- package/grpc/file-accessor/filagree_pb.d.ts +339 -0
- package/grpc/file-accessor/filagree_pb.js +2261 -0
- package/grpc/file-accessor/filagree_pb_service.d.ts +115 -0
- package/grpc/file-accessor/filagree_pb_service.js +257 -0
- package/grpc/rambo/rambo.v1_grpc_pb.d.ts +39 -0
- package/grpc/rambo/rambo.v1_grpc_pb.js +73 -0
- package/grpc/rambo/rambo.v1_pb.d.ts +365 -0
- package/grpc/rambo/rambo.v1_pb.js +2469 -0
- package/grpc/rambo/rambo.v1_pb_service.d.ts +76 -0
- package/grpc/rambo/rambo.v1_pb_service.js +138 -0
- package/grpc/rambo/uri.v1_grpc_pb.d.ts +1 -0
- package/grpc/rambo/uri.v1_grpc_pb.js +1 -0
- package/grpc/rambo/uri.v1_pb.d.ts +80 -0
- package/grpc/rambo/uri.v1_pb.js +563 -0
- package/grpc/rambo/uri.v1_pb_service.d.ts +3 -0
- package/grpc/rambo/uri.v1_pb_service.js +3 -0
- package/grpc/robot-control/conker_grpc_pb.d.ts +46 -0
- package/grpc/robot-control/conker_grpc_pb.js +143 -0
- package/grpc/robot-control/conker_pb.d.ts +168 -0
- package/grpc/robot-control/conker_pb.js +1287 -0
- package/grpc/robot-control/conker_pb_service.d.ts +126 -0
- package/grpc/robot-control/conker_pb_service.js +301 -0
- package/grpc/serviette/common.v1_grpc_pb.d.ts +1 -0
- package/grpc/serviette/common.v1_grpc_pb.js +1 -0
- package/grpc/serviette/common.v1_pb.d.ts +8 -0
- package/grpc/serviette/common.v1_pb.js +45 -0
- package/grpc/serviette/common.v1_pb_service.d.ts +3 -0
- package/grpc/serviette/common.v1_pb_service.js +3 -0
- package/grpc/serviette/serviette.v1_grpc_pb.d.ts +137 -0
- package/grpc/serviette/serviette.v1_grpc_pb.js +331 -0
- package/grpc/serviette/serviette.v1_pb.d.ts +884 -0
- package/grpc/serviette/serviette.v1_pb.js +6363 -0
- package/grpc/serviette/serviette.v1_pb_service.d.ts +278 -0
- package/grpc/serviette/serviette.v1_pb_service.js +699 -0
- package/grpc/serviette/uri.v1_grpc_pb.d.ts +1 -0
- package/grpc/serviette/uri.v1_grpc_pb.js +1 -0
- package/grpc/serviette/uri.v1_pb.d.ts +102 -0
- package/grpc/serviette/uri.v1_pb.js +741 -0
- package/grpc/serviette/uri.v1_pb_service.d.ts +3 -0
- package/grpc/serviette/uri.v1_pb_service.js +3 -0
- package/grpc/slowlane/slowlane_grpc_pb.d.ts +38 -0
- package/grpc/slowlane/slowlane_grpc_pb.js +132 -0
- package/grpc/slowlane/slowlane_pb.d.ts +373 -0
- package/grpc/slowlane/slowlane_pb.js +2908 -0
- package/grpc/slowlane/slowlane_pb_service.d.ts +112 -0
- package/grpc/slowlane/slowlane_pb_service.js +189 -0
- package/grpc/teletubby/teletubby_grpc_pb.d.ts +73 -0
- package/grpc/teletubby/teletubby_grpc_pb.js +231 -0
- package/grpc/teletubby/teletubby_pb.d.ts +647 -0
- package/grpc/teletubby/teletubby_pb.js +4786 -0
- package/grpc/teletubby/teletubby_pb_service.d.ts +193 -0
- package/grpc/teletubby/teletubby_pb_service.js +436 -0
- package/grpc/video/pigeon_grpc_pb.d.ts +59 -0
- package/grpc/video/pigeon_grpc_pb.js +180 -0
- package/grpc/video/pigeon_pb.d.ts +237 -0
- package/grpc/video/pigeon_pb.js +1775 -0
- package/grpc/video/pigeon_pb_service.d.ts +152 -0
- package/grpc/video/pigeon_pb_service.js +292 -0
- package/helpers/arrayRemove.js +6 -2
- package/helpers/arrayUnique.js +6 -2
- package/helpers/average.js +7 -2
- package/helpers/cleanObject.js +19 -17
- package/helpers/enviroment.js +11 -4
- package/helpers/flattenCallsignsLookup.d.ts +1 -1
- package/helpers/flattenCallsignsLookup.js +5 -1
- package/helpers/flattenObject.js +5 -1
- package/helpers/formatServiceUrl.js +5 -1
- package/helpers/generateUUID.js +7 -3
- package/helpers/getSubscriptionsDifference.d.ts +3 -3
- package/helpers/getSubscriptionsDifference.js +10 -6
- package/helpers/getUniqueConfigKey.js +6 -1
- package/helpers/getUniqueId.js +7 -3
- package/helpers/getUnixTimeMs.js +5 -1
- package/helpers/index.d.ts +1 -1
- package/helpers/index.js +15 -3
- package/helpers/nanosecondToMillisecond.d.ts +1 -1
- package/helpers/nanosecondToMillisecond.js +6 -5
- package/helpers/randomString.js +5 -1
- package/helpers/standardDeviation.js +8 -4
- package/helpers/stringToUint8Array.js +7 -3
- package/helpers/uint8ArrayToString.js +8 -3
- package/index.js +19 -7
- package/logger/RocosLogger.js +44 -18
- package/models/ExportDataQuery.js +5 -1
- package/models/ExternalProject.js +5 -1
- package/models/IBaseService.d.ts +0 -1
- package/models/IBaseService.js +2 -1
- package/models/IConfigGroup.js +2 -1
- package/models/IDebugLevel.d.ts +1 -1
- package/models/IDebugLevel.js +2 -1
- package/models/IExportDataQuery.js +2 -1
- package/models/IFunctionConfig.js +2 -1
- package/models/IInvitation.d.ts +1 -1
- package/models/IInvitation.js +2 -1
- package/models/IInvitationExists.js +2 -1
- package/models/IOperation.js +2 -1
- package/models/IPersonalAccessToken.js +2 -1
- package/models/IProject.js +2 -1
- package/models/IProjectApplication.js +2 -1
- package/models/IRobot.d.ts +0 -1
- package/models/IRobot.js +2 -1
- package/models/IRobotConfig.js +2 -1
- package/models/IRobotPlugin.js +2 -1
- package/models/IRobotTemplate.js +2 -1
- package/models/IRocosSDKConfig.d.ts +9 -3
- package/models/IRocosSDKConfig.js +2 -1
- package/models/ISignupParams.d.ts +8 -0
- package/models/ISignupParams.js +2 -0
- package/models/ISource.js +2 -1
- package/models/IStream.js +2 -1
- package/models/IStreamConfig.js +2 -1
- package/models/IStreamOptions.js +2 -1
- package/models/IStreamSource.js +2 -1
- package/models/ISubscriberStatus.js +2 -1
- package/models/ITelemetryStreamConfig.js +2 -1
- package/models/IToken.d.ts +3 -7
- package/models/IToken.js +2 -1
- package/models/IWidget.js +2 -1
- package/models/IWidgetLineGroup.js +2 -1
- package/models/ResponseLevelEnum.d.ts +0 -4
- package/models/ResponseLevelEnum.js +5 -6
- package/models/Robot.d.ts +0 -1
- package/models/Robot.js +5 -1
- package/models/RobotConfig.js +5 -1
- package/models/RobotPlugin.js +5 -1
- package/models/RobotTemplate.js +14 -9
- package/models/RocosError.js +6 -2
- package/models/ServiceEnum.js +5 -2
- package/models/Stream.js +8 -4
- package/models/StreamOptions.js +5 -1
- package/models/StreamSource.js +7 -3
- package/models/SubscriberStatusEnum.js +5 -2
- package/models/Token.d.ts +4 -36
- package/models/Token.js +11 -74
- package/models/Widget.js +8 -4
- package/models/WidgetLineGroup.js +5 -1
- package/models/asset-storage/AssetModelItem.js +2 -1
- package/models/caller/IRocosCallerMessageChunk.d.ts +2 -3
- package/models/caller/IRocosCallerMessageChunk.js +2 -1
- package/models/caller/IRocosCallerMessageChunks.d.ts +3 -2
- package/models/caller/IRocosCallerMessageChunks.js +2 -1
- package/models/caller/IRocosCallerMessageHeartbeat.d.ts +2 -3
- package/models/caller/IRocosCallerMessageHeartbeat.js +2 -1
- package/models/caller/IRocosCallerMessageResponse.d.ts +2 -3
- package/models/caller/IRocosCallerMessageResponse.js +2 -1
- package/models/caller/IRocosCallerMessageResponseAck.d.ts +2 -16
- package/models/caller/IRocosCallerMessageResponseAck.js +2 -13
- package/models/caller/IRocosCallerMessageResponseResult.d.ts +2 -15
- package/models/caller/IRocosCallerMessageResponseResult.js +2 -12
- package/models/caller/IRocosCallerMessageResponseUid.d.ts +2 -10
- package/models/caller/IRocosCallerMessageResponseUid.js +2 -7
- package/models/caller/IRocosCallerMessageResponses.d.ts +3 -2
- package/models/caller/IRocosCallerMessageResponses.js +2 -1
- package/models/caller/RocosCallerResultStatus.d.ts +1 -11
- package/models/caller/RocosCallerResultStatus.js +5 -12
- package/models/callsigns/CallsignsEnums.d.ts +3 -3
- package/models/callsigns/CallsignsEnums.js +14 -11
- package/models/callsigns/CallsignsLookup.js +15 -10
- package/models/callsigns/CallsignsQuery.js +5 -1
- package/models/callsigns/CallsignsQueryPredicate.js +5 -1
- package/models/command/IRocosCommandMessageHeartbeat.d.ts +2 -1
- package/models/command/IRocosCommandMessageHeartbeat.js +2 -1
- package/models/command/IRocosCommandMessageResponse.d.ts +2 -55
- package/models/command/IRocosCommandMessageResponse.js +2 -29
- package/models/command/RocosCommandResultStatus.d.ts +1 -11
- package/models/command/RocosCommandResultStatus.js +5 -12
- package/models/file/FileEnums.d.ts +4 -4
- package/models/file/FileEnums.js +12 -9
- package/models/index.d.ts +31 -5
- package/models/index.js +113 -75
- package/models/integrations/Overlay.js +2 -1
- package/models/integrations/Plan.js +2 -1
- package/models/maps/Map.d.ts +0 -1
- package/models/maps/Map.js +2 -1
- package/models/message/IRocosCallerMessage.js +2 -1
- package/models/message/IRocosChangeMessage.js +2 -1
- package/models/message/IRocosCommandMessage.js +2 -1
- package/models/message/IRocosControlMessage.js +2 -1
- package/models/message/IRocosOpResultMessage.d.ts +2 -2
- package/models/message/IRocosOpResultMessage.js +2 -1
- package/models/message/IRocosSearchMessage.js +2 -1
- package/models/message/IRocosSearchRowMessage.js +2 -1
- package/models/message/IRocosSearchStatusMessage.js +2 -1
- package/models/message/IRocosTelemetryMessage.d.ts +7 -12
- package/models/message/IRocosTelemetryMessage.js +2 -1
- package/models/message/IStreamStatusMessage.js +2 -1
- package/models/message/RocosCallerMessage.d.ts +4 -2
- package/models/message/RocosCallerMessage.js +15 -24
- package/models/message/RocosCommandMessage.d.ts +3 -2
- package/models/message/RocosCommandMessage.js +8 -5
- package/models/message/RocosControlMessage.d.ts +1 -1
- package/models/message/RocosControlMessage.js +10 -6
- package/models/message/RocosOpResultMessage.d.ts +2 -3
- package/models/message/RocosOpResultMessage.js +10 -6
- package/models/message/RocosSearchMessage.d.ts +1 -1
- package/models/message/RocosSearchMessage.js +9 -5
- package/models/message/RocosSearchRowMessage.d.ts +1 -1
- package/models/message/RocosSearchRowMessage.js +12 -8
- package/models/message/RocosTelemetryMessage.d.ts +23 -9
- package/models/message/RocosTelemetryMessage.js +93 -51
- package/models/params/ICallerParams.d.ts +1 -2
- package/models/params/ICallerParams.js +2 -1
- package/models/params/ICommandParams.js +2 -1
- package/models/params/IControlParams.d.ts +1 -1
- package/models/params/IControlParams.js +2 -1
- package/models/params/IFileAccessorParams.js +2 -1
- package/models/params/ISearchParams.js +2 -1
- package/models/params/ITelemetryParams.d.ts +1 -1
- package/models/params/ITelemetryParams.js +2 -1
- package/models/params/IWebRTCSignallingParams.js +2 -1
- package/models/projects/ProjectUser.js +2 -1
- package/models/schedule/IScheduleAction.d.ts +1 -1
- package/models/schedule/IScheduleAction.js +5 -2
- package/models/schedule/IScheduleInfo.js +2 -1
- package/models/schedule/IScheduleJob.js +2 -1
- package/models/search/SearchQueryFilter.js +5 -1
- package/models/search/SearchStreamQuery.js +5 -1
- package/models/stream/IBaseStream.js +2 -1
- package/models/stream/ICallerStream.js +2 -1
- package/models/stream/ICommandStream.js +2 -1
- package/models/stream/IControlStream.js +2 -1
- package/models/stream/IFileAccessorStream.d.ts +2 -1
- package/models/stream/IFileAccessorStream.js +2 -1
- package/models/stream/ISearchStream.js +2 -1
- package/models/stream/ITelemetryStream.js +2 -1
- package/models/stream/IWebRTCSignallingStream.d.ts +16 -51
- package/models/stream/IWebRTCSignallingStream.js +7 -1
- package/models/types.d.ts +5 -5
- package/models/types.js +2 -1
- package/node/RocosSDKNode.js +80 -75
- package/node/index.js +19 -7
- package/package.json +9 -6
- package/services/AssetStorageService.d.ts +0 -7
- package/services/AssetStorageService.js +24 -29
- package/services/AuthService.d.ts +27 -59
- package/services/AuthService.js +86 -167
- package/services/BaseServiceAbstract.d.ts +13 -11
- package/services/BaseServiceAbstract.js +19 -17
- package/services/CallerService.d.ts +17 -5
- package/services/CallerService.js +65 -22
- package/services/CallerServiceNode.js +8 -4
- package/services/CommandService.d.ts +17 -5
- package/services/CommandService.js +62 -19
- package/services/CommandServiceNode.js +8 -4
- package/services/ConfigGroupService.js +21 -17
- package/services/ControlService.d.ts +17 -5
- package/services/ControlService.js +65 -22
- package/services/ControlServiceNode.js +8 -4
- package/services/DashboardService.js +24 -20
- package/services/EventService.js +17 -13
- package/services/FileAccessorService.d.ts +18 -4
- package/services/FileAccessorService.js +62 -14
- package/services/FileAccessorServiceNode.js +8 -4
- package/services/FunctionService.js +21 -17
- package/services/IntegrationService.js +19 -14
- package/services/MapService.d.ts +23 -36
- package/services/MapService.js +40 -70
- package/services/PlatformTimeService.js +12 -8
- package/services/ProfileService.js +40 -36
- package/services/ProjectService.js +27 -23
- package/services/RobotService.d.ts +6 -2
- package/services/RobotService.js +55 -48
- package/services/ScheduleService.js +14 -10
- package/services/SearchService.d.ts +17 -4
- package/services/SearchService.js +59 -24
- package/services/SearchServiceNode.js +8 -4
- package/services/SpotProvisioningService.d.ts +1 -1
- package/services/SpotProvisioningService.js +16 -16
- package/services/SpotProvisioningServiceNode.d.ts +1 -1
- package/services/SpotProvisioningServiceNode.js +16 -16
- package/services/StreamService.js +30 -26
- package/services/TelemetryService.d.ts +17 -14
- package/services/TelemetryService.js +93 -91
- package/services/TelemetryServiceNode.js +8 -4
- package/services/TimeSyncerService.js +13 -9
- package/services/UserService.js +41 -37
- package/services/WebRTCSignallingService.d.ts +4 -4
- package/services/WebRTCSignallingService.js +27 -24
- package/services/WorkflowService.js +20 -16
- package/services/index.js +38 -26
- package/store/RocosStore.js +15 -9
- package/utils/axisangle.d.ts +18 -0
- package/utils/axisangle.js +48 -0
- package/utils/eulerangles.d.ts +22 -0
- package/utils/eulerangles.js +133 -0
- package/utils/helperfunctions.d.ts +5 -0
- package/utils/helperfunctions.js +50 -0
- package/utils/localtransform.d.ts +17 -0
- package/utils/localtransform.js +50 -0
- package/utils/localtransformtree.d.ts +17 -0
- package/utils/localtransformtree.js +88 -0
- package/utils/misc.d.ts +17 -0
- package/utils/misc.js +23 -0
- package/utils/positionvector.d.ts +13 -0
- package/utils/positionvector.js +79 -0
- package/utils/quaternion.d.ts +20 -0
- package/utils/quaternion.js +62 -0
- package/utils/rotationmatrix.d.ts +23 -0
- package/utils/rotationmatrix.js +262 -0
- package/utils/transformationmatrix.d.ts +12 -0
- package/utils/transformationmatrix.js +123 -0
- package/utils/vector3.d.ts +11 -0
- package/utils/vector3.js +61 -0
- package/constants/auth.d.ts +0 -2
- package/constants/auth.js +0 -2
- package/grpc/conker_pb.client.d.ts +0 -78
- package/grpc/conker_pb.client.js +0 -55
- package/grpc/conker_pb.d.ts +0 -141
- package/grpc/conker_pb.grpc-client.d.ts +0 -81
- package/grpc/conker_pb.grpc-client.js +0 -58
- package/grpc/conker_pb.js +0 -104
- package/grpc/filagree_pb.client.d.ts +0 -68
- package/grpc/filagree_pb.client.js +0 -48
- package/grpc/filagree_pb.d.ts +0 -404
- package/grpc/filagree_pb.grpc-client.d.ts +0 -69
- package/grpc/filagree_pb.grpc-client.js +0 -51
- package/grpc/filagree_pb.js +0 -329
- package/grpc/google/protobuf/descriptor_pb.d.ts +0 -1798
- package/grpc/google/protobuf/descriptor_pb.js +0 -2378
- package/grpc/google/protobuf/empty_pb.d.ts +0 -23
- package/grpc/google/protobuf/empty_pb.js +0 -47
- package/grpc/pigeon_pb.client.d.ts +0 -96
- package/grpc/pigeon_pb.client.js +0 -72
- package/grpc/pigeon_pb.d.ts +0 -207
- package/grpc/pigeon_pb.grpc-client.d.ts +0 -98
- package/grpc/pigeon_pb.grpc-client.js +0 -68
- package/grpc/pigeon_pb.js +0 -144
- package/grpc/rambo.uri.v1_pb.d.ts +0 -73
- package/grpc/rambo.uri.v1_pb.js +0 -48
- package/grpc/rambo.v1_pb.client.d.ts +0 -66
- package/grpc/rambo.v1_pb.client.js +0 -48
- package/grpc/rambo.v1_pb.d.ts +0 -392
- package/grpc/rambo.v1_pb.grpc-client.d.ts +0 -56
- package/grpc/rambo.v1_pb.grpc-client.js +0 -44
- package/grpc/rambo.v1_pb.js +0 -272
- package/grpc/serviette.uri.v1_pb.d.ts +0 -89
- package/grpc/serviette.uri.v1_pb.js +0 -62
- package/grpc/serviette.v1_pb.client.d.ts +0 -225
- package/grpc/serviette.v1_pb.client.js +0 -174
- package/grpc/serviette.v1_pb.d.ts +0 -827
- package/grpc/serviette.v1_pb.grpc-client.d.ts +0 -215
- package/grpc/serviette.v1_pb.grpc-client.js +0 -162
- package/grpc/serviette.v1_pb.js +0 -553
- package/grpc/slowlane_pb.client.d.ts +0 -61
- package/grpc/slowlane_pb.client.js +0 -41
- package/grpc/slowlane_pb.d.ts +0 -303
- package/grpc/slowlane_pb.grpc-client.d.ts +0 -64
- package/grpc/slowlane_pb.grpc-client.js +0 -44
- package/grpc/slowlane_pb.js +0 -185
- package/grpc/teletubby_pb.client.d.ts +0 -145
- package/grpc/teletubby_pb.client.js +0 -104
- package/grpc/teletubby_pb.d.ts +0 -634
- package/grpc/teletubby_pb.grpc-client.d.ts +0 -152
- package/grpc/teletubby_pb.grpc-client.js +0 -100
- package/grpc/teletubby_pb.js +0 -1264
- package/helpers/cleanObject.spec.d.ts +0 -1
- package/helpers/cleanObject.spec.js +0 -53
- package/helpers/flattenObject.spec.d.ts +0 -1
- package/helpers/flattenObject.spec.js +0 -29
- package/helpers/flattenOneOf.d.ts +0 -67
- package/helpers/flattenOneOf.js +0 -29
- package/helpers/flattenOneOf.spec.d.ts +0 -1
- package/helpers/flattenOneOf.spec.js +0 -157
- package/helpers/formatServiceUrl.spec.d.ts +0 -1
- package/helpers/formatServiceUrl.spec.js +0 -16
- package/helpers/standardDeviation.spec.d.ts +0 -1
- package/helpers/standardDeviation.spec.js +0 -11
- package/models/CallsignStatus.d.ts +0 -6
- package/models/CallsignStatus.js +0 -7
- package/models/IRobotSettings.d.ts +0 -28
- package/models/IRobotSettings.js +0 -1
- package/models/Token.spec.d.ts +0 -1
- package/models/Token.spec.js +0 -108
- package/models/caller/IRocosCallerMessageResponseReturn.d.ts +0 -8
- package/models/caller/IRocosCallerMessageResponseReturn.js +0 -1
- package/models/caller/RocosResponseLevel.d.ts +0 -6
- package/models/caller/RocosResponseLevel.js +0 -7
- package/models/caller/index.d.ts +0 -10
- package/models/caller/index.js +0 -10
- package/models/command/index.d.ts +0 -4
- package/models/command/index.js +0 -4
- package/models/message/index.d.ts +0 -17
- package/models/message/index.js +0 -17
- package/services/AuthService.spec.d.ts +0 -1
- package/services/AuthService.spec.js +0 -163
- package/services/BaseStreamService.d.ts +0 -18
- package/services/BaseStreamService.js +0 -47
- package/services/PlatformTimeService.spec.d.ts +0 -1
- package/services/PlatformTimeService.spec.js +0 -180
- package/services/TelemetryService.spec.d.ts +0 -1
- package/services/TelemetryService.spec.js +0 -37
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { BehaviorSubject, Subject } from 'rxjs';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { ITelemetryParams } from '../../../models/params/ITelemetryParams';
|
|
3
|
+
import { TelemetryAckStatusMap, TelemetryQueryRequest, TelemetryRequest } from '../../../grpc/teletubby/teletubby_pb';
|
|
4
|
+
import { IRocosTelemetryMessage } from '../../../models/message/IRocosTelemetryMessage';
|
|
5
|
+
import { ITelemetryStream } from '../../../models/stream/ITelemetryStream';
|
|
6
|
+
import { ITelemetryStreamConfig } from '../../../models/ITelemetryStreamConfig';
|
|
4
7
|
import { Logger } from 'loglevel';
|
|
5
8
|
import { StreamHeartbeat } from '../../atoms/StreamHeartbeat';
|
|
9
|
+
import { SubscriberStatusEnum } from '../../../models/SubscriberStatusEnum';
|
|
6
10
|
export declare abstract class TelemetryStreamAbstract implements ITelemetryStream {
|
|
7
11
|
messageStream$: Subject<IRocosTelemetryMessage>;
|
|
8
12
|
identifier: string;
|
|
@@ -18,7 +22,7 @@ export declare abstract class TelemetryStreamAbstract implements ITelemetryStrea
|
|
|
18
22
|
protected subscriberStatus: SubscriberStatusEnum;
|
|
19
23
|
private checkerStartedAt?;
|
|
20
24
|
private lastRobotMessageReceived?;
|
|
21
|
-
private messagesTimer
|
|
25
|
+
private messagesTimer;
|
|
22
26
|
private lastMessageReceived?;
|
|
23
27
|
private retryTimes;
|
|
24
28
|
private options;
|
|
@@ -33,17 +37,16 @@ export declare abstract class TelemetryStreamAbstract implements ITelemetryStrea
|
|
|
33
37
|
protected abstract registerReceiver(): () => void;
|
|
34
38
|
protected abstract requestTelemetryQuery(req: TelemetryQueryRequest): Promise<void>;
|
|
35
39
|
protected abstract requestTelemetry(req: TelemetryRequest): Promise<void>;
|
|
36
|
-
protected abstract sendAcknowledgmentInternal(uid: string, status:
|
|
40
|
+
protected abstract sendAcknowledgmentInternal(uid: string, status: TelemetryAckStatusMap[keyof TelemetryAckStatusMap], noRetry: boolean): boolean;
|
|
37
41
|
protected abstract sendHeartbeat(): void;
|
|
38
42
|
setToken(token: string): void;
|
|
39
43
|
init(): void;
|
|
40
44
|
stopStream(): void;
|
|
41
45
|
addSubscription(params: ITelemetryParams): void;
|
|
42
46
|
removeSubscription(params: ITelemetryParams, terminateReceiverGroup?: boolean): Promise<void>;
|
|
43
|
-
sendAcknowledgment(uid: string, status:
|
|
47
|
+
sendAcknowledgment(uid: string, status: TelemetryAckStatusMap[keyof TelemetryAckStatusMap], noRetry: boolean): boolean;
|
|
44
48
|
private getSubscriptions;
|
|
45
|
-
protected onData(message:
|
|
46
|
-
protected onData(message: TelemetryMessage, isStream: false): void;
|
|
49
|
+
protected onData(message: IRocosTelemetryMessage): void;
|
|
47
50
|
private takeTelemetryAction;
|
|
48
51
|
protected listenMessagesAndRenew(): void;
|
|
49
52
|
private addTerminateToAction;
|
|
@@ -55,5 +58,5 @@ export declare abstract class TelemetryStreamAbstract implements ITelemetryStrea
|
|
|
55
58
|
private isFoundCallsign;
|
|
56
59
|
private isFoundSource;
|
|
57
60
|
private isRegisteredMessage;
|
|
58
|
-
private
|
|
61
|
+
private updateReceviedDataStatsWithMessage;
|
|
59
62
|
}
|
|
@@ -1,40 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TelemetryStreamAbstract = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const grpc_1 = require("../../../constants/grpc");
|
|
6
|
+
const teletubby_pb_1 = require("../../../grpc/teletubby/teletubby_pb");
|
|
7
|
+
const CallsignsLookup_1 = require("../../../models/callsigns/CallsignsLookup");
|
|
8
|
+
const CallsignsEnums_1 = require("../../../models/callsigns/CallsignsEnums");
|
|
9
|
+
const identifier_1 = require("../../../constants/identifier");
|
|
10
|
+
const RocosStore_1 = require("../../../store/RocosStore");
|
|
11
|
+
const RocosTelemetryMessage_1 = require("../../../models/message/RocosTelemetryMessage");
|
|
12
|
+
const StreamHeartbeat_1 = require("../../atoms/StreamHeartbeat");
|
|
13
|
+
const StreamOptions_1 = require("../../../models/StreamOptions");
|
|
14
|
+
const StreamRegister_1 = require("../../StreamRegister");
|
|
15
|
+
const SubscriberStatusEnum_1 = require("../../../models/SubscriberStatusEnum");
|
|
16
|
+
const arrayUnique_1 = require("../../../helpers/arrayUnique");
|
|
17
|
+
const operators_1 = require("rxjs/operators");
|
|
18
|
+
const getSubscriptionsDifference_1 = require("../../../helpers/getSubscriptionsDifference");
|
|
19
|
+
class TelemetryStreamAbstract {
|
|
13
20
|
constructor(config) {
|
|
14
21
|
// /////////////////
|
|
15
22
|
// Subscriber Check
|
|
16
23
|
this.timerIntervalInSec = 1;
|
|
17
|
-
this.subscriberStatus = SubscriberStatusEnum.STOPPED;
|
|
24
|
+
this.subscriberStatus = SubscriberStatusEnum_1.SubscriberStatusEnum.STOPPED;
|
|
18
25
|
this.retryTimes = 0;
|
|
19
26
|
this.receivedMessagesCount = 0;
|
|
20
27
|
// send heartbeat timeout is set to 5 seconds 5000
|
|
21
28
|
this.sendHeartbeatTime = 5000;
|
|
22
29
|
this.receivedDataStats = {};
|
|
23
30
|
this.subscriptions = new Map();
|
|
24
|
-
this.identifier = StreamRegister.getIdentifier(IDENTIFIER_NAME_TELEMETRY, config.scope);
|
|
31
|
+
this.identifier = StreamRegister_1.StreamRegister.getIdentifier(identifier_1.IDENTIFIER_NAME_TELEMETRY, config.scope);
|
|
25
32
|
this.projectId = config.projectId;
|
|
26
33
|
this.callsignsLookup = config.callsignsLookup;
|
|
27
34
|
this.token = config.token;
|
|
28
35
|
this.scope = config.scope;
|
|
29
36
|
this.url = config.url;
|
|
30
37
|
// make sure sources are unique for later comparison
|
|
31
|
-
this.sources = arrayUnique(config.sources);
|
|
32
|
-
this.options = StreamOptions.fromModel(config.options);
|
|
33
|
-
this.messageStream$ = new Subject();
|
|
34
|
-
this.statusStream$ = new BehaviorSubject(SubscriberStatusEnum.STOPPED);
|
|
35
|
-
this.heartbeat = new StreamHeartbeat(this.identifier);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
this.sources = arrayUnique_1.arrayUnique(config.sources);
|
|
39
|
+
this.options = StreamOptions_1.StreamOptions.fromModel(config.options);
|
|
40
|
+
this.messageStream$ = new rxjs_1.Subject();
|
|
41
|
+
this.statusStream$ = new rxjs_1.BehaviorSubject(SubscriberStatusEnum_1.SubscriberStatusEnum.STOPPED);
|
|
42
|
+
this.heartbeat = new StreamHeartbeat_1.StreamHeartbeat(this.identifier);
|
|
43
|
+
// autoResubscribeEnabled = false
|
|
44
|
+
// // Resubscribe when received messages above this limit.
|
|
45
|
+
// autoResubscribeMessageLimit = 100
|
|
46
|
+
// // In seconds
|
|
47
|
+
// autoResubscribeMinimumTime = 10
|
|
48
|
+
// messageTimeoutInSec = 10
|
|
49
|
+
// TODO: implement receive heartbeat handler
|
|
50
|
+
// this.heartbeat
|
|
51
|
+
// .setHealthTimeout(6000)
|
|
52
|
+
// .setHealthMaxTimeout(10)
|
|
53
|
+
// .setHealthMaxMisses(5)
|
|
54
|
+
// .setHealthCheckStatusCallback(async (status) => {
|
|
55
|
+
// console.log('heartbeat status', status)
|
|
56
|
+
// })
|
|
57
|
+
// .setHealthCheckErrorCallback(async () => {
|
|
58
|
+
// console.log('heartbeat error')
|
|
59
|
+
// })
|
|
60
|
+
RocosStore_1.RocosStore.getChangeSubject()
|
|
61
|
+
.pipe(operators_1.filter((message) => {
|
|
38
62
|
return message.type === 'token' && message.url === this.url;
|
|
39
63
|
}))
|
|
40
64
|
.subscribe((msg) => {
|
|
@@ -50,12 +74,13 @@ export class TelemetryStreamAbstract {
|
|
|
50
74
|
this.registerReceiver();
|
|
51
75
|
}
|
|
52
76
|
stopStream() {
|
|
53
|
-
|
|
77
|
+
var _a;
|
|
78
|
+
(_a = this.heartbeat) === null || _a === void 0 ? void 0 : _a.stop();
|
|
54
79
|
this.stopInternal();
|
|
55
80
|
if (this.messagesTimer) {
|
|
56
81
|
clearInterval(this.messagesTimer);
|
|
57
82
|
}
|
|
58
|
-
this.subscriberStatus = SubscriberStatusEnum.STOPPED;
|
|
83
|
+
this.subscriberStatus = SubscriberStatusEnum_1.SubscriberStatusEnum.STOPPED;
|
|
59
84
|
this.statusStream$.next(this.subscriberStatus);
|
|
60
85
|
}
|
|
61
86
|
addSubscription(params) {
|
|
@@ -63,21 +88,18 @@ export class TelemetryStreamAbstract {
|
|
|
63
88
|
if (!this.subscriptions.has(params.uniqueId)) {
|
|
64
89
|
// get subscriptions before change
|
|
65
90
|
const before = this.getSubscriptions();
|
|
66
|
-
this.subscriptions.set(params.uniqueId, {
|
|
67
|
-
...params,
|
|
68
|
-
count: 1, // set the count to one just in case it's set in param
|
|
69
|
-
});
|
|
91
|
+
this.subscriptions.set(params.uniqueId, Object.assign(Object.assign({}, params), { count: 1 }));
|
|
70
92
|
// get subscriptions after change
|
|
71
93
|
const after = this.getSubscriptions();
|
|
72
94
|
// assign the current values from state after change
|
|
73
|
-
this.callsignsLookup = new CallsignsLookup(Object.keys(after));
|
|
74
|
-
this.sources = arrayUnique(Object.values(after).reduce((a, v) => a.concat(v), []));
|
|
95
|
+
this.callsignsLookup = new CallsignsLookup_1.CallsignsLookup(Object.keys(after));
|
|
96
|
+
this.sources = arrayUnique_1.arrayUnique(Object.values(after).reduce((a, v) => a.concat(v), []));
|
|
75
97
|
// compare before and after subscriptions and only add the difference
|
|
76
|
-
const { toAdd } = getSubscriptionsDifference(before, after);
|
|
98
|
+
const { toAdd } = getSubscriptionsDifference_1.getSubscriptionsDifference(before, after);
|
|
77
99
|
// only subscribe if the subscriberId exists, otherwise the messages will be subscribed on lazy load
|
|
78
100
|
if (toAdd.callsigns.length && toAdd.sources.length) {
|
|
79
101
|
this.logger.debug('New subscriptions added, we need to refresh sources', { toAdd });
|
|
80
|
-
void this.takeTelemetryAction('subscribe', new CallsignsLookup(toAdd.callsigns), toAdd.sources);
|
|
102
|
+
void this.takeTelemetryAction('subscribe', new CallsignsLookup_1.CallsignsLookup(toAdd.callsigns), toAdd.sources);
|
|
81
103
|
}
|
|
82
104
|
}
|
|
83
105
|
else {
|
|
@@ -86,7 +108,7 @@ export class TelemetryStreamAbstract {
|
|
|
86
108
|
this.subscriptions.set(params.uniqueId, subs);
|
|
87
109
|
this.logger.info('Stream subscriptions already exists, increasing count', params.uniqueId, subs.count);
|
|
88
110
|
}
|
|
89
|
-
RocosStore.getChangeSubject().next({ type: 'telemetry-subscription', url: this.url, data: this.subscriptions });
|
|
111
|
+
RocosStore_1.RocosStore.getChangeSubject().next({ type: 'telemetry-subscription', url: this.url, data: this.subscriptions });
|
|
90
112
|
}
|
|
91
113
|
async removeSubscription(params, terminateReceiverGroup = false) {
|
|
92
114
|
this.logger.info('Removing subscriptions from stream', params.uniqueId);
|
|
@@ -101,13 +123,13 @@ export class TelemetryStreamAbstract {
|
|
|
101
123
|
this.subscriptions.delete(params.uniqueId);
|
|
102
124
|
const after = this.getSubscriptions();
|
|
103
125
|
// assign the current values from state after change
|
|
104
|
-
this.callsignsLookup = new CallsignsLookup(Object.keys(after));
|
|
105
|
-
this.sources = arrayUnique(Object.values(after).reduce((a, v) => a.concat(v), []));
|
|
106
|
-
const { toRemove } = getSubscriptionsDifference(before, after);
|
|
126
|
+
this.callsignsLookup = new CallsignsLookup_1.CallsignsLookup(Object.keys(after));
|
|
127
|
+
this.sources = arrayUnique_1.arrayUnique(Object.values(after).reduce((a, v) => a.concat(v), []));
|
|
128
|
+
const { toRemove } = getSubscriptionsDifference_1.getSubscriptionsDifference(before, after);
|
|
107
129
|
if (toRemove.callsigns.length && toRemove.sources.length) {
|
|
108
130
|
this.logger.debug('Subscriptions removed, we need to refresh sources', { toRemove });
|
|
109
131
|
try {
|
|
110
|
-
await this.takeTelemetryAction('unsubscribe', new CallsignsLookup(toRemove.callsigns), toRemove.sources, terminateReceiverGroup);
|
|
132
|
+
await this.takeTelemetryAction('unsubscribe', new CallsignsLookup_1.CallsignsLookup(toRemove.callsigns), toRemove.sources, terminateReceiverGroup);
|
|
111
133
|
}
|
|
112
134
|
catch (err) {
|
|
113
135
|
this.logger.error(`Failed to unsubscribe: ${err}`);
|
|
@@ -117,7 +139,7 @@ export class TelemetryStreamAbstract {
|
|
|
117
139
|
this.logger.info('No subscriptions remaining closing stream', params.uniqueId);
|
|
118
140
|
this.stopStream();
|
|
119
141
|
// self remove when no subscriptions a re left
|
|
120
|
-
void StreamRegister.getInstance().removeStream(this);
|
|
142
|
+
void StreamRegister_1.StreamRegister.getInstance().removeStream(this);
|
|
121
143
|
this.logger.info('Stream closed');
|
|
122
144
|
}
|
|
123
145
|
}
|
|
@@ -130,73 +152,79 @@ export class TelemetryStreamAbstract {
|
|
|
130
152
|
if (data.callsigns) {
|
|
131
153
|
data.callsigns.forEach((item) => {
|
|
132
154
|
if (!subs[item]) {
|
|
133
|
-
subs[item] = arrayUnique([...data.sources]);
|
|
155
|
+
subs[item] = arrayUnique_1.arrayUnique([...data.sources]);
|
|
134
156
|
}
|
|
135
157
|
else {
|
|
136
|
-
subs[item] = arrayUnique([...subs[item], ...data.sources]);
|
|
158
|
+
subs[item] = arrayUnique_1.arrayUnique([...subs[item], ...data.sources]);
|
|
137
159
|
}
|
|
138
160
|
});
|
|
139
161
|
}
|
|
140
162
|
});
|
|
141
163
|
return subs;
|
|
142
164
|
}
|
|
143
|
-
onData(message
|
|
165
|
+
onData(message) {
|
|
166
|
+
// Increase the counter
|
|
144
167
|
this.receivedMessagesCount++;
|
|
145
|
-
|
|
146
|
-
const
|
|
147
|
-
subscriberId: this.subscriberId,
|
|
148
|
-
subId: this.scope,
|
|
149
|
-
projectId: this.projectId,
|
|
150
|
-
};
|
|
151
|
-
if (isStream) {
|
|
152
|
-
rocosMessage = RocosTelemetryMessage.fromTelemetryStreamMessage(message, data, 'json');
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
rocosMessage = RocosTelemetryMessage.fromTelemetryMessage(message, data, 'json');
|
|
156
|
-
}
|
|
157
|
-
const { source, callsign } = rocosMessage;
|
|
168
|
+
const { source } = message;
|
|
169
|
+
const { callsign } = message;
|
|
158
170
|
let isRobotMessage = true;
|
|
159
171
|
const now = new Date();
|
|
160
172
|
// Update last message received time
|
|
161
173
|
this.lastMessageReceived = now;
|
|
174
|
+
// Update the message's project id
|
|
175
|
+
message.projectId = this.projectId;
|
|
176
|
+
message.type = 'json';
|
|
177
|
+
message.subId = this.scope;
|
|
178
|
+
message.subscriberId = this.subscriberId;
|
|
179
|
+
message.receivedAt = new Date();
|
|
162
180
|
switch (source) {
|
|
163
181
|
// Subscribe message
|
|
164
|
-
case GRPC_SOURCE_SUBSCRIBED:
|
|
165
|
-
|
|
182
|
+
case grpc_1.GRPC_SOURCE_SUBSCRIBED:
|
|
183
|
+
// eslint-disable-next-line no-case-declarations
|
|
184
|
+
const json = RocosTelemetryMessage_1.RocosTelemetryMessage.getPayloadAsJSON(message);
|
|
185
|
+
// eslint-disable-next-line no-case-declarations
|
|
186
|
+
const { subscriberId } = json;
|
|
166
187
|
if (this.subscriberId && subscriberId) {
|
|
167
188
|
this.logger.warn(`Replacing old subscriberId (${this.subscriberId}) with a new one (${subscriberId})`);
|
|
168
189
|
}
|
|
169
190
|
// Update the subscriberId
|
|
170
191
|
this.subscriberId = subscriberId;
|
|
171
|
-
|
|
192
|
+
message.subscriberId = this.subscriberId;
|
|
172
193
|
this.logger.info('onData', `subscriberId has been updated - ${subscriberId}`, { subscriberId });
|
|
173
194
|
void this.takeTelemetryAction('subscribe');
|
|
174
195
|
this.heartbeat.start(this.sendHeartbeat, this.sendHeartbeatTime);
|
|
175
196
|
isRobotMessage = false;
|
|
176
197
|
break;
|
|
177
|
-
}
|
|
178
198
|
// Server heartbeat message
|
|
179
|
-
case GRPC_SOURCE_NOOP:
|
|
199
|
+
case grpc_1.GRPC_SOURCE_NOOP:
|
|
200
|
+
// this.logger.debug('onData', 'received noop message');
|
|
180
201
|
isRobotMessage = false;
|
|
181
202
|
break;
|
|
203
|
+
default:
|
|
204
|
+
isRobotMessage = true;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
if (!source) {
|
|
208
|
+
isRobotMessage = false;
|
|
182
209
|
}
|
|
183
210
|
// Update robot last message timestamp
|
|
184
211
|
if (isRobotMessage) {
|
|
185
212
|
this.lastRobotMessageReceived = now;
|
|
186
213
|
}
|
|
214
|
+
message.payload = RocosTelemetryMessage_1.RocosTelemetryMessage.getPayloadByType(message);
|
|
187
215
|
// Update stats
|
|
188
|
-
this.
|
|
216
|
+
this.updateReceviedDataStatsWithMessage(message);
|
|
189
217
|
// Send message to subscribers
|
|
190
218
|
if (this.isRegisteredMessage(callsign, source) && this.messageStream$) {
|
|
191
|
-
this.messageStream$.next(
|
|
192
|
-
if (
|
|
193
|
-
this.sendAcknowledgment(
|
|
219
|
+
this.messageStream$.next(message);
|
|
220
|
+
if (message.isackable && this.options.autoAcknowledgmentEnabled) {
|
|
221
|
+
this.sendAcknowledgment(message.uid, teletubby_pb_1.TelemetryAckStatus.OK, false);
|
|
194
222
|
}
|
|
195
223
|
}
|
|
196
224
|
else if (isRobotMessage) {
|
|
197
225
|
// acknowledge any way, as the user never receives this message
|
|
198
|
-
if (
|
|
199
|
-
this.sendAcknowledgment(
|
|
226
|
+
if (message.isackable) {
|
|
227
|
+
this.sendAcknowledgment(message.uid, teletubby_pb_1.TelemetryAckStatus.REJECT, true);
|
|
200
228
|
}
|
|
201
229
|
// All messages received should be subscribed.
|
|
202
230
|
this.logger.debug('onData', 'received unsubscribed message', {
|
|
@@ -216,55 +244,50 @@ export class TelemetryStreamAbstract {
|
|
|
216
244
|
});
|
|
217
245
|
return Promise.resolve();
|
|
218
246
|
}
|
|
219
|
-
const actionSources = sources
|
|
220
|
-
const actionCallsigns = callsignsLookup
|
|
221
|
-
if (this.callsignsLookup.lookupType === CallsignsLookupType.List) {
|
|
247
|
+
const actionSources = sources !== null && sources !== void 0 ? sources : this.sources;
|
|
248
|
+
const actionCallsigns = callsignsLookup !== null && callsignsLookup !== void 0 ? callsignsLookup : this.callsignsLookup;
|
|
249
|
+
if (this.callsignsLookup.lookupType === CallsignsEnums_1.CallsignsLookupType.List) {
|
|
222
250
|
// Compose the request message
|
|
223
|
-
const req = TelemetryRequest
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
sources: actionSources,
|
|
230
|
-
},
|
|
231
|
-
],
|
|
232
|
-
});
|
|
251
|
+
const req = new teletubby_pb_1.TelemetryRequest();
|
|
252
|
+
const actions = [];
|
|
253
|
+
const action = new teletubby_pb_1.TelemetryAction();
|
|
254
|
+
action.setOperation(actionType);
|
|
255
|
+
action.setCallsignsList(actionCallsigns.lookupValue);
|
|
256
|
+
action.setSourcesList(actionSources);
|
|
233
257
|
if (actionType === 'unsubscribe' && terminate) {
|
|
234
|
-
this.addTerminateToAction(
|
|
258
|
+
this.addTerminateToAction(action);
|
|
235
259
|
}
|
|
260
|
+
actions.push(action);
|
|
261
|
+
req.setRequestedactionsList(actions);
|
|
262
|
+
req.setSubscriberid(this.subscriberId);
|
|
236
263
|
this.logger.debug('takeTelemetryAction', actionType, 'client.requestTelemetry', this.subscriberId);
|
|
237
264
|
// Send the message to back-end.
|
|
238
265
|
return this.requestTelemetry(req);
|
|
239
266
|
}
|
|
240
|
-
else if (actionCallsigns.lookupType === CallsignsLookupType.Query) {
|
|
267
|
+
else if (actionCallsigns.lookupType === CallsignsEnums_1.CallsignsLookupType.Query) {
|
|
241
268
|
const lookupValue = actionCallsigns.lookupValue;
|
|
269
|
+
// Compose the request message
|
|
270
|
+
const req = new teletubby_pb_1.TelemetryQueryRequest();
|
|
271
|
+
req.setSubscriberid(this.subscriberId);
|
|
272
|
+
req.setSourcesList(actionSources);
|
|
273
|
+
req.setOperation(actionType);
|
|
274
|
+
const telemetryQuery = new teletubby_pb_1.Query();
|
|
275
|
+
telemetryQuery.setOperation(lookupValue.operation);
|
|
242
276
|
// We don't support nested query at the moment
|
|
243
277
|
const queryOrPredicatesList = [];
|
|
244
278
|
// Loop through user provided predicates to construct a telemetry query request
|
|
245
279
|
lookupValue.predicates.forEach((callsignsPredicate) => {
|
|
246
|
-
const queryOrPredicate = QueryOrPredicate
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
},
|
|
254
|
-
},
|
|
255
|
-
});
|
|
280
|
+
const queryOrPredicate = new teletubby_pb_1.QueryOrPredicate();
|
|
281
|
+
const predicate = new teletubby_pb_1.Predicate();
|
|
282
|
+
// Map user provided predicate value to proto object
|
|
283
|
+
predicate.setAttribute(callsignsPredicate.attribute);
|
|
284
|
+
predicate.setOperation(callsignsPredicate.operation);
|
|
285
|
+
predicate.setValue(callsignsPredicate.value);
|
|
286
|
+
queryOrPredicate.setPredicate(predicate);
|
|
256
287
|
queryOrPredicatesList.push(queryOrPredicate);
|
|
257
288
|
});
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
subscriberId: this.subscriberId,
|
|
261
|
-
sources: actionSources,
|
|
262
|
-
operation: actionType,
|
|
263
|
-
callsignQuery: {
|
|
264
|
-
operation: lookupValue.operation.valueOf(),
|
|
265
|
-
queryOrPredicates: queryOrPredicatesList,
|
|
266
|
-
},
|
|
267
|
-
});
|
|
289
|
+
telemetryQuery.setQueryorpredicatesList(queryOrPredicatesList);
|
|
290
|
+
req.setCallsignquery(telemetryQuery);
|
|
268
291
|
this.logger.debug('takeTelemetryAction', actionType, 'client.requestTelemetry', this.subscriberId);
|
|
269
292
|
// Send the telemetry query request to back-end.
|
|
270
293
|
return this.requestTelemetryQuery(req);
|
|
@@ -279,41 +302,45 @@ export class TelemetryStreamAbstract {
|
|
|
279
302
|
clearInterval(timer);
|
|
280
303
|
}
|
|
281
304
|
this.messagesTimer = setInterval(() => {
|
|
305
|
+
var _a;
|
|
282
306
|
const now = new Date();
|
|
283
307
|
const latest = this.lastMessageReceived;
|
|
284
308
|
const latestRobot = this.lastRobotMessageReceived;
|
|
285
|
-
const startedAt = this.checkerStartedAt
|
|
309
|
+
const startedAt = (_a = this.checkerStartedAt) !== null && _a !== void 0 ? _a : new Date();
|
|
286
310
|
const timeout = this.options.messageTimeoutInSec;
|
|
287
311
|
let shouldRetry = false;
|
|
288
312
|
let shouldAutoResubscribe = false;
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
313
|
+
if (latest && (now.getTime() - latest.getTime()) / 1000 > timeout) {
|
|
314
|
+
// If we received message before, we should retry after timeout.
|
|
315
|
+
shouldRetry = true;
|
|
316
|
+
}
|
|
317
|
+
else if (!latest && startedAt && (now.getTime() - startedAt.getTime()) / 1000 > timeout) {
|
|
318
|
+
// If we have not received message before, we should also retry after timeout.
|
|
292
319
|
shouldRetry = true;
|
|
293
320
|
}
|
|
294
321
|
if (latestRobot) {
|
|
295
322
|
// If we get robot messages at least once.
|
|
296
323
|
if ((now.getTime() - latestRobot.getTime()) / 1000 > timeout) {
|
|
297
324
|
// Offline
|
|
298
|
-
this.subscriberStatus = SubscriberStatusEnum.DEAD;
|
|
325
|
+
this.subscriberStatus = SubscriberStatusEnum_1.SubscriberStatusEnum.DEAD;
|
|
299
326
|
}
|
|
300
327
|
else {
|
|
301
328
|
// Online
|
|
302
|
-
this.subscriberStatus = SubscriberStatusEnum.ALIVE;
|
|
329
|
+
this.subscriberStatus = SubscriberStatusEnum_1.SubscriberStatusEnum.ALIVE;
|
|
303
330
|
}
|
|
304
331
|
}
|
|
305
332
|
else if ((now.getTime() - startedAt.getTime()) / 1000 > timeout) {
|
|
306
333
|
// If there is no robot messages received, then we compare with startedAt time.
|
|
307
334
|
// Timeout
|
|
308
|
-
this.subscriberStatus = SubscriberStatusEnum.DEAD;
|
|
335
|
+
this.subscriberStatus = SubscriberStatusEnum_1.SubscriberStatusEnum.DEAD;
|
|
309
336
|
}
|
|
310
337
|
else if (this.retryTimes <= 0) {
|
|
311
338
|
// Still trying, status unknown.
|
|
312
|
-
this.subscriberStatus = SubscriberStatusEnum.STOPPED;
|
|
339
|
+
this.subscriberStatus = SubscriberStatusEnum_1.SubscriberStatusEnum.STOPPED;
|
|
313
340
|
}
|
|
314
341
|
else {
|
|
315
342
|
// Tried multiple times. dead already.
|
|
316
|
-
this.subscriberStatus = SubscriberStatusEnum.DEAD;
|
|
343
|
+
this.subscriberStatus = SubscriberStatusEnum_1.SubscriberStatusEnum.DEAD;
|
|
317
344
|
}
|
|
318
345
|
if (this.options.autoResubscribeEnabled &&
|
|
319
346
|
this.receivedMessagesCount > this.options.autoResubscribeMessageLimit &&
|
|
@@ -340,22 +367,13 @@ export class TelemetryStreamAbstract {
|
|
|
340
367
|
}, this.timerIntervalInSec * 1000);
|
|
341
368
|
}
|
|
342
369
|
addTerminateToAction(telemetryAction) {
|
|
343
|
-
const unsubscribeOperation = UnsubscribeOperation
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
oneofKind: 'receivergroupUnsubscribeOption',
|
|
351
|
-
},
|
|
352
|
-
},
|
|
353
|
-
],
|
|
354
|
-
});
|
|
355
|
-
telemetryAction.content = {
|
|
356
|
-
oneofKind: 'unsubscribeOperation',
|
|
357
|
-
unsubscribeOperation,
|
|
358
|
-
};
|
|
370
|
+
const unsubscribeOperation = new teletubby_pb_1.UnsubscribeOperation();
|
|
371
|
+
const unsubscribeOption = new teletubby_pb_1.UnsubscribeOption();
|
|
372
|
+
const receiverGroupUnsubscribeOption = new teletubby_pb_1.ReceiverGroupUnsubscribeOption();
|
|
373
|
+
receiverGroupUnsubscribeOption.setTerminate(true);
|
|
374
|
+
unsubscribeOption.setReceivergroupunsubscribeoption(receiverGroupUnsubscribeOption);
|
|
375
|
+
unsubscribeOperation.addOptions(unsubscribeOption);
|
|
376
|
+
telemetryAction.setUnsubscribeoperation(unsubscribeOperation);
|
|
359
377
|
}
|
|
360
378
|
messageTimeoutTryAgain() {
|
|
361
379
|
// Increase retry times.
|
|
@@ -379,7 +397,7 @@ export class TelemetryStreamAbstract {
|
|
|
379
397
|
this.registerReceiver();
|
|
380
398
|
}
|
|
381
399
|
isFoundCallsign(callsign) {
|
|
382
|
-
return this.callsignsLookup.lookupType === CallsignsLookupType.List
|
|
400
|
+
return this.callsignsLookup.lookupType === CallsignsEnums_1.CallsignsLookupType.List
|
|
383
401
|
? this.callsignsLookup.lookupValue.indexOf(callsign) !== -1
|
|
384
402
|
: true; // If callsigns lookup option is query, we always return true
|
|
385
403
|
}
|
|
@@ -389,7 +407,7 @@ export class TelemetryStreamAbstract {
|
|
|
389
407
|
isRegisteredMessage(callsign, source) {
|
|
390
408
|
return this.isFoundCallsign(callsign) && this.isFoundSource(source);
|
|
391
409
|
}
|
|
392
|
-
|
|
410
|
+
updateReceviedDataStatsWithMessage(msg) {
|
|
393
411
|
const { source } = msg;
|
|
394
412
|
const { callsign } = msg;
|
|
395
413
|
const id = `${callsign}-${source}`;
|
|
@@ -400,3 +418,4 @@ export class TelemetryStreamAbstract {
|
|
|
400
418
|
this.receivedDataStats[id] = count + 1;
|
|
401
419
|
}
|
|
402
420
|
}
|
|
421
|
+
exports.TelemetryStreamAbstract = TelemetryStreamAbstract;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { TelemetryAckStatusMap, TelemetryQueryRequest, TelemetryRequest } from '../../../grpc/teletubby/teletubby_pb';
|
|
2
|
+
import { ITelemetryStreamConfig } from '../../../models/ITelemetryStreamConfig';
|
|
3
3
|
import { TelemetryStreamAbstract } from './TelemetryStreamAbstract';
|
|
4
4
|
export declare class TelemetryStreamNode extends TelemetryStreamAbstract {
|
|
5
5
|
private client?;
|
|
6
6
|
private stream?;
|
|
7
|
-
private
|
|
8
|
-
private
|
|
7
|
+
private port;
|
|
8
|
+
private credentials;
|
|
9
9
|
constructor(config: ITelemetryStreamConfig);
|
|
10
10
|
protected stopInternal(): void;
|
|
11
11
|
protected registerReceiver(): () => void;
|
|
@@ -16,6 +16,6 @@ export declare class TelemetryStreamNode extends TelemetryStreamAbstract {
|
|
|
16
16
|
private getMetaData;
|
|
17
17
|
protected requestTelemetry(req: TelemetryRequest): Promise<void>;
|
|
18
18
|
protected requestTelemetryQuery(req: TelemetryQueryRequest): Promise<void>;
|
|
19
|
-
protected sendAcknowledgmentInternal(uid: string, status:
|
|
19
|
+
protected sendAcknowledgmentInternal(uid: string, status: TelemetryAckStatusMap[keyof TelemetryAckStatusMap], noRetry: boolean): boolean;
|
|
20
20
|
protected sendHeartbeat(): void;
|
|
21
21
|
}
|