motion-master-client 0.0.2 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +123 -49
- package/package.json +21 -6
- package/src/{index.ts → index.d.ts} +23 -22
- package/src/index.js +27 -0
- package/src/index.js.map +1 -0
- package/src/lib/cia402.d.ts +30 -0
- package/src/lib/cia402.js +112 -0
- package/src/lib/cia402.js.map +1 -0
- package/src/lib/device-log-line.d.ts +5 -0
- package/src/lib/device-log-line.js +3 -0
- package/src/lib/device-log-line.js.map +1 -0
- package/src/lib/{device-parameter.ts → device-parameter.d.ts} +56 -69
- package/src/lib/device-parameter.js +39 -0
- package/src/lib/device-parameter.js.map +1 -0
- package/src/lib/device.d.ts +8 -0
- package/src/lib/device.js +3 -0
- package/src/lib/device.js.map +1 -0
- package/src/lib/examples/get-firmware-version-for-all-devices.d.ts +1 -0
- package/src/lib/examples/get-firmware-version-for-all-devices.js +15 -0
- package/src/lib/examples/get-firmware-version-for-all-devices.js.map +1 -0
- package/src/lib/hardware-description.d.ts +37 -0
- package/src/lib/hardware-description.js +48 -0
- package/src/lib/hardware-description.js.map +1 -0
- package/src/lib/logger.d.ts +1 -0
- package/src/lib/logger.js +8 -0
- package/src/lib/logger.js.map +1 -0
- package/src/lib/monitoring-config.d.ts +6 -0
- package/src/lib/monitoring-config.js +3 -0
- package/src/lib/monitoring-config.js.map +1 -0
- package/src/lib/monitoring-entry.d.ts +9 -0
- package/src/lib/monitoring-entry.js +3 -0
- package/src/lib/monitoring-entry.js.map +1 -0
- package/src/lib/motion-master-client.d.ts +18 -0
- package/src/lib/motion-master-client.js +73 -0
- package/src/lib/motion-master-client.js.map +1 -0
- package/src/lib/motion-master-pub-sub-client.d.ts +16 -0
- package/src/lib/motion-master-pub-sub-client.js +68 -0
- package/src/lib/motion-master-pub-sub-client.js.map +1 -0
- package/src/lib/motion-master-pub-sub-socket.d.ts +28 -0
- package/src/lib/motion-master-pub-sub-socket.js +3 -0
- package/src/lib/motion-master-pub-sub-socket.js.map +1 -0
- package/src/lib/motion-master-pub-sub-web-socket.d.ts +13 -0
- package/src/lib/motion-master-pub-sub-web-socket.js +61 -0
- package/src/lib/motion-master-pub-sub-web-socket.js.map +1 -0
- package/src/lib/motion-master-pub-sub-worker-socket.d.ts +13 -0
- package/src/lib/motion-master-pub-sub-worker-socket.js +37 -0
- package/src/lib/motion-master-pub-sub-worker-socket.js.map +1 -0
- package/src/lib/motion-master-req-res-client.d.ts +956 -0
- package/src/lib/motion-master-req-res-client.js +1521 -0
- package/src/lib/motion-master-req-res-client.js.map +1 -0
- package/src/lib/motion-master-req-res-socket.d.ts +38 -0
- package/src/lib/motion-master-req-res-socket.js +3 -0
- package/src/lib/motion-master-req-res-socket.js.map +1 -0
- package/src/lib/motion-master-req-res-web-socket.d.ts +20 -0
- package/src/lib/motion-master-req-res-web-socket.js +100 -0
- package/src/lib/motion-master-req-res-web-socket.js.map +1 -0
- package/src/lib/motion-master-req-res-worker-socket.d.ts +15 -0
- package/src/lib/motion-master-req-res-worker-socket.js +53 -0
- package/src/lib/motion-master-req-res-worker-socket.js.map +1 -0
- package/src/lib/motion-master.proto.js +5 -3
- package/src/lib/operators.d.ts +21 -0
- package/src/lib/operators.js +71 -0
- package/src/lib/operators.js.map +1 -0
- package/src/lib/options.d.ts +34 -0
- package/src/lib/options.js +38 -0
- package/src/lib/options.js.map +1 -0
- package/src/lib/parameter.d.ts +65 -0
- package/src/lib/parameter.js +70 -0
- package/src/lib/parameter.js.map +1 -0
- package/src/lib/request-status-resolver.d.ts +4 -0
- package/src/lib/request-status-resolver.js +345 -0
- package/src/lib/request-status-resolver.js.map +1 -0
- package/src/lib/system-log-line.d.ts +8 -0
- package/src/lib/system-log-line.js +3 -0
- package/src/lib/system-log-line.js.map +1 -0
- package/src/lib/types.d.ts +50 -0
- package/src/lib/types.js +23 -0
- package/src/lib/types.js.map +1 -0
- package/src/lib/urls.d.ts +3 -0
- package/src/lib/urls.js +10 -0
- package/src/lib/urls.js.map +1 -0
- package/src/lib/util.d.ts +30 -0
- package/src/lib/util.js +279 -0
- package/src/lib/util.js.map +1 -0
- package/.babelrc +0 -3
- package/.eslintrc.json +0 -18
- package/jest.config.ts +0 -15
- package/motion-master.proto +0 -1822
- package/src/lib/device-log-line.ts +0 -5
- package/src/lib/device-parameter.spec.ts +0 -85
- package/src/lib/hardware-description.spec.ts +0 -223
- package/src/lib/hardware-description.ts +0 -79
- package/src/lib/logger.ts +0 -5
- package/src/lib/monitoring-config.ts +0 -6
- package/src/lib/monitoring-entry.ts +0 -11
- package/src/lib/motion-master-client.ts +0 -94
- package/src/lib/motion-master-pub-sub-client.ts +0 -94
- package/src/lib/motion-master-pub-sub-socket.ts +0 -33
- package/src/lib/motion-master-pub-sub-web-socket.ts +0 -71
- package/src/lib/motion-master-pub-sub-worker-socket.ts +0 -58
- package/src/lib/motion-master-req-res-client.spec.ts +0 -126
- package/src/lib/motion-master-req-res-client.ts +0 -1625
- package/src/lib/motion-master-req-res-socket.ts +0 -45
- package/src/lib/motion-master-req-res-web-socket.ts +0 -119
- package/src/lib/motion-master-req-res-worker-socket.ts +0 -63
- package/src/lib/operators.ts +0 -93
- package/src/lib/options.ts +0 -12
- package/src/lib/parameter.spec.ts +0 -81
- package/src/lib/parameter.ts +0 -119
- package/src/lib/request-status-resolver.ts +0 -380
- package/src/lib/system-log-line.ts +0 -8
- package/src/lib/types.ts +0 -58
- package/src/lib/urls.ts +0 -6
- package/src/lib/util.ts +0 -261
- package/tsconfig.json +0 -22
- package/tsconfig.lib.json +0 -10
- package/tsconfig.spec.json +0 -20
- package/typedoc.json +0 -10
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
Object.assign(global, { WebSocket: require('ws') });
|
|
5
|
+
const rxjs_1 = require("rxjs");
|
|
6
|
+
const motion_master_client_1 = require("../motion-master-client");
|
|
7
|
+
const client = (0, motion_master_client_1.createMotionMasterClient)('192.168.1.112');
|
|
8
|
+
(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
9
|
+
const devices = yield (0, rxjs_1.lastValueFrom)(client.request.getDevices());
|
|
10
|
+
const versions = yield Promise.all(devices.map((device) => client.request.upload(device.deviceAddress, 0x100A, 0)));
|
|
11
|
+
console.log(versions);
|
|
12
|
+
}))();
|
|
13
|
+
client.request.getDevices().pipe((0, rxjs_1.mergeMap)((devices) => (0, rxjs_1.forkJoin)(devices.map((device) => client.request.getParameterValue(device.deviceAddress, 0x100A, 0))))).subscribe(console.log);
|
|
14
|
+
setTimeout(() => client.closeSockets(), 5000);
|
|
15
|
+
//# sourceMappingURL=get-firmware-version-for-all-devices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-firmware-version-for-all-devices.js","sourceRoot":"","sources":["../../../../../../libs/motion-master-client/src/lib/examples/get-firmware-version-for-all-devices.ts"],"names":[],"mappings":";;;AAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEpD,+BAAyD;AACzD,kEAAmE;AAEnE,MAAM,MAAM,GAAG,IAAA,+CAAwB,EAAC,eAAe,CAAC,CAAC;AAEzD,CAAC,GAAS,EAAE;IACV,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAa,EAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAS,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC,CAAA,CAAC,EAAE,CAAC;AAEL,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAC9B,IAAA,eAAQ,EAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,eAAQ,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAS,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACpI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEzB,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface HardwareComponent {
|
|
2
|
+
name: string;
|
|
3
|
+
version: string;
|
|
4
|
+
serialNumber: string;
|
|
5
|
+
}
|
|
6
|
+
export declare type AssemblyComponent = HardwareComponent;
|
|
7
|
+
export declare type DeviceComponent = HardwareComponent;
|
|
8
|
+
export interface Assembly {
|
|
9
|
+
name: string;
|
|
10
|
+
id: string;
|
|
11
|
+
version: string;
|
|
12
|
+
serialNumber: string;
|
|
13
|
+
components: AssemblyComponent[];
|
|
14
|
+
}
|
|
15
|
+
export interface HardwareDevice {
|
|
16
|
+
name: string;
|
|
17
|
+
id: string;
|
|
18
|
+
version: string;
|
|
19
|
+
keyId: string;
|
|
20
|
+
serialNumber: string;
|
|
21
|
+
macAddress: string;
|
|
22
|
+
components: DeviceComponent[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @link https://docs.google.com/document/d/1N00-ZjxHkjoWNIsnoTtza9CUHrxm8-e54298DXLuD94
|
|
26
|
+
*/
|
|
27
|
+
export interface HardwareDescription {
|
|
28
|
+
fileVersion: string;
|
|
29
|
+
assembly?: Assembly;
|
|
30
|
+
device: HardwareDevice;
|
|
31
|
+
}
|
|
32
|
+
export declare function getIdFromHardwareDescription(hd: HardwareDescription): string;
|
|
33
|
+
export declare function getApiIdentifierFromHardwareDescription(hd: HardwareDescription, skipKeyId?: boolean): string;
|
|
34
|
+
export declare function getNameFromHardwareDescription(hd: HardwareDescription): string;
|
|
35
|
+
export declare function getSerialNumberFromHardwareDescription(hd: HardwareDescription): string;
|
|
36
|
+
export declare function getAllComponentsFromHardwareDescription(hd: HardwareDescription): HardwareComponent[];
|
|
37
|
+
export declare function hardwareComponentsMatch(a: HardwareComponent[], b: HardwareComponent[]): boolean;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hardwareComponentsMatch = exports.getAllComponentsFromHardwareDescription = exports.getSerialNumberFromHardwareDescription = exports.getNameFromHardwareDescription = exports.getApiIdentifierFromHardwareDescription = exports.getIdFromHardwareDescription = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
function getIdFromHardwareDescription(hd) {
|
|
6
|
+
return hd.assembly
|
|
7
|
+
? hd.assembly.id
|
|
8
|
+
: hd.device.id;
|
|
9
|
+
}
|
|
10
|
+
exports.getIdFromHardwareDescription = getIdFromHardwareDescription;
|
|
11
|
+
function getApiIdentifierFromHardwareDescription(hd, skipKeyId = false) {
|
|
12
|
+
let apiId = hd.assembly
|
|
13
|
+
? `${hd.assembly.id}-${hd.assembly.version}`
|
|
14
|
+
: `${hd.device.id}-${hd.device.version}`;
|
|
15
|
+
if (!skipKeyId && hd.device.keyId) {
|
|
16
|
+
apiId += `-${hd.device.keyId}`;
|
|
17
|
+
}
|
|
18
|
+
return apiId;
|
|
19
|
+
}
|
|
20
|
+
exports.getApiIdentifierFromHardwareDescription = getApiIdentifierFromHardwareDescription;
|
|
21
|
+
function getNameFromHardwareDescription(hd) {
|
|
22
|
+
return hd.assembly
|
|
23
|
+
? hd.assembly.name
|
|
24
|
+
: hd.device.name;
|
|
25
|
+
}
|
|
26
|
+
exports.getNameFromHardwareDescription = getNameFromHardwareDescription;
|
|
27
|
+
function getSerialNumberFromHardwareDescription(hd) {
|
|
28
|
+
return hd.assembly
|
|
29
|
+
? hd.assembly.serialNumber
|
|
30
|
+
: hd.device.serialNumber;
|
|
31
|
+
}
|
|
32
|
+
exports.getSerialNumberFromHardwareDescription = getSerialNumberFromHardwareDescription;
|
|
33
|
+
function getAllComponentsFromHardwareDescription(hd) {
|
|
34
|
+
return hd.assembly
|
|
35
|
+
? [...hd.assembly.components, ...hd.device.components]
|
|
36
|
+
: hd.device.components;
|
|
37
|
+
}
|
|
38
|
+
exports.getAllComponentsFromHardwareDescription = getAllComponentsFromHardwareDescription;
|
|
39
|
+
function hardwareComponentsMatch(a, b) {
|
|
40
|
+
if (a.length === 0 && b.length === 0) {
|
|
41
|
+
return false; // edge case: when both components are empty they don't match since there are no components to compare
|
|
42
|
+
}
|
|
43
|
+
const ac = a.map((c) => `${c.name}-${c.version[0]}`.replace(/\s/g, '').toLocaleLowerCase()).sort();
|
|
44
|
+
const bc = b.map((c) => `${c.name}-${c.version[0]}`.replace(/\s/g, '').toLocaleLowerCase()).sort();
|
|
45
|
+
return (0, lodash_1.isEqual)(ac, bc);
|
|
46
|
+
}
|
|
47
|
+
exports.hardwareComponentsMatch = hardwareComponentsMatch;
|
|
48
|
+
//# sourceMappingURL=hardware-description.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hardware-description.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/hardware-description.ts"],"names":[],"mappings":";;;AAAA,mCAAiC;AAsCjC,SAAgB,4BAA4B,CAAC,EAAuB;IAClE,OAAO,EAAE,CAAC,QAAQ;QAChB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;QAChB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC;AAJD,oEAIC;AAED,SAAgB,uCAAuC,CAAC,EAAuB,EAAE,SAAS,GAAG,KAAK;IAChG,IAAI,KAAK,GAAG,EAAE,CAAC,QAAQ;QACrB,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC5C,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAE3C,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;QACjC,KAAK,IAAI,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;KAChC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,0FAUC;AAED,SAAgB,8BAA8B,CAAC,EAAuB;IACpE,OAAO,EAAE,CAAC,QAAQ;QAChB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI;QAClB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAJD,wEAIC;AAED,SAAgB,sCAAsC,CAAC,EAAuB;IAC5E,OAAO,EAAE,CAAC,QAAQ;QAChB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY;QAC1B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC;AAJD,wFAIC;AAED,SAAgB,uCAAuC,CAAC,EAAuB;IAC7E,OAAO,EAAE,CAAC,QAAQ;QAChB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;QACtD,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;AAC3B,CAAC;AAJD,0FAIC;AAED,SAAgB,uBAAuB,CAAC,CAAsB,EAAE,CAAsB;IACpF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACpC,OAAO,KAAK,CAAC,CAAC,sGAAsG;KACrH;IAED,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnG,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnG,OAAO,IAAA,gBAAO,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AATD,0DASC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const logger: import("roarr").Logger<import("roarr/dist/src/types").JsonObject>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logger = void 0;
|
|
4
|
+
const roarr_1 = require("roarr");
|
|
5
|
+
exports.logger = roarr_1.Roarr.child({
|
|
6
|
+
package: '@synapticon/motion-master-client'
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/logger.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAEjB,QAAA,MAAM,GAAG,aAAK,CAAC,KAAK,CAAC;IAChC,OAAO,EAAE,kCAAkC;CAC5C,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitoring-config.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/monitoring-config.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Observable } from "rxjs";
|
|
2
|
+
import { MonitoringConfig } from "./monitoring-config";
|
|
3
|
+
import { MotionMasterMessage, ParameterValueType } from "./types";
|
|
4
|
+
export interface MonitoringEntry {
|
|
5
|
+
config: MonitoringConfig;
|
|
6
|
+
interval: number;
|
|
7
|
+
values$: Observable<ParameterValueType[]>;
|
|
8
|
+
parameters: MotionMasterMessage.Request.GetDeviceParameterValues.IParameter[];
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitoring-entry.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/monitoring-entry.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Observable } from "rxjs";
|
|
2
|
+
import { MonitoringConfig } from "./monitoring-config";
|
|
3
|
+
import { MotionMasterPubSubClient } from "./motion-master-pub-sub-client";
|
|
4
|
+
import { MotionMasterPubSubSocket } from "./motion-master-pub-sub-socket";
|
|
5
|
+
import { MotionMasterReqResClient } from "./motion-master-req-res-client";
|
|
6
|
+
import { MotionMasterReqResSocket } from "./motion-master-req-res-socket";
|
|
7
|
+
import { DeviceRef, ParameterValueType } from "./types";
|
|
8
|
+
export declare function createMotionMasterClient(hostname: string): MotionMasterClient;
|
|
9
|
+
export declare class MotionMasterClient {
|
|
10
|
+
readonly reqResSocket: MotionMasterReqResSocket;
|
|
11
|
+
readonly pubSubSocket: MotionMasterPubSubSocket;
|
|
12
|
+
readonly request: MotionMasterReqResClient;
|
|
13
|
+
readonly monitor: MotionMasterPubSubClient;
|
|
14
|
+
constructor(reqResSocket: MotionMasterReqResSocket, pubSubSocket: MotionMasterPubSubSocket);
|
|
15
|
+
startMonitoring(ids: string[] | [DeviceRef, number, number][], interval: number, config?: MonitoringConfig, requestTimeout?: number): Observable<ParameterValueType[]>;
|
|
16
|
+
stopMonitoring(messageId: string): void;
|
|
17
|
+
closeSockets(): void;
|
|
18
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MotionMasterClient = exports.createMotionMasterClient = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const uuid_1 = require("uuid");
|
|
6
|
+
const motion_master_pub_sub_client_1 = require("./motion-master-pub-sub-client");
|
|
7
|
+
const motion_master_pub_sub_web_socket_1 = require("./motion-master-pub-sub-web-socket");
|
|
8
|
+
const motion_master_req_res_client_1 = require("./motion-master-req-res-client");
|
|
9
|
+
const motion_master_req_res_web_socket_1 = require("./motion-master-req-res-web-socket");
|
|
10
|
+
const operators_1 = require("./operators");
|
|
11
|
+
function createMotionMasterClient(hostname) {
|
|
12
|
+
const reqResSocket = new motion_master_req_res_web_socket_1.MotionMasterReqResWebSocket();
|
|
13
|
+
const pubSubSocket = new motion_master_pub_sub_web_socket_1.MotionMasterPubSubWebSocket();
|
|
14
|
+
const client = new MotionMasterClient(reqResSocket, pubSubSocket);
|
|
15
|
+
const clientId = (0, uuid_1.v4)();
|
|
16
|
+
reqResSocket.open(`ws://${hostname}:63524?clientId=${clientId}`);
|
|
17
|
+
pubSubSocket.open(`ws://${hostname}:63525?clientId=${clientId}`);
|
|
18
|
+
return client;
|
|
19
|
+
}
|
|
20
|
+
exports.createMotionMasterClient = createMotionMasterClient;
|
|
21
|
+
class MotionMasterClient {
|
|
22
|
+
constructor(reqResSocket, pubSubSocket) {
|
|
23
|
+
this.reqResSocket = reqResSocket;
|
|
24
|
+
this.pubSubSocket = pubSubSocket;
|
|
25
|
+
this.request = new motion_master_req_res_client_1.MotionMasterReqResClient(this.reqResSocket);
|
|
26
|
+
this.monitor = new motion_master_pub_sub_client_1.MotionMasterPubSubClient(this.pubSubSocket);
|
|
27
|
+
}
|
|
28
|
+
startMonitoring(ids, interval, config, requestTimeout = 5000) {
|
|
29
|
+
return (0, rxjs_1.defer)(() => {
|
|
30
|
+
var _a, _b;
|
|
31
|
+
const topic = (_a = config === null || config === void 0 ? void 0 : config.topic) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)();
|
|
32
|
+
const messageId = (_b = config === null || config === void 0 ? void 0 : config.messageId) !== null && _b !== void 0 ? _b : (0, uuid_1.v4)();
|
|
33
|
+
if (!config) {
|
|
34
|
+
config = { messageId, topic, bufferSize: 1, distinct: false };
|
|
35
|
+
}
|
|
36
|
+
this.request.resolveGetParameterValuesIds(ids).pipe((0, rxjs_1.mergeMap)((refs) => {
|
|
37
|
+
if ((new Set(refs.map(([deviceAddress]) => deviceAddress))).size !== 1) {
|
|
38
|
+
throw new Error('Start monitoring only supports a single device');
|
|
39
|
+
}
|
|
40
|
+
const deviceAddress = refs[0][0];
|
|
41
|
+
const props = {
|
|
42
|
+
getDeviceParameterValues: {
|
|
43
|
+
deviceAddress,
|
|
44
|
+
parameters: refs.map(([, index, subindex]) => ({ index, subindex, loadFromCache: false })),
|
|
45
|
+
sendProgress: false,
|
|
46
|
+
},
|
|
47
|
+
interval,
|
|
48
|
+
topic,
|
|
49
|
+
};
|
|
50
|
+
return this.request.startMonitoringDeviceParameterValues(props, requestTimeout, messageId);
|
|
51
|
+
})).subscribe();
|
|
52
|
+
this.monitor.subscribe(config);
|
|
53
|
+
const values$ = this.monitor.socket.data$.pipe((0, operators_1.selectMotionMasterMessageByTopic)(config.topic), (0, operators_1.mapMonitoringParameterValuesStatusMessageToParameterValues)());
|
|
54
|
+
return new rxjs_1.Observable((subscriber) => {
|
|
55
|
+
const subscription = values$.subscribe(subscriber);
|
|
56
|
+
return () => {
|
|
57
|
+
subscription.unsubscribe();
|
|
58
|
+
this.stopMonitoring(messageId);
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
stopMonitoring(messageId) {
|
|
64
|
+
this.request.stopMonitoringDeviceParameterValues({ startMonitoringRequestId: messageId });
|
|
65
|
+
this.monitor.unsubscribe(messageId);
|
|
66
|
+
}
|
|
67
|
+
closeSockets() {
|
|
68
|
+
this.reqResSocket.close();
|
|
69
|
+
this.pubSubSocket.close();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.MotionMasterClient = MotionMasterClient;
|
|
73
|
+
//# sourceMappingURL=motion-master-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-master-client.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/motion-master-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Observable, Subject } from "rxjs";
|
|
2
|
+
import { MonitoringConfig } from "./monitoring-config";
|
|
3
|
+
import { MotionMasterPubSubSocket } from "./motion-master-pub-sub-socket";
|
|
4
|
+
import { MotionMasterMessage } from "./types";
|
|
5
|
+
export declare class MotionMasterPubSubClient {
|
|
6
|
+
readonly socket: MotionMasterPubSubSocket;
|
|
7
|
+
readonly data$: Subject<[string, MotionMasterMessage[]]>;
|
|
8
|
+
private subscriptions;
|
|
9
|
+
readonly notification$: Observable<MotionMasterMessage>;
|
|
10
|
+
readonly systemEvent$: Observable<MotionMasterMessage.Status.SystemEvent>;
|
|
11
|
+
readonly deviceEvent$: Observable<MotionMasterMessage.Status.DeviceEvent>;
|
|
12
|
+
constructor(socket: MotionMasterPubSubSocket);
|
|
13
|
+
subscribe(config: MonitoringConfig): string;
|
|
14
|
+
unsubscribe(messageId: string): void;
|
|
15
|
+
unsubscribeAll(): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MotionMasterPubSubClient = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const uuid_1 = require("uuid");
|
|
6
|
+
const operators_1 = require("./operators");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
const equal = require("fast-deep-equal");
|
|
9
|
+
const motion_master_pub_sub_worker_socket_1 = require("./motion-master-pub-sub-worker-socket");
|
|
10
|
+
class MotionMasterPubSubClient {
|
|
11
|
+
constructor(socket) {
|
|
12
|
+
this.socket = socket;
|
|
13
|
+
this.data$ = new rxjs_1.Subject();
|
|
14
|
+
this.subscriptions = new Map();
|
|
15
|
+
this.notification$ = this.socket.data$.pipe((0, operators_1.selectMotionMasterMessageByTopic)('notification'));
|
|
16
|
+
this.systemEvent$ = this.notification$.pipe((0, operators_1.selectMotionMasterMessageStatusByKey)('systemEvent'));
|
|
17
|
+
this.deviceEvent$ = this.notification$.pipe((0, operators_1.selectMotionMasterMessageStatusByKey)('deviceEvent'));
|
|
18
|
+
}
|
|
19
|
+
subscribe(config) {
|
|
20
|
+
if (!config.messageId) {
|
|
21
|
+
config = Object.assign(Object.assign({}, config), { messageId: (0, uuid_1.v4)() });
|
|
22
|
+
}
|
|
23
|
+
if (this.socket instanceof motion_master_pub_sub_worker_socket_1.MotionMasterPubSubWorkerSocket) {
|
|
24
|
+
this.socket.worker.postMessage({ subscribe: config });
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const { bufferSize = 1, distinct = false, messageId, topic } = config;
|
|
28
|
+
let observable = this.socket.data$.pipe((0, rxjs_1.filter)((data) => data[0] === topic), (0, rxjs_1.map)((data) => data[1]));
|
|
29
|
+
if (distinct) {
|
|
30
|
+
observable = observable.pipe((0, rxjs_1.distinctUntilChanged)((prev, curr) => {
|
|
31
|
+
var _a, _b, _c, _d, _e, _f;
|
|
32
|
+
if (prev instanceof types_1.MotionMasterMessage && curr instanceof types_1.MotionMasterMessage) {
|
|
33
|
+
return equal((_c = (_b = (_a = prev === null || prev === void 0 ? void 0 : prev.status) === null || _a === void 0 ? void 0 : _a.monitoringParameterValues) === null || _b === void 0 ? void 0 : _b.deviceParameterValues) === null || _c === void 0 ? void 0 : _c.parameterValues, (_f = (_e = (_d = curr === null || curr === void 0 ? void 0 : curr.status) === null || _d === void 0 ? void 0 : _d.monitoringParameterValues) === null || _e === void 0 ? void 0 : _e.deviceParameterValues) === null || _f === void 0 ? void 0 : _f.parameterValues);
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
const subscription = observable.pipe((0, rxjs_1.bufferCount)(bufferSize)).subscribe((data) => {
|
|
39
|
+
this.data$.next([topic, data]);
|
|
40
|
+
});
|
|
41
|
+
this.subscriptions.set(messageId, subscription);
|
|
42
|
+
}
|
|
43
|
+
return config.messageId;
|
|
44
|
+
}
|
|
45
|
+
unsubscribe(messageId) {
|
|
46
|
+
if (this.socket instanceof motion_master_pub_sub_worker_socket_1.MotionMasterPubSubWorkerSocket) {
|
|
47
|
+
this.socket.worker.postMessage({ unsubcribe: { messageId } });
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
const subscription = this.subscriptions.get(messageId);
|
|
51
|
+
if (subscription) {
|
|
52
|
+
subscription.unsubscribe();
|
|
53
|
+
this.subscriptions.delete(messageId);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
unsubscribeAll() {
|
|
58
|
+
if (this.socket instanceof motion_master_pub_sub_worker_socket_1.MotionMasterPubSubWorkerSocket) {
|
|
59
|
+
this.socket.worker.postMessage({ unsubscribeAll: true });
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.subscriptions.forEach((subscription) => subscription.unsubscribe());
|
|
63
|
+
this.subscriptions.clear();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.MotionMasterPubSubClient = MotionMasterPubSubClient;
|
|
68
|
+
//# sourceMappingURL=motion-master-pub-sub-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-master-pub-sub-client.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/motion-master-pub-sub-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { BehaviorSubject, Observable } from "rxjs";
|
|
2
|
+
import { MotionMasterMessage } from "./types";
|
|
3
|
+
export interface MotionMasterPubSubSocket {
|
|
4
|
+
/**
|
|
5
|
+
* Emits a boolean value when socket gets opened or closed.
|
|
6
|
+
*/
|
|
7
|
+
readonly opened$: BehaviorSubject<boolean>;
|
|
8
|
+
/**
|
|
9
|
+
* Incoming data is a tuple of topic and decoded message.
|
|
10
|
+
*/
|
|
11
|
+
readonly data$: Observable<[string, MotionMasterMessage]>;
|
|
12
|
+
/**
|
|
13
|
+
* URL set in call to open.
|
|
14
|
+
*/
|
|
15
|
+
get url(): string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Open socket.
|
|
18
|
+
*
|
|
19
|
+
* The connected$ and eventually alive$ observables will emit true values.
|
|
20
|
+
*/
|
|
21
|
+
open(url: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Close socket.
|
|
24
|
+
*
|
|
25
|
+
* The opened$ and alive$ observables will emit false values.
|
|
26
|
+
*/
|
|
27
|
+
close(): void;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-master-pub-sub-socket.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/motion-master-pub-sub-socket.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BehaviorSubject, Subject } from "rxjs";
|
|
2
|
+
import { MotionMasterPubSubSocket } from "./motion-master-pub-sub-socket";
|
|
3
|
+
import { MotionMasterMessage } from "./types";
|
|
4
|
+
export declare class MotionMasterPubSubWebSocket implements MotionMasterPubSubSocket {
|
|
5
|
+
readonly opened$: BehaviorSubject<boolean>;
|
|
6
|
+
readonly data$: Subject<[string, MotionMasterMessage]>;
|
|
7
|
+
private webSocket$?;
|
|
8
|
+
private _url?;
|
|
9
|
+
get url(): string | undefined;
|
|
10
|
+
open(url: string): void;
|
|
11
|
+
close(): void;
|
|
12
|
+
private createWebSocket;
|
|
13
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MotionMasterPubSubWebSocket = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const webSocket_1 = require("rxjs/webSocket");
|
|
6
|
+
const logger_1 = require("./logger");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
class MotionMasterPubSubWebSocket {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.opened$ = new rxjs_1.BehaviorSubject(false);
|
|
11
|
+
this.data$ = new rxjs_1.Subject();
|
|
12
|
+
}
|
|
13
|
+
get url() {
|
|
14
|
+
return this._url;
|
|
15
|
+
}
|
|
16
|
+
open(url) {
|
|
17
|
+
if (this.opened$.getValue() === true) {
|
|
18
|
+
throw new Error('MotionMasterPubSubWebSocket is already opened!');
|
|
19
|
+
}
|
|
20
|
+
this._url = url;
|
|
21
|
+
this.webSocket$ = this.createWebSocket(url);
|
|
22
|
+
this.webSocket$.subscribe({
|
|
23
|
+
next: (value) => this.data$.next(value),
|
|
24
|
+
error: () => {
|
|
25
|
+
// ignore
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
close() {
|
|
30
|
+
var _a;
|
|
31
|
+
(_a = this.webSocket$) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
32
|
+
}
|
|
33
|
+
createWebSocket(url) {
|
|
34
|
+
const decoder = new TextDecoder('utf-8');
|
|
35
|
+
const webSocketConfig = {
|
|
36
|
+
binaryType: 'arraybuffer',
|
|
37
|
+
closeObserver: {
|
|
38
|
+
next: () => {
|
|
39
|
+
this.opened$.next(false);
|
|
40
|
+
logger_1.logger.info(`Connection closed ${url}`);
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
deserializer: (e) => {
|
|
44
|
+
const end = new Uint8Array(e.data, 0, 1)[0] + 1;
|
|
45
|
+
const topic = decoder.decode(e.data.slice(1, end)); // topic starts from the 2nd byte
|
|
46
|
+
const message = types_1.MotionMasterMessage.decode(new Uint8Array(e.data.slice(end)));
|
|
47
|
+
return [topic, message];
|
|
48
|
+
},
|
|
49
|
+
openObserver: {
|
|
50
|
+
next: () => {
|
|
51
|
+
this.opened$.next(true);
|
|
52
|
+
logger_1.logger.info(`Connection opened ${url}`);
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
url,
|
|
56
|
+
};
|
|
57
|
+
return (0, webSocket_1.webSocket)(webSocketConfig);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.MotionMasterPubSubWebSocket = MotionMasterPubSubWebSocket;
|
|
61
|
+
//# sourceMappingURL=motion-master-pub-sub-web-socket.js.map
|
|
@@ -0,0 +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,mCAA8C;AAE9C,MAAa,2BAA2B;IAAxC;QAEW,YAAO,GAAG,IAAI,sBAAe,CAAU,KAAK,CAAC,CAAC;QAE9C,UAAK,GAAG,IAAI,cAAO,EAAiC,CAAC;IA4DhE,CAAC;IAtDC,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACnE;QAED,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,SAAS;YACX,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK;;QACH,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAEO,eAAe,CAAC,GAAW;QACjC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,eAAe,GAA0D;YAC7E,UAAU,EAAE,aAAa;YACzB,aAAa,EAAE;gBACb,IAAI,EAAE,GAAG,EAAE;oBACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,eAAM,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBAC1C,CAAC;aACF;YACD,YAAY,EAAE,CAAC,CAA4B,EAAiC,EAAE;gBAC5E,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,OAAO,CAAC,CAAC;YAC1B,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;AAhED,kEAgEC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BehaviorSubject, Subject } from "rxjs";
|
|
2
|
+
import { MotionMasterPubSubSocket } from "./motion-master-pub-sub-socket";
|
|
3
|
+
import { MotionMasterMessage } from "./types";
|
|
4
|
+
export declare class MotionMasterPubSubWorkerSocket implements MotionMasterPubSubSocket {
|
|
5
|
+
readonly worker: Worker;
|
|
6
|
+
opened$: BehaviorSubject<boolean>;
|
|
7
|
+
data$: Subject<[string, MotionMasterMessage]>;
|
|
8
|
+
private _url?;
|
|
9
|
+
constructor(worker: Worker);
|
|
10
|
+
get url(): string | undefined;
|
|
11
|
+
open(url: string): void;
|
|
12
|
+
close(): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MotionMasterPubSubWorkerSocket = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const logger_1 = require("./logger");
|
|
6
|
+
class MotionMasterPubSubWorkerSocket {
|
|
7
|
+
constructor(worker) {
|
|
8
|
+
this.worker = worker;
|
|
9
|
+
this.opened$ = new rxjs_1.BehaviorSubject(false);
|
|
10
|
+
this.data$ = new rxjs_1.Subject();
|
|
11
|
+
}
|
|
12
|
+
get url() {
|
|
13
|
+
return this._url;
|
|
14
|
+
}
|
|
15
|
+
open(url) {
|
|
16
|
+
this._url = url;
|
|
17
|
+
this.worker.onmessage = ({ data }) => {
|
|
18
|
+
if ('opened' in data) {
|
|
19
|
+
const { opened } = data;
|
|
20
|
+
this.opened$.next(opened);
|
|
21
|
+
logger_1.logger.info(opened ? `Opened pub/sub 🔌 ${url}` : `Closed pub/sub 🔌 ${url}`);
|
|
22
|
+
}
|
|
23
|
+
else if ('topic' in data) {
|
|
24
|
+
const { topic, messages } = data;
|
|
25
|
+
messages.forEach((message) => this.data$.next([topic, message]));
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
this.worker.postMessage({
|
|
29
|
+
open: { url }
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
close() {
|
|
33
|
+
this.worker.postMessage({ close: true });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.MotionMasterPubSubWorkerSocket = MotionMasterPubSubWorkerSocket;
|
|
37
|
+
//# sourceMappingURL=motion-master-pub-sub-worker-socket.js.map
|
|
@@ -0,0 +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,+BAAgD;AAChD,qCAAkC;AAKlC,MAAa,8BAA8B;IAQzC,YACkB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAPhC,YAAO,GAAG,IAAI,sBAAe,CAAC,KAAK,CAAC,CAAC;QAErC,UAAK,GAAG,IAAI,cAAO,EAAiC,CAAC;IAMjD,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,GAAuD,IAAI,CAAC;gBACrF,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;aAClE;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;CAEF;AAvCD,wEAuCC"}
|