@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
|
-
|
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
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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
|
-
|
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
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
})),
|
99
|
+
return$,
|
100
|
+
result$: stream.result$,
|
101
|
+
ack$: stream.ack$,
|
102
|
+
cancel,
|
86
103
|
};
|
87
104
|
}
|
88
105
|
async createStream() {
|