@dronedeploy/rocos-js-sdk 3.0.18 → 3.0.19

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.
@@ -1,4 +1,4 @@
1
- import { ICallerCallParams, ICallerInvokeParams, ICallerParams, ICallerStream, IRocosCallerMessage, IRocosCallerMessageResponseAck, IRocosCallerMessageResponseResult, IRocosCallerMessageResponseReturn, IRocosSDKConfig, IStreamConfig } from '../models';
1
+ import { ICallerCallParams, ICallerInvokeParams, ICallerParams, ICallerStream, IRocosCallerMessage, IRocosCallerMessageResponse, IRocosCallerMessageResponseAck, IRocosCallerMessageResponseResult, IRocosCallerMessageResponseReturn, IRocosSDKConfig, IStreamConfig } from '../models';
2
2
  import { Observable } from 'rxjs';
3
3
  import { BaseStreamService } from './BaseStreamService';
4
4
  export declare class CallerService extends BaseStreamService<ICallerStream> {
@@ -19,7 +19,9 @@ export declare class CallerService extends BaseStreamService<ICallerStream> {
19
19
  return$: Observable<IRocosCallerMessageResponseReturn>;
20
20
  result$: Observable<IRocosCallerMessageResponseResult>;
21
21
  ack$: Observable<IRocosCallerMessageResponseAck>;
22
+ cancel$: Observable<IRocosCallerMessageResponse>;
22
23
  };
24
+ private getCallerParams;
23
25
  /** Call a service and return the response(s) as UTF-8 encoded JSON.
24
26
  *
25
27
  * It will complete once a result message is received with a `COMPLETE_SUCCESS` status,
@@ -28,6 +30,9 @@ export declare class CallerService extends BaseStreamService<ICallerStream> {
28
30
  * This is a high level method that wraps the lower level `invokeRequest` method.
29
31
  *
30
32
  * Equivalent to calling `callRaw` and then parsing the return payload as UTF-8 encoded JSON.
33
+ * Also wraps the cancel functionality to return a promise. Await `cancel()` to cancel the call.
34
+ *
35
+ * When cancelled, `return$` will error and `result$` will complete
31
36
  *
32
37
  * @see callRaw
33
38
  * @see invokeRequest
@@ -36,6 +41,7 @@ export declare class CallerService extends BaseStreamService<ICallerStream> {
36
41
  return$: Observable<T>;
37
42
  result$: Observable<IRocosCallerMessageResponseResult>;
38
43
  ack$: Observable<IRocosCallerMessageResponseAck>;
44
+ cancel: () => Promise<void>;
39
45
  };
40
46
  protected createStream(): Promise<ICallerStream>;
41
47
  protected getStream(config: IStreamConfig): ICallerStream;
@@ -41,13 +41,9 @@ class CallerService extends BaseStreamService_1.BaseStreamService {
41
41
  const payloadString = params.options?.rawPayload
42
42
  ? String(params.payload ?? '')
43
43
  : JSON.stringify(params.payload ?? {});
44
+ const callerParams = this.getCallerParams(params, component, topic);
44
45
  const source$ = this.invokeRequest({
45
- uid: params.options?.uid ?? (0, uuid_1.v4)(),
46
- projectId: params.projectId,
47
- callsign: params.callsign,
48
- subSystem: '',
49
- component,
50
- topic,
46
+ ...callerParams,
51
47
  responseLevelNumber: models_1.RocosResponseLevel.ALL,
52
48
  payload: payloadString,
53
49
  query: params.options?.query,
@@ -60,10 +56,22 @@ class CallerService extends BaseStreamService_1.BaseStreamService {
60
56
  }));
61
57
  const return$ = source$.pipe((0, operators_1.filter)((x) => x.return !== undefined), (0, rxjs_1.map)((x) => x.return), (0, rxjs_1.takeUntil)(resultNotifier$));
62
58
  const ack$ = source$.pipe((0, operators_1.filter)((x) => x.ack !== undefined), (0, rxjs_1.map)((x) => x.ack), (0, rxjs_1.takeUntil)(resultNotifier$));
59
+ const cancel$ = this.cancelRequest(callerParams).pipe((0, rxjs_1.mergeMap)(callerMessageHelpers_1.getResponses), (0, callerMessageHelpers_1.handleChunkedMessages)());
63
60
  return {
64
61
  return$,
65
62
  result$,
66
63
  ack$,
64
+ cancel$,
65
+ };
66
+ }
67
+ getCallerParams(params, component, topic) {
68
+ return {
69
+ uid: params.options?.uid ?? (0, uuid_1.v4)(),
70
+ projectId: params.projectId,
71
+ callsign: params.callsign,
72
+ subSystem: '',
73
+ component,
74
+ topic,
67
75
  };
68
76
  }
69
77
  /** Call a service and return the response(s) as UTF-8 encoded JSON.
@@ -74,18 +82,27 @@ class CallerService extends BaseStreamService_1.BaseStreamService {
74
82
  * This is a high level method that wraps the lower level `invokeRequest` method.
75
83
  *
76
84
  * Equivalent to calling `callRaw` and then parsing the return payload as UTF-8 encoded JSON.
85
+ * Also wraps the cancel functionality to return a promise. Await `cancel()` to cancel the call.
86
+ *
87
+ * When cancelled, `return$` will error and `result$` will complete
77
88
  *
78
89
  * @see callRaw
79
90
  * @see invokeRequest
80
91
  */
81
92
  call(params) {
82
93
  const stream = this.callRaw(params);
94
+ const return$ = stream.return$.pipe((0, rxjs_1.map)((x) => {
95
+ const decoded = new TextDecoder().decode(x.payload);
96
+ return JSON.parse(decoded);
97
+ }));
98
+ const cancel = async () => {
99
+ await (0, rxjs_1.lastValueFrom)(stream.cancel$);
100
+ };
83
101
  return {
84
- ...stream,
85
- return$: stream.return$.pipe((0, rxjs_1.map)((x) => {
86
- const decoded = new TextDecoder().decode(x.payload);
87
- return JSON.parse(decoded);
88
- })),
102
+ return$,
103
+ result$: stream.result$,
104
+ ack$: stream.ack$,
105
+ cancel,
89
106
  };
90
107
  }
91
108
  async createStream() {
@@ -1,4 +1,4 @@
1
- import { ICallerCallParams, ICallerInvokeParams, ICallerParams, ICallerStream, IRocosCallerMessage, IRocosCallerMessageResponseAck, IRocosCallerMessageResponseResult, IRocosCallerMessageResponseReturn, IRocosSDKConfig, IStreamConfig } from '../models';
1
+ import { ICallerCallParams, ICallerInvokeParams, ICallerParams, ICallerStream, IRocosCallerMessage, IRocosCallerMessageResponse, IRocosCallerMessageResponseAck, IRocosCallerMessageResponseResult, IRocosCallerMessageResponseReturn, IRocosSDKConfig, IStreamConfig } from '../models';
2
2
  import { Observable } from 'rxjs';
3
3
  import { BaseStreamService } from './BaseStreamService';
4
4
  export declare class CallerService extends BaseStreamService<ICallerStream> {
@@ -19,7 +19,9 @@ export declare class CallerService extends BaseStreamService<ICallerStream> {
19
19
  return$: Observable<IRocosCallerMessageResponseReturn>;
20
20
  result$: Observable<IRocosCallerMessageResponseResult>;
21
21
  ack$: Observable<IRocosCallerMessageResponseAck>;
22
+ cancel$: Observable<IRocosCallerMessageResponse>;
22
23
  };
24
+ private getCallerParams;
23
25
  /** Call a service and return the response(s) as UTF-8 encoded JSON.
24
26
  *
25
27
  * It will complete once a result message is received with a `COMPLETE_SUCCESS` status,
@@ -28,6 +30,9 @@ export declare class CallerService extends BaseStreamService<ICallerStream> {
28
30
  * This is a high level method that wraps the lower level `invokeRequest` method.
29
31
  *
30
32
  * Equivalent to calling `callRaw` and then parsing the return payload as UTF-8 encoded JSON.
33
+ * Also wraps the cancel functionality to return a promise. Await `cancel()` to cancel the call.
34
+ *
35
+ * When cancelled, `return$` will error and `result$` will complete
31
36
  *
32
37
  * @see callRaw
33
38
  * @see invokeRequest
@@ -36,6 +41,7 @@ export declare class CallerService extends BaseStreamService<ICallerStream> {
36
41
  return$: Observable<T>;
37
42
  result$: Observable<IRocosCallerMessageResponseResult>;
38
43
  ack$: Observable<IRocosCallerMessageResponseAck>;
44
+ cancel: () => Promise<void>;
39
45
  };
40
46
  protected createStream(): Promise<ICallerStream>;
41
47
  protected getStream(config: IStreamConfig): ICallerStream;
@@ -1,5 +1,5 @@
1
1
  import { ResultStatus, RocosResponseLevel, } from '../models';
2
- import { from, map, mergeMap, share, switchMap, take, takeUntil, throwError } from 'rxjs';
2
+ import { from, lastValueFrom, map, mergeMap, share, switchMap, take, takeUntil, throwError } from 'rxjs';
3
3
  import { catchError, filter } from 'rxjs/operators';
4
4
  import { getResponses, handleChunkedMessages } from '../helpers/callerMessageHelpers';
5
5
  import { BaseStreamService } from './BaseStreamService';
@@ -38,13 +38,9 @@ export class CallerService extends BaseStreamService {
38
38
  const payloadString = params.options?.rawPayload
39
39
  ? String(params.payload ?? '')
40
40
  : JSON.stringify(params.payload ?? {});
41
+ const callerParams = this.getCallerParams(params, component, topic);
41
42
  const source$ = this.invokeRequest({
42
- uid: params.options?.uid ?? v4(),
43
- projectId: params.projectId,
44
- callsign: params.callsign,
45
- subSystem: '',
46
- component,
47
- topic,
43
+ ...callerParams,
48
44
  responseLevelNumber: RocosResponseLevel.ALL,
49
45
  payload: payloadString,
50
46
  query: params.options?.query,
@@ -57,10 +53,22 @@ export class CallerService extends BaseStreamService {
57
53
  }));
58
54
  const return$ = source$.pipe(filter((x) => x.return !== undefined), map((x) => x.return), takeUntil(resultNotifier$));
59
55
  const ack$ = source$.pipe(filter((x) => x.ack !== undefined), map((x) => x.ack), takeUntil(resultNotifier$));
56
+ const cancel$ = this.cancelRequest(callerParams).pipe(mergeMap(getResponses), handleChunkedMessages());
60
57
  return {
61
58
  return$,
62
59
  result$,
63
60
  ack$,
61
+ cancel$,
62
+ };
63
+ }
64
+ getCallerParams(params, component, topic) {
65
+ return {
66
+ uid: params.options?.uid ?? v4(),
67
+ projectId: params.projectId,
68
+ callsign: params.callsign,
69
+ subSystem: '',
70
+ component,
71
+ topic,
64
72
  };
65
73
  }
66
74
  /** Call a service and return the response(s) as UTF-8 encoded JSON.
@@ -71,18 +79,27 @@ export class CallerService extends BaseStreamService {
71
79
  * This is a high level method that wraps the lower level `invokeRequest` method.
72
80
  *
73
81
  * Equivalent to calling `callRaw` and then parsing the return payload as UTF-8 encoded JSON.
82
+ * Also wraps the cancel functionality to return a promise. Await `cancel()` to cancel the call.
83
+ *
84
+ * When cancelled, `return$` will error and `result$` will complete
74
85
  *
75
86
  * @see callRaw
76
87
  * @see invokeRequest
77
88
  */
78
89
  call(params) {
79
90
  const stream = this.callRaw(params);
91
+ const return$ = stream.return$.pipe(map((x) => {
92
+ const decoded = new TextDecoder().decode(x.payload);
93
+ return JSON.parse(decoded);
94
+ }));
95
+ const cancel = async () => {
96
+ await lastValueFrom(stream.cancel$);
97
+ };
80
98
  return {
81
- ...stream,
82
- return$: stream.return$.pipe(map((x) => {
83
- const decoded = new TextDecoder().decode(x.payload);
84
- return JSON.parse(decoded);
85
- })),
99
+ return$,
100
+ result$: stream.result$,
101
+ ack$: stream.ack$,
102
+ cancel,
86
103
  };
87
104
  }
88
105
  async createStream() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dronedeploy/rocos-js-sdk",
3
- "version": "3.0.18",
3
+ "version": "3.0.19",
4
4
  "description": "Javascript SDK for rocos",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",