@dronedeploy/rocos-js-sdk 3.0.1-alpha.9 → 3.0.2
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/README.md +59 -29
- package/cjs/IRocosSDK.d.ts +4 -3
- package/cjs/RocosSDK.d.ts +19 -7
- package/cjs/RocosSDK.js +31 -10
- package/cjs/api/streams/caller/CallerStream.js +5 -2
- package/cjs/api/streams/caller/CallerStreamNode.js +2 -1
- package/cjs/api/streams/command/CommandStream.js +5 -2
- package/cjs/api/streams/command/CommandStreamNode.js +2 -1
- package/cjs/api/streams/control/ControlStream.js +5 -2
- package/cjs/api/streams/control/ControlStreamAbstract.d.ts +1 -1
- package/cjs/api/streams/control/ControlStreamNode.js +2 -1
- package/cjs/api/streams/fileAccessor/FileAccessorStream.js +4 -1
- package/cjs/api/streams/fileAccessor/FileAccessorStreamNode.js +3 -1
- package/cjs/api/streams/search/SearchStream.js +5 -2
- package/cjs/api/streams/search/SearchStreamNode.js +2 -1
- package/cjs/api/streams/telemetry/TelemetryStream.js +4 -1
- package/cjs/api/streams/telemetry/TelemetryStreamAbstract.d.ts +1 -1
- package/cjs/api/streams/telemetry/TelemetryStreamNode.js +2 -1
- package/cjs/api/streams/webRTCSignalling/WebRTCSignallingStream.js +5 -2
- package/cjs/constants/api.d.ts +31 -15
- package/cjs/constants/api.js +35 -18
- package/cjs/helpers/cleanObject.js +4 -1
- package/cjs/helpers/getUniqueConfigKey.d.ts +6 -2
- package/cjs/helpers/getUniqueConfigKey.js +7 -2
- package/cjs/helpers/index.d.ts +1 -0
- package/cjs/helpers/index.js +1 -0
- package/cjs/helpers/kscript/Context.d.ts +34 -0
- package/cjs/helpers/kscript/Context.js +52 -0
- package/cjs/helpers/kscript/index.d.ts +1 -0
- package/cjs/helpers/kscript/index.js +27 -0
- package/cjs/helpers/kscript/kscript.d.ts +6 -0
- package/cjs/helpers/kscript/kscript.js +115 -0
- package/cjs/helpers/kscript/nodes/Identifier.d.ts +12 -0
- package/cjs/helpers/kscript/nodes/Identifier.js +20 -0
- package/cjs/helpers/kscript/nodes/Literal.d.ts +11 -0
- package/cjs/helpers/kscript/nodes/Literal.js +22 -0
- package/cjs/helpers/kscript/nodes/Node.d.ts +9 -0
- package/cjs/helpers/kscript/nodes/Node.js +15 -0
- package/cjs/helpers/kscript/nodes/Program.d.ts +11 -0
- package/cjs/helpers/kscript/nodes/Program.js +24 -0
- package/cjs/helpers/kscript/nodes/TemplateLiteral.d.ts +23 -0
- package/cjs/helpers/kscript/nodes/TemplateLiteral.js +35 -0
- package/cjs/helpers/kscript/nodes/expressions/ArrayExpression.d.ts +7 -0
- package/cjs/helpers/kscript/nodes/expressions/ArrayExpression.js +31 -0
- package/cjs/helpers/kscript/nodes/expressions/ArrowFunctionExpression.d.ts +14 -0
- package/cjs/helpers/kscript/nodes/expressions/ArrowFunctionExpression.js +40 -0
- package/cjs/helpers/kscript/nodes/expressions/BinaryExpression.d.ts +16 -0
- package/cjs/helpers/kscript/nodes/expressions/BinaryExpression.js +104 -0
- package/cjs/helpers/kscript/nodes/expressions/CallExpression.d.ts +8 -0
- package/cjs/helpers/kscript/nodes/expressions/CallExpression.js +38 -0
- package/cjs/helpers/kscript/nodes/expressions/ChainExpression.d.ts +16 -0
- package/cjs/helpers/kscript/nodes/expressions/ChainExpression.js +25 -0
- package/cjs/helpers/kscript/nodes/expressions/ConditionalExpression.d.ts +14 -0
- package/cjs/helpers/kscript/nodes/expressions/ConditionalExpression.js +30 -0
- package/cjs/helpers/kscript/nodes/expressions/ExpressionStatement.d.ts +7 -0
- package/cjs/helpers/kscript/nodes/expressions/ExpressionStatement.js +18 -0
- package/cjs/helpers/kscript/nodes/expressions/LogicalExpression.d.ts +10 -0
- package/cjs/helpers/kscript/nodes/expressions/LogicalExpression.js +47 -0
- package/cjs/helpers/kscript/nodes/expressions/MemberExpression.d.ts +44 -0
- package/cjs/helpers/kscript/nodes/expressions/MemberExpression.js +98 -0
- package/cjs/helpers/kscript/nodes/expressions/ObjectExpression.d.ts +11 -0
- package/cjs/helpers/kscript/nodes/expressions/ObjectExpression.js +59 -0
- package/cjs/helpers/kscript/nodes/expressions/UnaryExpression.d.ts +12 -0
- package/cjs/helpers/kscript/nodes/expressions/UnaryExpression.js +44 -0
- package/cjs/helpers/kscript/nodes/expressions/index.d.ts +11 -0
- package/cjs/helpers/kscript/nodes/expressions/index.js +28 -0
- package/cjs/helpers/kscript/nodes/index.d.ts +4 -0
- package/cjs/helpers/kscript/nodes/index.js +10 -0
- package/cjs/helpers/kscript/nodes/nodeTypes.d.ts +33 -0
- package/cjs/helpers/kscript/nodes/nodeTypes.js +29 -0
- package/cjs/helpers/kscript/utils.d.ts +4 -0
- package/cjs/helpers/kscript/utils.js +15 -0
- package/cjs/helpers/websandbox/connection.d.ts +2 -1
- package/cjs/helpers/websandbox/connection.js +6 -5
- package/cjs/helpers/websandbox/frame/frame.js +4 -1
- package/cjs/helpers/websandbox/frame/frame.source.js +1 -1
- package/cjs/helpers/websandbox/frame/worker/manager.d.ts +8 -4
- package/cjs/helpers/websandbox/frame/worker/manager.js +32 -14
- package/cjs/helpers/websandbox/frame/worker/worker.source.js +1 -1
- package/cjs/helpers/websandbox/sandbox.d.ts +1 -1
- package/cjs/helpers/websandbox/sandbox.js +7 -7
- package/cjs/models/IConnectedCallsign.d.ts +10 -0
- package/cjs/models/IConnectedCallsign.js +8 -0
- package/cjs/models/RocosError.d.ts +3 -0
- package/cjs/models/RocosError.js +3 -0
- package/cjs/models/ServiceEnum.d.ts +20 -17
- package/cjs/models/ServiceEnum.js +20 -17
- package/cjs/models/TelemetryStatus.d.ts +12 -0
- package/cjs/models/TelemetryStatus.js +17 -0
- package/cjs/models/Token.d.ts +2 -2
- package/cjs/models/Token.js +5 -5
- package/cjs/models/asset-storage/{AssetModelItem.d.ts → AssetItem.d.ts} +2 -0
- package/cjs/models/device-credentials/DeviceCredentials.d.ts +61 -0
- package/cjs/models/device-credentials/DeviceCredentials.js +2 -0
- package/cjs/models/graph/Position.d.ts +6 -0
- package/cjs/models/graph/Position.js +2 -0
- package/cjs/models/graph/Quaternion.d.ts +6 -0
- package/cjs/models/graph/Quaternion.js +2 -0
- package/cjs/models/graph/Vector3.d.ts +5 -0
- package/cjs/models/graph/Vector3.js +2 -0
- package/cjs/models/graph/index.d.ts +3 -0
- package/cjs/models/graph/index.js +19 -0
- package/cjs/models/index.d.ts +9 -2
- package/cjs/models/index.js +9 -2
- package/cjs/models/integrations/Location.d.ts +24 -0
- package/cjs/models/integrations/Location.js +2 -0
- package/cjs/models/integrations/PaginatedResults.d.ts +4 -0
- package/cjs/models/integrations/PaginatedResults.js +2 -0
- package/cjs/models/maps/Panorama.d.ts +12 -21
- package/cjs/models/projects/ExternalProject.d.ts +10 -0
- package/cjs/models/projects/ExternalProject.js +2 -0
- package/cjs/models/projects/NewProjectRequest.d.ts +8 -0
- package/cjs/models/projects/NewProjectRequest.js +2 -0
- package/cjs/models/target/Target.d.ts +30 -0
- package/cjs/models/target/Target.js +15 -0
- package/cjs/node/RocosSDKNode.d.ts +1 -5
- package/cjs/node/RocosSDKNode.js +9 -9
- package/cjs/services/AssetStorageService.d.ts +9 -1
- package/cjs/services/AssetStorageService.js +12 -1
- package/cjs/services/AuthService.d.ts +12 -1
- package/cjs/services/AuthService.js +25 -1
- package/cjs/services/DeviceCredentialsService.d.ts +15 -0
- package/cjs/services/DeviceCredentialsService.js +56 -0
- package/cjs/services/EnvironmentService.d.ts +34 -0
- package/cjs/services/EnvironmentService.js +56 -0
- package/cjs/services/EvaluatorService.js +1 -1
- package/cjs/services/IntegrationService.d.ts +7 -1
- package/cjs/services/IntegrationService.js +8 -0
- package/cjs/services/MapService.d.ts +18 -8
- package/cjs/services/MapService.js +37 -19
- package/cjs/services/ProfileService.d.ts +24 -0
- package/cjs/services/ProfileService.js +34 -0
- package/cjs/services/ProjectService.d.ts +7 -2
- package/cjs/services/ProjectService.js +7 -3
- package/cjs/services/RTPWebRTCService.d.ts +6 -1
- package/cjs/services/RTPWebRTCService.js +10 -2
- package/cjs/services/RobotService.d.ts +3 -1
- package/cjs/services/RobotService.js +6 -0
- package/cjs/services/SpotProvisioningService.d.ts +1 -1
- package/cjs/services/SpotProvisioningServiceNode.d.ts +1 -1
- package/cjs/services/TargetService.d.ts +17 -0
- package/cjs/services/TargetService.js +66 -0
- package/cjs/services/TelemetryService.d.ts +10 -1
- package/cjs/services/TelemetryService.js +27 -5
- package/cjs/services/WorkflowService.d.ts +18 -8
- package/cjs/services/WorkflowService.js +37 -11
- package/cjs/services/index.d.ts +11 -9
- package/cjs/services/index.js +11 -9
- package/cjs/store/RocosStore.d.ts +1 -2
- package/esm/IRocosSDK.d.ts +4 -3
- package/esm/RocosSDK.d.ts +19 -7
- package/esm/RocosSDK.js +32 -11
- package/esm/api/streams/caller/CallerStream.js +5 -2
- package/esm/api/streams/caller/CallerStreamNode.js +2 -1
- package/esm/api/streams/command/CommandStream.js +5 -2
- package/esm/api/streams/command/CommandStreamNode.js +2 -1
- package/esm/api/streams/control/ControlStream.js +5 -2
- package/esm/api/streams/control/ControlStreamAbstract.d.ts +1 -1
- package/esm/api/streams/control/ControlStreamNode.js +2 -1
- package/esm/api/streams/fileAccessor/FileAccessorStream.js +4 -1
- package/esm/api/streams/fileAccessor/FileAccessorStreamNode.js +3 -1
- package/esm/api/streams/search/SearchStream.js +5 -2
- package/esm/api/streams/search/SearchStreamNode.js +2 -1
- package/esm/api/streams/telemetry/TelemetryStream.js +4 -1
- package/esm/api/streams/telemetry/TelemetryStreamAbstract.d.ts +1 -1
- package/esm/api/streams/telemetry/TelemetryStreamNode.js +2 -1
- package/esm/api/streams/webRTCSignalling/WebRTCSignallingStream.js +5 -2
- package/esm/constants/api.d.ts +31 -15
- package/esm/constants/api.js +31 -15
- package/esm/helpers/cleanObject.js +4 -1
- package/esm/helpers/getUniqueConfigKey.d.ts +6 -2
- package/esm/helpers/getUniqueConfigKey.js +7 -2
- package/esm/helpers/index.d.ts +1 -0
- package/esm/helpers/index.js +1 -0
- package/esm/helpers/kscript/Context.d.ts +34 -0
- package/esm/helpers/kscript/Context.js +49 -0
- package/esm/helpers/kscript/index.d.ts +1 -0
- package/esm/helpers/kscript/index.js +1 -0
- package/esm/helpers/kscript/kscript.d.ts +6 -0
- package/esm/helpers/kscript/kscript.js +107 -0
- package/esm/helpers/kscript/nodes/Identifier.d.ts +12 -0
- package/esm/helpers/kscript/nodes/Identifier.js +14 -0
- package/esm/helpers/kscript/nodes/Literal.d.ts +11 -0
- package/esm/helpers/kscript/nodes/Literal.js +16 -0
- package/esm/helpers/kscript/nodes/Node.d.ts +9 -0
- package/esm/helpers/kscript/nodes/Node.js +12 -0
- package/esm/helpers/kscript/nodes/Program.d.ts +11 -0
- package/esm/helpers/kscript/nodes/Program.js +18 -0
- package/esm/helpers/kscript/nodes/TemplateLiteral.d.ts +23 -0
- package/esm/helpers/kscript/nodes/TemplateLiteral.js +29 -0
- package/esm/helpers/kscript/nodes/expressions/ArrayExpression.d.ts +7 -0
- package/esm/helpers/kscript/nodes/expressions/ArrayExpression.js +25 -0
- package/esm/helpers/kscript/nodes/expressions/ArrowFunctionExpression.d.ts +14 -0
- package/esm/helpers/kscript/nodes/expressions/ArrowFunctionExpression.js +34 -0
- package/esm/helpers/kscript/nodes/expressions/BinaryExpression.d.ts +16 -0
- package/esm/helpers/kscript/nodes/expressions/BinaryExpression.js +98 -0
- package/esm/helpers/kscript/nodes/expressions/CallExpression.d.ts +8 -0
- package/esm/helpers/kscript/nodes/expressions/CallExpression.js +32 -0
- package/esm/helpers/kscript/nodes/expressions/ChainExpression.d.ts +16 -0
- package/esm/helpers/kscript/nodes/expressions/ChainExpression.js +19 -0
- package/esm/helpers/kscript/nodes/expressions/ConditionalExpression.d.ts +14 -0
- package/esm/helpers/kscript/nodes/expressions/ConditionalExpression.js +24 -0
- package/esm/helpers/kscript/nodes/expressions/ExpressionStatement.d.ts +7 -0
- package/esm/helpers/kscript/nodes/expressions/ExpressionStatement.js +12 -0
- package/esm/helpers/kscript/nodes/expressions/LogicalExpression.d.ts +10 -0
- package/esm/helpers/kscript/nodes/expressions/LogicalExpression.js +41 -0
- package/esm/helpers/kscript/nodes/expressions/MemberExpression.d.ts +44 -0
- package/esm/helpers/kscript/nodes/expressions/MemberExpression.js +92 -0
- package/esm/helpers/kscript/nodes/expressions/ObjectExpression.d.ts +11 -0
- package/esm/helpers/kscript/nodes/expressions/ObjectExpression.js +53 -0
- package/esm/helpers/kscript/nodes/expressions/UnaryExpression.d.ts +12 -0
- package/esm/helpers/kscript/nodes/expressions/UnaryExpression.js +38 -0
- package/esm/helpers/kscript/nodes/expressions/index.d.ts +11 -0
- package/esm/helpers/kscript/nodes/expressions/index.js +11 -0
- package/esm/helpers/kscript/nodes/index.d.ts +4 -0
- package/esm/helpers/kscript/nodes/index.js +3 -0
- package/esm/helpers/kscript/nodes/nodeTypes.d.ts +33 -0
- package/esm/helpers/kscript/nodes/nodeTypes.js +24 -0
- package/esm/helpers/kscript/utils.d.ts +4 -0
- package/esm/helpers/kscript/utils.js +11 -0
- package/esm/helpers/websandbox/connection.d.ts +2 -1
- package/esm/helpers/websandbox/connection.js +6 -5
- package/esm/helpers/websandbox/frame/frame.js +4 -1
- package/esm/helpers/websandbox/frame/frame.source.js +1 -1
- package/esm/helpers/websandbox/frame/worker/manager.d.ts +8 -4
- package/esm/helpers/websandbox/frame/worker/manager.js +32 -14
- package/esm/helpers/websandbox/frame/worker/worker.source.js +1 -1
- package/esm/helpers/websandbox/sandbox.d.ts +1 -1
- package/esm/helpers/websandbox/sandbox.js +7 -7
- package/esm/models/IConnectedCallsign.d.ts +10 -0
- package/esm/models/IConnectedCallsign.js +5 -0
- package/esm/models/RocosError.d.ts +3 -0
- package/esm/models/RocosError.js +3 -0
- package/esm/models/ServiceEnum.d.ts +20 -17
- package/esm/models/ServiceEnum.js +20 -17
- package/esm/models/TelemetryStatus.d.ts +12 -0
- package/esm/models/TelemetryStatus.js +14 -0
- package/esm/models/Token.d.ts +2 -2
- package/esm/models/Token.js +5 -5
- package/esm/models/asset-storage/{AssetModelItem.d.ts → AssetItem.d.ts} +2 -0
- package/esm/models/device-credentials/DeviceCredentials.d.ts +61 -0
- package/esm/models/graph/Position.d.ts +6 -0
- package/esm/models/graph/Quaternion.d.ts +6 -0
- package/esm/models/graph/Vector3.d.ts +5 -0
- package/esm/models/graph/index.d.ts +3 -0
- package/esm/models/graph/index.js +3 -0
- package/esm/models/index.d.ts +9 -2
- package/esm/models/index.js +9 -2
- package/esm/models/integrations/Location.d.ts +24 -0
- package/esm/models/integrations/PaginatedResults.d.ts +4 -0
- package/esm/models/maps/Panorama.d.ts +12 -21
- package/esm/models/projects/ExternalProject.d.ts +10 -0
- package/esm/models/projects/NewProjectRequest.d.ts +8 -0
- package/esm/models/target/Target.d.ts +30 -0
- package/esm/models/target/Target.js +9 -0
- package/esm/node/RocosSDKNode.d.ts +1 -5
- package/esm/node/RocosSDKNode.js +10 -10
- package/esm/services/AssetStorageService.d.ts +9 -1
- package/esm/services/AssetStorageService.js +13 -2
- package/esm/services/AuthService.d.ts +12 -1
- package/esm/services/AuthService.js +25 -1
- package/esm/services/BaseServiceAbstract.js +1 -1
- package/esm/services/DeviceCredentialsService.d.ts +15 -0
- package/esm/services/DeviceCredentialsService.js +52 -0
- package/esm/services/EnvironmentService.d.ts +34 -0
- package/esm/services/EnvironmentService.js +52 -0
- package/esm/services/EvaluatorService.js +1 -1
- package/esm/services/IntegrationService.d.ts +7 -1
- package/esm/services/IntegrationService.js +10 -2
- package/esm/services/MapService.d.ts +18 -8
- package/esm/services/MapService.js +38 -20
- package/esm/services/ProfileService.d.ts +24 -0
- package/esm/services/ProfileService.js +35 -1
- package/esm/services/ProjectService.d.ts +7 -2
- package/esm/services/ProjectService.js +9 -5
- package/esm/services/RTPWebRTCService.d.ts +6 -1
- package/esm/services/RTPWebRTCService.js +10 -2
- package/esm/services/RobotService.d.ts +3 -1
- package/esm/services/RobotService.js +8 -2
- package/esm/services/SpotProvisioningService.d.ts +1 -1
- package/esm/services/SpotProvisioningServiceNode.d.ts +1 -1
- package/esm/services/TargetService.d.ts +17 -0
- package/esm/services/TargetService.js +62 -0
- package/esm/services/TelemetryService.d.ts +10 -1
- package/esm/services/TelemetryService.js +28 -6
- package/esm/services/WorkflowService.d.ts +18 -8
- package/esm/services/WorkflowService.js +38 -12
- package/esm/services/index.d.ts +11 -9
- package/esm/services/index.js +11 -9
- package/esm/store/RocosStore.d.ts +1 -2
- package/package.json +2 -2
- package/cjs/helpers/cleanObject.spec.js +0 -55
- package/cjs/helpers/flattenObject.spec.js +0 -31
- package/cjs/helpers/flattenOneOf.spec.js +0 -159
- package/cjs/helpers/formatServiceUrl.spec.js +0 -18
- package/cjs/helpers/getSha256Hex.spec.js +0 -19
- package/cjs/helpers/getSha256HexNode.spec.js +0 -10
- package/cjs/helpers/getURLSearchParams.spec.js +0 -21
- package/cjs/helpers/nanosecondToMillisecond.spec.js +0 -22
- package/cjs/helpers/splitRobotTopic.spec.js +0 -53
- package/cjs/helpers/standardDeviation.spec.d.ts +0 -1
- package/cjs/helpers/standardDeviation.spec.js +0 -13
- package/cjs/helpers/websandbox/frame/worker/manager.spec.d.ts +0 -4
- package/cjs/helpers/websandbox/frame/worker/manager.spec.js +0 -132
- package/cjs/models/CallsignStatus.d.ts +0 -6
- package/cjs/models/CallsignStatus.js +0 -10
- package/cjs/models/ExternalProject.d.ts +0 -6
- package/cjs/models/ExternalProject.js +0 -6
- package/cjs/models/Token.spec.d.ts +0 -1
- package/cjs/models/Token.spec.js +0 -110
- package/cjs/services/AuthService.spec.d.ts +0 -1
- package/cjs/services/AuthService.spec.js +0 -165
- package/cjs/services/CallerService.spec.d.ts +0 -1
- package/cjs/services/CallerService.spec.js +0 -229
- package/cjs/services/FunctionService.d.ts +0 -68
- package/cjs/services/FunctionService.js +0 -103
- package/cjs/services/PlatformTimeService.spec.d.ts +0 -1
- package/cjs/services/PlatformTimeService.spec.js +0 -182
- package/cjs/services/RTPWebRTCService.spec.d.ts +0 -4
- package/cjs/services/RTPWebRTCService.spec.js +0 -171
- package/cjs/services/TelemetryService.spec.d.ts +0 -1
- package/cjs/services/TelemetryService.spec.js +0 -39
- package/esm/helpers/cleanObject.spec.d.ts +0 -1
- package/esm/helpers/cleanObject.spec.js +0 -53
- package/esm/helpers/flattenObject.spec.d.ts +0 -1
- package/esm/helpers/flattenObject.spec.js +0 -29
- package/esm/helpers/flattenOneOf.spec.d.ts +0 -1
- package/esm/helpers/flattenOneOf.spec.js +0 -157
- package/esm/helpers/formatServiceUrl.spec.d.ts +0 -1
- package/esm/helpers/formatServiceUrl.spec.js +0 -16
- package/esm/helpers/getSha256Hex.spec.d.ts +0 -1
- package/esm/helpers/getSha256Hex.spec.js +0 -14
- package/esm/helpers/getSha256HexNode.spec.d.ts +0 -1
- package/esm/helpers/getSha256HexNode.spec.js +0 -8
- package/esm/helpers/getURLSearchParams.spec.d.ts +0 -1
- package/esm/helpers/getURLSearchParams.spec.js +0 -19
- package/esm/helpers/nanosecondToMillisecond.spec.d.ts +0 -1
- package/esm/helpers/nanosecondToMillisecond.spec.js +0 -20
- package/esm/helpers/splitRobotTopic.spec.d.ts +0 -1
- package/esm/helpers/splitRobotTopic.spec.js +0 -51
- package/esm/helpers/standardDeviation.spec.d.ts +0 -1
- package/esm/helpers/standardDeviation.spec.js +0 -11
- package/esm/helpers/websandbox/frame/worker/manager.spec.d.ts +0 -4
- package/esm/helpers/websandbox/frame/worker/manager.spec.js +0 -127
- package/esm/models/CallsignStatus.d.ts +0 -6
- package/esm/models/CallsignStatus.js +0 -7
- package/esm/models/ExternalProject.d.ts +0 -6
- package/esm/models/ExternalProject.js +0 -2
- package/esm/models/Token.spec.d.ts +0 -1
- package/esm/models/Token.spec.js +0 -108
- package/esm/models/asset-storage/AssetModelItem.js +0 -1
- package/esm/services/AuthService.spec.d.ts +0 -1
- package/esm/services/AuthService.spec.js +0 -163
- package/esm/services/CallerService.spec.d.ts +0 -1
- package/esm/services/CallerService.spec.js +0 -227
- package/esm/services/FunctionService.d.ts +0 -68
- package/esm/services/FunctionService.js +0 -99
- package/esm/services/PlatformTimeService.spec.d.ts +0 -1
- package/esm/services/PlatformTimeService.spec.js +0 -180
- package/esm/services/RTPWebRTCService.spec.d.ts +0 -4
- package/esm/services/RTPWebRTCService.spec.js +0 -169
- package/esm/services/TelemetryService.spec.d.ts +0 -1
- package/esm/services/TelemetryService.spec.js +0 -37
- /package/cjs/models/asset-storage/{AssetModelItem.js → AssetItem.js} +0 -0
- /package/{cjs/helpers/cleanObject.spec.d.ts → esm/models/asset-storage/AssetItem.js} +0 -0
- /package/{cjs/helpers/flattenObject.spec.d.ts → esm/models/device-credentials/DeviceCredentials.js} +0 -0
- /package/{cjs/helpers/flattenOneOf.spec.d.ts → esm/models/graph/Position.js} +0 -0
- /package/{cjs/helpers/formatServiceUrl.spec.d.ts → esm/models/graph/Quaternion.js} +0 -0
- /package/{cjs/helpers/getSha256Hex.spec.d.ts → esm/models/graph/Vector3.js} +0 -0
- /package/{cjs/helpers/getSha256HexNode.spec.d.ts → esm/models/integrations/Location.js} +0 -0
- /package/{cjs/helpers/getURLSearchParams.spec.d.ts → esm/models/integrations/PaginatedResults.js} +0 -0
- /package/{cjs/helpers/nanosecondToMillisecond.spec.d.ts → esm/models/projects/ExternalProject.js} +0 -0
- /package/{cjs/helpers/splitRobotTopic.spec.d.ts → esm/models/projects/NewProjectRequest.js} +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { API_DEVICE_CREDENTIALS_AUTH_URL, API_DEVICE_CREDENTIALS_URL } from '../constants/api';
|
|
2
|
+
import { RocosError, errorCodes } from '../models';
|
|
3
|
+
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
4
|
+
import { RocosLogger } from '../logger/RocosLogger';
|
|
5
|
+
import { formatServiceUrl } from '../helpers/formatServiceUrl';
|
|
6
|
+
/**
|
|
7
|
+
* Manage external devices authenticating with the platform
|
|
8
|
+
*/
|
|
9
|
+
export class DeviceCredentialsService extends BaseServiceAbstract {
|
|
10
|
+
constructor(config) {
|
|
11
|
+
super(config);
|
|
12
|
+
this.logger = RocosLogger.getInstance(`DeviceCredentials(${this.config.url})`);
|
|
13
|
+
}
|
|
14
|
+
getStatus() {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
getError(e) {
|
|
18
|
+
return new RocosError(e, errorCodes.DEVICE_CREDENTIALS_SERVICE_ERROR);
|
|
19
|
+
}
|
|
20
|
+
list(projectId, callsign) {
|
|
21
|
+
return this.callGet(formatServiceUrl(API_DEVICE_CREDENTIALS_URL, {
|
|
22
|
+
url: this.config.url,
|
|
23
|
+
projectId,
|
|
24
|
+
callsign,
|
|
25
|
+
}, this.config.insecure), 'Failed to get device credentials.');
|
|
26
|
+
}
|
|
27
|
+
create(projectId, callsign, credentials, disableValidation = false) {
|
|
28
|
+
let queryParams;
|
|
29
|
+
if (disableValidation) {
|
|
30
|
+
queryParams = {
|
|
31
|
+
validate: false,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return this.callPost(formatServiceUrl(API_DEVICE_CREDENTIALS_URL, {
|
|
35
|
+
url: this.config.url,
|
|
36
|
+
projectId,
|
|
37
|
+
callsign,
|
|
38
|
+
}, this.config.insecure), credentials, 'Failed to create device credentials.', undefined, queryParams);
|
|
39
|
+
}
|
|
40
|
+
delete(projectId, callsign, component, system) {
|
|
41
|
+
return this.callDelete(formatServiceUrl(API_DEVICE_CREDENTIALS_URL, {
|
|
42
|
+
url: this.config.url,
|
|
43
|
+
projectId,
|
|
44
|
+
callsign,
|
|
45
|
+
}, this.config.insecure), 'Failed to delete device credentials.', { component, system });
|
|
46
|
+
}
|
|
47
|
+
auth(credentials) {
|
|
48
|
+
return this.callPost(formatServiceUrl(API_DEVICE_CREDENTIALS_AUTH_URL, {
|
|
49
|
+
url: this.config.url,
|
|
50
|
+
}, this.config.insecure), credentials, 'Failed to delete device credentials.');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { IBaseService, IRocosSDKConfig, RocosError } from '../models';
|
|
2
|
+
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
3
|
+
/**
|
|
4
|
+
* Service responsible for saving and retrieving the project environment from Giraffe.
|
|
5
|
+
*/
|
|
6
|
+
export declare class EnvironmentService extends BaseServiceAbstract implements IBaseService {
|
|
7
|
+
constructor(config: IRocosSDKConfig);
|
|
8
|
+
protected getError(e: Error): RocosError;
|
|
9
|
+
getStatus(): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Get Environment
|
|
12
|
+
*
|
|
13
|
+
* @param projectId - Project Id
|
|
14
|
+
*/
|
|
15
|
+
get(projectId: string): Promise<unknown>;
|
|
16
|
+
/**
|
|
17
|
+
* Set Environment
|
|
18
|
+
*
|
|
19
|
+
* @param projectId - Project Id
|
|
20
|
+
*/
|
|
21
|
+
set(projectId: string, scene: unknown): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Update Environment
|
|
24
|
+
*
|
|
25
|
+
* @param projectId - Project Id
|
|
26
|
+
*/
|
|
27
|
+
update(projectId: string, scene: unknown): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Delete Environment
|
|
30
|
+
*
|
|
31
|
+
* @param projectId - Project Id
|
|
32
|
+
*/
|
|
33
|
+
delete(projectId: string): Promise<void>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { RocosError, errorCodes } from '../models';
|
|
2
|
+
import { API_PROJECT_ENVIRONMENT_URL } from '../constants/api';
|
|
3
|
+
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
4
|
+
import { RocosLogger } from '../logger/RocosLogger';
|
|
5
|
+
import { formatServiceUrl } from '../helpers/formatServiceUrl';
|
|
6
|
+
/**
|
|
7
|
+
* Service responsible for saving and retrieving the project environment from Giraffe.
|
|
8
|
+
*/
|
|
9
|
+
export class EnvironmentService extends BaseServiceAbstract {
|
|
10
|
+
constructor(config) {
|
|
11
|
+
super(config);
|
|
12
|
+
this.logger = RocosLogger.getInstance(`EnvironmentService(${this.config.url})`);
|
|
13
|
+
}
|
|
14
|
+
getError(e) {
|
|
15
|
+
return new RocosError(e, errorCodes.ENVIRONMENT_SERVICE_ERROR);
|
|
16
|
+
}
|
|
17
|
+
getStatus() {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get Environment
|
|
22
|
+
*
|
|
23
|
+
* @param projectId - Project Id
|
|
24
|
+
*/
|
|
25
|
+
async get(projectId) {
|
|
26
|
+
return this.callGet(formatServiceUrl(API_PROJECT_ENVIRONMENT_URL, { url: this.config.url, projectId }, this.config.insecure), `Failed to get environment for ${projectId}.`);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Set Environment
|
|
30
|
+
*
|
|
31
|
+
* @param projectId - Project Id
|
|
32
|
+
*/
|
|
33
|
+
async set(projectId, scene) {
|
|
34
|
+
return this.callPost(formatServiceUrl(API_PROJECT_ENVIRONMENT_URL, { url: this.config.url, projectId }, this.config.insecure), scene, `Failed to set environment for ${projectId}.`);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Update Environment
|
|
38
|
+
*
|
|
39
|
+
* @param projectId - Project Id
|
|
40
|
+
*/
|
|
41
|
+
async update(projectId, scene) {
|
|
42
|
+
return this.callPut(formatServiceUrl(API_PROJECT_ENVIRONMENT_URL, { url: this.config.url, projectId }, this.config.insecure), scene, `Failed to update environment for ${projectId}.`);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Delete Environment
|
|
46
|
+
*
|
|
47
|
+
* @param projectId - Project Id
|
|
48
|
+
*/
|
|
49
|
+
async delete(projectId) {
|
|
50
|
+
return this.callDelete(formatServiceUrl(API_PROJECT_ENVIRONMENT_URL, { url: this.config.url, projectId }, this.config.insecure), `Failed to update environment for ${projectId}.`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -19,7 +19,7 @@ export class EvaluatorService extends BaseServiceAbstract {
|
|
|
19
19
|
}
|
|
20
20
|
async teardown() {
|
|
21
21
|
const sandbox = await this.sandbox;
|
|
22
|
-
sandbox.destroy();
|
|
22
|
+
sandbox.destroy('evaluator service torn down');
|
|
23
23
|
}
|
|
24
24
|
async execute(code, context, options) {
|
|
25
25
|
const sandbox = await this.sandbox;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IBaseService, IRocosSDKConfig, Overlay, Plan, RocosError } from '../models';
|
|
1
|
+
import { IBaseService, IRocosSDKConfig, Location, Overlay, PaginatedResults, Plan, RocosError } from '../models';
|
|
2
2
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
3
3
|
/**
|
|
4
4
|
* Integrations to retrieve data from the linked project in DroneDeploy
|
|
@@ -45,4 +45,10 @@ export declare class IntegrationService extends BaseServiceAbstract implements I
|
|
|
45
45
|
lat: number;
|
|
46
46
|
lng: number;
|
|
47
47
|
}): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Gets locations for the provided project ID
|
|
50
|
+
* @param projectId Project ID
|
|
51
|
+
* @returns Plans list (limited to 50)
|
|
52
|
+
*/
|
|
53
|
+
getLocations(projectId: string, pageStart?: string): Promise<PaginatedResults<Location>>;
|
|
48
54
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { API_DD_INTEGRATION_ISSUES_URL, API_DD_INTEGRATION_OVERLAYS_URL, API_DD_INTEGRATION_PLANS_URL, API_DD_INTEGRATION_PLAN_BY_ID_URL, } from '../constants/api';
|
|
2
|
-
import { RocosError, errorCodes } from '../models';
|
|
1
|
+
import { API_DD_INTEGRATION_ISSUES_URL, API_DD_INTEGRATION_LOCATIONS_URL, API_DD_INTEGRATION_OVERLAYS_URL, API_DD_INTEGRATION_PLANS_URL, API_DD_INTEGRATION_PLAN_BY_ID_URL, } from '../constants/api';
|
|
2
|
+
import { RocosError, errorCodes, } from '../models';
|
|
3
3
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
4
4
|
import { RocosLogger } from '../logger/RocosLogger';
|
|
5
5
|
import { formatServiceUrl } from '../helpers/formatServiceUrl';
|
|
@@ -69,4 +69,12 @@ export class IntegrationService extends BaseServiceAbstract {
|
|
|
69
69
|
lng: location.lng,
|
|
70
70
|
}, 'Failed to create issue.');
|
|
71
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Gets locations for the provided project ID
|
|
74
|
+
* @param projectId Project ID
|
|
75
|
+
* @returns Plans list (limited to 50)
|
|
76
|
+
*/
|
|
77
|
+
async getLocations(projectId, pageStart) {
|
|
78
|
+
return this.callGet(formatServiceUrl(API_DD_INTEGRATION_LOCATIONS_URL, { url: this.config.url, projectId }, this.config.insecure), 'Failed to get locations.', pageStart ? { page_start: pageStart } : undefined);
|
|
79
|
+
}
|
|
72
80
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { IBaseService, IRocosSDKConfig, Map, RocosError } from '../models';
|
|
1
|
+
import { Asset, IBaseService, IRocosSDKConfig, Map, RocosError } from '../models';
|
|
2
|
+
import { CreateObservation, Observation } from '../models/maps/Panorama';
|
|
2
3
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
3
|
-
import { Observation } from '../models/maps/Panorama';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Maps service for managing robot maps in the cloud and on robots
|
|
6
6
|
*/
|
|
7
7
|
export declare class MapService extends BaseServiceAbstract implements IBaseService {
|
|
8
|
+
getObservations: (projectId: string, key?: string, frameID?: string) => Promise<Asset[]>;
|
|
9
|
+
getObservationsKeys: (projectId: string) => Promise<string[]>;
|
|
8
10
|
constructor(config: IRocosSDKConfig);
|
|
9
11
|
getStatus(): boolean;
|
|
10
12
|
protected getError(e: Error): RocosError;
|
|
@@ -122,7 +124,7 @@ export declare class MapService extends BaseServiceAbstract implements IBaseServ
|
|
|
122
124
|
* @param observations An array of Observation objects to create.
|
|
123
125
|
* @returns A Promise that resolves when the observations have been created.
|
|
124
126
|
*/
|
|
125
|
-
createObservations(projectId: string, panoramaId: string, observations:
|
|
127
|
+
createObservations(projectId: string, panoramaId: string, observations: CreateObservation[]): Promise<void>;
|
|
126
128
|
/**
|
|
127
129
|
* Gets observations for a project.
|
|
128
130
|
*
|
|
@@ -131,12 +133,20 @@ export declare class MapService extends BaseServiceAbstract implements IBaseServ
|
|
|
131
133
|
* @param frameID (optional) Transforms on a seed frame
|
|
132
134
|
* @returns A list of observations
|
|
133
135
|
*/
|
|
134
|
-
|
|
136
|
+
getAssets(projectId: string, key?: string, frameID?: string): Promise<Asset[]>;
|
|
135
137
|
/**
|
|
136
|
-
* Lists available keys for all
|
|
138
|
+
* Lists available keys for all assets in a project.
|
|
137
139
|
*
|
|
138
140
|
* @param projectId The ID of the project the observations belongs to.
|
|
139
|
-
* @returns A list of
|
|
141
|
+
* @returns A list of assets
|
|
142
|
+
*/
|
|
143
|
+
getAssetsKeys(projectId: string): Promise<string[]>;
|
|
144
|
+
/**
|
|
145
|
+
* Deletes a panorama by panoramaID.
|
|
146
|
+
*
|
|
147
|
+
* @param projectId The ID of the project the panorama belongs to.
|
|
148
|
+
* @param panoramaId The ID of the panorama to delete.
|
|
149
|
+
* @returns A Promise.
|
|
140
150
|
*/
|
|
141
|
-
|
|
151
|
+
deletePanorama(projectId: string, panoramaId: string): Promise<void>;
|
|
142
152
|
}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { API_GRAPHS_MAPS_COPY_URL, API_GRAPHS_MAPS_DEPLOYED_URL, API_GRAPHS_MAPS_DEPLOY_URL, API_GRAPHS_MAPS_GEOJSON_URL, API_GRAPHS_MAPS_MERGE_URL, API_GRAPHS_MAPS_URL, API_GRAPHS_MAP_ID_URL, API_GRAPHS_OBSERVATIONS_URL, API_GRAPHS_OBSERVATION_KEYS_URL, API_GRAPHS_PANORAMA, API_GRAPHS_PANORAMA_OBSERVATIONS_URL, } from '../constants/api';
|
|
2
2
|
import { RocosError, errorCodes } from '../models';
|
|
3
3
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
4
4
|
import { RocosLogger } from '../logger/RocosLogger';
|
|
5
5
|
import { formatServiceUrl } from '../helpers/formatServiceUrl';
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Maps service for managing robot maps in the cloud and on robots
|
|
8
8
|
*/
|
|
9
9
|
export class MapService extends BaseServiceAbstract {
|
|
10
10
|
constructor(config) {
|
|
11
11
|
super(config);
|
|
12
|
+
/*
|
|
13
|
+
* @deprecated use getAssets instead
|
|
14
|
+
*/
|
|
15
|
+
this.getObservations = this.getAssets;
|
|
16
|
+
/*
|
|
17
|
+
* @deprecated use getAssetKeys instead
|
|
18
|
+
*/
|
|
19
|
+
this.getObservationsKeys = this.getAssetsKeys;
|
|
12
20
|
this.logger = RocosLogger.getInstance(`MapService(${this.config.url})`);
|
|
13
21
|
}
|
|
14
22
|
getStatus() {
|
|
@@ -18,7 +26,7 @@ export class MapService extends BaseServiceAbstract {
|
|
|
18
26
|
return new RocosError(e, errorCodes.MAPS_SERVICE_ERROR);
|
|
19
27
|
}
|
|
20
28
|
async list(projectId, callsign) {
|
|
21
|
-
const resp = await this.callGet(formatServiceUrl(
|
|
29
|
+
const resp = await this.callGet(formatServiceUrl(API_GRAPHS_MAPS_URL, {
|
|
22
30
|
url: this.config.url,
|
|
23
31
|
projectId,
|
|
24
32
|
}, this.config.insecure), 'Failed to get maps.', callsign ? { callsign } : undefined);
|
|
@@ -31,7 +39,7 @@ export class MapService extends BaseServiceAbstract {
|
|
|
31
39
|
*/
|
|
32
40
|
async listDeployedMaps(projectId, callsign) {
|
|
33
41
|
const safeCallsign = encodeURIComponent(callsign);
|
|
34
|
-
const resp = await this.callGet(formatServiceUrl(
|
|
42
|
+
const resp = await this.callGet(formatServiceUrl(API_GRAPHS_MAPS_DEPLOYED_URL, {
|
|
35
43
|
url: this.config.url,
|
|
36
44
|
projectId,
|
|
37
45
|
callsign: safeCallsign,
|
|
@@ -55,7 +63,7 @@ export class MapService extends BaseServiceAbstract {
|
|
|
55
63
|
description: options.description,
|
|
56
64
|
callsign: options.callsign,
|
|
57
65
|
};
|
|
58
|
-
return this.callPost(formatServiceUrl(
|
|
66
|
+
return this.callPost(formatServiceUrl(API_GRAPHS_MAPS_MERGE_URL, {
|
|
59
67
|
url: this.config.url,
|
|
60
68
|
projectId,
|
|
61
69
|
}, this.config.insecure), payload, 'Failed to merge maps.');
|
|
@@ -66,7 +74,7 @@ export class MapService extends BaseServiceAbstract {
|
|
|
66
74
|
* @param mapId Map ID
|
|
67
75
|
*/
|
|
68
76
|
async get(projectId, mapId) {
|
|
69
|
-
return this.callGet(formatServiceUrl(
|
|
77
|
+
return this.callGet(formatServiceUrl(API_GRAPHS_MAP_ID_URL, {
|
|
70
78
|
url: this.config.url,
|
|
71
79
|
projectId,
|
|
72
80
|
mapId,
|
|
@@ -79,7 +87,7 @@ export class MapService extends BaseServiceAbstract {
|
|
|
79
87
|
* @param options New metadata
|
|
80
88
|
*/
|
|
81
89
|
async update(projectId, mapId, options) {
|
|
82
|
-
return this.callPut(formatServiceUrl(
|
|
90
|
+
return this.callPut(formatServiceUrl(API_GRAPHS_MAP_ID_URL, {
|
|
83
91
|
url: this.config.url,
|
|
84
92
|
projectId,
|
|
85
93
|
mapId,
|
|
@@ -94,14 +102,14 @@ export class MapService extends BaseServiceAbstract {
|
|
|
94
102
|
* @param hash Map hash
|
|
95
103
|
*/
|
|
96
104
|
async sendToCloud(projectId, mapId, callsign, hash) {
|
|
97
|
-
return this.callPost(formatServiceUrl(
|
|
105
|
+
return this.callPost(formatServiceUrl(API_GRAPHS_MAP_ID_URL, {
|
|
98
106
|
url: this.config.url,
|
|
99
107
|
projectId,
|
|
100
108
|
mapId,
|
|
101
109
|
}, this.config.insecure), { callsign, hash }, 'Failed to start map upload.');
|
|
102
110
|
}
|
|
103
111
|
async delete(projectId, mapId, callsign, hash) {
|
|
104
|
-
return this.callDelete(formatServiceUrl(
|
|
112
|
+
return this.callDelete(formatServiceUrl(API_GRAPHS_MAP_ID_URL, {
|
|
105
113
|
url: this.config.url,
|
|
106
114
|
projectId,
|
|
107
115
|
mapId,
|
|
@@ -115,7 +123,7 @@ export class MapService extends BaseServiceAbstract {
|
|
|
115
123
|
* @param options Options to create the new map
|
|
116
124
|
*/
|
|
117
125
|
async copy(projectId, mapId, options) {
|
|
118
|
-
return this.callPost(formatServiceUrl(
|
|
126
|
+
return this.callPost(formatServiceUrl(API_GRAPHS_MAPS_COPY_URL, {
|
|
119
127
|
url: this.config.url,
|
|
120
128
|
projectId,
|
|
121
129
|
mapId,
|
|
@@ -128,7 +136,7 @@ export class MapService extends BaseServiceAbstract {
|
|
|
128
136
|
* @param callsign Robot callsign
|
|
129
137
|
*/
|
|
130
138
|
async deploy(projectId, mapId, callsign) {
|
|
131
|
-
return this.callPost(formatServiceUrl(
|
|
139
|
+
return this.callPost(formatServiceUrl(API_GRAPHS_MAPS_DEPLOY_URL, {
|
|
132
140
|
url: this.config.url,
|
|
133
141
|
projectId,
|
|
134
142
|
mapId,
|
|
@@ -146,7 +154,7 @@ export class MapService extends BaseServiceAbstract {
|
|
|
146
154
|
projectId,
|
|
147
155
|
mapId,
|
|
148
156
|
};
|
|
149
|
-
return this.callGet(formatServiceUrl(
|
|
157
|
+
return this.callGet(formatServiceUrl(API_GRAPHS_MAPS_GEOJSON_URL, params, this.config.insecure), 'Failed to get map GeoJSON.', frameId ? { frameID: frameId } : undefined);
|
|
150
158
|
}
|
|
151
159
|
/**
|
|
152
160
|
* Returns a Promise that resolves to an array of Observation objects for the given panorama ID.
|
|
@@ -156,7 +164,7 @@ export class MapService extends BaseServiceAbstract {
|
|
|
156
164
|
* @returns A Promise that resolves to an array of Observation objects.
|
|
157
165
|
*/
|
|
158
166
|
listObservations(projectId, panoramaId) {
|
|
159
|
-
return this.callGet(formatServiceUrl(
|
|
167
|
+
return this.callGet(formatServiceUrl(API_GRAPHS_PANORAMA_OBSERVATIONS_URL, { url: this.config.url, projectId, panoramaId }, this.config.insecure), 'Failed to list observations.');
|
|
160
168
|
}
|
|
161
169
|
/**
|
|
162
170
|
* Creates new observations on a panorama.
|
|
@@ -167,7 +175,7 @@ export class MapService extends BaseServiceAbstract {
|
|
|
167
175
|
* @returns A Promise that resolves when the observations have been created.
|
|
168
176
|
*/
|
|
169
177
|
createObservations(projectId, panoramaId, observations) {
|
|
170
|
-
return this.callPut(formatServiceUrl(
|
|
178
|
+
return this.callPut(formatServiceUrl(API_GRAPHS_PANORAMA_OBSERVATIONS_URL, { url: this.config.url, projectId, panoramaId }, this.config.insecure), observations, 'Failed to update observations.');
|
|
171
179
|
}
|
|
172
180
|
/**
|
|
173
181
|
* Gets observations for a project.
|
|
@@ -177,16 +185,26 @@ export class MapService extends BaseServiceAbstract {
|
|
|
177
185
|
* @param frameID (optional) Transforms on a seed frame
|
|
178
186
|
* @returns A list of observations
|
|
179
187
|
*/
|
|
180
|
-
|
|
181
|
-
return this.callGet(formatServiceUrl(
|
|
188
|
+
getAssets(projectId, key = '', frameID = '') {
|
|
189
|
+
return this.callGet(formatServiceUrl(API_GRAPHS_OBSERVATIONS_URL, { url: this.config.url, projectId }, this.config.insecure), 'Failed to get assets.', { key, frameID });
|
|
182
190
|
}
|
|
183
191
|
/**
|
|
184
|
-
* Lists available keys for all
|
|
192
|
+
* Lists available keys for all assets in a project.
|
|
185
193
|
*
|
|
186
194
|
* @param projectId The ID of the project the observations belongs to.
|
|
187
|
-
* @returns A list of
|
|
195
|
+
* @returns A list of assets
|
|
196
|
+
*/
|
|
197
|
+
getAssetsKeys(projectId) {
|
|
198
|
+
return this.callGet(formatServiceUrl(API_GRAPHS_OBSERVATION_KEYS_URL, { url: this.config.url, projectId }, this.config.insecure), 'Failed to get asset keys.');
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Deletes a panorama by panoramaID.
|
|
202
|
+
*
|
|
203
|
+
* @param projectId The ID of the project the panorama belongs to.
|
|
204
|
+
* @param panoramaId The ID of the panorama to delete.
|
|
205
|
+
* @returns A Promise.
|
|
188
206
|
*/
|
|
189
|
-
|
|
190
|
-
return this.
|
|
207
|
+
deletePanorama(projectId, panoramaId) {
|
|
208
|
+
return this.callDelete(formatServiceUrl(API_GRAPHS_PANORAMA, { url: this.config.url, projectId, panoramaId }, this.config.insecure), 'Failed to delete panorama.');
|
|
191
209
|
}
|
|
192
210
|
}
|
|
@@ -232,6 +232,30 @@ export declare class ProfileService extends BaseServiceAbstract implements IBase
|
|
|
232
232
|
* @description - Renamed from robotDefGetGamepads
|
|
233
233
|
*/
|
|
234
234
|
getGamepads(projectId: string, definitionId: string): Promise<any>;
|
|
235
|
+
/** Export robot definition into JSON format
|
|
236
|
+
*
|
|
237
|
+
* Can be used to import robot definition into another project
|
|
238
|
+
*
|
|
239
|
+
* @param projectId - Project Id
|
|
240
|
+
* @param definitionId - Robot definition Id
|
|
241
|
+
*
|
|
242
|
+
* @see import
|
|
243
|
+
*/
|
|
244
|
+
export(projectId: string, definitionId: string): Promise<Record<string, unknown>>;
|
|
245
|
+
/** Import robot definition from JSON format
|
|
246
|
+
*
|
|
247
|
+
* Accepts a previously exported robot definition
|
|
248
|
+
*
|
|
249
|
+
* @param projectId - Project Id
|
|
250
|
+
* @param profileData - Robot definition data
|
|
251
|
+
* @param newName - Optional new name for the robot definition. If not provided, the name from the imported definition will be used.
|
|
252
|
+
* @param newDescription - Optional new description for the robot definition. If not provided, the description from the imported definition will be used.
|
|
253
|
+
*
|
|
254
|
+
* @see export
|
|
255
|
+
*/
|
|
256
|
+
import(projectId: string, profileData: Blob | File, newName?: string, newDescription?: string): Promise<{
|
|
257
|
+
profileId: string;
|
|
258
|
+
}>;
|
|
235
259
|
/**
|
|
236
260
|
* Update gamepads for a robot definition
|
|
237
261
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { API_PROJECT_DEFINITION_ACTION_URL, API_PROJECT_DEFINITION_AGENT_URL, API_PROJECT_DEFINITION_BLOB_URL, API_PROJECT_DEFINITION_BUTTON_URL, API_PROJECT_DEFINITION_COMMAND2_URL, API_PROJECT_DEFINITION_COMMAND_URL, API_PROJECT_DEFINITION_COPY_URL, API_PROJECT_DEFINITION_DASHBOARD_URL, API_PROJECT_DEFINITION_GAMEPAD_URL, API_PROJECT_DEFINITION_ID_URL, API_PROJECT_DEFINITION_SETTING_URL, API_PROJECT_DEFINITION_STREAM_URL, API_PROJECT_DEFINITION_TRIGGER_URL, API_PROJECT_DEFINITION_URL, API_PROJECT_PROFILE_DASHBOARD_URL, API_PROJECT_ROBOT_DEFINITION_URL, API_PROJECT_ROBOT_URL, } from '../constants/api';
|
|
1
|
+
import { API_PROJECT_DEFINITION_ACTION_URL, API_PROJECT_DEFINITION_AGENT_URL, API_PROJECT_DEFINITION_BLOB_URL, API_PROJECT_DEFINITION_BUTTON_URL, API_PROJECT_DEFINITION_COMMAND2_URL, API_PROJECT_DEFINITION_COMMAND_URL, API_PROJECT_DEFINITION_COPY_URL, API_PROJECT_DEFINITION_DASHBOARD_URL, API_PROJECT_DEFINITION_EXPORT, API_PROJECT_DEFINITION_GAMEPAD_URL, API_PROJECT_DEFINITION_ID_URL, API_PROJECT_DEFINITION_IMPORT, API_PROJECT_DEFINITION_SETTING_URL, API_PROJECT_DEFINITION_STREAM_URL, API_PROJECT_DEFINITION_TRIGGER_URL, API_PROJECT_DEFINITION_URL, API_PROJECT_PROFILE_DASHBOARD_URL, API_PROJECT_ROBOT_DEFINITION_URL, API_PROJECT_ROBOT_URL, } from '../constants/api';
|
|
2
2
|
import { RocosError, errorCodes } from '../models/RocosError';
|
|
3
3
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
4
4
|
import { RocosLogger } from '../logger/RocosLogger';
|
|
@@ -345,6 +345,40 @@ export class ProfileService extends BaseServiceAbstract {
|
|
|
345
345
|
async getGamepads(projectId, definitionId) {
|
|
346
346
|
return this.callGet(formatServiceUrl(API_PROJECT_DEFINITION_GAMEPAD_URL, { url: this.config.url, projectId, definitionId }, this.config.insecure), `Failed to get gamepads for ${projectId}, definitionId ${definitionId}.`);
|
|
347
347
|
}
|
|
348
|
+
/** Export robot definition into JSON format
|
|
349
|
+
*
|
|
350
|
+
* Can be used to import robot definition into another project
|
|
351
|
+
*
|
|
352
|
+
* @param projectId - Project Id
|
|
353
|
+
* @param definitionId - Robot definition Id
|
|
354
|
+
*
|
|
355
|
+
* @see import
|
|
356
|
+
*/
|
|
357
|
+
async export(projectId, definitionId) {
|
|
358
|
+
return this.callPost(formatServiceUrl(API_PROJECT_DEFINITION_EXPORT, { url: this.config.url, projectId, definitionId }, this.config.insecure), undefined, `Failed to export robot definition for ${projectId}, definitionId ${definitionId}.`);
|
|
359
|
+
}
|
|
360
|
+
/** Import robot definition from JSON format
|
|
361
|
+
*
|
|
362
|
+
* Accepts a previously exported robot definition
|
|
363
|
+
*
|
|
364
|
+
* @param projectId - Project Id
|
|
365
|
+
* @param profileData - Robot definition data
|
|
366
|
+
* @param newName - Optional new name for the robot definition. If not provided, the name from the imported definition will be used.
|
|
367
|
+
* @param newDescription - Optional new description for the robot definition. If not provided, the description from the imported definition will be used.
|
|
368
|
+
*
|
|
369
|
+
* @see export
|
|
370
|
+
*/
|
|
371
|
+
async import(projectId, profileData, newName, newDescription) {
|
|
372
|
+
const formData = new FormData();
|
|
373
|
+
if (newName) {
|
|
374
|
+
formData.append('name', newName);
|
|
375
|
+
}
|
|
376
|
+
if (newDescription) {
|
|
377
|
+
formData.append('description', newDescription);
|
|
378
|
+
}
|
|
379
|
+
formData.append('file', profileData);
|
|
380
|
+
return this.callPost(formatServiceUrl(API_PROJECT_DEFINITION_IMPORT, { url: this.config.url, projectId }, this.config.insecure), formData, `Failed to import robot definition for ${projectId}.`);
|
|
381
|
+
}
|
|
348
382
|
/**
|
|
349
383
|
* Update gamepads for a robot definition
|
|
350
384
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IBaseService, IOperation, IProject, IProjectInfo, IRocosSDKConfig, ProjectUser, RocosError } from '../models';
|
|
1
|
+
import { ExternalProject, IBaseService, IOperation, IProject, IProjectInfo, IRocosSDKConfig, NewProjectRequest, ProjectUser, RocosError } from '../models';
|
|
2
2
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
3
3
|
export declare class ProjectService extends BaseServiceAbstract implements IBaseService {
|
|
4
4
|
constructor(config: IRocosSDKConfig);
|
|
@@ -57,7 +57,7 @@ export declare class ProjectService extends BaseServiceAbstract implements IBase
|
|
|
57
57
|
* @param templateId - Template Id, From back-end responses
|
|
58
58
|
* @param body - Optional parameters
|
|
59
59
|
*/
|
|
60
|
-
createProjectByTemplate(templateId: string, body?:
|
|
60
|
+
createProjectByTemplate(templateId: string, body?: NewProjectRequest): Promise<void>;
|
|
61
61
|
/**
|
|
62
62
|
* Operations related functions
|
|
63
63
|
*/
|
|
@@ -103,4 +103,9 @@ export declare class ProjectService extends BaseServiceAbstract implements IBase
|
|
|
103
103
|
*/
|
|
104
104
|
listUsers(projectId: string): Promise<ProjectUser[]>;
|
|
105
105
|
getProjectByLinkedProjectId(linkedProjectId: string): Promise<IProject>;
|
|
106
|
+
/**
|
|
107
|
+
* List external projects
|
|
108
|
+
* @returns Returns list of DroneDeploy projects with their location and linked state
|
|
109
|
+
*/
|
|
110
|
+
listExternalProjects(accountId: string): Promise<ExternalProject[]>;
|
|
106
111
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { API_ACCOUNT_PROJECT_ID_URL, API_ACCOUNT_PROJECT_URL, API_LINKED_PROJECT_URL, API_PROJECT_ID_URL, API_PROJECT_OPERATION_ID_URL, API_PROJECT_OPERATION_URL, API_PROJECT_URL, API_PROJECT_USERS_URL, API_TEMPLATE_PROVISION_ID_URL, API_TEMPLATE_PROVISION_URL, } from '../constants/api';
|
|
2
|
-
import {
|
|
1
|
+
import { API_ACCOUNT_EXTERNAL_PROJECTS_URL, API_ACCOUNT_PROJECT_ID_URL, API_ACCOUNT_PROJECT_URL, API_LINKED_PROJECT_URL, API_PROJECT_ID_URL, API_PROJECT_OPERATION_ID_URL, API_PROJECT_OPERATION_URL, API_PROJECT_URL, API_PROJECT_USERS_URL, API_TEMPLATE_PROVISION_ID_URL, API_TEMPLATE_PROVISION_URL, } from '../constants/api';
|
|
2
|
+
import { RocosError, errorCodes, } from '../models';
|
|
3
3
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
4
4
|
import { RocosLogger } from '../logger/RocosLogger';
|
|
5
5
|
import { formatServiceUrl } from '../helpers/formatServiceUrl';
|
|
@@ -90,9 +90,6 @@ export class ProjectService extends BaseServiceAbstract {
|
|
|
90
90
|
* @param templateId - Template Id, From back-end responses
|
|
91
91
|
* @param body - Optional parameters
|
|
92
92
|
*/
|
|
93
|
-
// TODO: map the request model
|
|
94
|
-
// TODO: map the response object
|
|
95
|
-
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
96
93
|
async createProjectByTemplate(templateId, body) {
|
|
97
94
|
return this.callPost(formatServiceUrl(API_TEMPLATE_PROVISION_ID_URL, { url: this.config.url, templateId }, this.config.insecure), body, `Failed to create project template for ${templateId}.`);
|
|
98
95
|
}
|
|
@@ -160,4 +157,11 @@ export class ProjectService extends BaseServiceAbstract {
|
|
|
160
157
|
async getProjectByLinkedProjectId(linkedProjectId) {
|
|
161
158
|
return this.callGet(formatServiceUrl(API_LINKED_PROJECT_URL, { url: this.config.url, linkedProjectId }, this.config.insecure), `Failed to get project info for linked project ID: ${linkedProjectId}.`);
|
|
162
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* List external projects
|
|
162
|
+
* @returns Returns list of DroneDeploy projects with their location and linked state
|
|
163
|
+
*/
|
|
164
|
+
async listExternalProjects(accountId) {
|
|
165
|
+
return this.callGet(formatServiceUrl(API_ACCOUNT_EXTERNAL_PROJECTS_URL, { url: this.config.url, accountId }, this.config.insecure), 'Failed to get external project list.');
|
|
166
|
+
}
|
|
163
167
|
}
|
|
@@ -35,6 +35,10 @@ export interface PeerConnectionParams {
|
|
|
35
35
|
projectId: string;
|
|
36
36
|
callsign: string;
|
|
37
37
|
logLevel?: 'trace';
|
|
38
|
+
mimeType?: {
|
|
39
|
+
video?: string;
|
|
40
|
+
audio?: string;
|
|
41
|
+
};
|
|
38
42
|
}
|
|
39
43
|
interface InternalPeerConnectionParams extends PeerConnectionParams {
|
|
40
44
|
endpoint: {
|
|
@@ -54,7 +58,7 @@ export declare class RTPWebRTCService extends BaseServiceAbstract implements IBa
|
|
|
54
58
|
*
|
|
55
59
|
* If `logLevel` is set to trace, the connection will emit all messages as events
|
|
56
60
|
*/
|
|
57
|
-
createPeerConnection(params: PeerConnectionParams): WebRTCConnection
|
|
61
|
+
createPeerConnection(params: PeerConnectionParams): Promise<WebRTCConnection>;
|
|
58
62
|
}
|
|
59
63
|
export declare class WebRTCConnection {
|
|
60
64
|
private pc?;
|
|
@@ -64,6 +68,7 @@ export declare class WebRTCConnection {
|
|
|
64
68
|
private readonly projectId;
|
|
65
69
|
private readonly callsign;
|
|
66
70
|
private readonly logLevel?;
|
|
71
|
+
private sendOfferOptions?;
|
|
67
72
|
private errorsSubject$;
|
|
68
73
|
private streamsSubject$;
|
|
69
74
|
private eventsSubject$;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { RocosError, errorCodes } from '../models';
|
|
2
2
|
import { Subject, scan, shareReplay } from 'rxjs';
|
|
3
3
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
4
|
+
import { RocosStore } from '../store/RocosStore';
|
|
4
5
|
import { splitRobotTopic } from '../helpers/splitRobotTopic';
|
|
5
6
|
export var WebRTCEventType;
|
|
6
7
|
(function (WebRTCEventType) {
|
|
@@ -33,19 +34,21 @@ export class RTPWebRTCService extends BaseServiceAbstract {
|
|
|
33
34
|
*
|
|
34
35
|
* If `logLevel` is set to trace, the connection will emit all messages as events
|
|
35
36
|
*/
|
|
36
|
-
createPeerConnection(params) {
|
|
37
|
+
async createPeerConnection(params) {
|
|
37
38
|
const isInsecure = this.config.insecure ?? false;
|
|
38
39
|
const port = this.config.port ?? (isInsecure ? 80 : 443);
|
|
40
|
+
const token = (await RocosStore.getSDKInstance(this.config).getAuthService().getToken()).value;
|
|
39
41
|
return new WebRTCConnection({
|
|
40
42
|
endpoint: {
|
|
41
43
|
host: this.config.url,
|
|
42
44
|
port,
|
|
43
45
|
insecure: isInsecure,
|
|
44
46
|
},
|
|
45
|
-
token
|
|
47
|
+
token,
|
|
46
48
|
projectId: params.projectId,
|
|
47
49
|
callsign: params.callsign,
|
|
48
50
|
logLevel: params.logLevel,
|
|
51
|
+
mimeType: params.mimeType,
|
|
49
52
|
});
|
|
50
53
|
}
|
|
51
54
|
}
|
|
@@ -62,6 +65,10 @@ export class WebRTCConnection {
|
|
|
62
65
|
this.projectId = params.projectId;
|
|
63
66
|
this.callsign = params.callsign;
|
|
64
67
|
this.logLevel = params.logLevel;
|
|
68
|
+
this.sendOfferOptions = {
|
|
69
|
+
audioMimeType: params.mimeType?.audio,
|
|
70
|
+
videoMimeType: params.mimeType?.video,
|
|
71
|
+
};
|
|
65
72
|
}
|
|
66
73
|
get peerConnectionAvailable() {
|
|
67
74
|
return !!this.pc;
|
|
@@ -142,6 +149,7 @@ export class WebRTCConnection {
|
|
|
142
149
|
},
|
|
143
150
|
body: JSON.stringify({
|
|
144
151
|
sdp,
|
|
152
|
+
options: this.sendOfferOptions,
|
|
145
153
|
}),
|
|
146
154
|
})
|
|
147
155
|
.then((res) => res.json())
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IBaseService, IRobot, IRobotSettings, IRobotTemplate, IRocosSDKConfig, RocosError } from '../models';
|
|
1
|
+
import { IBaseService, IConnectedCallsign, IRobot, IRobotSettings, IRobotTemplate, IRocosSDKConfig, RocosError } from '../models';
|
|
2
2
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
3
3
|
export declare class RobotService extends BaseServiceAbstract implements IBaseService {
|
|
4
4
|
constructor(config: IRocosSDKConfig);
|
|
@@ -275,4 +275,6 @@ export declare class RobotService extends BaseServiceAbstract implements IBaseSe
|
|
|
275
275
|
* @param model - \payload
|
|
276
276
|
*/
|
|
277
277
|
updateGamepads(projectId: string, callsign: string, model: any): Promise<any>;
|
|
278
|
+
getConnectedCallsigns(projectId: string): Promise<Map<string, IConnectedCallsign>>;
|
|
279
|
+
getConnectedCallsign(projectId: string, callsign: string): Promise<IConnectedCallsign>;
|
|
278
280
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { API_PROJECT_PROFILE_DASHBOARD_CUSTOM_WIDGET_URL, API_PROJECT_PROFILE_DASHBOARD_ID_URL, API_PROJECT_PROFILE_DASHBOARD_URL, API_PROJECT_ROBOT_AGENT_URL, API_PROJECT_ROBOT_ATTRIBUTES_URL, API_PROJECT_ROBOT_BUTTON_URL, API_PROJECT_ROBOT_COMMAND2_URL, API_PROJECT_ROBOT_COMMAND_URL, API_PROJECT_ROBOT_DASHBOARD_CUSTOM_WIDGET_URL, API_PROJECT_ROBOT_DASHBOARD_ID_URL, API_PROJECT_ROBOT_DASHBOARD_URL, API_PROJECT_ROBOT_GAMEPAD_URL, API_PROJECT_ROBOT_ID_URL, API_PROJECT_ROBOT_REGISTER_URL, API_PROJECT_ROBOT_SETTING_URL, API_PROJECT_ROBOT_TRIGGER_URL, API_PROJECT_ROBOT_URL, API_PROJECT_VROBOT_DEPLOY_URL, API_PROJECT_VROBOT_DETAILS_URL, API_SOURCE_SCHEMA_URL, API_TEMPLATE_DEPLOY_URL, } from '../constants/api';
|
|
2
|
-
import {
|
|
1
|
+
import { API_PROJECT_PROFILE_DASHBOARD_CUSTOM_WIDGET_URL, API_PROJECT_PROFILE_DASHBOARD_ID_URL, API_PROJECT_PROFILE_DASHBOARD_URL, API_PROJECT_ROBOT_AGENT_URL, API_PROJECT_ROBOT_ATTRIBUTES_URL, API_PROJECT_ROBOT_BUTTON_URL, API_PROJECT_ROBOT_COMMAND2_URL, API_PROJECT_ROBOT_COMMAND_URL, API_PROJECT_ROBOT_CONFIGS_CONNECTIONS_URL, API_PROJECT_ROBOT_CONFIGS_CONNECTION_URL, API_PROJECT_ROBOT_DASHBOARD_CUSTOM_WIDGET_URL, API_PROJECT_ROBOT_DASHBOARD_ID_URL, API_PROJECT_ROBOT_DASHBOARD_URL, API_PROJECT_ROBOT_GAMEPAD_URL, API_PROJECT_ROBOT_ID_URL, API_PROJECT_ROBOT_REGISTER_URL, API_PROJECT_ROBOT_SETTING_URL, API_PROJECT_ROBOT_TRIGGER_URL, API_PROJECT_ROBOT_URL, API_PROJECT_VROBOT_DEPLOY_URL, API_PROJECT_VROBOT_DETAILS_URL, API_SOURCE_SCHEMA_URL, API_TEMPLATE_DEPLOY_URL, } from '../constants/api';
|
|
2
|
+
import { Robot, RobotTemplate, RocosError, errorCodes, } from '../models';
|
|
3
3
|
import { BaseServiceAbstract } from './BaseServiceAbstract';
|
|
4
4
|
import { RocosLogger } from '../logger/RocosLogger';
|
|
5
5
|
import { cleanObject } from '../helpers/cleanObject';
|
|
@@ -457,4 +457,10 @@ export class RobotService extends BaseServiceAbstract {
|
|
|
457
457
|
async updateGamepads(projectId, callsign, model) {
|
|
458
458
|
return this.callPost(formatServiceUrl(API_PROJECT_ROBOT_GAMEPAD_URL, { url: this.config.url, projectId, callsign }, this.config.insecure), model, `Failed to update gamepads for ${projectId}, callsign ${callsign}.`);
|
|
459
459
|
}
|
|
460
|
+
async getConnectedCallsigns(projectId) {
|
|
461
|
+
return this.callGet(formatServiceUrl(API_PROJECT_ROBOT_CONFIGS_CONNECTIONS_URL, { url: this.config.url, projectId }, this.config.insecure), `Failed to get connected callsigns for ${projectId}.`);
|
|
462
|
+
}
|
|
463
|
+
async getConnectedCallsign(projectId, callsign) {
|
|
464
|
+
return this.callGet(formatServiceUrl(API_PROJECT_ROBOT_CONFIGS_CONNECTION_URL, { url: this.config.url, projectId, callsign }, this.config.insecure), `Failed to get connected callsign for ${projectId}, callsign ${callsign}.`);
|
|
465
|
+
}
|
|
460
466
|
}
|