@dronedeploy/rocos-js-sdk 3.0.1-alpha.19 → 3.0.1-alpha.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. package/cjs/IRocosSDK.d.ts +2 -2
  2. package/cjs/RocosSDK.d.ts +6 -1
  3. package/cjs/RocosSDK.js +10 -0
  4. package/cjs/constants/api.d.ts +1 -0
  5. package/cjs/constants/api.js +2 -1
  6. package/cjs/helpers/websandbox/connection.d.ts +2 -1
  7. package/cjs/helpers/websandbox/connection.js +6 -5
  8. package/cjs/helpers/websandbox/frame/frame.js +4 -1
  9. package/cjs/helpers/websandbox/frame/frame.source.js +1 -1
  10. package/cjs/helpers/websandbox/frame/worker/manager.d.ts +8 -4
  11. package/cjs/helpers/websandbox/frame/worker/manager.js +32 -14
  12. package/cjs/helpers/websandbox/frame/worker/worker.source.js +1 -1
  13. package/cjs/helpers/websandbox/sandbox.d.ts +1 -1
  14. package/cjs/helpers/websandbox/sandbox.js +7 -7
  15. package/cjs/models/RocosError.d.ts +1 -0
  16. package/cjs/models/RocosError.js +1 -0
  17. package/cjs/models/ServiceEnum.d.ts +19 -18
  18. package/cjs/models/ServiceEnum.js +19 -18
  19. package/cjs/models/graph/Position.d.ts +6 -0
  20. package/cjs/models/graph/Position.js +2 -0
  21. package/cjs/models/graph/Quaternion.d.ts +6 -0
  22. package/cjs/models/graph/Quaternion.js +2 -0
  23. package/cjs/models/graph/Vector3.d.ts +5 -0
  24. package/cjs/models/graph/Vector3.js +2 -0
  25. package/cjs/models/graph/index.d.ts +3 -0
  26. package/cjs/models/graph/index.js +19 -0
  27. package/cjs/models/index.d.ts +1 -0
  28. package/cjs/models/index.js +1 -0
  29. package/cjs/models/maps/Panorama.d.ts +1 -17
  30. package/cjs/models/target/Target.d.ts +27 -0
  31. package/cjs/models/target/Target.js +2 -0
  32. package/cjs/node/RocosSDKNode.d.ts +1 -6
  33. package/cjs/node/RocosSDKNode.js +3 -9
  34. package/cjs/services/EvaluatorService.js +1 -1
  35. package/cjs/services/TargetService.d.ts +11 -0
  36. package/cjs/services/TargetService.js +31 -0
  37. package/cjs/services/index.d.ts +9 -8
  38. package/cjs/services/index.js +9 -8
  39. package/esm/IRocosSDK.d.ts +2 -2
  40. package/esm/RocosSDK.d.ts +6 -1
  41. package/esm/RocosSDK.js +11 -1
  42. package/esm/constants/api.d.ts +1 -0
  43. package/esm/constants/api.js +1 -0
  44. package/esm/helpers/websandbox/connection.d.ts +2 -1
  45. package/esm/helpers/websandbox/connection.js +6 -5
  46. package/esm/helpers/websandbox/frame/frame.js +4 -1
  47. package/esm/helpers/websandbox/frame/frame.source.js +1 -1
  48. package/esm/helpers/websandbox/frame/worker/manager.d.ts +8 -4
  49. package/esm/helpers/websandbox/frame/worker/manager.js +32 -14
  50. package/esm/helpers/websandbox/frame/worker/worker.source.js +1 -1
  51. package/esm/helpers/websandbox/sandbox.d.ts +1 -1
  52. package/esm/helpers/websandbox/sandbox.js +7 -7
  53. package/esm/models/RocosError.d.ts +1 -0
  54. package/esm/models/RocosError.js +1 -0
  55. package/esm/models/ServiceEnum.d.ts +19 -18
  56. package/esm/models/ServiceEnum.js +19 -18
  57. package/esm/models/graph/Position.d.ts +6 -0
  58. package/esm/models/graph/Position.js +1 -0
  59. package/esm/models/graph/Quaternion.d.ts +6 -0
  60. package/esm/models/graph/Quaternion.js +1 -0
  61. package/esm/models/graph/Vector3.d.ts +5 -0
  62. package/esm/models/graph/Vector3.js +1 -0
  63. package/esm/models/graph/index.d.ts +3 -0
  64. package/esm/models/graph/index.js +3 -0
  65. package/esm/models/index.d.ts +1 -0
  66. package/esm/models/index.js +1 -0
  67. package/esm/models/maps/Panorama.d.ts +1 -17
  68. package/esm/models/target/Target.d.ts +27 -0
  69. package/esm/models/target/Target.js +1 -0
  70. package/esm/node/RocosSDKNode.d.ts +1 -6
  71. package/esm/node/RocosSDKNode.js +4 -10
  72. package/esm/services/BaseServiceAbstract.js +1 -1
  73. package/esm/services/EvaluatorService.js +1 -1
  74. package/esm/services/TargetService.d.ts +11 -0
  75. package/esm/services/TargetService.js +27 -0
  76. package/esm/services/index.d.ts +9 -8
  77. package/esm/services/index.js +9 -8
  78. package/package.json +1 -1
@@ -1,6 +1,5 @@
1
- import { AssetStorageService, AuthService, CallerService, CommandService, ConfigGroupService, ControlService, DashboardService, DeviceCredentialsService, EvaluatorService, EventService, FileAccessorService, IntegrationService, MapService, ProfileService, ProjectService, RobotService, SearchService, SpotProvisioningService, SpotProvisioningServiceNode, StreamService, TelemetryService, TimeSyncerService, UserService, WebRTCSignallingService, WorkflowService } from './services';
1
+ import { AssetStorageService, AuthService, CallerService, CommandService, ConfigGroupService, ControlService, DashboardService, DeviceCredentialsService, EvaluatorService, EventService, FileAccessorService, IntegrationService, MapService, ProfileService, ProjectService, RTPWebRTCService, RobotService, SearchService, SpotProvisioningService, SpotProvisioningServiceNode, StreamService, TargetService, TelemetryService, TimeSyncerService, UserService, WebRTCSignallingService, WorkflowService } from './services';
2
2
  import { IBaseService, IDebugLevel, ServiceEnum } from './models';
3
- import { RTPWebRTCService } from './services/RTPWebRTCService';
4
3
  export declare abstract class IRocosSDK {
5
4
  abstract getService<T extends IBaseService>(name: ServiceEnum): T;
6
5
  abstract getAuthService(): AuthService;
@@ -28,6 +27,7 @@ export declare abstract class IRocosSDK {
28
27
  abstract getIntegrationService(): IntegrationService;
29
28
  abstract getEvaluatorService(): EvaluatorService;
30
29
  abstract getDeviceCredentialsService(): DeviceCredentialsService;
30
+ abstract getTargetService(): TargetService;
31
31
  abstract cleanup(): Promise<boolean>;
32
32
  abstract enableDebugMode(on: boolean): void;
33
33
  abstract setDebugLevel(level: IDebugLevel): void;
package/cjs/RocosSDK.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AssetStorageService, AuthService, CallerService, CommandService, ConfigGroupService, ControlService, DashboardService, DeviceCredentialsService, EvaluatorService, EventService, FileAccessorService, IntegrationService, MapService, ProfileService, ProjectService, RTPWebRTCService, RobotService, ScheduleService, SearchService, SpotProvisioningService, StreamService, TelemetryService, TimeSyncerService, UserService, WebRTCSignallingService, WorkflowService } from './services';
1
+ import { AssetStorageService, AuthService, CallerService, CommandService, ConfigGroupService, ControlService, DashboardService, DeviceCredentialsService, EvaluatorService, EventService, FileAccessorService, IntegrationService, MapService, ProfileService, ProjectService, RTPWebRTCService, RobotService, ScheduleService, SearchService, SpotProvisioningService, StreamService, TargetService, TelemetryService, TimeSyncerService, UserService, WebRTCSignallingService, WorkflowService } from './services';
2
2
  import { AuthorisedConfig, IBaseService, IDebugLevel, IRocosSDKConfig, ServiceEnum } from './models';
3
3
  import { IRocosSDK } from './IRocosSDK';
4
4
  import { Logger } from 'loglevel';
@@ -131,6 +131,11 @@ export declare class RocosSDK implements IRocosSDK {
131
131
  * @returns DeviceCredentialsService
132
132
  */
133
133
  getDeviceCredentialsService(): DeviceCredentialsService;
134
+ /**
135
+ * Gets the asset service.
136
+ * @returns AssetService
137
+ */
138
+ getTargetService(): TargetService;
134
139
  get platformTimeOffset(): number;
135
140
  get platformTime(): number;
136
141
  /**
package/cjs/RocosSDK.js CHANGED
@@ -107,6 +107,9 @@ class RocosSDK {
107
107
  case models_1.ServiceEnum.DEVICE_CREDENTIALS:
108
108
  this.services[name] = new services_1.DeviceCredentialsService(config);
109
109
  break;
110
+ case models_1.ServiceEnum.TARGET:
111
+ this.services[name] = new services_1.TargetService(config);
112
+ break;
110
113
  }
111
114
  }
112
115
  this.logger.debug(`Found service ${name}.`);
@@ -277,6 +280,13 @@ class RocosSDK {
277
280
  getDeviceCredentialsService() {
278
281
  return this.getService(models_1.ServiceEnum.DEVICE_CREDENTIALS);
279
282
  }
283
+ /**
284
+ * Gets the asset service.
285
+ * @returns AssetService
286
+ */
287
+ getTargetService() {
288
+ return this.getService(models_1.ServiceEnum.TARGET);
289
+ }
280
290
  get platformTimeOffset() {
281
291
  return services_1.PlatFormTimeService.getInstance(this.getTimeSyncerService())?.platformTimeOffset;
282
292
  }
@@ -133,3 +133,4 @@ export declare const API_PROJECT_DEPLOYED_WORKFLOW_URL = "https://{url}/projects
133
133
  export declare const API_LINKED_PROJECT_URL = "https://{url}/linked-projects/{linkedProjectId}";
134
134
  export declare const API_DEVICE_CREDENTIALS_URL = "https://{url}/projects/{projectId}/callsigns/{callsign}/device-credentials";
135
135
  export declare const API_DEVICE_CREDENTIALS_AUTH_URL = "https://{url}/device-credentials/auth";
136
+ export declare const API_TARGETS_URL = "https://{url}/projects/{projectId}/targets";
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.API_PROJECT_ROBOT_REGISTER_URL = exports.API_PROJECT_ROBOT_DEFINITION_URL = exports.API_PROJECT_ROBOT_ATTRIBUTES_URL = exports.API_PROJECT_ROBOT_ID_URL = exports.API_PROJECT_ROBOT_URL = exports.API_PROJECT_MAPPED_ASSETS_PATH_URL = exports.API_PROJECT_MISSION_ASSET_PATH_URL = exports.API_PROJECT_MISSION_ASSETS_PATH_URL = exports.API_PROJECT_FLOW_ASSET_PATH_URL = exports.API_PROJECT_ROBOT_ASSET_PATH_URL = exports.API_PROJECT_ASSET_INTEGRATION_PATH_URL = exports.API_PROJECT_ASSET_INTEGRATIONS_PATH_URL = exports.API_PROJECT_ASSET_INTEGRATION_PROVIDERS_PATH_URL = exports.API_PROJECT_ASSET_PROFILES_SYNC_DEFINITION_PATH_URL = exports.API_PROJECT_ASSET_ROBOTS_SYNC_DEFINITION_PATH_URL = exports.API_PROJECT_ASSET_PATH_URL = exports.API_PROJECT_ASSET_URL = exports.API_PROJECT_USERS_URL = exports.API_PROJECT_ID_URL = exports.API_PROJECT_URL = exports.API_ACCOUNT_PROJECT_APPLICATION_ID_URL = exports.API_ACCOUNT_PROJECT_APPLICATION_URL = exports.API_ACCOUNT_PROJECT_USER_ID_URL = exports.API_ACCOUNT_PROJECT_USER_URL = exports.API_ACCOUNT_PROJECT_ID_URL = exports.API_ACCOUNT_PROJECT_URL = exports.API_SERVER_TIME_URL = exports.API_ACCOUNT_INTEGRATION_TYPE_URL = exports.API_ACCOUNT_INTEGRATION_URL = exports.API_ACCOUNT_SETTINGS_URL = exports.API_AUTH_USER_ACCOUNT_USER_ID_URL = exports.API_AUTH_USER_ACCOUNT_USER_URL = exports.API_ACCOUNT_ACTIVATE_URL = exports.API_ACCOUNT_ID_URL = exports.API_ACCOUNT_URL = exports.API_USER_PAT_TOKEN_URL = exports.API_USER_PAT_URL = exports.API_USER_VERIFY_EMAIL_URL = exports.API_USER_INVITATION_CHECK_URL = exports.API_USER_INVITATION_ACCEPT_URL = exports.API_USER_INVITATION_URL = exports.API_USER_PASSWORD_FORGOT_URL = exports.API_USER_PASSWORD_RESET_URL = exports.API_OTP_AUTH_URL = exports.API_OTP_URL = exports.API_USER_TOKEN_URL = exports.API_USER_AUTH_URL = exports.API_USER_URL = exports.API_ADMIN_USER_INVITATION_URL = exports.API_APPLICATION_AUTH_URL = void 0;
4
4
  exports.API_PROJECT_ROBOT_DASHBOARD_ID_URL = exports.API_PROJECT_ROBOT_DASHBOARD_URL = exports.API_PROJECT_STREAM_CALLSIGN_URL = exports.API_PROJECT_STREAM_DATA_URL = exports.API_PROJECT_STREAM_ID_URL = exports.API_PROJECT_STREAM_URL = exports.API_PROJECT_EXPORT_URL = exports.API_PROJECT_GROUP_TYPE_OWNER_OVERRIDE_URL = exports.API_PROJECT_GROUP_TYPE_OWNER_ID_URL = exports.API_PROJECT_GROUP_TYPE_VERSION_URL = exports.API_PROJECT_GROUP_TYPE_CONFIG_URL = exports.API_PROJECT_GROUP_TYPE_PUBLISH_URL = exports.API_PROJECT_GROUP_TYPE_ID_URL = exports.API_PROJECT_GROUP_TYPE_URL = exports.API_PROJECT_DEFINITION_IMPORT = exports.API_PROJECT_DEFINITION_EXPORT = exports.API_PROJECT_DEFINITION_GAMEPAD_URL = exports.API_PROJECT_DEFINITION_TRIGGER_URL = exports.API_PROJECT_DEFINITION_BUTTON_URL = exports.API_PROJECT_DEFINITION_ACTION_URL = exports.API_PROJECT_DEFINITION_EVENT_URL = exports.API_PROJECT_DEFINITION_COMMAND2_URL = exports.API_PROJECT_DEFINITION_COMMAND_URL = exports.API_PROJECT_DEFINITION_AGENT_URL = exports.API_PROJECT_DEFINITION_SETTING_URL = exports.API_PROJECT_DEFINITION_BLOB_URL = exports.API_PROJECT_DEFINITION_DASHBOARD_URL = exports.API_PROJECT_DEFINITION_COPY_URL = exports.API_PROJECT_DEFINITION_STREAM_URL = exports.API_PROJECT_DEFINITION_ID_URL = exports.API_PROJECT_DEFINITION_URL = exports.API_PROJECT_VROBOT_DEPLOY_URL = exports.API_PROJECT_VROBOT_DETAILS_URL = exports.API_PROJECT_COLLECTION_DOCS_URL = exports.API_PROJECT_COLLECTION_ID_URL = exports.API_PROJECT_DASHBOARD_CUSTOM_WIDGET_URL = exports.API_PROJECT_DASHBOARD_WIDGET_URL = exports.API_PROJECT_DASHBOARD_ID_URL = exports.API_PROJECT_DASHBOARD_URL = exports.API_PROJECT_OPERATION_ID_URL = exports.API_PROJECT_OPERATION_URL = exports.API_PROJECT_ROBOT_GAMEPAD_URL = exports.API_PROJECT_ROBOT_TRIGGER_URL = exports.API_PROJECT_ROBOT_BUTTON_URL = exports.API_PROJECT_ROBOT_COMMAND2_URL = exports.API_PROJECT_ROBOT_COMMAND_URL = exports.API_PROJECT_ROBOT_AGENT_URL = exports.API_PROJECT_ROBOT_SETTING_URL = exports.API_PROJECT_ROBOT_EVENT_HISTORY_URL = exports.API_PROJECT_ROBOT_EVENT_URL = void 0;
5
- exports.API_DEVICE_CREDENTIALS_AUTH_URL = exports.API_DEVICE_CREDENTIALS_URL = exports.API_LINKED_PROJECT_URL = exports.API_PROJECT_DEPLOYED_WORKFLOW_URL = exports.API_PROJECT_WORKFLOW_ASSET_URL = exports.API_PROJECT_WORKFLOW_ID_URL = exports.API_PROJECT_WORKFLOW_URL = exports.API_OBSERVATION_KEYS_URL = exports.API_OBSERVATIONS_URL = exports.API_MAPS_PANORAMA_OBSERVATIONS_URL = exports.API_MAPS_GEOJSON_URL = exports.API_MAPS_DEPLOY_URL = exports.API_MAPS_COPY_URL = exports.API_MAP_ID_URL = exports.API_MAPS_MERGE_URL = exports.API_MAPS_DEPLOYED_URL = exports.API_MAPS_URL = exports.API_DD_INTEGRATION_ISSUES_URL = exports.API_DD_INTEGRATION_OVERLAYS_URL = exports.API_DD_INTEGRATION_PLAN_BY_ID_URL = exports.API_DD_INTEGRATION_PLANS_URL = exports.API_SPOTTY_URL = exports.API_PROJECT_SCHEDULES_URL = exports.API_SOURCE_ID_URL = exports.API_SOURCE_URL = exports.API_SOURCE_SCHEMA_URL = exports.API_TEMPLATE_EXPORTER_URL = exports.API_TEMPLATE_PROVISION_ID_URL = exports.API_TEMPLATE_PROVISION_URL = exports.API_TEMPLATE_DEPLOY_URL = exports.API_PROJECT_PROFILE_DASHBOARD_CUSTOM_WIDGET_URL = exports.API_PROJECT_PROFILE_DASHBOARD_ID_URL = exports.API_PROJECT_PROFILE_DASHBOARD_URL = exports.API_PROJECT_CALLSIGN_STREAM_URL = exports.API_PROJECT_ROBOT_DASHBOARD_CUSTOM_WIDGET_URL = void 0;
5
+ exports.API_TARGETS_URL = exports.API_DEVICE_CREDENTIALS_AUTH_URL = exports.API_DEVICE_CREDENTIALS_URL = exports.API_LINKED_PROJECT_URL = exports.API_PROJECT_DEPLOYED_WORKFLOW_URL = exports.API_PROJECT_WORKFLOW_ASSET_URL = exports.API_PROJECT_WORKFLOW_ID_URL = exports.API_PROJECT_WORKFLOW_URL = exports.API_OBSERVATION_KEYS_URL = exports.API_OBSERVATIONS_URL = exports.API_MAPS_PANORAMA_OBSERVATIONS_URL = exports.API_MAPS_GEOJSON_URL = exports.API_MAPS_DEPLOY_URL = exports.API_MAPS_COPY_URL = exports.API_MAP_ID_URL = exports.API_MAPS_MERGE_URL = exports.API_MAPS_DEPLOYED_URL = exports.API_MAPS_URL = exports.API_DD_INTEGRATION_ISSUES_URL = exports.API_DD_INTEGRATION_OVERLAYS_URL = exports.API_DD_INTEGRATION_PLAN_BY_ID_URL = exports.API_DD_INTEGRATION_PLANS_URL = exports.API_SPOTTY_URL = exports.API_PROJECT_SCHEDULES_URL = exports.API_SOURCE_ID_URL = exports.API_SOURCE_URL = exports.API_SOURCE_SCHEMA_URL = exports.API_TEMPLATE_EXPORTER_URL = exports.API_TEMPLATE_PROVISION_ID_URL = exports.API_TEMPLATE_PROVISION_URL = exports.API_TEMPLATE_DEPLOY_URL = exports.API_PROJECT_PROFILE_DASHBOARD_CUSTOM_WIDGET_URL = exports.API_PROJECT_PROFILE_DASHBOARD_ID_URL = exports.API_PROJECT_PROFILE_DASHBOARD_URL = exports.API_PROJECT_CALLSIGN_STREAM_URL = exports.API_PROJECT_ROBOT_DASHBOARD_CUSTOM_WIDGET_URL = void 0;
6
6
  exports.API_APPLICATION_AUTH_URL = 'https://{url}/applications/auth';
7
7
  exports.API_ADMIN_USER_INVITATION_URL = 'https://{url}/admin/users/invitations';
8
8
  exports.API_USER_URL = 'https://{url}/users';
@@ -138,3 +138,4 @@ exports.API_PROJECT_DEPLOYED_WORKFLOW_URL = 'https://{url}/projects/{projectId}/
138
138
  exports.API_LINKED_PROJECT_URL = 'https://{url}/linked-projects/{linkedProjectId}';
139
139
  exports.API_DEVICE_CREDENTIALS_URL = 'https://{url}/projects/{projectId}/callsigns/{callsign}/device-credentials';
140
140
  exports.API_DEVICE_CREDENTIALS_AUTH_URL = 'https://{url}/device-credentials/auth';
141
+ exports.API_TARGETS_URL = 'https://{url}/projects/{projectId}/targets';
@@ -39,6 +39,8 @@ export default class Connection<Local extends APIDeclaration<Local>, Remote exte
39
39
  * @param args - arguments to pass to remote method
40
40
  */
41
41
  callRemoteMethod<Method extends keyof Remote>(name: Method, ...args: Parameters<Remote[Method]>): Promise<ReturnType<Remote[Method]>>;
42
+ /** Log a message if debug mode is enabled */
43
+ log(...args: unknown[]): void;
42
44
  private onMessageListener;
43
45
  private callLocalMethod;
44
46
  /** Respond to remote call
@@ -62,6 +64,5 @@ export default class Connection<Local extends APIDeclaration<Local>, Remote exte
62
64
  */
63
65
  private popCallback;
64
66
  private postMessage;
65
- private log;
66
67
  }
67
68
  export {};
@@ -45,6 +45,12 @@ class Connection {
45
45
  });
46
46
  });
47
47
  }
48
+ /** Log a message if debug mode is enabled */
49
+ log(...args) {
50
+ if (this.options.debugMode) {
51
+ console.debug(`[${this.name}]`, ...args);
52
+ }
53
+ }
48
54
  onMessageListener(e) {
49
55
  this.log('Received message', e);
50
56
  const { data } = e;
@@ -127,10 +133,5 @@ class Connection {
127
133
  this.log('sending message', { data, targetOrigin });
128
134
  this.postMessageInternal(data, targetOrigin);
129
135
  }
130
- log(...args) {
131
- if (this.options.debugMode) {
132
- console.debug(`[${this.name}]`, ...args);
133
- }
134
- }
135
136
  }
136
137
  exports.default = Connection;
@@ -17,7 +17,10 @@ class Frame {
17
17
  debugMode: isDebugMode,
18
18
  });
19
19
  void this.connection.callRemoteMethod('iframeInitialised');
20
- this.workerManager = new worker_1.default();
20
+ // use roughly half the number of logical cores available clamped between 1 and 6
21
+ const workers = Math.min(Math.max(Math.ceil(navigator.hardwareConcurrency / 2), 1), 6);
22
+ this.connection.log(`Creating ${workers} workers`);
23
+ this.workerManager = new worker_1.default(workers);
21
24
  }
22
25
  async runCode(task) {
23
26
  return this.workerManager.execute(task);
@@ -6,5 +6,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  };
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  const worker_source_1 = __importDefault(require("./worker/worker.source"));
9
- const source = `(()=>{"use strict";var e={880:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.RESPONSE="response",e.MESSAGE="message"}(s||(s={}));const r={allowedSenderOrigin:void 0,debugMode:!1};t.default=class{constructor(e,t,s,i,o={}){this.callbacks=new Map,this.serviceMethods=new Map,this.name=e,this.options={...r,...o},this.log("Created connection w/ allowedOrigin:",this.options.allowedSenderOrigin),this.serviceMethods=new Map(Object.entries(s));const[n]=crypto.getRandomValues(new Uint32Array(1));this.incrementalID=n,this.postMessageInternal=t,i((e=>this.onMessageListener(e)))}callRemoteMethod(e,...t){return this.log("Calling Remote Method",{name:e,args:t}),new Promise(((r,i)=>{const o=this.registerCallback(r,i);this.postMessage({callId:o,type:s.MESSAGE,methodName:e,arguments:t})}))}onMessageListener(e){this.log("Received message",e);const{data:t}=e,{allowedSenderOrigin:r}=this.options;switch(r&&e.origin!==r&&console.warn(\`Received message from invalid origin: \${e.origin}\`),t.type){case s.RESPONSE:return void this.popCallback(t.callId,t.success,t.result);case s.MESSAGE:this.callLocalMethod(t.methodName,t.arguments).then((e=>this.responseOtherSide(t.callId,e))).catch((e=>this.responseOtherSide(t.callId,e,!1)))}}async callLocalMethod(e,t){this.log("calling local method",e,t);const s=this.serviceMethods.get(e);if(!s)throw new Error(\`service method \${e} not found\`);return s(...t)}responseOtherSide(e,t,r=!0){this.log("responding to remote call",{id:e,result:t,success:r});const i=t=>{this.postMessage({callId:e,type:s.RESPONSE,success:r,result:t})};try{i(t)}catch(e){e instanceof DOMException&&i(JSON.parse(JSON.stringify(t)))}}registerCallback(e,t){const s=(++this.incrementalID).toString();return this.log("registering callback for id",s),this.callbacks.set(s,{success:e,failure:t}),s}popCallback(e,t,s){this.log("calling callback for id",e,{success:t,result:s});const r=this.callbacks.get(e);t?r?.success(s):r?.failure(s),this.callbacks.delete(e)}postMessage(e,t="*"){this.log("sending message",{data:e,targetOrigin:t}),this.postMessageInternal(e,t)}log(...e){this.options.debugMode&&console.debug(\`[\${this.name}]\`,...e)}}},306:function(e,t,s){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(s(880)),o=r(s(54)),n=new class{constructor(){const e=!!window?.debugMode;this.connection=new i.default("FRAME",window.parent.postMessage.bind(window.parent),{startTask:this.runCode.bind(this)},(e=>{window.addEventListener("message",e)}),{debugMode:e}),this.connection.callRemoteMethod("iframeInitialised"),this.workerManager=new o.default}async runCode(e){return this.workerManager.execute(e)}};t.default=n},54:function(e,t,s){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(s(420));t.default=i.default},420:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.messageListeners=new Map,this.worker=this.createWorker()}async execute(e){const t={...e,contextVariable:e.contextVariable??"ctx"},s=this.runTask(t),r=new Promise(((t,s)=>{const r=AbortSignal.timeout(e.timeout);r.addEventListener("abort",(()=>{s(r.reason)}))}));return Promise.race([s,r]).catch((e=>{throw"TimeoutError"===e.name&&this.terminate(),e})).finally((()=>{this.removeMessageListener(e.id)}))}terminate(){for(const e of this.messageListeners.values())this.worker.removeEventListener("message",e);this.worker.terminate(),this.worker=this.createWorker()}runTask(e){return new Promise(((t,s)=>{const r=r=>{const{data:i}=r;i.id===e.id&&(i.success?t(i.result):s(i.result))};this.messageListeners.set(e.id,r),this.worker.addEventListener("message",r),this.worker.postMessage(e)}))}createWorker(){const e=URL.createObjectURL(new Blob(["${worker_source_1.default.replace(/(['`"$])/g, '\\$1')}"],{type:"application/javascript"}));return new Worker(e)}removeMessageListener(e){const t=this.messageListeners.get(e);t&&this.worker.removeEventListener("message",t)}}}},t={};!function s(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,s),o.exports}(306)})();`;
9
+ const source = `(()=>{"use strict";var e;!function(e){e.RESPONSE="response",e.MESSAGE="message"}(e||(e={}));const s={allowedSenderOrigin:void 0,debugMode:!1};class t{constructor(e,t,r,n,o={}){this.callbacks=new Map,this.serviceMethods=new Map,this.name=e,this.options={...s,...o},this.log("Created connection w/ allowedOrigin:",this.options.allowedSenderOrigin),this.serviceMethods=new Map(Object.entries(r));const[i]=crypto.getRandomValues(new Uint32Array(1));this.incrementalID=i,this.postMessageInternal=t,n((e=>this.onMessageListener(e)))}callRemoteMethod(s,...t){return this.log("Calling Remote Method",{name:s,args:t}),new Promise(((r,n)=>{const o=this.registerCallback(r,n);this.postMessage({callId:o,type:e.MESSAGE,methodName:s,arguments:t})}))}log(...e){this.options.debugMode&&console.debug(\`[\${this.name}]\`,...e)}onMessageListener(s){this.log("Received message",s);const{data:t}=s,{allowedSenderOrigin:r}=this.options;switch(r&&s.origin!==r&&console.warn(\`Received message from invalid origin: \${s.origin}\`),t.type){case e.RESPONSE:return void this.popCallback(t.callId,t.success,t.result);case e.MESSAGE:this.callLocalMethod(t.methodName,t.arguments).then((e=>this.responseOtherSide(t.callId,e))).catch((e=>this.responseOtherSide(t.callId,e,!1)))}}async callLocalMethod(e,s){this.log("calling local method",e,s);const t=this.serviceMethods.get(e);if(!t)throw new Error(\`service method \${e} not found\`);return t(...s)}responseOtherSide(s,t,r=!0){this.log("responding to remote call",{id:s,result:t,success:r});const n=t=>{this.postMessage({callId:s,type:e.RESPONSE,success:r,result:t})};try{n(t)}catch(e){e instanceof DOMException&&n(JSON.parse(JSON.stringify(t)))}}registerCallback(e,s){const t=(++this.incrementalID).toString();return this.log("registering callback for id",t),this.callbacks.set(t,{success:e,failure:s}),t}popCallback(e,s,t){this.log("calling callback for id",e,{success:s,result:t});const r=this.callbacks.get(e);s?r?.success(t):r?.failure(t),this.callbacks.delete(e)}postMessage(e,s="*"){this.log("sending message",{data:e,targetOrigin:s}),this.postMessageInternal(e,s)}}new class{constructor(){const e=!!window?.debugMode;this.connection=new t("FRAME",window.parent.postMessage.bind(window.parent),{startTask:this.runCode.bind(this)},(e=>{window.addEventListener("message",e)}),{debugMode:e}),this.connection.callRemoteMethod("iframeInitialised");const s=Math.max(Math.ceil(navigator.hardwareConcurrency/2),1);this.connection.log(\`Creating \${s} workers\`),this.workerManager=new class{constructor(e=1){this.messageListeners=new Map,this.requestedWorkers=e,this.workers=Array.from({length:e},(()=>this.createWorker())),this.nextWorkerGenerator=this.nextWorker()}async execute(e){const s=this.nextWorkerGenerator.next().value,t={...e,contextVariable:e.contextVariable??"ctx"},r=this.runTask(s,t),n=new Promise(((s,t)=>{const r=AbortSignal.timeout(e.timeout);r.addEventListener("abort",(()=>{t(r.reason)}))}));return Promise.race([r,n]).catch((e=>{if("TimeoutError"===e.name)throw this.terminate(s),new DOMException("soft timeout reached","TimeoutError");throw e})).finally((()=>{this.removeMessageListener(e.id)}))}terminate(e){for(const s of this.messageListeners.values())e.removeEventListener("message",s);e.terminate(),this.rebuildWorkers()}runTask(e,s){return new Promise(((t,r)=>{const n=e=>{const{data:n}=e;n.id===s.id&&(n.success?t(n.result):r(n.result))};this.messageListeners.set(s.id,n),e.addEventListener("message",n),e.postMessage(s)}))}createWorker(){const e=URL.createObjectURL(new Blob(["${worker_source_1.default.replace(/(['`"$])/g, '\\$1')}"],{type:"application/javascript"}));return new Worker(e)}rebuildWorkers(){const e=this.requestedWorkers-this.workers.length;if(e<0)throw new Error("Cannot have less than 0 workers");if(e<=0)return;const s=Array.from({length:e},(()=>this.createWorker()));this.workers.push(...s)}*nextWorker(){let e=0;for(;;)e=(e+1)%this.workers.length,yield this.workers[e]}removeMessageListener(e){const s=this.messageListeners.get(e);s&&(this.workers.forEach((e=>e.removeEventListener("message",s))),this.messageListeners.delete(e))}}(s)}async runCode(e){return this.workerManager.execute(e)}}})();`;
10
10
  exports.default = source;
@@ -1,11 +1,15 @@
1
1
  import { Task } from '../../types';
2
2
  export default class Manager {
3
- private worker;
4
- private messageListeners;
5
- constructor();
3
+ private readonly requestedWorkers;
4
+ private readonly workers;
5
+ private nextWorkerIndex;
6
+ private readonly messageListeners;
7
+ constructor(workers?: number);
6
8
  execute(task: Task): Promise<unknown>;
7
- terminate(): void;
9
+ private terminate;
8
10
  private runTask;
9
11
  private createWorker;
12
+ private rebuildWorkers;
13
+ private getWorker;
10
14
  private removeMessageListener;
11
15
  }
@@ -3,16 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  // this token (__WORKER_SOURCE__) is replaced by webpack with the source of the worker
4
4
  const WORKER_SOURCE = '__WORKER_SOURCE__';
5
5
  class Manager {
6
- constructor() {
6
+ constructor(workers = 1) {
7
+ this.nextWorkerIndex = 0;
7
8
  this.messageListeners = new Map();
8
- this.worker = this.createWorker();
9
+ this.requestedWorkers = workers;
10
+ this.workers = Array.from({ length: workers }, () => this.createWorker());
9
11
  }
10
12
  async execute(task) {
13
+ const worker = this.getWorker();
11
14
  const workerTask = {
12
15
  ...task,
13
16
  contextVariable: task.contextVariable ?? 'ctx',
14
17
  };
15
- const result = this.runTask(workerTask);
18
+ const result = this.runTask(worker, workerTask);
16
19
  const timeout = new Promise((_, reject) => {
17
20
  const signal = AbortSignal.timeout(task.timeout);
18
21
  signal.addEventListener('abort', () => {
@@ -22,7 +25,8 @@ class Manager {
22
25
  return Promise.race([result, timeout])
23
26
  .catch((e) => {
24
27
  if (e.name === 'TimeoutError') {
25
- this.terminate();
28
+ this.terminate(worker);
29
+ throw new DOMException('soft timeout reached', 'TimeoutError');
26
30
  }
27
31
  throw e;
28
32
  })
@@ -30,14 +34,14 @@ class Manager {
30
34
  this.removeMessageListener(task.id);
31
35
  });
32
36
  }
33
- terminate() {
37
+ terminate(worker) {
34
38
  for (const listener of this.messageListeners.values()) {
35
- this.worker.removeEventListener('message', listener);
39
+ worker.removeEventListener('message', listener);
36
40
  }
37
- this.worker.terminate();
38
- this.worker = this.createWorker();
41
+ worker.terminate();
42
+ this.rebuildWorkers();
39
43
  }
40
- runTask(task) {
44
+ runTask(worker, task) {
41
45
  return new Promise((resolve, reject) => {
42
46
  const listener = (event) => {
43
47
  const { data } = event;
@@ -51,20 +55,34 @@ class Manager {
51
55
  }
52
56
  };
53
57
  this.messageListeners.set(task.id, listener);
54
- this.worker.addEventListener('message', listener);
55
- this.worker.postMessage(task);
58
+ worker.addEventListener('message', listener);
59
+ worker.postMessage(task);
56
60
  });
57
61
  }
58
62
  createWorker() {
59
63
  const blob = URL.createObjectURL(new Blob([WORKER_SOURCE], { type: 'application/javascript' }));
60
64
  return new Worker(blob);
61
65
  }
66
+ rebuildWorkers() {
67
+ const needed = this.requestedWorkers - this.workers.length;
68
+ if (needed < 0)
69
+ throw new Error('Cannot have less than 0 workers');
70
+ if (needed <= 0)
71
+ return;
72
+ const newWorkers = Array.from({ length: needed }, () => this.createWorker());
73
+ this.workers.push(...newWorkers);
74
+ }
75
+ getWorker() {
76
+ const worker = this.workers[this.nextWorkerIndex];
77
+ this.nextWorkerIndex = (this.nextWorkerIndex + 1) % this.workers.length;
78
+ return worker;
79
+ }
62
80
  removeMessageListener(id) {
63
81
  const listener = this.messageListeners.get(id);
64
- if (!listener) {
82
+ if (!listener)
65
83
  return;
66
- }
67
- this.worker.removeEventListener('message', listener);
84
+ this.workers.forEach((worker) => worker.removeEventListener('message', listener));
85
+ this.messageListeners.delete(id);
68
86
  }
69
87
  }
70
88
  exports.default = Manager;
@@ -2,5 +2,5 @@
2
2
  // Auto-generated file
3
3
  /* eslint-disable */
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- const source = `(()=>{"use strict";(()=>{const e=["TEMPORARY","PERSISTENT","console","self","onmessage","postMessage","global","allowed","Array","Boolean","Date","Function","Number","Object","RegExp","String","Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","isFinite","isNaN","parseFloat","parseInt","Infinity","JSON","Math","NaN","undefined"];[...Object.getOwnPropertyNames(self),...Object.getOwnPropertyNames(self.__proto__)].forEach((r=>{e.includes(r)||Object.defineProperty(self,r,{get:()=>{throw new Error(\`Security Exception: cannot access \${r}\`)},set:()=>{throw new Error(\`Security Exception: cannot set \${r}\`)},configurable:!1})})),onmessage=e=>{let r,t=!0;try{r=Function(e.data.contextVariable,\`"use strict";return (\${e.data.code});\`)(e.data.context)}catch(e){r=e,t=!1}const o={id:e.data.id,result:r,success:t};postMessage(o)}})()})();`;
5
+ const source = `(()=>{"use strict";const e=["TEMPORARY","PERSISTENT","console","self","onmessage","postMessage","global","allowed","Array","Boolean","Date","Function","Number","Object","RegExp","String","Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","isFinite","isNaN","parseFloat","parseInt","Infinity","JSON","Math","NaN","undefined"];[...Object.getOwnPropertyNames(self),...Object.getOwnPropertyNames(self.__proto__)].forEach((r=>{e.includes(r)||Object.defineProperty(self,r,{get:()=>{throw new Error(\`Security Exception: cannot access \${r}\`)},set:()=>{throw new Error(\`Security Exception: cannot set \${r}\`)},configurable:!1})})),onmessage=e=>{let r,t=!0;try{r=Function(e.data.contextVariable,\`"use strict";return (\${e.data.code});\`)(e.data.context)}catch(e){r=e,t=!1}const o={id:e.data.id,result:r,success:t};postMessage(o)}})();`;
6
6
  exports.default = source;
@@ -44,7 +44,7 @@ export default class WebSandbox {
44
44
  *
45
45
  * This will remove the iframe from the DOM and remove the message listener.
46
46
  */
47
- destroy(): void;
47
+ destroy(reason?: unknown): void;
48
48
  private initialise;
49
49
  private validateOptions;
50
50
  private destroyAndRebuild;
@@ -35,8 +35,8 @@ class WebSandbox {
35
35
  this.initialised = this.initialise();
36
36
  this.frameAbortController = new AbortController();
37
37
  if (options.abortSignal) {
38
- this.promisifyAbortSignal(options.abortSignal).catch(() => {
39
- void this.destroyAndRebuild(this.frame.id);
38
+ this.promisifyAbortSignal(options.abortSignal).catch((reason) => {
39
+ void this.destroyAndRebuild(this.frame.id, reason);
40
40
  });
41
41
  }
42
42
  }
@@ -51,8 +51,8 @@ class WebSandbox {
51
51
  *
52
52
  * This will remove the iframe from the DOM and remove the message listener.
53
53
  */
54
- destroy() {
55
- this.frameAbortController.abort();
54
+ destroy(reason) {
55
+ this.frameAbortController.abort(reason);
56
56
  this.frame.remove();
57
57
  this.removeMessageListener();
58
58
  }
@@ -85,11 +85,11 @@ class WebSandbox {
85
85
  throw new Error('maximum timeout must be less than or equal to 5000ms');
86
86
  }
87
87
  }
88
- async destroyAndRebuild(frameId) {
88
+ async destroyAndRebuild(frameId, reason) {
89
89
  if (this.frame.id !== frameId) {
90
90
  return;
91
91
  }
92
- this.destroy();
92
+ this.destroy(reason);
93
93
  this.frame = this.createFrame();
94
94
  this.frameAbortController = new AbortController();
95
95
  await this.initialise();
@@ -123,7 +123,7 @@ class WebSandbox {
123
123
  const signals = [task, timeout, frameAbortedSignal, userAbortedSignal].filter((i) => i !== null);
124
124
  return Promise.race(signals).catch(async (e) => {
125
125
  if (e.name === 'TimeoutError') {
126
- await this.destroyAndRebuild(frameId);
126
+ await this.destroyAndRebuild(frameId, 'task timed out');
127
127
  }
128
128
  throw e;
129
129
  });
@@ -25,6 +25,7 @@ export declare const errorCodes: {
25
25
  EVALUATOR_SERVICE_ERROR: string;
26
26
  WEBRTC_SERVICE_ERROR: string;
27
27
  DEVICE_CREDENTIALS_SERVICE_ERROR: string;
28
+ TARGET_SERVICE_ERROR: string;
28
29
  };
29
30
  export declare class RocosError extends Error {
30
31
  code?: string;
@@ -28,6 +28,7 @@ exports.errorCodes = {
28
28
  EVALUATOR_SERVICE_ERROR: 'EVALUATOR_SERVICE_ERROR',
29
29
  WEBRTC_SERVICE_ERROR: 'WEBRTC_SERVICE_ERROR',
30
30
  DEVICE_CREDENTIALS_SERVICE_ERROR: 'DEVICE_CREDENTIALS_SERVICE_ERROR',
31
+ TARGET_SERVICE_ERROR: 'TARGET_SERVICE_ERROR',
31
32
  };
32
33
  class RocosError extends Error {
33
34
  constructor(err, code, statusCode) {
@@ -1,29 +1,30 @@
1
1
  export declare enum ServiceEnum {
2
+ ASSET_STORAGE = "asset_storage",
2
3
  AUTH = "auth",
3
- TELEMETRY = "telemetry",
4
- ROBOT = "robot",
5
- EVENT = "event",
6
- PROJECT = "project",
7
4
  CALLER = "caller",
8
5
  COMMAND = "command",
9
- CONTROL = "control",
10
- SEARCH = "search",
11
6
  CONFIG_GROUP = "config_group",
7
+ CONTROL = "control",
12
8
  DASHBOARD = "dashboard",
13
- FUNCTION = "function",
14
- STREAM = "stream",
15
- USER = "user",
16
- TIME_SYNCER = "time_syncer",
17
- WORKFLOW = "workflow",
18
- ASSET_STORAGE = "asset_storage",
19
- PROFILE = "profile",
20
- WEBRTC_SIGNALLING = "webrtc_signalling",
9
+ DEVICE_CREDENTIALS = "device_credentials",
10
+ EVENT = "event",
11
+ EVALUATOR = "evaluator",
21
12
  FILE_ACCESSOR = "file_accessor",
22
- SCHEDULE = "schedule",
23
- SPOT_PROVISIONER = "spot_provisioner",
13
+ FUNCTION = "function",
24
14
  INTEGRATION = "integration",
25
15
  MAP = "map",
26
- EVALUATOR = "evaluator",
16
+ PROJECT = "project",
17
+ PROFILE = "profile",
18
+ ROBOT = "robot",
27
19
  RTP_WEBRTC = "rtp_webrtc",
28
- DEVICE_CREDENTIALS = "device_credentials"
20
+ SCHEDULE = "schedule",
21
+ SEARCH = "search",
22
+ SPOT_PROVISIONER = "spot_provisioner",
23
+ STREAM = "stream",
24
+ TARGET = "target",
25
+ TELEMETRY = "telemetry",
26
+ TIME_SYNCER = "time_syncer",
27
+ USER = "user",
28
+ WEBRTC_SIGNALLING = "webrtc_signalling",
29
+ WORKFLOW = "workflow"
29
30
  }
@@ -3,31 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceEnum = void 0;
4
4
  var ServiceEnum;
5
5
  (function (ServiceEnum) {
6
+ ServiceEnum["ASSET_STORAGE"] = "asset_storage";
6
7
  ServiceEnum["AUTH"] = "auth";
7
- ServiceEnum["TELEMETRY"] = "telemetry";
8
- ServiceEnum["ROBOT"] = "robot";
9
- ServiceEnum["EVENT"] = "event";
10
- ServiceEnum["PROJECT"] = "project";
11
8
  ServiceEnum["CALLER"] = "caller";
12
9
  ServiceEnum["COMMAND"] = "command";
13
- ServiceEnum["CONTROL"] = "control";
14
- ServiceEnum["SEARCH"] = "search";
15
10
  ServiceEnum["CONFIG_GROUP"] = "config_group";
11
+ ServiceEnum["CONTROL"] = "control";
16
12
  ServiceEnum["DASHBOARD"] = "dashboard";
17
- ServiceEnum["FUNCTION"] = "function";
18
- ServiceEnum["STREAM"] = "stream";
19
- ServiceEnum["USER"] = "user";
20
- ServiceEnum["TIME_SYNCER"] = "time_syncer";
21
- ServiceEnum["WORKFLOW"] = "workflow";
22
- ServiceEnum["ASSET_STORAGE"] = "asset_storage";
23
- ServiceEnum["PROFILE"] = "profile";
24
- ServiceEnum["WEBRTC_SIGNALLING"] = "webrtc_signalling";
13
+ ServiceEnum["DEVICE_CREDENTIALS"] = "device_credentials";
14
+ ServiceEnum["EVENT"] = "event";
15
+ ServiceEnum["EVALUATOR"] = "evaluator";
25
16
  ServiceEnum["FILE_ACCESSOR"] = "file_accessor";
26
- ServiceEnum["SCHEDULE"] = "schedule";
27
- ServiceEnum["SPOT_PROVISIONER"] = "spot_provisioner";
17
+ ServiceEnum["FUNCTION"] = "function";
28
18
  ServiceEnum["INTEGRATION"] = "integration";
29
19
  ServiceEnum["MAP"] = "map";
30
- ServiceEnum["EVALUATOR"] = "evaluator";
20
+ ServiceEnum["PROJECT"] = "project";
21
+ ServiceEnum["PROFILE"] = "profile";
22
+ ServiceEnum["ROBOT"] = "robot";
31
23
  ServiceEnum["RTP_WEBRTC"] = "rtp_webrtc";
32
- ServiceEnum["DEVICE_CREDENTIALS"] = "device_credentials";
24
+ ServiceEnum["SCHEDULE"] = "schedule";
25
+ ServiceEnum["SEARCH"] = "search";
26
+ ServiceEnum["SPOT_PROVISIONER"] = "spot_provisioner";
27
+ ServiceEnum["STREAM"] = "stream";
28
+ ServiceEnum["TARGET"] = "target";
29
+ ServiceEnum["TELEMETRY"] = "telemetry";
30
+ ServiceEnum["TIME_SYNCER"] = "time_syncer";
31
+ ServiceEnum["USER"] = "user";
32
+ ServiceEnum["WEBRTC_SIGNALLING"] = "webrtc_signalling";
33
+ ServiceEnum["WORKFLOW"] = "workflow";
33
34
  })(ServiceEnum || (exports.ServiceEnum = ServiceEnum = {}));
@@ -0,0 +1,6 @@
1
+ export interface Position {
2
+ pitch: number;
3
+ yaw: number;
4
+ x?: number;
5
+ y?: number;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ export interface Quaternion {
2
+ x: number;
3
+ y: number;
4
+ z: number;
5
+ w: number;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export interface Vector3 {
2
+ x: number;
3
+ y: number;
4
+ z: number;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export * from './Position';
2
+ export * from './Quaternion';
3
+ export * from './Vector3';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Position"), exports);
18
+ __exportStar(require("./Quaternion"), exports);
19
+ __exportStar(require("./Vector3"), exports);
@@ -33,6 +33,7 @@ export * from './integrations/Plan';
33
33
  export * from './maps/Map';
34
34
  export * from './maps/Panorama';
35
35
  export * from './projects/ProjectUser';
36
+ export * from './target/Target';
36
37
  export * from './ExportDataQuery';
37
38
  export * from './HttpError';
38
39
  export * from './IBaseService';
@@ -49,6 +49,7 @@ __exportStar(require("./integrations/Plan"), exports);
49
49
  __exportStar(require("./maps/Map"), exports);
50
50
  __exportStar(require("./maps/Panorama"), exports);
51
51
  __exportStar(require("./projects/ProjectUser"), exports);
52
+ __exportStar(require("./target/Target"), exports);
52
53
  __exportStar(require("./ExportDataQuery"), exports);
53
54
  __exportStar(require("./HttpError"), exports);
54
55
  __exportStar(require("./IBaseService"), exports);
@@ -1,20 +1,4 @@
1
- export interface Position {
2
- pitch: number;
3
- yaw: number;
4
- x?: number;
5
- y?: number;
6
- }
7
- export interface Quaternion {
8
- x: number;
9
- y: number;
10
- z: number;
11
- w: number;
12
- }
13
- export interface Vector3 {
14
- x: number;
15
- y: number;
16
- z: number;
17
- }
1
+ import { Position, Quaternion, Vector3 } from '../graph';
18
2
  export interface Observation {
19
3
  panoramaID: string;
20
4
  id?: string;
@@ -0,0 +1,27 @@
1
+ import { Quaternion } from '../graph/Quaternion';
2
+ import { Vector3 } from '../graph/Vector3';
3
+ /**
4
+ * Observation target model (such as an asset, a point of interest, a puddle, etc.)
5
+ */
6
+ export interface Target {
7
+ /**
8
+ * Unique identifier of the target
9
+ */
10
+ id: string;
11
+ /**
12
+ * Name of the target
13
+ */
14
+ name: string;
15
+ /**
16
+ * Metadata associated with the target (key-value pairs) such as name, type, asset-id, etc.
17
+ */
18
+ data: Record<string, string>;
19
+ /**
20
+ * Position of the target in the 3D space
21
+ */
22
+ translation: Vector3;
23
+ /**
24
+ * Rotation of the target in the 3D space
25
+ */
26
+ rotation: Quaternion;
27
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });