motion-master-client 0.0.46 → 0.0.49
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/package.json +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/motion-master-pub-sub-socket.d.ts +8 -0
- package/src/lib/motion-master-pub-sub-web-socket.d.ts +4 -0
- package/src/lib/motion-master-pub-sub-web-socket.js +5 -6
- package/src/lib/motion-master-pub-sub-web-socket.js.map +1 -1
- package/src/lib/motion-master-pub-sub-worker-socket.d.ts +4 -0
- package/src/lib/motion-master-pub-sub-worker-socket.js +6 -0
- package/src/lib/motion-master-pub-sub-worker-socket.js.map +1 -1
- package/src/lib/motion-master-req-res-socket.d.ts +8 -0
- package/src/lib/motion-master-req-res-web-socket.d.ts +4 -0
- package/src/lib/motion-master-req-res-web-socket.js +6 -7
- package/src/lib/motion-master-req-res-web-socket.js.map +1 -1
- package/src/lib/motion-master-req-res-worker-socket.d.ts +4 -0
- package/src/lib/motion-master-req-res-worker-socket.js +6 -3
- package/src/lib/motion-master-req-res-worker-socket.js.map +1 -1
- package/src/lib/web-socket-connection-close-codes.d.ts +8 -0
- package/src/lib/web-socket-connection-close-codes.js +89 -0
- package/src/lib/web-socket-connection-close-codes.js.map +1 -0
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
package/src/index.js
CHANGED
|
@@ -26,4 +26,5 @@ tslib_1.__exportStar(require("./lib/system-log-line"), exports);
|
|
|
26
26
|
tslib_1.__exportStar(require("./lib/types"), exports);
|
|
27
27
|
tslib_1.__exportStar(require("./lib/urls"), exports);
|
|
28
28
|
tslib_1.__exportStar(require("./lib/util"), exports);
|
|
29
|
+
tslib_1.__exportStar(require("./lib/web-socket-connection-close-codes"), exports);
|
|
29
30
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/motion-master-client/src/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,4DAAkC;AAClC,gEAAsC;AACtC,iEAAuC;AACvC,uDAA6B;AAC7B,qEAA2C;AAC3C,kEAAwC;AACxC,iEAAuC;AACvC,qEAA2C;AAC3C,6EAAmD;AACnD,6EAAmD;AACnD,iFAAuD;AACvD,oFAA0D;AAC1D,6EAAmD;AACnD,6EAAmD;AACnD,iFAAuD;AACvD,oFAA0D;AAC1D,0DAAgC;AAChC,wDAA8B;AAC9B,0DAAgC;AAChC,wEAA8C;AAC9C,gEAAsC;AACtC,sDAA4B;AAC5B,qDAA2B;AAC3B,qDAA2B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/motion-master-client/src/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,4DAAkC;AAClC,gEAAsC;AACtC,iEAAuC;AACvC,uDAA6B;AAC7B,qEAA2C;AAC3C,kEAAwC;AACxC,iEAAuC;AACvC,qEAA2C;AAC3C,6EAAmD;AACnD,6EAAmD;AACnD,iFAAuD;AACvD,oFAA0D;AAC1D,6EAAmD;AACnD,6EAAmD;AACnD,iFAAuD;AACvD,oFAA0D;AAC1D,0DAAgC;AAChC,wDAA8B;AAC9B,0DAAgC;AAChC,wEAA8C;AAC9C,gEAAsC;AACtC,sDAA4B;AAC5B,qDAA2B;AAC3B,qDAA2B;AAC3B,kFAAwD"}
|
|
@@ -5,6 +5,14 @@ export interface MotionMasterPubSubSocket {
|
|
|
5
5
|
* Emits a boolean value when socket gets opened or closed.
|
|
6
6
|
*/
|
|
7
7
|
readonly opened$: BehaviorSubject<boolean>;
|
|
8
|
+
/**
|
|
9
|
+
* Emits close events with code and reason data.
|
|
10
|
+
* @link https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close_event
|
|
11
|
+
*/
|
|
12
|
+
readonly close$: Observable<{
|
|
13
|
+
code: number;
|
|
14
|
+
reason: string;
|
|
15
|
+
}>;
|
|
8
16
|
/**
|
|
9
17
|
* Incoming data is a tuple of topic and decoded message.
|
|
10
18
|
*/
|
|
@@ -3,6 +3,10 @@ import { MotionMasterPubSubSocket } from "./motion-master-pub-sub-socket";
|
|
|
3
3
|
import { IMotionMasterMessage } from "./types";
|
|
4
4
|
export declare class MotionMasterPubSubWebSocket implements MotionMasterPubSubSocket {
|
|
5
5
|
readonly opened$: BehaviorSubject<boolean>;
|
|
6
|
+
readonly close$: Subject<{
|
|
7
|
+
code: number;
|
|
8
|
+
reason: string;
|
|
9
|
+
}>;
|
|
6
10
|
readonly data$: Subject<[string, IMotionMasterMessage]>;
|
|
7
11
|
private webSocket$?;
|
|
8
12
|
private _url?;
|
|
@@ -9,27 +9,25 @@ const util_1 = require("./util");
|
|
|
9
9
|
class MotionMasterPubSubWebSocket {
|
|
10
10
|
constructor() {
|
|
11
11
|
this.opened$ = new rxjs_1.BehaviorSubject(false);
|
|
12
|
+
this.close$ = new rxjs_1.Subject();
|
|
12
13
|
this.data$ = new rxjs_1.Subject();
|
|
13
14
|
}
|
|
14
15
|
get url() {
|
|
15
16
|
return this._url;
|
|
16
17
|
}
|
|
17
18
|
open(url) {
|
|
18
|
-
if (this.opened$.getValue() === true) {
|
|
19
|
-
throw new Error('MotionMasterPubSubWebSocket is already opened!');
|
|
20
|
-
}
|
|
21
19
|
this._url = url;
|
|
22
20
|
this.webSocket$ = this.createWebSocket(url);
|
|
23
21
|
this.webSocket$.subscribe({
|
|
24
22
|
next: (value) => this.data$.next(value),
|
|
25
23
|
error: () => {
|
|
26
|
-
// ignore
|
|
24
|
+
// ignore, clients will receive close$ event instead
|
|
27
25
|
},
|
|
28
26
|
});
|
|
29
27
|
}
|
|
30
28
|
close() {
|
|
31
29
|
var _a;
|
|
32
|
-
(_a = this.webSocket$) === null || _a === void 0 ? void 0 : _a.
|
|
30
|
+
(_a = this.webSocket$) === null || _a === void 0 ? void 0 : _a.complete();
|
|
33
31
|
}
|
|
34
32
|
reopen() {
|
|
35
33
|
if (this.url && this.opened$.value === false) {
|
|
@@ -41,8 +39,9 @@ class MotionMasterPubSubWebSocket {
|
|
|
41
39
|
const webSocketConfig = {
|
|
42
40
|
binaryType: 'arraybuffer',
|
|
43
41
|
closeObserver: {
|
|
44
|
-
next: () => {
|
|
42
|
+
next: (ev) => {
|
|
45
43
|
this.opened$.next(false);
|
|
44
|
+
this.close$.next({ code: ev.code, reason: ev.reason });
|
|
46
45
|
logger_1.logger.info(`Connection closed ${url}`);
|
|
47
46
|
},
|
|
48
47
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"motion-master-pub-sub-web-socket.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/motion-master-pub-sub-web-socket.ts"],"names":[],"mappings":";;;AAAA,+BAAgD;AAChD,8CAAqF;AACrF,qCAAkC;AAElC,mCAAoE;AACpE,iCAAkE;AAElE,MAAa,2BAA2B;IAAxC;QAEW,YAAO,GAAG,IAAI,sBAAe,CAAU,KAAK,CAAC,CAAC;QAE9C,UAAK,GAAG,IAAI,cAAO,EAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"motion-master-pub-sub-web-socket.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/motion-master-pub-sub-web-socket.ts"],"names":[],"mappings":";;;AAAA,+BAAgD;AAChD,8CAAqF;AACrF,qCAAkC;AAElC,mCAAoE;AACpE,iCAAkE;AAElE,MAAa,2BAA2B;IAAxC;QAEW,YAAO,GAAG,IAAI,sBAAe,CAAU,KAAK,CAAC,CAAC;QAE9C,WAAM,GAAG,IAAI,cAAO,EAAqC,CAAC;QAE1D,UAAK,GAAG,IAAI,cAAO,EAAkC,CAAC;IA+DjE,CAAC;IAzDC,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAEhB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YACxB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACvC,KAAK,EAAE,GAAG,EAAE;gBACV,oDAAoD;YACtD,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK;;QACH,MAAA,IAAI,CAAC,UAAU,0CAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACrB;IACH,CAAC;IAEO,eAAe,CAAC,GAAW;QACjC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,eAAe,GAA2D;YAC9E,UAAU,EAAE,aAAa;YACzB,aAAa,EAAE;gBACb,IAAI,EAAE,CAAC,EAAc,EAAE,EAAE;oBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;oBACvD,eAAM,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBAC1C,CAAC;aACF;YACD,YAAY,EAAE,CAAC,CAA4B,EAAkC,EAAE;gBAC7E,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,iCAAiC;gBACrF,MAAM,OAAO,GAAG,2BAAmB,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,KAAK,EAAE,IAAA,+CAAwC,EAAC,OAAO,CAAC,CAAC,CAAC;YACpE,CAAC;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,GAAG,EAAE;oBACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,eAAM,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBAC1C,CAAC;aACF;YACD,GAAG;SACJ,CAAC;QAEF,OAAO,IAAA,qBAAS,EAAC,eAAe,CAAC,CAAC;IACpC,CAAC;CAEF;AArED,kEAqEC"}
|
|
@@ -4,6 +4,10 @@ import { IMotionMasterMessage } from "./types";
|
|
|
4
4
|
export declare class MotionMasterPubSubWorkerSocket implements MotionMasterPubSubSocket {
|
|
5
5
|
readonly worker: Worker;
|
|
6
6
|
opened$: BehaviorSubject<boolean>;
|
|
7
|
+
close$: Subject<{
|
|
8
|
+
code: number;
|
|
9
|
+
reason: string;
|
|
10
|
+
}>;
|
|
7
11
|
data$: Subject<[string, IMotionMasterMessage]>;
|
|
8
12
|
private _url?;
|
|
9
13
|
constructor(worker: Worker);
|
|
@@ -7,6 +7,7 @@ class MotionMasterPubSubWorkerSocket {
|
|
|
7
7
|
constructor(worker) {
|
|
8
8
|
this.worker = worker;
|
|
9
9
|
this.opened$ = new rxjs_1.BehaviorSubject(false);
|
|
10
|
+
this.close$ = new rxjs_1.Subject();
|
|
10
11
|
this.data$ = new rxjs_1.Subject();
|
|
11
12
|
}
|
|
12
13
|
get url() {
|
|
@@ -24,6 +25,11 @@ class MotionMasterPubSubWorkerSocket {
|
|
|
24
25
|
const { topic, messages } = data;
|
|
25
26
|
messages.forEach((message) => this.data$.next([topic, message]));
|
|
26
27
|
}
|
|
28
|
+
else if ('close' in data) {
|
|
29
|
+
const { close } = data;
|
|
30
|
+
this.close$.next(close);
|
|
31
|
+
logger_1.logger.info(`Close event received on pub/sub 🔌 ${url} ${JSON.stringify(close)}`);
|
|
32
|
+
}
|
|
27
33
|
};
|
|
28
34
|
this.worker.postMessage({
|
|
29
35
|
open: { url }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"motion-master-pub-sub-worker-socket.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/motion-master-pub-sub-worker-socket.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"motion-master-pub-sub-worker-socket.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/motion-master-pub-sub-worker-socket.ts"],"names":[],"mappings":";;;AAAA,+BAA4D;AAG5D,qCAAkC;AAElC,MAAa,8BAA8B;IAUzC,YACkB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAThC,YAAO,GAAG,IAAI,sBAAe,CAAC,KAAK,CAAC,CAAC;QAErC,WAAM,GAAG,IAAI,cAAO,EAAqC,CAAC;QAE1D,UAAK,GAAG,IAAI,cAAO,EAAkC,CAAC;IAMlD,CAAC;IAEL,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAEhB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACnC,IAAI,QAAQ,IAAI,IAAI,EAAE;gBACpB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1B,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;aAC/E;iBAAM,IAAI,OAAO,IAAI,IAAI,EAAE;gBAC1B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAwD,IAAI,CAAC;gBACtF,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;aAClE;iBAAM,IAAI,OAAO,IAAI,IAAI,EAAE;gBAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxB,eAAM,CAAC,IAAI,CAAC,sCAAsC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACnF;QACH,CAAC,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YACtB,IAAI,EAAE,EAAE,GAAG,EAAE;SACd,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACrB;IACH,CAAC;CAEF;AAnDD,wEAmDC"}
|
|
@@ -5,6 +5,14 @@ export interface MotionMasterReqResSocket {
|
|
|
5
5
|
* Emits a boolean value when socket gets opened or closed.
|
|
6
6
|
*/
|
|
7
7
|
readonly opened$: BehaviorSubject<boolean>;
|
|
8
|
+
/**
|
|
9
|
+
* Emits close events with code and reason data.
|
|
10
|
+
* @link https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close_event
|
|
11
|
+
*/
|
|
12
|
+
readonly close$: Observable<{
|
|
13
|
+
code: number;
|
|
14
|
+
reason: string;
|
|
15
|
+
}>;
|
|
8
16
|
/**
|
|
9
17
|
* Motion Master is considered alive when it sends messages in regular time interval.
|
|
10
18
|
*/
|
|
@@ -3,6 +3,10 @@ import { MotionMasterReqResSocket } from "./motion-master-req-res-socket";
|
|
|
3
3
|
import { IMotionMasterMessage } from "./types";
|
|
4
4
|
export declare class MotionMasterReqResWebSocket implements MotionMasterReqResSocket {
|
|
5
5
|
readonly opened$: BehaviorSubject<boolean>;
|
|
6
|
+
readonly close$: Subject<{
|
|
7
|
+
code: number;
|
|
8
|
+
reason: string;
|
|
9
|
+
}>;
|
|
6
10
|
readonly alive$: BehaviorSubject<boolean>;
|
|
7
11
|
readonly message$: Subject<IMotionMasterMessage>;
|
|
8
12
|
private aliveTimeoutId;
|
|
@@ -9,6 +9,7 @@ const util_1 = require("./util");
|
|
|
9
9
|
class MotionMasterReqResWebSocket {
|
|
10
10
|
constructor() {
|
|
11
11
|
this.opened$ = new rxjs_1.BehaviorSubject(false);
|
|
12
|
+
this.close$ = new rxjs_1.Subject;
|
|
12
13
|
this.alive$ = new rxjs_1.BehaviorSubject(false);
|
|
13
14
|
this.message$ = new rxjs_1.Subject();
|
|
14
15
|
this.aliveTimeoutId = 0;
|
|
@@ -25,9 +26,6 @@ class MotionMasterReqResWebSocket {
|
|
|
25
26
|
}
|
|
26
27
|
open(url, pingSystemInterval = 250, systemAliveTimeout = 1000) {
|
|
27
28
|
var _a;
|
|
28
|
-
if (this.opened$.getValue() === true) {
|
|
29
|
-
throw new Error('MotionMasterReqResWebSocket is already opened!');
|
|
30
|
-
}
|
|
31
29
|
this._url = url;
|
|
32
30
|
this._pingSystemInterval = pingSystemInterval;
|
|
33
31
|
this._systemAliveTimeout = systemAliveTimeout;
|
|
@@ -38,14 +36,14 @@ class MotionMasterReqResWebSocket {
|
|
|
38
36
|
logger_1.logger.info(context, `Received ${context.name}`);
|
|
39
37
|
})).subscribe({
|
|
40
38
|
next: (message) => this.message$.next(message),
|
|
41
|
-
error: (
|
|
42
|
-
|
|
39
|
+
error: () => {
|
|
40
|
+
// ignore, clients will receive close$ event instead
|
|
43
41
|
},
|
|
44
42
|
});
|
|
45
43
|
}
|
|
46
44
|
close() {
|
|
47
45
|
var _a;
|
|
48
|
-
(_a = this.webSocket$) === null || _a === void 0 ? void 0 : _a.
|
|
46
|
+
(_a = this.webSocket$) === null || _a === void 0 ? void 0 : _a.complete();
|
|
49
47
|
}
|
|
50
48
|
reopen() {
|
|
51
49
|
if (this.url && this.opened$.value === false) {
|
|
@@ -65,12 +63,13 @@ class MotionMasterReqResWebSocket {
|
|
|
65
63
|
const webSocketConfig = {
|
|
66
64
|
binaryType: 'arraybuffer',
|
|
67
65
|
closeObserver: {
|
|
68
|
-
next: () => {
|
|
66
|
+
next: (ev) => {
|
|
69
67
|
var _a;
|
|
70
68
|
(_a = this.pingSystemSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
71
69
|
clearTimeout(this.aliveTimeoutId);
|
|
72
70
|
this.alive$.next(false);
|
|
73
71
|
this.opened$.next(false);
|
|
72
|
+
this.close$.next({ code: ev.code, reason: ev.reason });
|
|
74
73
|
logger_1.logger.info(`Connection closed ${url}`);
|
|
75
74
|
},
|
|
76
75
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"motion-master-req-res-web-socket.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/motion-master-req-res-web-socket.ts"],"names":[],"mappings":";;;AAAA,+BAA0F;AAC1F,8CAAqF;AACrF,qCAAkC;AAElC,mCAAoE;AACpE,iCAA6G;AAE7G,MAAa,2BAA2B;IAAxC;QAEW,YAAO,GAAG,IAAI,sBAAe,CAAU,KAAK,CAAC,CAAC;QAE9C,WAAM,GAAG,IAAI,sBAAe,CAAU,KAAK,CAAC,CAAC;QAE7C,aAAQ,GAAG,IAAI,cAAO,EAAwB,CAAC;QAEhD,mBAAc,GAAG,CAAC,CAAC;QAEnB,uBAAkB,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"motion-master-req-res-web-socket.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/motion-master-req-res-web-socket.ts"],"names":[],"mappings":";;;AAAA,+BAA0F;AAC1F,8CAAqF;AACrF,qCAAkC;AAElC,mCAAoE;AACpE,iCAA6G;AAE7G,MAAa,2BAA2B;IAAxC;QAEW,YAAO,GAAG,IAAI,sBAAe,CAAU,KAAK,CAAC,CAAC;QAE9C,WAAM,GAAG,IAAI,cAA0C,CAAC;QAExD,WAAM,GAAG,IAAI,sBAAe,CAAU,KAAK,CAAC,CAAC;QAE7C,aAAQ,GAAG,IAAI,cAAO,EAAwB,CAAC;QAEhD,mBAAc,GAAG,CAAC,CAAC;QAEnB,uBAAkB,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAuG1F,CAAC;IA7FC,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,kBAAkB,GAAG,GAAG,EAAE,kBAAkB,GAAG,IAAI;;QACnE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAC9C,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAE9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAEhE,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,CACnB,IAAA,UAAG,EAAC,CAAC,IAAgB,EAAE,EAAE,CAAC,2BAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAC3D,IAAA,UAAG,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAC7C,IAAA,aAAM,EAAC,CAAC,OAAO,EAAE,EAAE,WAAC,OAAA,CAAC,CAAC,MAAA,OAAO,CAAC,MAAM,0CAAE,UAAU,CAAC,CAAA,EAAA,CAAC,EAClD,IAAA,UAAG,EAAC,OAAO,CAAC,EAAE,CAAC,IAAA,+CAAwC,EAAC,OAAO,CAAC,CAAC,EACjE,IAAA,UAAG,EAAC,CAAC,OAAO,EAAE,EAAE;YACd,MAAM,OAAO,GAAG,IAAA,gDAAyC,EAAC,OAAO,CAAC,CAAC;YACnE,8DAA8D;YAC9D,eAAM,CAAC,IAAI,CAAC,OAAc,EAAE,YAAY,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,EACF,SAAS,CAAC;YACV,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9C,KAAK,EAAE,GAAG,EAAE;gBACV,oDAAoD;YACtD,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK;;QACH,MAAA,IAAI,CAAC,UAAU,0CAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACvE;IACH,CAAC;IAED,IAAI,CAAC,OAA6B;;QAChC,IAAI,CAAC,CAAA,MAAA,OAAO,CAAC,OAAO,0CAAE,UAAU,CAAA,EAAE;YAChC,MAAM,OAAO,GAAG,IAAA,gDAAyC,EAAC,OAAO,CAAC,CAAC;YACnE,8DAA8D;YAC9D,eAAM,CAAC,IAAI,CAAC,OAAc,EAAE,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;SACrD;QAED,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,CAAC,2BAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IAEO,eAAe,CAAC,GAAW,EAAE,kBAAkB,GAAG,GAAG;QAC3D,MAAM,eAAe,GAAuC;YAC1D,UAAU,EAAE,aAAa;YACzB,aAAa,EAAE;gBACb,IAAI,EAAE,CAAC,EAAc,EAAE,EAAE;;oBACvB,MAAA,IAAI,CAAC,sBAAsB,0CAAE,WAAW,EAAE,CAAC;oBAC3C,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;oBACvD,eAAM,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBAC1C,CAAC;aACF;YACD,YAAY,EAAE,CAAC,CAAe,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAmC,CAAC;YACxF,YAAY,EAAE;gBACZ,IAAI,EAAE,GAAG,EAAE;oBACT,IAAI,CAAC,sBAAsB,GAAG,IAAA,eAAQ,EAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC9F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,eAAM,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBAC1C,CAAC;aACF;YACD,UAAU,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,KAAK;YACxC,GAAG;SACJ,CAAC;QAEF,OAAO,IAAA,qBAAS,EAAC,eAAe,CAAC,CAAC;IACpC,CAAC;IAEO,SAAS,CAAC,kBAAkB,GAAG,IAAI;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;QACD,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAsB,CAAC;IAC3G,CAAC;CAEF;AAnHD,kEAmHC"}
|
|
@@ -4,6 +4,10 @@ import { IMotionMasterMessage } from "./types";
|
|
|
4
4
|
export declare class MotionMasterReqResWorkerSocket implements MotionMasterReqResSocket {
|
|
5
5
|
readonly worker: Worker;
|
|
6
6
|
readonly opened$: BehaviorSubject<boolean>;
|
|
7
|
+
readonly close$: Subject<{
|
|
8
|
+
code: number;
|
|
9
|
+
reason: string;
|
|
10
|
+
}>;
|
|
7
11
|
readonly alive$: BehaviorSubject<boolean>;
|
|
8
12
|
readonly message$: Subject<IMotionMasterMessage>;
|
|
9
13
|
private _url?;
|
|
@@ -8,6 +8,7 @@ class MotionMasterReqResWorkerSocket {
|
|
|
8
8
|
constructor(worker) {
|
|
9
9
|
this.worker = worker;
|
|
10
10
|
this.opened$ = new rxjs_1.BehaviorSubject(false);
|
|
11
|
+
this.close$ = new rxjs_1.Subject();
|
|
11
12
|
this.alive$ = new rxjs_1.BehaviorSubject(false);
|
|
12
13
|
this.message$ = new rxjs_1.Subject();
|
|
13
14
|
}
|
|
@@ -21,9 +22,6 @@ class MotionMasterReqResWorkerSocket {
|
|
|
21
22
|
return this._systemAliveTimeout;
|
|
22
23
|
}
|
|
23
24
|
open(url, pingSystemInterval = 250, systemAliveTimeout = 1000) {
|
|
24
|
-
if (this.opened$.getValue() === true) {
|
|
25
|
-
throw new Error('MotionMasterReqResWorkerSocket is already opened!');
|
|
26
|
-
}
|
|
27
25
|
this._url = url;
|
|
28
26
|
this._pingSystemInterval = pingSystemInterval;
|
|
29
27
|
this._systemAliveTimeout = systemAliveTimeout;
|
|
@@ -45,6 +43,11 @@ class MotionMasterReqResWorkerSocket {
|
|
|
45
43
|
logger_1.logger.info(context, `Received ${context.name}`);
|
|
46
44
|
this.message$.next(message);
|
|
47
45
|
}
|
|
46
|
+
else if ('close' in data) {
|
|
47
|
+
const { close } = data;
|
|
48
|
+
this.close$.next(close);
|
|
49
|
+
logger_1.logger.info(`Close event received on req/res 🔌 ${url} ${JSON.stringify(close)}`);
|
|
50
|
+
}
|
|
48
51
|
};
|
|
49
52
|
this.worker.postMessage({
|
|
50
53
|
open: { url, pingSystemInterval, systemAliveTimeout },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"motion-master-req-res-worker-socket.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/motion-master-req-res-worker-socket.ts"],"names":[],"mappings":";;;AAAA,+BAAgD;AAChD,qCAAkC;AAGlC,iCAAmE;AAEnE,MAAa,8BAA8B;
|
|
1
|
+
{"version":3,"file":"motion-master-req-res-worker-socket.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/motion-master-req-res-worker-socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.webSocketConnectionCloseCodes = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @link https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent/code
|
|
6
|
+
*/
|
|
7
|
+
exports.webSocketConnectionCloseCodes = [
|
|
8
|
+
{
|
|
9
|
+
statusCode: 1000,
|
|
10
|
+
meaning: 'Normal Closure',
|
|
11
|
+
description: 'The connection successfully completed the purpose for which it was created.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
statusCode: 1001,
|
|
15
|
+
meaning: 'Going Away',
|
|
16
|
+
description: 'The endpoint is going away, either because of a server failure or because the browser is navigating away from the page that opened the connection.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
statusCode: 1002,
|
|
20
|
+
meaning: 'Protocol error',
|
|
21
|
+
description: 'The endpoint is terminating the connection due to a protocol error.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
statusCode: 1003,
|
|
25
|
+
meaning: 'Unsupported Data',
|
|
26
|
+
description: 'The connection is being terminated because the endpoint received data of a type it cannot accept. (For example, a text-only endpoint received binary data.)',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
statusCode: 1004,
|
|
30
|
+
meaning: 'Reserved',
|
|
31
|
+
description: 'Reserved. A meaning might be defined in the future.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
statusCode: 1005,
|
|
35
|
+
meaning: 'No Status Rcvd',
|
|
36
|
+
description: 'Reserved. Indicates that no status code was provided even though one was expected.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
statusCode: 1006,
|
|
40
|
+
meaning: 'Abnormal Closure',
|
|
41
|
+
description: 'Reserved. Indicates that a connection was closed abnormally (that is, with no close frame being sent) when a status code is expected.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
statusCode: 1007,
|
|
45
|
+
meaning: 'Invalid frame payload data',
|
|
46
|
+
description: 'The endpoint is terminating the connection because a message was received that contained inconsistent data (e.g., non-UTF-8 data within a text message).',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
statusCode: 1008,
|
|
50
|
+
meaning: 'Policy Violation',
|
|
51
|
+
description: 'The endpoint is terminating the connection because it received a message that violates its policy. This is a generic status code, used when codes 1003 and 1009 are not suitable.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
statusCode: 1009,
|
|
55
|
+
meaning: 'Message Too Big',
|
|
56
|
+
description: 'The endpoint is terminating the connection because a data frame was received that is too large.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
statusCode: 1010,
|
|
60
|
+
meaning: 'Mandatory Ext.',
|
|
61
|
+
description: 'The client is terminating the connection because it expected the server to negotiate one or more extension, but the server didn\'t.',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
statusCode: 1011,
|
|
65
|
+
meaning: 'Internal Error',
|
|
66
|
+
description: 'The server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request.',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
statusCode: 1012,
|
|
70
|
+
meaning: 'Service Restart',
|
|
71
|
+
description: 'The server is terminating the connection because it is restarting.',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
statusCode: 1013,
|
|
75
|
+
meaning: 'Try Again Later',
|
|
76
|
+
description: 'The server is terminating the connection due to a temporary condition, e.g. it is overloaded and is casting off some of its clients.',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
statusCode: 1014,
|
|
80
|
+
meaning: 'Bad Gateway',
|
|
81
|
+
description: 'The server was acting as a gateway or proxy and received an invalid response from the upstream server. This is similar to 502 HTTP Status Code.',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
statusCode: 1015,
|
|
85
|
+
meaning: 'TLS handshake',
|
|
86
|
+
description: 'Reserved. Indicates that the connection was closed due to a failure to perform a TLS handshake (e.g., the server certificate can\'t be verified).',
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
//# sourceMappingURL=web-socket-connection-close-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-socket-connection-close-codes.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/web-socket-connection-close-codes.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,6BAA6B,GAAG;IAC3C;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,6EAA6E;KAC3F;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,oJAAoJ;KAClK;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,qEAAqE;KACnF;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,6JAA6J;KAC3K;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,qDAAqD;KACnE;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,oFAAoF;KAClG;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,uIAAuI;KACrJ;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,4BAA4B;QACrC,WAAW,EAAE,0JAA0J;KACxK;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,mLAAmL;KACjM;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,iGAAiG;KAC/G;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,qIAAqI;KACnJ;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,wIAAwI;KACtJ;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,oEAAoE;KAClF;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,sIAAsI;KACpJ;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,aAAa;QACtB,WAAW,EAAE,iJAAiJ;KAC/J;IACD;QACE,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,mJAAmJ;KACjK;CACF,CAAC"}
|