@dronedeploy/rocos-js-sdk 2.6.1 → 3.0.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const RocosLogger_1 = require("../logger/RocosLogger");
|
|
8
|
-
const formatServiceUrl_1 = require("../helpers/formatServiceUrl");
|
|
9
|
-
class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
1
|
+
import { API_PROJECT_ASSET_PATH_URL, API_PROJECT_ASSET_PROFILES_SYNC_DEFINITION_PATH_URL, API_PROJECT_ASSET_ROBOTS_SYNC_DEFINITION_PATH_URL, API_PROJECT_ASSET_URL, API_PROJECT_FLOW_ASSET_PATH_URL, API_PROJECT_MAPPED_ASSETS_PATH_URL, API_PROJECT_MISSION_ASSETS_PATH_URL, API_PROJECT_MISSION_ASSET_PATH_URL, API_PROJECT_ROBOT_ASSET_PATH_URL, } from '../constants/api';
|
|
2
|
+
import { RocosError, errorCodes } from '../models/RocosError';
|
|
3
|
+
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
4
|
+
import { RocosLogger } from '../logger/RocosLogger';
|
|
5
|
+
import { formatServiceUrl } from '../helpers/formatServiceUrl';
|
|
6
|
+
export class AssetStorageService extends BaseServiceAbstract {
|
|
10
7
|
constructor(config) {
|
|
11
8
|
super(config);
|
|
12
|
-
this.logger =
|
|
9
|
+
this.logger = RocosLogger.getInstance(`AssetStorageService(${this.config.url})`);
|
|
13
10
|
}
|
|
14
11
|
getError(e) {
|
|
15
|
-
return new
|
|
12
|
+
return new RocosError(e, errorCodes.ASSET_STORAGE_SERVICE_ERROR);
|
|
16
13
|
}
|
|
17
14
|
getStatus() {
|
|
18
15
|
return true;
|
|
@@ -28,7 +25,7 @@ class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
28
25
|
async create(projectId, filePath, file) {
|
|
29
26
|
const formData = new FormData();
|
|
30
27
|
formData.append('file', file);
|
|
31
|
-
return this.callPut(
|
|
28
|
+
return this.callPut(formatServiceUrl(API_PROJECT_ASSET_PATH_URL, { url: this.config.url, projectId, filePath }, this.config.insecure), formData, `Failed to create asset for ${projectId}, filePath ${filePath}.`);
|
|
32
29
|
}
|
|
33
30
|
/**
|
|
34
31
|
* Update a project asset
|
|
@@ -41,7 +38,7 @@ class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
41
38
|
async update(projectId, filePath, file) {
|
|
42
39
|
const formData = new FormData();
|
|
43
40
|
formData.append('file', file);
|
|
44
|
-
return this.callPost(
|
|
41
|
+
return this.callPost(formatServiceUrl(API_PROJECT_ASSET_PATH_URL, { url: this.config.url, projectId, filePath }, this.config.insecure), formData, `Failed to update asset for ${projectId}, filePath ${filePath}.`);
|
|
45
42
|
}
|
|
46
43
|
/**
|
|
47
44
|
* Delete a project asset
|
|
@@ -51,7 +48,7 @@ class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
51
48
|
*/
|
|
52
49
|
// TODO: map the response object
|
|
53
50
|
async delete(projectId, filePath) {
|
|
54
|
-
return this.callDelete(
|
|
51
|
+
return this.callDelete(formatServiceUrl(API_PROJECT_ASSET_PATH_URL, { url: this.config.url, projectId, filePath }, this.config.insecure), `Failed to delete asset for ${projectId}, filePath ${filePath}.`);
|
|
55
52
|
}
|
|
56
53
|
/**
|
|
57
54
|
* Lost assets for a project or project file path
|
|
@@ -63,10 +60,10 @@ class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
63
60
|
async list(projectId, filePath) {
|
|
64
61
|
let url = '';
|
|
65
62
|
if (filePath) {
|
|
66
|
-
url =
|
|
63
|
+
url = formatServiceUrl(API_PROJECT_ASSET_PATH_URL, { url: this.config.url, projectId, filePath }, this.config.insecure);
|
|
67
64
|
}
|
|
68
65
|
else {
|
|
69
|
-
url =
|
|
66
|
+
url = formatServiceUrl(API_PROJECT_ASSET_URL, { url: this.config.url, projectId }, this.config.insecure);
|
|
70
67
|
}
|
|
71
68
|
return this.callGet(url, `Failed to get asset list for ${projectId}, filePath ${filePath}.`);
|
|
72
69
|
}
|
|
@@ -78,7 +75,7 @@ class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
78
75
|
*/
|
|
79
76
|
// TODO: map the response object
|
|
80
77
|
async getAsset(projectId, filePath) {
|
|
81
|
-
return this.callGet(
|
|
78
|
+
return this.callGet(formatServiceUrl(API_PROJECT_ASSET_PATH_URL, { url: this.config.url, projectId, filePath }, this.config.insecure), `Failed to get asset for ${projectId}, filePath ${filePath}.`, undefined, {
|
|
82
79
|
responseType: 'blob',
|
|
83
80
|
});
|
|
84
81
|
}
|
|
@@ -91,7 +88,7 @@ class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
91
88
|
* @param signedURL
|
|
92
89
|
*/
|
|
93
90
|
async listRobotAssets(projectId, callsign, parent = '/', signedURL = false) {
|
|
94
|
-
return this.callGet(
|
|
91
|
+
return this.callGet(formatServiceUrl(API_PROJECT_ROBOT_ASSET_PATH_URL, { url: this.config.url, projectId, callsign }, this.config.insecure), `Failed to get asset for ${projectId}, callsign ${callsign}.`, { parent, signedURL });
|
|
95
92
|
}
|
|
96
93
|
/**
|
|
97
94
|
* List assets for a flow
|
|
@@ -103,7 +100,40 @@ class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
103
100
|
* @param signedURL
|
|
104
101
|
*/
|
|
105
102
|
async listFlowAssets(projectId, flowId, flowInstance, parent = '/', signedURL = false) {
|
|
106
|
-
return this.callGet(
|
|
103
|
+
return this.callGet(formatServiceUrl(API_PROJECT_FLOW_ASSET_PATH_URL, { url: this.config.url, projectId, flowId, flowInstance }, this.config.insecure), `Failed to get asset for ${projectId}, flow ${flowId}, flow instance ${flowInstance}.`, { parent, signedURL });
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* List assets for a mission
|
|
107
|
+
*
|
|
108
|
+
* @param projectId
|
|
109
|
+
* @param assetIdList
|
|
110
|
+
*/
|
|
111
|
+
async listMissionAssets(projectId, assetIdList) {
|
|
112
|
+
const searchParams = new URLSearchParams();
|
|
113
|
+
assetIdList.forEach((assetId) => searchParams.append('assetID', assetId));
|
|
114
|
+
return this.callGet(formatServiceUrl(API_PROJECT_MISSION_ASSETS_PATH_URL, { url: this.config.url, projectId }, this.config.insecure), `Failed to get asset for ${projectId}, assetIdList ${assetIdList}.`, searchParams);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get a single asset for a mission
|
|
118
|
+
*
|
|
119
|
+
* @param projectId
|
|
120
|
+
* @param assetId
|
|
121
|
+
*/
|
|
122
|
+
async getMissionAsset(projectId, assetId) {
|
|
123
|
+
return this.callGet(formatServiceUrl(API_PROJECT_MISSION_ASSET_PATH_URL, { url: this.config.url, projectId, assetId }, this.config.insecure), `Failed to get asset for ${projectId}, dataUUID ${assetId}.`, undefined);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Lists mapped assets
|
|
127
|
+
*
|
|
128
|
+
* @param projectId
|
|
129
|
+
* @param start Start date for the query (optional)
|
|
130
|
+
* @param end End date for the query (optional)
|
|
131
|
+
*/
|
|
132
|
+
async listMappedAssets(projectId, start, end) {
|
|
133
|
+
return this.callGet(formatServiceUrl(API_PROJECT_MAPPED_ASSETS_PATH_URL, { url: this.config.url, projectId }, this.config.insecure), `Failed to list mapped assets for ${projectId}.`, {
|
|
134
|
+
start: start?.toISOString() ?? '',
|
|
135
|
+
end: end?.toISOString() ?? '',
|
|
136
|
+
});
|
|
107
137
|
}
|
|
108
138
|
/**
|
|
109
139
|
* Set Robot Sync Definitions
|
|
@@ -117,7 +147,7 @@ class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
117
147
|
'content-type': 'application/json',
|
|
118
148
|
},
|
|
119
149
|
};
|
|
120
|
-
return this.callPost(
|
|
150
|
+
return this.callPost(formatServiceUrl(API_PROJECT_ASSET_ROBOTS_SYNC_DEFINITION_PATH_URL, { url: this.config.url, projectId, callsign }, this.config.insecure), definition, `Failed to update asset for ${projectId}, callsign ${callsign}.`, httpOptions);
|
|
121
151
|
}
|
|
122
152
|
/**
|
|
123
153
|
* Get Robot Sync Definitions
|
|
@@ -125,7 +155,7 @@ class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
125
155
|
* @param callsign
|
|
126
156
|
*/
|
|
127
157
|
getRobotSyncDefinitions(projectId, callsign) {
|
|
128
|
-
return this.callGet(
|
|
158
|
+
return this.callGet(formatServiceUrl(API_PROJECT_ASSET_ROBOTS_SYNC_DEFINITION_PATH_URL, { url: this.config.url, projectId, callsign }, this.config.insecure), `Failed to get asset for ${projectId}, callsign ${callsign}.`, undefined);
|
|
129
159
|
}
|
|
130
160
|
/**
|
|
131
161
|
* Set Profile Sync Definitions
|
|
@@ -139,7 +169,7 @@ class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
139
169
|
'content-type': 'application/json',
|
|
140
170
|
},
|
|
141
171
|
};
|
|
142
|
-
return this.callPost(
|
|
172
|
+
return this.callPost(formatServiceUrl(API_PROJECT_ASSET_PROFILES_SYNC_DEFINITION_PATH_URL, { url: this.config.url, projectId, profileId }, this.config.insecure), definition, `Failed to update sync-definition for ${projectId}, callsign ${profileId}.`, httpOptions);
|
|
143
173
|
}
|
|
144
174
|
/**
|
|
145
175
|
* Get Profile Sync Definitions
|
|
@@ -147,7 +177,6 @@ class AssetStorageService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
147
177
|
* @param profileId
|
|
148
178
|
*/
|
|
149
179
|
getProfileSyncDefinition(projectId, profileId) {
|
|
150
|
-
return this.callGet(
|
|
180
|
+
return this.callGet(formatServiceUrl(API_PROJECT_ASSET_PROFILES_SYNC_DEFINITION_PATH_URL, { url: this.config.url, projectId, profileId }, this.config.insecure), `Failed to get sync-definition for ${projectId}, callsign ${profileId}.`, undefined);
|
|
151
181
|
}
|
|
152
182
|
}
|
|
153
|
-
exports.AssetStorageService = AssetStorageService;
|
|
@@ -1,61 +1,93 @@
|
|
|
1
|
-
import { RocosError } from '../models
|
|
1
|
+
import { IBaseService, IRocosSDKConfig, RocosError, Token } from '../models';
|
|
2
2
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
3
|
-
import { IBaseService } from '../models/IBaseService';
|
|
4
|
-
import { IRocosSDKConfig } from '../models/IRocosSDKConfig';
|
|
5
|
-
import { ISignupParams } from '../models/ISignupParams';
|
|
6
|
-
import { Token } from '../models/Token';
|
|
7
3
|
export declare class AuthService extends BaseServiceAbstract implements IBaseService {
|
|
8
4
|
protected config: IRocosSDKConfig;
|
|
9
5
|
private token?;
|
|
6
|
+
private tokenRefreshTimeoutId?;
|
|
10
7
|
constructor(config: IRocosSDKConfig);
|
|
11
8
|
getStatus(): boolean;
|
|
9
|
+
teardown(): void;
|
|
12
10
|
protected getError(e: RocosError): RocosError;
|
|
13
11
|
/**
|
|
14
12
|
* Set the Auth token
|
|
15
13
|
* @param value - Token value
|
|
16
|
-
* @param expiresIn - Token expiry time
|
|
17
14
|
*/
|
|
18
|
-
setToken(value: string
|
|
15
|
+
setToken(value: string | Token): void;
|
|
19
16
|
/**
|
|
20
|
-
*
|
|
17
|
+
* @deprecated `expiresIn` is now derived from the token. Use `setToken(value: string | Token)` instead
|
|
18
|
+
*/
|
|
19
|
+
setToken(value: string | Token, expiresIn: number): void;
|
|
20
|
+
/**
|
|
21
|
+
* Clear token
|
|
21
22
|
*/
|
|
22
23
|
clearToken(): void;
|
|
23
24
|
/**
|
|
24
25
|
* Get the authentication token for application Id and application Key.
|
|
25
26
|
*/
|
|
26
27
|
getAppToken(): Promise<Token>;
|
|
27
|
-
/**
|
|
28
|
-
* Get the authentication token for logged in username and password
|
|
29
|
-
*/
|
|
30
|
-
getUserToken(): Promise<Token>;
|
|
31
28
|
/**
|
|
32
29
|
* Get new auth token for a user
|
|
33
30
|
* @desc This only works for user auth tokens, not appId auth tokens
|
|
34
31
|
*/
|
|
35
32
|
getNewUserToken(): Promise<Token>;
|
|
33
|
+
/**
|
|
34
|
+
* Get new auth token for a user.
|
|
35
|
+
*
|
|
36
|
+
* Uses the OTP flow to exchange an external token for a user token.
|
|
37
|
+
*
|
|
38
|
+
* @desc This only works for user auth tokens, not appId auth tokens
|
|
39
|
+
*/
|
|
40
|
+
private getNewUserTokenFromExternalToken;
|
|
36
41
|
/**
|
|
37
42
|
* Get the authentication token
|
|
43
|
+
*
|
|
44
|
+
* This will return the current token if it is not expired, otherwise it will get a new token based on your config.
|
|
38
45
|
*/
|
|
39
46
|
getToken(): Promise<Token>;
|
|
40
47
|
/**
|
|
41
|
-
*
|
|
48
|
+
* Refresh the authentication token
|
|
49
|
+
*
|
|
50
|
+
* This only works for user auth tokens, not appId auth tokens.
|
|
42
51
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* @
|
|
46
|
-
* @param
|
|
52
|
+
* The new token is not automatically set as the current token. Use `setToken` to set the new token.
|
|
53
|
+
*
|
|
54
|
+
* @see setToken
|
|
55
|
+
* @param token the token to refresh. If not provided, the current token will be used.
|
|
47
56
|
*/
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
57
|
+
refreshToken(token?: Token): Promise<Token>;
|
|
58
|
+
/** Refresh the token if it is expired or will expire in the next `minutes` minutes
|
|
59
|
+
*
|
|
60
|
+
* This only works for user auth tokens, not appId auth tokens.
|
|
61
|
+
*
|
|
62
|
+
* If you want to refresh the token regardless of the expiry time, use `refreshToken`.
|
|
63
|
+
*
|
|
64
|
+
* @param minutes the number of minutes before the token expires to refresh the token
|
|
65
|
+
* @see refreshToken
|
|
53
66
|
*/
|
|
54
|
-
|
|
67
|
+
refreshTokenIfExpired(minutes: number): Promise<void>;
|
|
68
|
+
/** Start a 5-minute loop to check if the token needs to be refreshed
|
|
69
|
+
*
|
|
70
|
+
* This is useful when you are using GRPC services (i.e. telemetry) which does not automatically refresh the token.
|
|
71
|
+
* It is not required when using REST services as the token is refreshed automatically.
|
|
72
|
+
*
|
|
73
|
+
* The loop will stop when `stopTokenRefreshChecker` is called.
|
|
74
|
+
*
|
|
75
|
+
* @see stopTokenRefreshChecker
|
|
76
|
+
*/
|
|
77
|
+
startTokenRefreshChecker(): void;
|
|
55
78
|
/**
|
|
56
|
-
*
|
|
57
|
-
* @
|
|
58
|
-
|
|
79
|
+
* Stop the token refresh checker
|
|
80
|
+
* @see startTokenRefreshChecker
|
|
81
|
+
*/
|
|
82
|
+
stopTokenRefreshChecker(): void;
|
|
83
|
+
/** Check if the token refresh checker is running
|
|
84
|
+
*
|
|
85
|
+
* @see startTokenRefreshChecker
|
|
86
|
+
* @see stopTokenRefreshChecker
|
|
87
|
+
* @returns true if the token refresh checker is running
|
|
59
88
|
*/
|
|
60
|
-
|
|
89
|
+
isTokenRefreshCheckerRunning(): boolean;
|
|
90
|
+
/** Checks if the token is valid for use with the API */
|
|
91
|
+
isTokenValid(token: Token): boolean;
|
|
92
|
+
private isTokenIssuedByApp;
|
|
61
93
|
}
|
package/services/AuthService.js
CHANGED
|
@@ -1,39 +1,48 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const Token_1 = require("../models/Token");
|
|
10
|
-
const formatServiceUrl_1 = require("../helpers/formatServiceUrl");
|
|
11
|
-
class AuthService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
1
|
+
import { API_APPLICATION_AUTH_URL, API_OTP_AUTH_URL, API_OTP_URL, API_USER_TOKEN_URL } from '../constants/api';
|
|
2
|
+
import { RocosError, Token, errorCodes } from '../models';
|
|
3
|
+
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
4
|
+
import { RocosLogger } from '../logger/RocosLogger';
|
|
5
|
+
import { RocosStore } from '../store/RocosStore';
|
|
6
|
+
import { formatServiceUrl } from '../helpers/formatServiceUrl';
|
|
7
|
+
import { issuer } from '../constants/auth';
|
|
8
|
+
export class AuthService extends BaseServiceAbstract {
|
|
12
9
|
constructor(config) {
|
|
13
10
|
super(config);
|
|
14
11
|
this.config = config;
|
|
15
12
|
this.config = config;
|
|
16
|
-
this.logger =
|
|
13
|
+
this.logger = RocosLogger.getInstance(`AuthService(${this.config.url})`);
|
|
14
|
+
if (this.config.token) {
|
|
15
|
+
this.setToken(this.config.token);
|
|
16
|
+
}
|
|
17
17
|
}
|
|
18
18
|
getStatus() {
|
|
19
19
|
return true;
|
|
20
20
|
}
|
|
21
|
+
teardown() {
|
|
22
|
+
if (this.isTokenRefreshCheckerRunning()) {
|
|
23
|
+
this.logger.debug('Stopping token refresh checker');
|
|
24
|
+
this.stopTokenRefreshChecker();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
21
27
|
getError(e) {
|
|
22
|
-
return new
|
|
28
|
+
return new RocosError(e, errorCodes.AUTH_ERROR, e?.statusCode);
|
|
23
29
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Set the Auth token
|
|
26
|
-
* @param value - Token value
|
|
27
|
-
* @param expiresIn - Token expiry time
|
|
28
|
-
*/
|
|
29
30
|
setToken(value, expiresIn) {
|
|
30
|
-
|
|
31
|
+
if (expiresIn !== undefined) {
|
|
32
|
+
this.logger.warn('setToken(value, expiresIn) is deprecated. Use setToken(value) instead');
|
|
33
|
+
}
|
|
34
|
+
if (typeof value === 'string') {
|
|
35
|
+
this.token = new Token(value);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.token = value;
|
|
39
|
+
}
|
|
31
40
|
this.config.token = this.token.value;
|
|
32
41
|
// output a message for token change
|
|
33
|
-
|
|
42
|
+
RocosStore.getChangeSubject().next({ type: 'token', url: this.config.url, data: this.token.value });
|
|
34
43
|
}
|
|
35
44
|
/**
|
|
36
|
-
*
|
|
45
|
+
* Clear token
|
|
37
46
|
*/
|
|
38
47
|
clearToken() {
|
|
39
48
|
this.token = undefined;
|
|
@@ -44,111 +53,183 @@ class AuthService extends BaseServiceAbstract_1.BaseServiceAbstract {
|
|
|
44
53
|
*/
|
|
45
54
|
async getAppToken() {
|
|
46
55
|
if (!('appId' in this.config) || !this.config.appId || !('appKey' in this.config) || !this.config.appKey) {
|
|
47
|
-
throw new
|
|
56
|
+
throw new RocosError('Can not get app token, missing appId and appKey', errorCodes.AUTH_ERROR);
|
|
48
57
|
}
|
|
49
|
-
const res = await this.callPost(
|
|
58
|
+
const res = await this.callPost(formatServiceUrl(API_APPLICATION_AUTH_URL, { url: this.config.url }, this.config.insecure), {
|
|
50
59
|
applicationId: this.config.appId,
|
|
51
60
|
secret: this.config.appKey,
|
|
52
61
|
}, 'Failed to get users auth token.', { public: true });
|
|
53
|
-
return new
|
|
62
|
+
return new Token(res.token);
|
|
54
63
|
}
|
|
55
64
|
/**
|
|
56
|
-
* Get
|
|
65
|
+
* Get new auth token for a user
|
|
66
|
+
* @desc This only works for user auth tokens, not appId auth tokens
|
|
57
67
|
*/
|
|
58
|
-
async
|
|
59
|
-
if (!('
|
|
60
|
-
throw new
|
|
68
|
+
async getNewUserToken() {
|
|
69
|
+
if (!('token' in this.config) || !this.config.token) {
|
|
70
|
+
throw new RocosError('Can not get new app token, missing token', errorCodes.AUTH_ERROR);
|
|
61
71
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return new Token_1.Token({ value: token, expiresIn });
|
|
72
|
+
const token = new Token(this.config.token, this.config.refreshToken);
|
|
73
|
+
if (token?.isExpired()) {
|
|
74
|
+
throw new RocosError('Token expired', errorCodes.AUTH_ERROR);
|
|
66
75
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
this.
|
|
70
|
-
e.message = message;
|
|
71
|
-
throw new RocosError_1.RocosError(e, RocosError_1.errorCodes.AUTH_ERROR);
|
|
76
|
+
if (!this.isTokenIssuedByApp(token)) {
|
|
77
|
+
this.logger.info('Token is not issued by app. Getting new token from DD token.');
|
|
78
|
+
return this.getNewUserTokenFromExternalToken();
|
|
72
79
|
}
|
|
80
|
+
return this.refreshToken(token);
|
|
73
81
|
}
|
|
74
82
|
/**
|
|
75
|
-
* Get new auth token for a user
|
|
83
|
+
* Get new auth token for a user.
|
|
84
|
+
*
|
|
85
|
+
* Uses the OTP flow to exchange an external token for a user token.
|
|
86
|
+
*
|
|
76
87
|
* @desc This only works for user auth tokens, not appId auth tokens
|
|
77
88
|
*/
|
|
78
|
-
async
|
|
79
|
-
if (!('token' in this.config)) {
|
|
80
|
-
throw new
|
|
89
|
+
async getNewUserTokenFromExternalToken() {
|
|
90
|
+
if (!('token' in this.config) || !this.config.token) {
|
|
91
|
+
throw new RocosError('Can not get new token, missing token', errorCodes.AUTH_ERROR);
|
|
81
92
|
}
|
|
82
|
-
const
|
|
83
|
-
|
|
93
|
+
const ddToken = new Token(this.config.token);
|
|
94
|
+
const { otp } = await this.callPost(formatServiceUrl(API_OTP_URL, { url: this.config.url }, this.config.insecure), undefined, 'Failed to get one time password.', { public: true, headers: { Authorization: ddToken.bearer } });
|
|
95
|
+
const { token, refreshToken } = await this.callPost(formatServiceUrl(API_OTP_AUTH_URL, { url: this.config.url }, this.config.insecure), { otp }, 'Failed to get users auth token.', { public: true });
|
|
96
|
+
return new Token(token, refreshToken);
|
|
84
97
|
}
|
|
85
98
|
/**
|
|
86
99
|
* Get the authentication token
|
|
100
|
+
*
|
|
101
|
+
* This will return the current token if it is not expired, otherwise it will get a new token based on your config.
|
|
87
102
|
*/
|
|
88
103
|
async getToken() {
|
|
89
|
-
if (this.token &&
|
|
104
|
+
if (this.token && this.isTokenValid(this.token)) {
|
|
105
|
+
if (this.token.isExpiredIn(15, 'minutes')) {
|
|
106
|
+
this.logger.info('Token expires within 15 minutes. Refreshing.');
|
|
107
|
+
const newToken = await this.refreshToken();
|
|
108
|
+
this.setToken(newToken);
|
|
109
|
+
return newToken;
|
|
110
|
+
}
|
|
90
111
|
return this.token;
|
|
91
112
|
}
|
|
113
|
+
let token;
|
|
92
114
|
try {
|
|
93
115
|
if ('appId' in this.config && 'appKey' in this.config) {
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
else if ('email' in this.config && 'password' in this.config) {
|
|
97
|
-
this.token = await this.getUserToken();
|
|
116
|
+
token = await this.getAppToken();
|
|
98
117
|
}
|
|
99
118
|
else if ('token' in this.config) {
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
throw new Error('Config invalid');
|
|
119
|
+
token = await this.getNewUserToken();
|
|
104
120
|
}
|
|
105
|
-
this.config.token = this.token.value;
|
|
106
|
-
// output a message for token change
|
|
107
|
-
RocosStore_1.RocosStore.getChangeSubject().next({ type: 'token', url: this.config.url, data: this.token.value });
|
|
108
|
-
return this.token;
|
|
109
121
|
}
|
|
110
122
|
catch (e) {
|
|
111
123
|
const message = 'Failed to get auth token.';
|
|
112
124
|
this.logger.error(message, e);
|
|
113
|
-
e
|
|
114
|
-
|
|
125
|
+
if (e instanceof Error) {
|
|
126
|
+
e.message = message;
|
|
127
|
+
throw new RocosError(e, errorCodes.AUTH_ERROR);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
throw new RocosError(message, errorCodes.AUTH_ERROR);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (!token) {
|
|
134
|
+
const message = 'Failed to get auth token. Config invalid.';
|
|
135
|
+
this.logger.error(message);
|
|
136
|
+
throw new RocosError(message, errorCodes.AUTH_ERROR);
|
|
115
137
|
}
|
|
138
|
+
this.setToken(token);
|
|
139
|
+
return token;
|
|
116
140
|
}
|
|
117
141
|
/**
|
|
118
|
-
*
|
|
142
|
+
* Refresh the authentication token
|
|
143
|
+
*
|
|
144
|
+
* This only works for user auth tokens, not appId auth tokens.
|
|
119
145
|
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
* @
|
|
123
|
-
* @param
|
|
146
|
+
* The new token is not automatically set as the current token. Use `setToken` to set the new token.
|
|
147
|
+
*
|
|
148
|
+
* @see setToken
|
|
149
|
+
* @param token the token to refresh. If not provided, the current token will be used.
|
|
124
150
|
*/
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
151
|
+
async refreshToken(token) {
|
|
152
|
+
const tokenToRefresh = token ?? this.token;
|
|
153
|
+
if (!tokenToRefresh) {
|
|
154
|
+
throw new RocosError('No token to refresh', errorCodes.AUTH_ERROR);
|
|
155
|
+
}
|
|
156
|
+
const res = await this.callGet(formatServiceUrl(API_USER_TOKEN_URL, { url: this.config.url }, this.config.insecure), 'Failed to get users auth token.', undefined, { public: true, headers: { Authorization: tokenToRefresh.bearer } });
|
|
157
|
+
return new Token(res.token, res.refreshToken);
|
|
132
158
|
}
|
|
133
|
-
/**
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
159
|
+
/** Refresh the token if it is expired or will expire in the next `minutes` minutes
|
|
160
|
+
*
|
|
161
|
+
* This only works for user auth tokens, not appId auth tokens.
|
|
162
|
+
*
|
|
163
|
+
* If you want to refresh the token regardless of the expiry time, use `refreshToken`.
|
|
164
|
+
*
|
|
165
|
+
* @param minutes the number of minutes before the token expires to refresh the token
|
|
166
|
+
* @see refreshToken
|
|
137
167
|
*/
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
168
|
+
async refreshTokenIfExpired(minutes) {
|
|
169
|
+
if (this.token?.isExpiredIn(minutes, 'minutes')) {
|
|
170
|
+
this.logger.info('Token expires in 15 minutes. Refreshing.');
|
|
171
|
+
const newToken = await this.refreshToken();
|
|
172
|
+
this.setToken(newToken);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/** Start a 5-minute loop to check if the token needs to be refreshed
|
|
176
|
+
*
|
|
177
|
+
* This is useful when you are using GRPC services (i.e. telemetry) which does not automatically refresh the token.
|
|
178
|
+
* It is not required when using REST services as the token is refreshed automatically.
|
|
179
|
+
*
|
|
180
|
+
* The loop will stop when `stopTokenRefreshChecker` is called.
|
|
181
|
+
*
|
|
182
|
+
* @see stopTokenRefreshChecker
|
|
183
|
+
*/
|
|
184
|
+
startTokenRefreshChecker() {
|
|
185
|
+
const maxInterval = 1000 * 60 * 10; // 10 minutes
|
|
186
|
+
const minInterval = 1000 * 60; // 1 minute
|
|
187
|
+
const threshold = 1000 * 60 * 15; // 15 minutes
|
|
188
|
+
if (this.isTokenRefreshCheckerRunning())
|
|
189
|
+
return;
|
|
190
|
+
if (!this.token)
|
|
191
|
+
throw new RocosError('No token to refresh', errorCodes.AUTH_ERROR);
|
|
192
|
+
if (!this.isTokenValid(this.token))
|
|
193
|
+
throw new RocosError('Token is not valid', errorCodes.AUTH_ERROR);
|
|
194
|
+
const loop = () => {
|
|
195
|
+
this.logger.debug('Checking scheduled token refresh');
|
|
196
|
+
this.refreshTokenIfExpired(15)
|
|
197
|
+
.catch((e) => {
|
|
198
|
+
this.logger.error('Failed to refresh token', e);
|
|
199
|
+
})
|
|
200
|
+
.finally(() => {
|
|
201
|
+
if (!this.token?.expires)
|
|
202
|
+
return;
|
|
203
|
+
// schedule next check
|
|
204
|
+
const timeTillThreshold = this.token.expires.getTime() - Date.now() - threshold;
|
|
205
|
+
const interval = Math.max(minInterval, Math.min(maxInterval, timeTillThreshold));
|
|
206
|
+
this.tokenRefreshTimeoutId = setTimeout(() => loop(), interval);
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
loop();
|
|
141
210
|
}
|
|
142
211
|
/**
|
|
143
|
-
*
|
|
144
|
-
* @
|
|
145
|
-
* @param model - Reset payload
|
|
212
|
+
* Stop the token refresh checker
|
|
213
|
+
* @see startTokenRefreshChecker
|
|
146
214
|
*/
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
215
|
+
stopTokenRefreshChecker() {
|
|
216
|
+
clearTimeout(this.tokenRefreshTimeoutId);
|
|
217
|
+
this.tokenRefreshTimeoutId = undefined;
|
|
218
|
+
}
|
|
219
|
+
/** Check if the token refresh checker is running
|
|
220
|
+
*
|
|
221
|
+
* @see startTokenRefreshChecker
|
|
222
|
+
* @see stopTokenRefreshChecker
|
|
223
|
+
* @returns true if the token refresh checker is running
|
|
224
|
+
*/
|
|
225
|
+
isTokenRefreshCheckerRunning() {
|
|
226
|
+
return this.tokenRefreshTimeoutId !== undefined;
|
|
227
|
+
}
|
|
228
|
+
/** Checks if the token is valid for use with the API */
|
|
229
|
+
isTokenValid(token) {
|
|
230
|
+
return !token.isExpired() && this.isTokenIssuedByApp(token);
|
|
231
|
+
}
|
|
232
|
+
isTokenIssuedByApp(token) {
|
|
233
|
+
return token.issuer === issuer;
|
|
152
234
|
}
|
|
153
235
|
}
|
|
154
|
-
exports.AuthService = AuthService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|