@dronedeploy/rocos-js-sdk 2.6.1 → 3.0.0-alpha.20
Sign up to get free protection for your applications and to get access to all the features.
- package/IRocosSDK.d.ts +3 -26
- package/IRocosSDK.js +1 -5
- package/README.md +18 -0
- package/RocosSDK.d.ts +6 -1
- package/RocosSDK.js +103 -95
- package/api/StreamRegister.d.ts +1 -1
- package/api/StreamRegister.js +23 -12
- package/api/atoms/StreamHeartbeat.js +3 -7
- package/api/streams/caller/CallerStream.d.ts +6 -6
- package/api/streams/caller/CallerStream.js +41 -49
- package/api/streams/caller/CallerStreamAbstract.d.ts +6 -11
- package/api/streams/caller/CallerStreamAbstract.js +55 -67
- package/api/streams/caller/CallerStreamNode.d.ts +6 -6
- package/api/streams/caller/CallerStreamNode.js +48 -61
- package/api/streams/command/CommandStream.d.ts +2 -4
- package/api/streams/command/CommandStream.js +28 -30
- package/api/streams/command/CommandStreamAbstract.d.ts +4 -8
- package/api/streams/command/CommandStreamAbstract.js +33 -42
- package/api/streams/command/CommandStreamNode.d.ts +2 -4
- package/api/streams/command/CommandStreamNode.js +16 -40
- package/api/streams/control/ControlStream.d.ts +4 -6
- package/api/streams/control/ControlStream.js +30 -36
- package/api/streams/control/ControlStreamAbstract.d.ts +6 -9
- package/api/streams/control/ControlStreamAbstract.js +57 -54
- package/api/streams/control/ControlStreamNode.d.ts +3 -5
- package/api/streams/control/ControlStreamNode.js +19 -44
- package/api/streams/fileAccessor/FileAccessorStream.d.ts +2 -4
- package/api/streams/fileAccessor/FileAccessorStream.js +42 -57
- package/api/streams/fileAccessor/FileAccessorStreamAbstract.d.ts +4 -9
- package/api/streams/fileAccessor/FileAccessorStreamAbstract.js +28 -48
- package/api/streams/fileAccessor/FileAccessorStreamNode.d.ts +1 -3
- package/api/streams/fileAccessor/FileAccessorStreamNode.js +23 -53
- package/api/streams/search/SearchStream.d.ts +2 -5
- package/api/streams/search/SearchStream.js +50 -74
- package/api/streams/search/SearchStreamAbstract.d.ts +4 -9
- package/api/streams/search/SearchStreamAbstract.js +33 -35
- package/api/streams/search/SearchStreamNode.d.ts +2 -5
- package/api/streams/search/SearchStreamNode.js +23 -48
- package/api/streams/telemetry/TelemetryStream.d.ts +4 -4
- package/api/streams/telemetry/TelemetryStream.js +49 -78
- package/api/streams/telemetry/TelemetryStreamAbstract.d.ts +8 -11
- package/api/streams/telemetry/TelemetryStreamAbstract.js +126 -145
- package/api/streams/telemetry/TelemetryStreamNode.d.ts +5 -5
- package/api/streams/telemetry/TelemetryStreamNode.js +44 -64
- package/api/streams/webRTCSignalling/WebRTCSignallingStream.d.ts +5 -10
- package/api/streams/webRTCSignalling/WebRTCSignallingStream.js +37 -20
- package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.d.ts +10 -13
- package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.js +37 -37
- package/constants/api.d.ts +14 -5
- package/constants/api.js +130 -126
- package/constants/auth.d.ts +2 -0
- package/constants/auth.js +2 -0
- package/constants/grpc.js +5 -8
- package/constants/identifier.js +6 -9
- package/constants/timezones.d.ts +1 -1
- package/constants/timezones.js +1 -4
- package/grpc/conker_pb.client.d.ts +78 -0
- package/grpc/conker_pb.client.js +55 -0
- package/grpc/conker_pb.d.ts +141 -0
- package/grpc/conker_pb.grpc-client.d.ts +81 -0
- package/grpc/conker_pb.grpc-client.js +58 -0
- package/grpc/conker_pb.js +104 -0
- package/grpc/filagree_pb.client.d.ts +68 -0
- package/grpc/filagree_pb.client.js +48 -0
- package/grpc/filagree_pb.d.ts +404 -0
- package/grpc/filagree_pb.grpc-client.d.ts +69 -0
- package/grpc/filagree_pb.grpc-client.js +51 -0
- package/grpc/filagree_pb.js +329 -0
- package/grpc/google/protobuf/descriptor_pb.d.ts +1798 -0
- package/grpc/google/protobuf/descriptor_pb.js +2378 -0
- package/grpc/google/protobuf/empty_pb.d.ts +23 -0
- package/grpc/google/protobuf/empty_pb.js +47 -0
- package/grpc/pigeon_pb.client.d.ts +96 -0
- package/grpc/pigeon_pb.client.js +72 -0
- package/grpc/pigeon_pb.d.ts +207 -0
- package/grpc/pigeon_pb.grpc-client.d.ts +98 -0
- package/grpc/pigeon_pb.grpc-client.js +68 -0
- package/grpc/pigeon_pb.js +144 -0
- package/grpc/rambo.uri.v1_pb.d.ts +73 -0
- package/grpc/rambo.uri.v1_pb.js +48 -0
- package/grpc/rambo.v1_pb.client.d.ts +66 -0
- package/grpc/rambo.v1_pb.client.js +48 -0
- package/grpc/rambo.v1_pb.d.ts +392 -0
- package/grpc/rambo.v1_pb.grpc-client.d.ts +56 -0
- package/grpc/rambo.v1_pb.grpc-client.js +44 -0
- package/grpc/rambo.v1_pb.js +272 -0
- package/grpc/serviette.uri.v1_pb.d.ts +89 -0
- package/grpc/serviette.uri.v1_pb.js +62 -0
- package/grpc/serviette.v1_pb.client.d.ts +225 -0
- package/grpc/serviette.v1_pb.client.js +174 -0
- package/grpc/serviette.v1_pb.d.ts +827 -0
- package/grpc/serviette.v1_pb.grpc-client.d.ts +215 -0
- package/grpc/serviette.v1_pb.grpc-client.js +162 -0
- package/grpc/serviette.v1_pb.js +553 -0
- package/grpc/slowlane_pb.client.d.ts +61 -0
- package/grpc/slowlane_pb.client.js +41 -0
- package/grpc/slowlane_pb.d.ts +303 -0
- package/grpc/slowlane_pb.grpc-client.d.ts +64 -0
- package/grpc/slowlane_pb.grpc-client.js +44 -0
- package/grpc/slowlane_pb.js +185 -0
- package/grpc/teletubby_pb.client.d.ts +145 -0
- package/grpc/teletubby_pb.client.js +104 -0
- package/grpc/teletubby_pb.d.ts +634 -0
- package/grpc/teletubby_pb.grpc-client.d.ts +152 -0
- package/grpc/teletubby_pb.grpc-client.js +100 -0
- package/grpc/teletubby_pb.js +1264 -0
- package/helpers/arrayRemove.js +2 -6
- package/helpers/arrayUnique.js +2 -6
- package/helpers/average.js +2 -7
- package/helpers/callerMessageHelpers.d.ts +14 -0
- package/helpers/callerMessageHelpers.js +86 -0
- package/helpers/cleanObject.js +17 -19
- package/helpers/cleanObject.spec.d.ts +1 -0
- package/helpers/cleanObject.spec.js +53 -0
- package/helpers/enviroment.js +4 -11
- package/helpers/flattenCallsignsLookup.d.ts +1 -1
- package/helpers/flattenCallsignsLookup.js +1 -5
- package/helpers/flattenObject.js +1 -5
- package/helpers/flattenObject.spec.d.ts +1 -0
- package/helpers/flattenObject.spec.js +29 -0
- package/helpers/flattenOneOf.d.ts +67 -0
- package/helpers/flattenOneOf.js +29 -0
- package/helpers/flattenOneOf.spec.d.ts +1 -0
- package/helpers/flattenOneOf.spec.js +157 -0
- package/helpers/formatServiceUrl.js +1 -5
- package/helpers/formatServiceUrl.spec.d.ts +1 -0
- package/helpers/formatServiceUrl.spec.js +16 -0
- package/helpers/generateUUID.js +3 -7
- package/helpers/getSubscriptionsDifference.d.ts +3 -3
- package/helpers/getSubscriptionsDifference.js +6 -10
- package/helpers/getURLSearchParams.d.ts +2 -0
- package/helpers/getURLSearchParams.js +9 -0
- package/helpers/getURLSearchParams.spec.d.ts +1 -0
- package/helpers/getURLSearchParams.spec.js +19 -0
- package/helpers/getUniqueConfigKey.js +1 -6
- package/helpers/getUniqueId.js +3 -7
- package/helpers/getUnixTimeMs.js +1 -5
- package/helpers/index.d.ts +3 -1
- package/helpers/index.js +5 -15
- package/helpers/nanosecondToMillisecond.d.ts +1 -1
- package/helpers/nanosecondToMillisecond.js +11 -6
- package/helpers/nanosecondToMillisecond.spec.d.ts +1 -0
- package/helpers/nanosecondToMillisecond.spec.js +20 -0
- package/helpers/randomString.js +1 -5
- package/helpers/standardDeviation.js +4 -8
- package/helpers/standardDeviation.spec.d.ts +1 -0
- package/helpers/standardDeviation.spec.js +11 -0
- package/helpers/stringToUint8Array.js +3 -7
- package/helpers/uint8ArrayToString.js +3 -8
- package/helpers/websandbox/connection.d.ts +67 -0
- package/helpers/websandbox/connection.js +133 -0
- package/helpers/websandbox/frame/frame.d.ts +12 -0
- package/helpers/websandbox/frame/frame.js +22 -0
- package/helpers/websandbox/frame/frame.source.d.ts +2 -0
- package/helpers/websandbox/frame/frame.source.js +5 -0
- package/helpers/websandbox/frame/index.d.ts +2 -0
- package/helpers/websandbox/frame/index.js +2 -0
- package/helpers/websandbox/frame/worker/index.d.ts +2 -0
- package/helpers/websandbox/frame/worker/index.js +2 -0
- package/helpers/websandbox/frame/worker/manager.d.ts +11 -0
- package/helpers/websandbox/frame/worker/manager.js +67 -0
- package/helpers/websandbox/frame/worker/manager.spec.d.ts +4 -0
- package/helpers/websandbox/frame/worker/manager.spec.js +127 -0
- package/helpers/websandbox/frame/worker/types.d.ts +11 -0
- package/helpers/websandbox/frame/worker/types.js +1 -0
- package/helpers/websandbox/frame/worker/worker.d.ts +1 -0
- package/helpers/websandbox/frame/worker/worker.js +74 -0
- package/helpers/websandbox/frame/worker/worker.source.d.ts +2 -0
- package/helpers/websandbox/frame/worker/worker.source.js +4 -0
- package/helpers/websandbox/index.d.ts +2 -0
- package/helpers/websandbox/index.js +2 -0
- package/helpers/websandbox/sandbox.d.ts +57 -0
- package/helpers/websandbox/sandbox.js +175 -0
- package/helpers/websandbox/types.d.ts +13 -0
- package/helpers/websandbox/types.js +1 -0
- package/index.js +7 -19
- package/logger/RocosLogger.js +18 -44
- package/models/CallsignStatus.d.ts +6 -0
- package/models/CallsignStatus.js +7 -0
- package/models/ExportDataQuery.js +1 -5
- package/models/ExternalProject.js +1 -5
- package/models/IBaseService.d.ts +1 -0
- package/models/IBaseService.js +1 -2
- package/models/IConfigGroup.js +1 -2
- package/models/IDebugLevel.d.ts +1 -1
- package/models/IDebugLevel.js +1 -2
- package/models/IExportDataQuery.js +1 -2
- package/models/IFunctionConfig.js +1 -2
- package/models/IInvitation.d.ts +1 -1
- package/models/IInvitation.js +1 -2
- package/models/IInvitationExists.js +1 -2
- package/models/IOperation.js +1 -2
- package/models/IPersonalAccessToken.js +1 -2
- package/models/IProject.js +1 -2
- package/models/IProjectApplication.js +1 -2
- package/models/IRobot.d.ts +1 -0
- package/models/IRobot.js +1 -2
- package/models/IRobotConfig.js +1 -2
- package/models/IRobotPlugin.js +1 -2
- package/models/IRobotSettings.d.ts +28 -0
- package/models/IRobotSettings.js +1 -0
- package/models/IRobotTemplate.js +1 -2
- package/models/IRocosSDKConfig.d.ts +3 -9
- package/models/IRocosSDKConfig.js +1 -2
- package/models/ISource.js +1 -2
- package/models/IStream.js +1 -2
- package/models/IStreamConfig.js +1 -2
- package/models/IStreamOptions.js +1 -2
- package/models/IStreamSource.js +1 -2
- package/models/ISubscriberStatus.js +1 -2
- package/models/ITelemetryStreamConfig.js +1 -2
- package/models/IToken.d.ts +7 -3
- package/models/IToken.js +1 -2
- package/models/IWidget.js +1 -2
- package/models/IWidgetLineGroup.js +1 -2
- package/models/ResponseLevelEnum.d.ts +4 -0
- package/models/ResponseLevelEnum.js +6 -5
- package/models/Robot.d.ts +1 -0
- package/models/Robot.js +1 -5
- package/models/RobotConfig.js +1 -5
- package/models/RobotPlugin.js +1 -5
- package/models/RobotTemplate.js +9 -14
- package/models/RocosError.d.ts +1 -0
- package/models/RocosError.js +3 -6
- package/models/ServiceEnum.d.ts +2 -1
- package/models/ServiceEnum.js +3 -5
- package/models/Stream.js +4 -8
- package/models/StreamOptions.js +1 -5
- package/models/StreamSource.js +3 -7
- package/models/SubscriberStatusEnum.js +2 -5
- package/models/Token.d.ts +36 -4
- package/models/Token.js +74 -11
- package/models/Token.spec.d.ts +1 -0
- package/models/Token.spec.js +108 -0
- package/models/Widget.js +4 -8
- package/models/WidgetLineGroup.js +1 -5
- package/models/asset-storage/AssetModelItem.d.ts +3 -0
- package/models/asset-storage/AssetModelItem.js +1 -2
- package/models/caller/IRocosCallerMessageChunk.d.ts +8 -2
- package/models/caller/IRocosCallerMessageChunk.js +1 -2
- package/models/caller/IRocosCallerMessageChunks.d.ts +2 -3
- package/models/caller/IRocosCallerMessageChunks.js +1 -2
- package/models/caller/IRocosCallerMessageHeartbeat.d.ts +3 -2
- package/models/caller/IRocosCallerMessageHeartbeat.js +1 -2
- package/models/caller/IRocosCallerMessageResponse.d.ts +3 -2
- package/models/caller/IRocosCallerMessageResponse.js +1 -2
- package/models/caller/IRocosCallerMessageResponseAck.d.ts +16 -2
- package/models/caller/IRocosCallerMessageResponseAck.js +13 -2
- package/models/caller/IRocosCallerMessageResponseResult.d.ts +15 -2
- package/models/caller/IRocosCallerMessageResponseResult.js +12 -2
- package/models/caller/IRocosCallerMessageResponseReturn.d.ts +8 -0
- package/models/caller/IRocosCallerMessageResponseReturn.js +1 -0
- package/models/caller/IRocosCallerMessageResponseUid.d.ts +10 -2
- package/models/caller/IRocosCallerMessageResponseUid.js +7 -2
- package/models/caller/IRocosCallerMessageResponses.d.ts +2 -3
- package/models/caller/IRocosCallerMessageResponses.js +1 -2
- package/models/caller/RocosCallerResultStatus.d.ts +11 -1
- package/models/caller/RocosCallerResultStatus.js +12 -5
- package/models/caller/RocosResponseLevel.d.ts +6 -0
- package/models/caller/RocosResponseLevel.js +7 -0
- package/models/caller/index.d.ts +11 -0
- package/models/caller/index.js +11 -0
- package/models/callsigns/CallsignsEnums.d.ts +3 -3
- package/models/callsigns/CallsignsEnums.js +11 -14
- package/models/callsigns/CallsignsLookup.js +10 -15
- package/models/callsigns/CallsignsQuery.js +1 -5
- package/models/callsigns/CallsignsQueryPredicate.js +1 -5
- package/models/command/IRocosCommandMessageHeartbeat.d.ts +1 -2
- package/models/command/IRocosCommandMessageHeartbeat.js +1 -2
- package/models/command/IRocosCommandMessageResponse.d.ts +55 -2
- package/models/command/IRocosCommandMessageResponse.js +29 -2
- package/models/command/RocosCommandResultStatus.d.ts +11 -1
- package/models/command/RocosCommandResultStatus.js +12 -5
- package/models/command/index.d.ts +4 -0
- package/models/command/index.js +4 -0
- package/models/file/FileEnums.d.ts +4 -4
- package/models/file/FileEnums.js +9 -12
- package/models/index.d.ts +6 -31
- package/models/index.js +76 -113
- package/models/integrations/Overlay.js +1 -2
- package/models/integrations/Plan.js +1 -2
- package/models/maps/Map.d.ts +2 -3
- package/models/maps/Map.js +1 -2
- package/models/maps/Panorama.d.ts +36 -0
- package/models/maps/Panorama.js +1 -0
- package/models/message/IRocosCallerMessage.js +1 -2
- package/models/message/IRocosChangeMessage.js +1 -2
- package/models/message/IRocosCommandMessage.js +1 -2
- package/models/message/IRocosControlMessage.js +1 -2
- package/models/message/IRocosOpResultMessage.d.ts +2 -2
- package/models/message/IRocosOpResultMessage.js +1 -2
- package/models/message/IRocosSearchMessage.js +1 -2
- package/models/message/IRocosSearchRowMessage.js +1 -2
- package/models/message/IRocosSearchStatusMessage.js +1 -2
- package/models/message/IRocosTelemetryMessage.d.ts +12 -7
- package/models/message/IRocosTelemetryMessage.js +1 -2
- package/models/message/IStreamStatusMessage.js +1 -2
- package/models/message/RocosCallerMessage.d.ts +2 -4
- package/models/message/RocosCallerMessage.js +24 -15
- package/models/message/RocosCommandMessage.d.ts +2 -3
- package/models/message/RocosCommandMessage.js +5 -8
- package/models/message/RocosControlMessage.d.ts +1 -1
- package/models/message/RocosControlMessage.js +6 -10
- package/models/message/RocosOpResultMessage.d.ts +3 -2
- package/models/message/RocosOpResultMessage.js +6 -10
- package/models/message/RocosSearchMessage.d.ts +1 -1
- package/models/message/RocosSearchMessage.js +5 -9
- package/models/message/RocosSearchRowMessage.d.ts +1 -1
- package/models/message/RocosSearchRowMessage.js +8 -12
- package/models/message/RocosTelemetryMessage.d.ts +9 -23
- package/models/message/RocosTelemetryMessage.js +51 -93
- package/models/message/index.d.ts +17 -0
- package/models/message/index.js +17 -0
- package/models/params/ICallerParams.d.ts +12 -1
- package/models/params/ICallerParams.js +1 -2
- package/models/params/ICommandParams.js +1 -2
- package/models/params/IControlParams.d.ts +1 -1
- package/models/params/IControlParams.js +1 -2
- package/models/params/IFileAccessorParams.js +1 -2
- package/models/params/ISearchParams.js +1 -2
- package/models/params/ITelemetryParams.d.ts +1 -1
- package/models/params/ITelemetryParams.js +1 -2
- package/models/params/IWebRTCSignallingParams.js +1 -2
- package/models/projects/ProjectUser.js +1 -2
- package/models/schedule/IScheduleAction.d.ts +1 -1
- package/models/schedule/IScheduleAction.js +2 -5
- package/models/schedule/IScheduleInfo.js +1 -2
- package/models/schedule/IScheduleJob.js +1 -2
- package/models/search/SearchQueryFilter.js +1 -5
- package/models/search/SearchStreamQuery.js +1 -5
- package/models/stream/IBaseStream.js +1 -2
- package/models/stream/ICallerStream.js +1 -2
- package/models/stream/ICommandStream.js +1 -2
- package/models/stream/IControlStream.js +1 -2
- package/models/stream/IFileAccessorStream.d.ts +1 -2
- package/models/stream/IFileAccessorStream.js +1 -2
- package/models/stream/ISearchStream.js +1 -2
- package/models/stream/ITelemetryStream.js +1 -2
- package/models/stream/IWebRTCSignallingStream.d.ts +51 -16
- package/models/stream/IWebRTCSignallingStream.js +1 -7
- package/models/types.d.ts +5 -5
- package/models/types.js +1 -2
- package/models/workflow/Workflow.d.ts +36 -0
- package/models/workflow/Workflow.js +1 -0
- package/node/RocosSDKNode.d.ts +6 -1
- package/node/RocosSDKNode.js +82 -80
- package/node/index.js +7 -19
- package/package.json +10 -11
- package/services/AssetStorageService.d.ts +23 -1
- package/services/AssetStorageService.js +53 -24
- package/services/AuthService.d.ts +59 -27
- package/services/AuthService.js +167 -86
- package/services/AuthService.spec.d.ts +1 -0
- package/services/AuthService.spec.js +163 -0
- package/services/BaseServiceAbstract.d.ts +11 -13
- package/services/BaseServiceAbstract.js +18 -24
- package/services/BaseStreamService.d.ts +18 -0
- package/services/BaseStreamService.js +47 -0
- package/services/CallerService.d.ts +37 -17
- package/services/CallerService.js +86 -65
- package/services/CallerService.spec.d.ts +1 -0
- package/services/CallerService.spec.js +227 -0
- package/services/CallerServiceNode.js +4 -8
- package/services/CommandService.d.ts +5 -17
- package/services/CommandService.js +19 -62
- package/services/CommandServiceNode.js +4 -8
- package/services/ConfigGroupService.js +17 -21
- package/services/ControlService.d.ts +5 -17
- package/services/ControlService.js +22 -65
- package/services/ControlServiceNode.js +4 -8
- package/services/DashboardService.js +20 -24
- package/services/EvaluatorService.d.ts +11 -0
- package/services/EvaluatorService.js +28 -0
- package/services/EventService.js +13 -17
- package/services/FileAccessorService.d.ts +4 -18
- package/services/FileAccessorService.js +14 -62
- package/services/FileAccessorServiceNode.js +4 -8
- package/services/FunctionService.js +17 -21
- package/services/IntegrationService.js +14 -19
- package/services/MapService.d.ts +71 -25
- package/services/MapService.js +113 -40
- package/services/PlatformTimeService.js +8 -12
- package/services/PlatformTimeService.spec.d.ts +1 -0
- package/services/PlatformTimeService.spec.js +180 -0
- package/services/ProfileService.js +36 -40
- package/services/ProjectService.js +23 -27
- package/services/RobotService.d.ts +2 -6
- package/services/RobotService.js +48 -55
- package/services/ScheduleService.js +10 -14
- package/services/SearchService.d.ts +4 -17
- package/services/SearchService.js +24 -59
- package/services/SearchServiceNode.js +4 -8
- 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 +26 -30
- package/services/TelemetryService.d.ts +15 -17
- package/services/TelemetryService.js +103 -93
- package/services/TelemetryService.spec.d.ts +1 -0
- package/services/TelemetryService.spec.js +37 -0
- package/services/TelemetryServiceNode.js +4 -8
- package/services/TimeSyncerService.js +9 -13
- package/services/UserService.js +37 -41
- package/services/WebRTCSignallingService.d.ts +4 -4
- package/services/WebRTCSignallingService.js +24 -27
- package/services/WorkflowService.d.ts +25 -29
- package/services/WorkflowService.js +39 -75
- package/services/index.d.ts +1 -0
- package/services/index.js +27 -38
- package/store/RocosStore.js +9 -15
- package/demo/angular/.editorconfig +0 -16
- package/demo/angular/.eslintignore +0 -4
- package/demo/angular/.eslintrc.json +0 -50
- package/demo/angular/README.md +0 -36
- package/demo/angular/angular.json +0 -132
- package/demo/angular/karma.conf.js +0 -44
- package/demo/angular/package.json +0 -41
- package/demo/angular/src/app/app.component.css +0 -0
- package/demo/angular/src/app/app.component.html +0 -9
- package/demo/angular/src/app/app.component.ts +0 -10
- package/demo/angular/src/app/app.module.ts +0 -38
- package/demo/angular/src/app/components/assets/assets.component.css +0 -0
- package/demo/angular/src/app/components/assets/assets.component.html +0 -29
- package/demo/angular/src/app/components/assets/assets.component.ts +0 -107
- package/demo/angular/src/app/components/auth/auth.component.css +0 -0
- package/demo/angular/src/app/components/auth/auth.component.html +0 -27
- package/demo/angular/src/app/components/auth/auth.component.ts +0 -33
- package/demo/angular/src/app/components/caller/caller.component.css +0 -0
- package/demo/angular/src/app/components/caller/caller.component.html +0 -22
- package/demo/angular/src/app/components/caller/caller.component.ts +0 -61
- package/demo/angular/src/app/components/command/command.component.css +0 -0
- package/demo/angular/src/app/components/command/command.component.html +0 -22
- package/demo/angular/src/app/components/command/command.component.ts +0 -60
- package/demo/angular/src/app/components/integrations/integrations.component.ts +0 -43
- package/demo/angular/src/app/components/robots/robots.component.css +0 -0
- package/demo/angular/src/app/components/robots/robots.component.html +0 -13
- package/demo/angular/src/app/components/robots/robots.component.ts +0 -26
- package/demo/angular/src/app/components/sdk/sdk.component.css +0 -0
- package/demo/angular/src/app/components/sdk/sdk.component.html +0 -43
- package/demo/angular/src/app/components/sdk/sdk.component.ts +0 -50
- package/demo/angular/src/app/components/subscription/subscription.component.css +0 -0
- package/demo/angular/src/app/components/subscription/subscription.component.html +0 -6
- package/demo/angular/src/app/components/subscription/subscription.component.ts +0 -40
- package/demo/angular/src/app/components/telemetry/telemetry.component.css +0 -0
- package/demo/angular/src/app/components/telemetry/telemetry.component.html +0 -19
- package/demo/angular/src/app/components/telemetry/telemetry.component.ts +0 -61
- package/demo/angular/src/app/components/token/token.component.css +0 -0
- package/demo/angular/src/app/components/token/token.component.html +0 -10
- package/demo/angular/src/app/components/token/token.component.ts +0 -18
- package/demo/angular/src/app/components/video/p2pvideo/index.ts +0 -646
- package/demo/angular/src/app/components/video/video-source.ts +0 -315
- package/demo/angular/src/app/components/video/video.component.css +0 -6
- package/demo/angular/src/app/components/video/video.component.html +0 -54
- package/demo/angular/src/app/components/video/video.component.ts +0 -151
- package/demo/angular/src/app/services/sdk.service.ts +0 -193
- 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 +0 -16
- package/demo/angular/src/environments/environment.prod.ts +0 -3
- package/demo/angular/src/environments/environment.ts +0 -16
- package/demo/angular/src/favicon.ico +0 -0
- package/demo/angular/src/index.html +0 -15
- package/demo/angular/src/main.ts +0 -7
- package/demo/angular/src/polyfills.ts +0 -53
- package/demo/angular/src/styles.css +0 -198
- package/demo/angular/tsconfig.app.json +0 -15
- package/demo/angular/tsconfig.json +0 -39
- package/demo/html/README.md +0 -8
- package/demo/html/assets/HKGrotesk-Bold.otf +0 -0
- package/demo/html/assets/HKGrotesk-Regular.otf +0 -0
- package/demo/html/assets/logo.svg +0 -16
- package/demo/html/favicon.ico +0 -0
- package/demo/html/index.html +0 -416
- package/demo/html/rocos-js-sdk.js +0 -3
- package/demo/html/rocos-js-sdk.js.LICENSE.txt +0 -8
- package/demo/html/rocos-js-sdk.js.map +0 -1
- package/demo/html/styles.css +0 -190
- package/demo/node/README.md +0 -17
- package/demo/node/index.js +0 -134
- package/demo/node/package.json +0 -8
- package/demo/react/.env +0 -1
- package/demo/react/.env.dist +0 -1
- package/demo/react/.eslintrc.json +0 -46
- package/demo/react/README.md +0 -65
- package/demo/react/package.json +0 -60
- package/demo/react/public/favicon.ico +0 -0
- package/demo/react/public/index.html +0 -43
- package/demo/react/public/logo192.png +0 -0
- package/demo/react/public/logo512.png +0 -0
- package/demo/react/public/manifest.json +0 -25
- package/demo/react/public/robots.txt +0 -3
- package/demo/react/src/App.css +0 -190
- package/demo/react/src/App.tsx +0 -31
- package/demo/react/src/actions/index.ts +0 -8
- package/demo/react/src/actions/sdkActions.ts +0 -62
- 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 +0 -16
- package/demo/react/src/components/AuthForm.tsx +0 -76
- package/demo/react/src/components/CallerBox.tsx +0 -53
- package/demo/react/src/components/CallerForm.tsx +0 -98
- package/demo/react/src/components/CommandBox.tsx +0 -47
- package/demo/react/src/components/CommandForm.tsx +0 -98
- package/demo/react/src/components/RobotsForm.tsx +0 -51
- package/demo/react/src/components/SubscriptionBox.tsx +0 -55
- package/demo/react/src/components/TelemetryForm.tsx +0 -98
- package/demo/react/src/components/TokenForm.tsx +0 -39
- package/demo/react/src/config.json +0 -14
- package/demo/react/src/controllers/RocosSDKController.ts +0 -48
- package/demo/react/src/helpers/deepEqual.ts +0 -27
- package/demo/react/src/hooks/useInput.ts +0 -29
- package/demo/react/src/index.css +0 -11
- package/demo/react/src/index.tsx +0 -26
- package/demo/react/src/react-app-env.d.ts +0 -1
- package/demo/react/src/reducers/sdkReducer.ts +0 -133
- package/demo/react/src/reportWebVitals.ts +0 -15
- package/demo/react/src/selectors/sdkSelector.ts +0 -11
- package/demo/react/src/setupTests.ts +0 -5
- package/demo/react/src/store.ts +0 -14
- package/demo/react/tsconfig.json +0 -26
- package/demo/sdk-sizer/dist/sdk-sizer/3rdpartylicenses.txt +0 -975
- package/demo/sdk-sizer/dist/sdk-sizer/favicon.ico +0 -0
- package/demo/sdk-sizer/dist/sdk-sizer/index.html +0 -12
- package/demo/sdk-sizer/dist/sdk-sizer/main.c9183649ce1856ef.js +0 -2
- package/demo/sdk-sizer/dist/sdk-sizer/main.c9183649ce1856ef.js.map +0 -1
- package/demo/sdk-sizer/dist/sdk-sizer/polyfills.701c8e5d007909aa.js +0 -2
- package/demo/sdk-sizer/dist/sdk-sizer/polyfills.701c8e5d007909aa.js.map +0 -1
- package/demo/sdk-sizer/dist/sdk-sizer/runtime.00e20e689f5284a8.js +0 -2
- package/demo/sdk-sizer/dist/sdk-sizer/runtime.00e20e689f5284a8.js.map +0 -1
- package/demo/sdk-sizer/dist/sdk-sizer/stats.json +0 -1
- package/demo/sdk-sizer/dist/sdk-sizer/styles.b45f7e627ac8cbce.css +0 -2
- package/demo/sdk-sizer/dist/sdk-sizer/styles.b45f7e627ac8cbce.css.map +0 -1
- package/grpc/file-accessor/filagree_grpc_pb.d.ts +0 -41
- package/grpc/file-accessor/filagree_grpc_pb.js +0 -121
- package/grpc/file-accessor/filagree_pb.d.ts +0 -339
- package/grpc/file-accessor/filagree_pb.js +0 -2261
- package/grpc/file-accessor/filagree_pb_service.d.ts +0 -115
- package/grpc/file-accessor/filagree_pb_service.js +0 -257
- package/grpc/rambo/rambo.v1_grpc_pb.d.ts +0 -39
- package/grpc/rambo/rambo.v1_grpc_pb.js +0 -73
- package/grpc/rambo/rambo.v1_pb.d.ts +0 -365
- package/grpc/rambo/rambo.v1_pb.js +0 -2469
- package/grpc/rambo/rambo.v1_pb_service.d.ts +0 -76
- package/grpc/rambo/rambo.v1_pb_service.js +0 -138
- package/grpc/rambo/uri.v1_grpc_pb.d.ts +0 -1
- package/grpc/rambo/uri.v1_grpc_pb.js +0 -1
- package/grpc/rambo/uri.v1_pb.d.ts +0 -80
- package/grpc/rambo/uri.v1_pb.js +0 -563
- package/grpc/rambo/uri.v1_pb_service.d.ts +0 -3
- package/grpc/rambo/uri.v1_pb_service.js +0 -3
- package/grpc/robot-control/conker_grpc_pb.d.ts +0 -46
- package/grpc/robot-control/conker_grpc_pb.js +0 -143
- package/grpc/robot-control/conker_pb.d.ts +0 -168
- package/grpc/robot-control/conker_pb.js +0 -1287
- package/grpc/robot-control/conker_pb_service.d.ts +0 -126
- package/grpc/robot-control/conker_pb_service.js +0 -301
- package/grpc/serviette/common.v1_grpc_pb.d.ts +0 -1
- package/grpc/serviette/common.v1_grpc_pb.js +0 -1
- package/grpc/serviette/common.v1_pb.d.ts +0 -8
- package/grpc/serviette/common.v1_pb.js +0 -45
- package/grpc/serviette/common.v1_pb_service.d.ts +0 -3
- package/grpc/serviette/common.v1_pb_service.js +0 -3
- package/grpc/serviette/serviette.v1_grpc_pb.d.ts +0 -137
- package/grpc/serviette/serviette.v1_grpc_pb.js +0 -331
- package/grpc/serviette/serviette.v1_pb.d.ts +0 -884
- package/grpc/serviette/serviette.v1_pb.js +0 -6363
- package/grpc/serviette/serviette.v1_pb_service.d.ts +0 -278
- package/grpc/serviette/serviette.v1_pb_service.js +0 -699
- package/grpc/serviette/uri.v1_grpc_pb.d.ts +0 -1
- package/grpc/serviette/uri.v1_grpc_pb.js +0 -1
- package/grpc/serviette/uri.v1_pb.d.ts +0 -102
- package/grpc/serviette/uri.v1_pb.js +0 -741
- package/grpc/serviette/uri.v1_pb_service.d.ts +0 -3
- package/grpc/serviette/uri.v1_pb_service.js +0 -3
- package/grpc/slowlane/slowlane_grpc_pb.d.ts +0 -38
- package/grpc/slowlane/slowlane_grpc_pb.js +0 -132
- package/grpc/slowlane/slowlane_pb.d.ts +0 -373
- package/grpc/slowlane/slowlane_pb.js +0 -2908
- package/grpc/slowlane/slowlane_pb_service.d.ts +0 -112
- package/grpc/slowlane/slowlane_pb_service.js +0 -189
- package/grpc/teletubby/teletubby_grpc_pb.d.ts +0 -73
- package/grpc/teletubby/teletubby_grpc_pb.js +0 -231
- package/grpc/teletubby/teletubby_pb.d.ts +0 -647
- package/grpc/teletubby/teletubby_pb.js +0 -4786
- package/grpc/teletubby/teletubby_pb_service.d.ts +0 -193
- package/grpc/teletubby/teletubby_pb_service.js +0 -436
- package/grpc/video/pigeon_grpc_pb.d.ts +0 -59
- package/grpc/video/pigeon_grpc_pb.js +0 -180
- package/grpc/video/pigeon_pb.d.ts +0 -237
- package/grpc/video/pigeon_pb.js +0 -1775
- package/grpc/video/pigeon_pb_service.d.ts +0 -152
- package/grpc/video/pigeon_pb_service.js +0 -292
- package/models/ISignupParams.d.ts +0 -8
- package/models/ISignupParams.js +0 -2
- package/utils/axisangle.d.ts +0 -18
- package/utils/axisangle.js +0 -48
- package/utils/eulerangles.d.ts +0 -22
- package/utils/eulerangles.js +0 -133
- package/utils/helperfunctions.d.ts +0 -5
- package/utils/helperfunctions.js +0 -50
- package/utils/localtransform.d.ts +0 -17
- package/utils/localtransform.js +0 -50
- package/utils/localtransformtree.d.ts +0 -17
- package/utils/localtransformtree.js +0 -88
- package/utils/misc.d.ts +0 -17
- package/utils/misc.js +0 -23
- package/utils/positionvector.d.ts +0 -13
- package/utils/positionvector.js +0 -79
- package/utils/quaternion.d.ts +0 -20
- package/utils/quaternion.js +0 -62
- package/utils/rotationmatrix.d.ts +0 -23
- package/utils/rotationmatrix.js +0 -262
- package/utils/transformationmatrix.d.ts +0 -12
- package/utils/transformationmatrix.js +0 -123
- package/utils/vector3.d.ts +0 -11
- package/utils/vector3.js +0 -61
@@ -0,0 +1,163 @@
|
|
1
|
+
import { issuer } from '../constants/auth';
|
2
|
+
import { AuthService } from './AuthService';
|
3
|
+
import { Token } from '../models';
|
4
|
+
describe('authService', () => {
|
5
|
+
const baseDate = new Date(2021, 0, 1, 0, 0, 0, 0);
|
6
|
+
beforeEach(() => {
|
7
|
+
jest.useFakeTimers();
|
8
|
+
jest.setSystemTime(baseDate);
|
9
|
+
});
|
10
|
+
const expiredDate = new Date(baseDate.getTime() - 1000 * 60 * 5); // 5 minutes ago
|
11
|
+
const almostExpiredDate = new Date(baseDate.getTime() + 1000 * 60 * 5); // 5 minutes from now
|
12
|
+
const almostAlmostExpiredDate = new Date(baseDate.getTime() + 1000 * 60 * 25); // 35 minutes from now
|
13
|
+
const notExpiredDate = new Date(baseDate.getTime() + 1000 * 60 * 60 * 24); // 1 day from now
|
14
|
+
const getToken = (config) => {
|
15
|
+
const header = {
|
16
|
+
alg: 'HS256',
|
17
|
+
typ: 'JWT',
|
18
|
+
};
|
19
|
+
const payload = {
|
20
|
+
iat: Math.floor((config.iat ?? expiredDate).getTime() / 1000),
|
21
|
+
exp: Math.floor((config.exp ?? notExpiredDate).getTime() / 1000),
|
22
|
+
iss: config.iss ?? issuer,
|
23
|
+
aud: config.aud ?? 'myaudience',
|
24
|
+
sub: config.sub ?? 'mysubject',
|
25
|
+
};
|
26
|
+
const encodedHeader = Buffer.from(JSON.stringify(header)).toString('base64');
|
27
|
+
const encodedPayload = Buffer.from(JSON.stringify(payload)).toString('base64');
|
28
|
+
if (config.signature === false) {
|
29
|
+
return `${encodedHeader}.${encodedPayload}`;
|
30
|
+
}
|
31
|
+
return `${encodedHeader}.${encodedPayload}.signature`;
|
32
|
+
};
|
33
|
+
afterAll(() => jest.useRealTimers());
|
34
|
+
describe('getToken', () => {
|
35
|
+
it('should return the current token if it is not expired', async () => {
|
36
|
+
// Arrange
|
37
|
+
const token = getToken({ exp: notExpiredDate });
|
38
|
+
const service = new AuthService({
|
39
|
+
token,
|
40
|
+
url: 'http://localhost:0',
|
41
|
+
});
|
42
|
+
service.setToken(token);
|
43
|
+
// Act
|
44
|
+
const newToken = await service.getToken();
|
45
|
+
// Assert
|
46
|
+
expect(newToken.value).toEqual(token);
|
47
|
+
});
|
48
|
+
it('should refresh the token if it is about to expire', async () => {
|
49
|
+
// Arrange
|
50
|
+
const token = getToken({ exp: almostExpiredDate });
|
51
|
+
const service = new AuthService({
|
52
|
+
token,
|
53
|
+
url: 'http://localhost:0',
|
54
|
+
});
|
55
|
+
service.setToken(token);
|
56
|
+
const expected = getToken({ signature: false });
|
57
|
+
jest.spyOn(AuthService.prototype, 'refreshToken').mockResolvedValue(new Token(expected));
|
58
|
+
// Act
|
59
|
+
const newToken = await service.getToken();
|
60
|
+
// Assert
|
61
|
+
expect(newToken.value).not.toEqual(token);
|
62
|
+
expect(newToken.value).toEqual(expected);
|
63
|
+
expect(AuthService.prototype.refreshToken).toHaveBeenCalled();
|
64
|
+
});
|
65
|
+
it('should get a new token if there is no current token', async () => {
|
66
|
+
// Arrange
|
67
|
+
const token = getToken({ signature: false });
|
68
|
+
const service = new AuthService({
|
69
|
+
url: 'http://localhost:0',
|
70
|
+
token,
|
71
|
+
});
|
72
|
+
service.clearToken();
|
73
|
+
const expected = getToken({ signature: false });
|
74
|
+
jest.spyOn(AuthService.prototype, 'getNewUserToken').mockResolvedValue(new Token(expected));
|
75
|
+
// Act
|
76
|
+
const newToken = await service.getToken();
|
77
|
+
// Assert
|
78
|
+
expect(newToken.value).toEqual(expected);
|
79
|
+
expect(AuthService.prototype.getNewUserToken).toHaveBeenCalled();
|
80
|
+
});
|
81
|
+
});
|
82
|
+
describe('tokenRefreshLoop', () => {
|
83
|
+
jest.spyOn(AuthService.prototype, 'refreshTokenIfExpired').mockImplementation(() => {
|
84
|
+
// make sure the promise is resolved synchronously
|
85
|
+
return {
|
86
|
+
catch: () => {
|
87
|
+
return {
|
88
|
+
finally(onfinally) {
|
89
|
+
onfinally?.();
|
90
|
+
return Promise.resolve();
|
91
|
+
},
|
92
|
+
};
|
93
|
+
},
|
94
|
+
};
|
95
|
+
});
|
96
|
+
beforeEach(() => {
|
97
|
+
jest.clearAllTimers();
|
98
|
+
jest.clearAllMocks();
|
99
|
+
jest.useFakeTimers();
|
100
|
+
jest.setSystemTime(baseDate);
|
101
|
+
});
|
102
|
+
it('should check the token every 10 minutes', async () => {
|
103
|
+
// Arrange
|
104
|
+
const token = getToken({ exp: almostAlmostExpiredDate });
|
105
|
+
const service = new AuthService({
|
106
|
+
token,
|
107
|
+
url: 'http://localhost:0',
|
108
|
+
});
|
109
|
+
service.setToken(token);
|
110
|
+
// Act
|
111
|
+
service.startTokenRefreshChecker();
|
112
|
+
expect(AuthService.prototype.refreshTokenIfExpired).toHaveBeenCalledTimes(1);
|
113
|
+
jest.advanceTimersByTime(1000 * 60 * 10); // 10 minutes
|
114
|
+
expect(AuthService.prototype.refreshTokenIfExpired).toHaveBeenCalledTimes(2);
|
115
|
+
jest.advanceTimersByTime(1000 * 60); // 1 minutes - 24 minutes left
|
116
|
+
expect(AuthService.prototype.refreshTokenIfExpired).toHaveBeenCalledTimes(3);
|
117
|
+
jest.advanceTimersByTime(1000 * 60 * 10); // 10 minutes - 14 minutes left
|
118
|
+
jest.runOnlyPendingTimers(); // wait for the next timer to run
|
119
|
+
service.stopTokenRefreshChecker();
|
120
|
+
});
|
121
|
+
it('should not run again when cancelled', () => {
|
122
|
+
// Arrange
|
123
|
+
const token = getToken({ exp: notExpiredDate });
|
124
|
+
const service = new AuthService({
|
125
|
+
token,
|
126
|
+
url: 'http://localhost:0',
|
127
|
+
});
|
128
|
+
service.setToken(token);
|
129
|
+
// Act
|
130
|
+
service.startTokenRefreshChecker();
|
131
|
+
expect(AuthService.prototype.refreshTokenIfExpired).toHaveBeenCalledTimes(1);
|
132
|
+
service.stopTokenRefreshChecker();
|
133
|
+
jest.runOnlyPendingTimers();
|
134
|
+
expect(AuthService.prototype.refreshTokenIfExpired).toHaveBeenCalledTimes(1);
|
135
|
+
});
|
136
|
+
it('should correctly report running status', () => {
|
137
|
+
const token = getToken({ exp: notExpiredDate });
|
138
|
+
const service = new AuthService({
|
139
|
+
token,
|
140
|
+
url: 'http://localhost:0',
|
141
|
+
});
|
142
|
+
service.setToken(token);
|
143
|
+
expect(service.isTokenRefreshCheckerRunning()).toBe(false);
|
144
|
+
service.startTokenRefreshChecker();
|
145
|
+
expect(service.isTokenRefreshCheckerRunning()).toBe(true);
|
146
|
+
service.stopTokenRefreshChecker();
|
147
|
+
expect(service.isTokenRefreshCheckerRunning()).toBe(false);
|
148
|
+
});
|
149
|
+
it('should correctly report running status', () => {
|
150
|
+
const token = getToken({ exp: notExpiredDate });
|
151
|
+
const service = new AuthService({
|
152
|
+
token,
|
153
|
+
url: 'http://localhost:0',
|
154
|
+
});
|
155
|
+
service.setToken(token);
|
156
|
+
expect(service.isTokenRefreshCheckerRunning()).toBe(false);
|
157
|
+
service.startTokenRefreshChecker();
|
158
|
+
expect(service.isTokenRefreshCheckerRunning()).toBe(true);
|
159
|
+
service.stopTokenRefreshChecker();
|
160
|
+
expect(service.isTokenRefreshCheckerRunning()).toBe(false);
|
161
|
+
});
|
162
|
+
});
|
163
|
+
});
|
@@ -1,9 +1,7 @@
|
|
1
|
-
import { IRocosSDKConfig } from '../models
|
1
|
+
import { IRocosSDKConfig, RocosError } from '../models';
|
2
|
+
import { QueryParams } from '../helpers';
|
2
3
|
import { Logger } from 'loglevel';
|
3
|
-
|
4
|
-
declare type QueryParams = Record<string, string | number | boolean> | URLSearchParams;
|
5
|
-
declare type ResponseType = 'json' | 'blob' | 'stream' | 'text' | 'raw';
|
6
|
-
declare type Payload = unknown;
|
4
|
+
type ResponseType = 'json' | 'blob' | 'stream' | 'text' | 'raw';
|
7
5
|
interface RequestConfig {
|
8
6
|
/**
|
9
7
|
* Additional headers to send with the request.
|
@@ -21,18 +19,18 @@ interface RequestConfig {
|
|
21
19
|
export declare abstract class BaseServiceAbstract {
|
22
20
|
protected config: IRocosSDKConfig;
|
23
21
|
protected logger: Logger;
|
24
|
-
constructor(config: IRocosSDKConfig);
|
22
|
+
protected constructor(config: IRocosSDKConfig);
|
25
23
|
protected abstract getError(e: Error): RocosError;
|
26
|
-
protected callPost<
|
27
|
-
protected callPut<
|
28
|
-
protected callDelete<
|
29
|
-
protected callGet<
|
30
|
-
protected call<
|
24
|
+
protected callPost<Response = unknown, Payload = unknown>(url: string, payload: Payload, errorMessage: string, config?: RequestConfig): Promise<Response>;
|
25
|
+
protected callPut<Response = unknown, Payload = unknown>(url: string, payload: Payload, errorMessage: string, config?: RequestConfig): Promise<Response>;
|
26
|
+
protected callDelete<Response = unknown, Payload = unknown>(url: string, errorMessage: string, payload?: Payload): Promise<Response>;
|
27
|
+
protected callGet<Response = unknown>(url: string, errorMessage: string, params?: QueryParams, config?: RequestConfig): Promise<Response>;
|
28
|
+
protected call<Response = unknown, Payload = unknown>(url: string, method: 'GET' | 'POST' | 'PUT' | 'DELETE', options: {
|
31
29
|
errorMessage: string;
|
32
30
|
config?: RequestConfig;
|
33
|
-
payload?:
|
31
|
+
payload?: Payload;
|
34
32
|
params?: QueryParams;
|
35
|
-
}): Promise<
|
33
|
+
}): Promise<Response>;
|
36
34
|
private fetchOrThrow;
|
37
35
|
}
|
38
36
|
export {};
|
@@ -1,8 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
const RocosError_1 = require("../models/RocosError");
|
5
|
-
const RocosStore_1 = require("../store/RocosStore");
|
1
|
+
import { RocosError } from '../models';
|
2
|
+
import { getURLSearchParams } from '../helpers';
|
3
|
+
import { RocosStore } from '../store/RocosStore';
|
6
4
|
class HttpError extends Error {
|
7
5
|
constructor(response) {
|
8
6
|
super(response.statusText);
|
@@ -10,7 +8,7 @@ class HttpError extends Error {
|
|
10
8
|
this.name = 'HttpError';
|
11
9
|
}
|
12
10
|
}
|
13
|
-
class BaseServiceAbstract {
|
11
|
+
export class BaseServiceAbstract {
|
14
12
|
constructor(config) {
|
15
13
|
this.config = config;
|
16
14
|
}
|
@@ -27,23 +25,20 @@ class BaseServiceAbstract {
|
|
27
25
|
return this.call(url, 'GET', { errorMessage, params, config });
|
28
26
|
}
|
29
27
|
async call(url, method, options) {
|
30
|
-
var _a;
|
31
28
|
const { errorMessage, config, payload, params } = options;
|
32
29
|
try {
|
33
|
-
|
34
|
-
const stringParams = Object.entries(params || {}).reduce((acc, [key, value]) => {
|
35
|
-
acc[key] = value.toString();
|
36
|
-
return acc;
|
37
|
-
}, {});
|
38
|
-
const formattedUrl = params ? `${url}?${new URLSearchParams(stringParams)}` : url;
|
30
|
+
const formattedUrl = params ? `${url}?${getURLSearchParams(params)}` : url;
|
39
31
|
const defaultHeaders = {};
|
40
|
-
if (!
|
41
|
-
const token = await
|
42
|
-
defaultHeaders.Authorization =
|
32
|
+
if (!config?.public) {
|
33
|
+
const token = await RocosStore.getSDKInstance(this.config).getAuthService().getToken();
|
34
|
+
defaultHeaders.Authorization = token.bearer;
|
43
35
|
}
|
44
36
|
const requestConfig = {
|
45
37
|
method,
|
46
|
-
headers:
|
38
|
+
headers: {
|
39
|
+
...defaultHeaders,
|
40
|
+
...config?.headers,
|
41
|
+
},
|
47
42
|
};
|
48
43
|
// must check if FormData exists for node support
|
49
44
|
if (typeof FormData !== 'undefined' && payload instanceof FormData) {
|
@@ -51,19 +46,19 @@ class BaseServiceAbstract {
|
|
51
46
|
}
|
52
47
|
else if (payload) {
|
53
48
|
requestConfig.body = JSON.stringify(payload);
|
54
|
-
requestConfig.headers =
|
49
|
+
requestConfig.headers = { ...requestConfig.headers, 'Content-Type': 'application/json' };
|
55
50
|
}
|
56
|
-
return this.fetchOrThrow(formattedUrl, requestConfig, config
|
51
|
+
return this.fetchOrThrow(formattedUrl, requestConfig, config?.responseType);
|
57
52
|
}
|
58
53
|
catch (e) {
|
59
54
|
const message = errorMessage;
|
60
55
|
this.logger.error(message, e);
|
61
|
-
let httpError = new
|
56
|
+
let httpError = new RocosError(message);
|
62
57
|
if (e instanceof HttpError) {
|
63
58
|
httpError = this.getError(e);
|
64
|
-
httpError.statusCode =
|
59
|
+
httpError.statusCode = e?.response?.status;
|
65
60
|
}
|
66
|
-
|
61
|
+
RocosStore.getChangeSubject().next({ type: 'http-error', url: this.config.url, data: httpError });
|
67
62
|
throw httpError;
|
68
63
|
}
|
69
64
|
}
|
@@ -87,7 +82,7 @@ class BaseServiceAbstract {
|
|
87
82
|
case 'json':
|
88
83
|
default: {
|
89
84
|
const textRes = await res.text();
|
90
|
-
if (!
|
85
|
+
if (!textRes?.trim())
|
91
86
|
return undefined;
|
92
87
|
try {
|
93
88
|
return JSON.parse(textRes);
|
@@ -100,4 +95,3 @@ class BaseServiceAbstract {
|
|
100
95
|
}
|
101
96
|
}
|
102
97
|
}
|
103
|
-
exports.BaseServiceAbstract = BaseServiceAbstract;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { IBaseService, IBaseStream, IRocosSDKConfig, IStreamConfig, SubscriberStatusEnum } from '../models';
|
2
|
+
import { ISubscriberStatus } from '../models/ISubscriberStatus';
|
3
|
+
import { Logger } from 'loglevel';
|
4
|
+
import { Subject } from 'rxjs';
|
5
|
+
export declare abstract class BaseStreamService<T extends IBaseStream, C extends IStreamConfig = IStreamConfig> implements IBaseService, ISubscriberStatus {
|
6
|
+
protected config: IRocosSDKConfig;
|
7
|
+
protected logger: Logger;
|
8
|
+
protected status: boolean;
|
9
|
+
status$: Subject<SubscriberStatusEnum>;
|
10
|
+
protected constructor(name: string, config: IRocosSDKConfig);
|
11
|
+
getStatus(): boolean;
|
12
|
+
protected initStream(stream: T): Promise<void>;
|
13
|
+
protected createStreamFromConfig(identifier: string, config: C): Promise<{
|
14
|
+
stream: T;
|
15
|
+
isNew: boolean;
|
16
|
+
}>;
|
17
|
+
protected abstract getStream(config: C): T;
|
18
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
import { SubscriberStatusEnum, Token } from '../models';
|
2
|
+
import { RocosLogger } from '../logger/RocosLogger';
|
3
|
+
import { RocosStore } from '../store/RocosStore';
|
4
|
+
import { StreamRegister } from '../api/StreamRegister';
|
5
|
+
import { Subject } from 'rxjs';
|
6
|
+
export class BaseStreamService {
|
7
|
+
constructor(name, config) {
|
8
|
+
this.status = false;
|
9
|
+
this.status$ = new Subject();
|
10
|
+
this.config = config;
|
11
|
+
this.logger = RocosLogger.getInstance(`${name}(${this.config.url})`);
|
12
|
+
}
|
13
|
+
getStatus() {
|
14
|
+
return this.status;
|
15
|
+
}
|
16
|
+
async initStream(stream) {
|
17
|
+
const authService = RocosStore.getSDKInstance(this.config).getAuthService();
|
18
|
+
if (!this.config.token || !authService.isTokenValid(new Token(this.config.token))) {
|
19
|
+
try {
|
20
|
+
const token = await authService.getToken();
|
21
|
+
stream.setToken(token.value);
|
22
|
+
}
|
23
|
+
catch (e) {
|
24
|
+
this.logger.error('Can not retrieve auth token', e);
|
25
|
+
throw new Error('Can not retrieve auth token');
|
26
|
+
}
|
27
|
+
}
|
28
|
+
authService.startTokenRefreshChecker();
|
29
|
+
}
|
30
|
+
async createStreamFromConfig(identifier, config) {
|
31
|
+
const identifierWithScope = StreamRegister.getIdentifier(identifier, config.scope);
|
32
|
+
const streamRegister = StreamRegister.getInstance();
|
33
|
+
let stream = streamRegister.getStream(identifierWithScope);
|
34
|
+
let isNew = false;
|
35
|
+
if (!stream) {
|
36
|
+
isNew = true;
|
37
|
+
stream = this.getStream(config);
|
38
|
+
stream.statusStream$.subscribe((msg) => {
|
39
|
+
this.status = msg === SubscriberStatusEnum.STOPPED || msg === SubscriberStatusEnum.ALIVE;
|
40
|
+
this.status$.next(msg);
|
41
|
+
});
|
42
|
+
await streamRegister.addStream(stream);
|
43
|
+
await this.initStream(stream);
|
44
|
+
}
|
45
|
+
return { stream, isNew };
|
46
|
+
}
|
47
|
+
}
|
@@ -1,22 +1,42 @@
|
|
1
|
-
import { ICallerInvokeParams, ICallerParams } from '../models
|
2
|
-
import { Observable
|
3
|
-
import {
|
4
|
-
|
5
|
-
import { IRocosCallerMessage } from '../models/message/IRocosCallerMessage';
|
6
|
-
import { IRocosSDKConfig } from '../models/IRocosSDKConfig';
|
7
|
-
import { IStreamConfig } from '../models/IStreamConfig';
|
8
|
-
import { ISubscriberStatus } from '../models/ISubscriberStatus';
|
9
|
-
import { SubscriberStatusEnum } from '../models/SubscriberStatusEnum';
|
10
|
-
export declare class CallerService implements IBaseService, ISubscriberStatus {
|
11
|
-
private config;
|
12
|
-
private logger;
|
13
|
-
private status;
|
14
|
-
status$: Subject<SubscriberStatusEnum>;
|
1
|
+
import { ICallerCallParams, ICallerInvokeParams, ICallerParams, ICallerStream, IRocosCallerMessage, IRocosCallerMessageResponseAck, IRocosCallerMessageResponseResult, IRocosCallerMessageResponseReturn, IRocosSDKConfig, IStreamConfig } from '../models';
|
2
|
+
import { Observable } from 'rxjs';
|
3
|
+
import { BaseStreamService } from './BaseStreamService';
|
4
|
+
export declare class CallerService extends BaseStreamService<ICallerStream> {
|
15
5
|
constructor(config: IRocosSDKConfig);
|
16
|
-
getStatus(): boolean;
|
17
6
|
invokeRequest(params: ICallerInvokeParams): Observable<IRocosCallerMessage>;
|
18
7
|
cancelRequest(params: ICallerParams): Observable<IRocosCallerMessage>;
|
19
|
-
|
20
|
-
|
8
|
+
/** Call a service and return the response(s).
|
9
|
+
*
|
10
|
+
* It will complete once a result message is received with a `COMPLETE_SUCCESS` status,
|
11
|
+
* or throw an error if the status is not `COMPLETE_SUCCESS`.
|
12
|
+
*
|
13
|
+
* This is a high level method that wraps the lower level `invokeRequest` method.
|
14
|
+
*
|
15
|
+
* @see invokeRequest
|
16
|
+
* @see call
|
17
|
+
*/
|
18
|
+
callRaw(params: ICallerCallParams): {
|
19
|
+
return$: Observable<IRocosCallerMessageResponseReturn>;
|
20
|
+
result$: Observable<IRocosCallerMessageResponseResult>;
|
21
|
+
ack$: Observable<IRocosCallerMessageResponseAck>;
|
22
|
+
};
|
23
|
+
/** Call a service and return the response(s) as UTF-8 encoded JSON.
|
24
|
+
*
|
25
|
+
* It will complete once a result message is received with a `COMPLETE_SUCCESS` status,
|
26
|
+
* or throw an error if the status is not `COMPLETE_SUCCESS`.
|
27
|
+
*
|
28
|
+
* This is a high level method that wraps the lower level `invokeRequest` method.
|
29
|
+
*
|
30
|
+
* Equivalent to calling `callRaw` and then parsing the return payload as UTF-8 encoded JSON.
|
31
|
+
*
|
32
|
+
* @see callRaw
|
33
|
+
* @see invokeRequest
|
34
|
+
*/
|
35
|
+
call<T = unknown>(params: ICallerCallParams): {
|
36
|
+
return$: Observable<T>;
|
37
|
+
result$: Observable<IRocosCallerMessageResponseResult>;
|
38
|
+
ack$: Observable<IRocosCallerMessageResponseAck>;
|
39
|
+
};
|
40
|
+
protected createStream(): Promise<ICallerStream>;
|
21
41
|
protected getStream(config: IStreamConfig): ICallerStream;
|
22
42
|
}
|
@@ -1,26 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
const SubscriberStatusEnum_1 = require("../models/SubscriberStatusEnum");
|
11
|
-
const operators_1 = require("rxjs/operators");
|
12
|
-
class CallerService {
|
1
|
+
import { ResultStatus, RocosResponseLevel, } from '../models';
|
2
|
+
import { Subject, map, mergeMap, take, takeUntil } from 'rxjs';
|
3
|
+
import { filter, finalize } from 'rxjs/operators';
|
4
|
+
import { getResponses, handleChunkedMessages } from '../helpers/callerMessageHelpers';
|
5
|
+
import { BaseStreamService } from './BaseStreamService';
|
6
|
+
import { CallerStream } from '../api/streams/caller/CallerStream';
|
7
|
+
import { IDENTIFIER_NAME_CALLER } from '../constants/identifier';
|
8
|
+
import { v4 } from 'uuid';
|
9
|
+
export class CallerService extends BaseStreamService {
|
13
10
|
constructor(config) {
|
14
|
-
|
15
|
-
this.status$ = new rxjs_1.Subject();
|
16
|
-
this.config = config;
|
17
|
-
this.logger = RocosLogger_1.RocosLogger.getInstance(`CallerService(${this.config.url})`);
|
18
|
-
}
|
19
|
-
getStatus() {
|
20
|
-
return this.status;
|
11
|
+
super('CallerService', config);
|
21
12
|
}
|
22
13
|
invokeRequest(params) {
|
23
|
-
const subject = new
|
14
|
+
const subject = new Subject();
|
24
15
|
let subscription;
|
25
16
|
this.createStream()
|
26
17
|
.then((stream) => {
|
@@ -30,12 +21,12 @@ class CallerService {
|
|
30
21
|
this.logger.info('invokeRequest error', e);
|
31
22
|
subject.error(e);
|
32
23
|
});
|
33
|
-
return subject.asObservable().pipe(
|
34
|
-
subscription
|
24
|
+
return subject.asObservable().pipe(finalize(() => {
|
25
|
+
subscription?.unsubscribe();
|
35
26
|
}));
|
36
27
|
}
|
37
28
|
cancelRequest(params) {
|
38
|
-
const subject = new
|
29
|
+
const subject = new Subject();
|
39
30
|
let subscription;
|
40
31
|
this.createStream()
|
41
32
|
.then((stream) => {
|
@@ -45,52 +36,82 @@ class CallerService {
|
|
45
36
|
this.logger.info('invokeRequest error', e);
|
46
37
|
subject.error(e);
|
47
38
|
});
|
48
|
-
return subject.asObservable().pipe(
|
49
|
-
subscription
|
39
|
+
return subject.asObservable().pipe(finalize(() => {
|
40
|
+
subscription?.unsubscribe();
|
50
41
|
}));
|
51
42
|
}
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
43
|
+
/** Call a service and return the response(s).
|
44
|
+
*
|
45
|
+
* It will complete once a result message is received with a `COMPLETE_SUCCESS` status,
|
46
|
+
* or throw an error if the status is not `COMPLETE_SUCCESS`.
|
47
|
+
*
|
48
|
+
* This is a high level method that wraps the lower level `invokeRequest` method.
|
49
|
+
*
|
50
|
+
* @see invokeRequest
|
51
|
+
* @see call
|
52
|
+
*/
|
53
|
+
callRaw(params) {
|
54
|
+
const [component, ...topicItems] = params.source.replace(/^\/+/, '').split('/');
|
55
|
+
const topic = topicItems.join('/');
|
56
|
+
const payloadString = JSON.stringify(params.payload ?? {});
|
57
|
+
const source$ = this.invokeRequest({
|
58
|
+
uid: params.options?.uid ?? v4(),
|
59
|
+
projectId: params.projectId,
|
60
|
+
callsign: params.callsign,
|
61
|
+
subSystem: '',
|
62
|
+
component,
|
63
|
+
topic,
|
64
|
+
responseLevelNumber: RocosResponseLevel.ALL,
|
65
|
+
payload: payloadString,
|
66
|
+
query: params.options?.query,
|
67
|
+
}).pipe(mergeMap(getResponses), handleChunkedMessages());
|
68
|
+
const result$ = source$.pipe(filter((x) => x.result !== undefined), map((x) => x.result), take(1));
|
69
|
+
const resultNotifier$ = result$.pipe(map((x) => {
|
70
|
+
if (x.status !== ResultStatus.COMPLETE_SUCCESS)
|
71
|
+
throw x;
|
72
|
+
return x;
|
73
|
+
}));
|
74
|
+
const return$ = source$.pipe(filter((x) => x.return !== undefined), map((x) => x.return), takeUntil(resultNotifier$));
|
75
|
+
const ack$ = source$.pipe(filter((x) => x.ack !== undefined), map((x) => x.ack), takeUntil(resultNotifier$));
|
76
|
+
return {
|
77
|
+
return$,
|
78
|
+
result$,
|
79
|
+
ack$,
|
80
|
+
};
|
75
81
|
}
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
82
|
+
/** Call a service and return the response(s) as UTF-8 encoded JSON.
|
83
|
+
*
|
84
|
+
* It will complete once a result message is received with a `COMPLETE_SUCCESS` status,
|
85
|
+
* or throw an error if the status is not `COMPLETE_SUCCESS`.
|
86
|
+
*
|
87
|
+
* This is a high level method that wraps the lower level `invokeRequest` method.
|
88
|
+
*
|
89
|
+
* Equivalent to calling `callRaw` and then parsing the return payload as UTF-8 encoded JSON.
|
90
|
+
*
|
91
|
+
* @see callRaw
|
92
|
+
* @see invokeRequest
|
93
|
+
*/
|
94
|
+
call(params) {
|
95
|
+
const stream = this.callRaw(params);
|
96
|
+
return {
|
97
|
+
...stream,
|
98
|
+
return$: stream.return$.pipe(map((x) => {
|
99
|
+
const decoded = new TextDecoder().decode(x.payload);
|
100
|
+
return JSON.parse(decoded);
|
101
|
+
})),
|
102
|
+
};
|
103
|
+
}
|
104
|
+
async createStream() {
|
105
|
+
return (await this.createStreamFromConfig(IDENTIFIER_NAME_CALLER, {
|
106
|
+
url: this.config.url,
|
107
|
+
token: this.config.token,
|
108
|
+
scope: 'default',
|
109
|
+
options: this.config.options,
|
110
|
+
port: this.config.port,
|
111
|
+
insecure: this.config.insecure,
|
112
|
+
})).stream;
|
91
113
|
}
|
92
114
|
getStream(config) {
|
93
|
-
return new
|
115
|
+
return new CallerStream(config);
|
94
116
|
}
|
95
117
|
}
|
96
|
-
exports.CallerService = CallerService;
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|