motion-master-client 0.0.21 → 0.0.22
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/.babelrc +3 -0
- package/.eslintrc.json +18 -0
- package/jest.config.ts +16 -0
- package/motion-master.proto +1822 -0
- package/package.json +2 -17
- package/project.json +45 -0
- package/src/lib/cia402.spec.ts +77 -0
- package/src/lib/cia402.ts +414 -0
- package/src/lib/config-file.spec.ts +114 -0
- package/src/lib/config-file.ts +63 -0
- package/src/lib/device-log-line.ts +5 -0
- package/src/lib/device-parameter.spec.ts +85 -0
- package/src/lib/device-parameter.ts +79 -0
- package/src/lib/device.ts +10 -0
- package/src/lib/hardware-description.spec.ts +253 -0
- package/src/lib/hardware-description.ts +129 -0
- package/src/lib/logger.ts +5 -0
- package/src/lib/monitoring-config.ts +6 -0
- package/src/lib/{monitoring-entry.d.ts → monitoring-entry.ts} +5 -4
- package/src/lib/motion-master-client.ts +221 -0
- package/src/lib/motion-master-pub-sub-client.ts +95 -0
- package/src/lib/motion-master-pub-sub-socket.ts +40 -0
- package/src/lib/motion-master-pub-sub-web-socket.ts +78 -0
- package/src/lib/motion-master-pub-sub-worker-socket.ts +51 -0
- package/src/lib/motion-master-req-res-client.spec.ts +740 -0
- package/src/lib/motion-master-req-res-client.ts +2120 -0
- package/src/lib/motion-master-req-res-socket.ts +62 -0
- package/src/lib/motion-master-req-res-web-socket.ts +124 -0
- package/src/lib/motion-master-req-res-worker-socket.ts +87 -0
- package/src/lib/motion-master.proto.js +2 -2
- package/src/lib/operators.ts +90 -0
- package/src/lib/options.ts +12 -0
- package/src/lib/parameter.spec.ts +160 -0
- package/src/lib/parameter.ts +170 -0
- package/src/lib/product-id-range.ts +8 -0
- package/src/lib/request-status-resolver.ts +403 -0
- package/src/lib/system-log-line.ts +9 -0
- package/src/lib/{types.d.ts → types.ts} +74 -143
- package/src/lib/urls.ts +6 -0
- package/src/lib/util.ts +305 -0
- package/tsconfig.json +23 -0
- package/tsconfig.lib.json +10 -0
- package/tsconfig.spec.json +20 -0
- package/typedoc.json +10 -0
- package/src/index.js +0 -29
- package/src/index.js.map +0 -1
- package/src/lib/cia402.d.ts +0 -182
- package/src/lib/cia402.js +0 -392
- package/src/lib/cia402.js.map +0 -1
- package/src/lib/config-file.d.ts +0 -13
- package/src/lib/config-file.js +0 -50
- package/src/lib/config-file.js.map +0 -1
- package/src/lib/device-log-line.d.ts +0 -5
- package/src/lib/device-log-line.js +0 -3
- package/src/lib/device-log-line.js.map +0 -1
- package/src/lib/device-parameter.d.ts +0 -56
- package/src/lib/device-parameter.js +0 -39
- package/src/lib/device-parameter.js.map +0 -1
- package/src/lib/device.d.ts +0 -9
- package/src/lib/device.js +0 -3
- package/src/lib/device.js.map +0 -1
- package/src/lib/hardware-description.d.ts +0 -41
- package/src/lib/hardware-description.js +0 -94
- package/src/lib/hardware-description.js.map +0 -1
- package/src/lib/logger.d.ts +0 -1
- package/src/lib/logger.js +0 -8
- package/src/lib/logger.js.map +0 -1
- package/src/lib/monitoring-config.d.ts +0 -6
- package/src/lib/monitoring-config.js +0 -3
- package/src/lib/monitoring-config.js.map +0 -1
- package/src/lib/monitoring-entry.js +0 -3
- package/src/lib/monitoring-entry.js.map +0 -1
- package/src/lib/motion-master-client.d.ts +0 -52
- package/src/lib/motion-master-client.js +0 -151
- package/src/lib/motion-master-client.js.map +0 -1
- package/src/lib/motion-master-pub-sub-client.d.ts +0 -16
- package/src/lib/motion-master-pub-sub-client.js +0 -68
- package/src/lib/motion-master-pub-sub-client.js.map +0 -1
- package/src/lib/motion-master-pub-sub-socket.d.ts +0 -34
- package/src/lib/motion-master-pub-sub-socket.js +0 -3
- package/src/lib/motion-master-pub-sub-socket.js.map +0 -1
- package/src/lib/motion-master-pub-sub-web-socket.d.ts +0 -14
- package/src/lib/motion-master-pub-sub-web-socket.js +0 -67
- package/src/lib/motion-master-pub-sub-web-socket.js.map +0 -1
- package/src/lib/motion-master-pub-sub-worker-socket.d.ts +0 -14
- package/src/lib/motion-master-pub-sub-worker-socket.js +0 -42
- package/src/lib/motion-master-pub-sub-worker-socket.js.map +0 -1
- package/src/lib/motion-master-req-res-client.d.ts +0 -920
- package/src/lib/motion-master-req-res-client.js +0 -1680
- package/src/lib/motion-master-req-res-client.js.map +0 -1
- package/src/lib/motion-master-req-res-socket.d.ts +0 -52
- package/src/lib/motion-master-req-res-socket.js +0 -3
- package/src/lib/motion-master-req-res-socket.js.map +0 -1
- package/src/lib/motion-master-req-res-web-socket.d.ts +0 -24
- package/src/lib/motion-master-req-res-web-socket.js +0 -99
- package/src/lib/motion-master-req-res-web-socket.js.map +0 -1
- package/src/lib/motion-master-req-res-worker-socket.d.ts +0 -20
- package/src/lib/motion-master-req-res-worker-socket.js +0 -69
- package/src/lib/motion-master-req-res-worker-socket.js.map +0 -1
- package/src/lib/operators.d.ts +0 -18
- package/src/lib/operators.js +0 -76
- package/src/lib/operators.js.map +0 -1
- package/src/lib/options.d.ts +0 -10
- package/src/lib/options.js +0 -14
- package/src/lib/options.js.map +0 -1
- package/src/lib/parameter.d.ts +0 -72
- package/src/lib/parameter.js +0 -119
- package/src/lib/parameter.js.map +0 -1
- package/src/lib/product-id-range.d.ts +0 -7
- package/src/lib/product-id-range.js +0 -12
- package/src/lib/product-id-range.js.map +0 -1
- package/src/lib/request-status-resolver.d.ts +0 -4
- package/src/lib/request-status-resolver.js +0 -345
- package/src/lib/request-status-resolver.js.map +0 -1
- package/src/lib/system-log-line.d.ts +0 -9
- package/src/lib/system-log-line.js +0 -3
- package/src/lib/system-log-line.js.map +0 -1
- package/src/lib/types.js +0 -28
- package/src/lib/types.js.map +0 -1
- package/src/lib/urls.d.ts +0 -3
- package/src/lib/urls.js +0 -10
- package/src/lib/urls.js.map +0 -1
- package/src/lib/util.d.ts +0 -40
- package/src/lib/util.js +0 -316
- package/src/lib/util.js.map +0 -1
- /package/src/{index.d.ts → index.ts} +0 -0
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { Parameter } from "./parameter";
|
|
2
|
-
export interface DeviceParameter extends Parameter {
|
|
3
|
-
id: string;
|
|
4
|
-
flags?: {
|
|
5
|
-
access?: 'ro' | 'rw' | 'wo';
|
|
6
|
-
category?: 'm' | 'o' | 'c';
|
|
7
|
-
pdoMapping?: 't' | 'r' | 'tr';
|
|
8
|
-
safetyMapping?: 'si' | 'so' | 'sio' | 'sp';
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Make device parameter id by providing a device serial number and tuple of index and subindex.
|
|
13
|
-
*
|
|
14
|
-
* @param serialNumber - device serial number from the hardware description file
|
|
15
|
-
* @param tuple - an array of index and subindex
|
|
16
|
-
* @throws {Error} if index or subindex are less than 0
|
|
17
|
-
* @returns combined index and subindex in uppercase hexadecimal format, e.g. "0x60FE:02"
|
|
18
|
-
*/
|
|
19
|
-
export declare function makeDeviceParameterId(serialNumber: string, tuple: [(number | null | undefined), (number | null | undefined)]): string;
|
|
20
|
-
/**
|
|
21
|
-
* Make device parameter id by providing a device serial number and object which has index and subindex properties.
|
|
22
|
-
*
|
|
23
|
-
* @param serialNumber - device serial number from the hardware description file
|
|
24
|
-
* @param parameter - an object with optional index and subindex properties
|
|
25
|
-
* @throws {Error} if index or subindex are less than 0
|
|
26
|
-
* @returns combined index and subindex in uppercase hexadecimal format, e.g. "0x60FE:02"
|
|
27
|
-
*/
|
|
28
|
-
export declare function makeDeviceParameterId(serialNumber: string, parameter: {
|
|
29
|
-
index?: (number | null);
|
|
30
|
-
subindex?: (number | null);
|
|
31
|
-
}): string;
|
|
32
|
-
/**
|
|
33
|
-
* Make parameter id by providing a device serial number and index and subindex.
|
|
34
|
-
*
|
|
35
|
-
* @param serialNumber - device serial number from the hardware description file
|
|
36
|
-
* @param index - from 0x0000 to 0xFFFF for objects defined in ESI and >0xFFFF for custom object
|
|
37
|
-
* @param subindex - defaults to 0 if not provided
|
|
38
|
-
* @throws {Error} if index or subindex are less than 0
|
|
39
|
-
* @returns combined index and subindex in uppercase hexadecimal format, e.g. "0x60FE:02"
|
|
40
|
-
*/
|
|
41
|
-
export declare function makeDeviceParameterId(serialNumber: string, index?: (number | null), subindex?: (number | null)): string;
|
|
42
|
-
/**
|
|
43
|
-
* Example of device parameter id is "0x2110:1A.8502-03-0001353-2115" where:
|
|
44
|
-
* - 0x2110 is object index in hexadecimal format
|
|
45
|
-
* - 1A is subindex in hexadecimal format
|
|
46
|
-
* - 8502-03-0001353-2115 is device serial number from hardware description file
|
|
47
|
-
*/
|
|
48
|
-
export declare const deviceParameterIdRegExp: RegExp;
|
|
49
|
-
/**
|
|
50
|
-
* Split device parameter id into parts.
|
|
51
|
-
*
|
|
52
|
-
* @param id - device parameter id like "0x2110:1A.8502-03-0001353-2115"
|
|
53
|
-
* @returns tuple of device serial number, index, and subindex
|
|
54
|
-
*/
|
|
55
|
-
export declare function splitDeviceParameterId(id: string): [string, number, number];
|
|
56
|
-
export declare function isDeviceParameterId(id: string): boolean;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isDeviceParameterId = exports.splitDeviceParameterId = exports.deviceParameterIdRegExp = exports.makeDeviceParameterId = void 0;
|
|
4
|
-
const parameter_1 = require("./parameter");
|
|
5
|
-
function makeDeviceParameterId(serialNumber, a, b) {
|
|
6
|
-
const parameterId = (0, parameter_1.makeParameterId)(a, b);
|
|
7
|
-
return `${parameterId}.${serialNumber}`;
|
|
8
|
-
}
|
|
9
|
-
exports.makeDeviceParameterId = makeDeviceParameterId;
|
|
10
|
-
/**
|
|
11
|
-
* Example of device parameter id is "0x2110:1A.8502-03-0001353-2115" where:
|
|
12
|
-
* - 0x2110 is object index in hexadecimal format
|
|
13
|
-
* - 1A is subindex in hexadecimal format
|
|
14
|
-
* - 8502-03-0001353-2115 is device serial number from hardware description file
|
|
15
|
-
*/
|
|
16
|
-
exports.deviceParameterIdRegExp = /^0x([0-9a-fA-F]{4,}):([0-9a-fA-F]{2})\.([\d-]+)$/;
|
|
17
|
-
/**
|
|
18
|
-
* Split device parameter id into parts.
|
|
19
|
-
*
|
|
20
|
-
* @param id - device parameter id like "0x2110:1A.8502-03-0001353-2115"
|
|
21
|
-
* @returns tuple of device serial number, index, and subindex
|
|
22
|
-
*/
|
|
23
|
-
function splitDeviceParameterId(id) {
|
|
24
|
-
const match = id.match(exports.deviceParameterIdRegExp);
|
|
25
|
-
if (!match) {
|
|
26
|
-
throw new Error(`Device parameter id "${id}" doesn't match the regular expression: ${exports.deviceParameterIdRegExp}`);
|
|
27
|
-
}
|
|
28
|
-
return [
|
|
29
|
-
match[3],
|
|
30
|
-
parseInt(match[1], 16),
|
|
31
|
-
parseInt(match[2], 16), // subindex
|
|
32
|
-
];
|
|
33
|
-
}
|
|
34
|
-
exports.splitDeviceParameterId = splitDeviceParameterId;
|
|
35
|
-
function isDeviceParameterId(id) {
|
|
36
|
-
return exports.deviceParameterIdRegExp.test(id);
|
|
37
|
-
}
|
|
38
|
-
exports.isDeviceParameterId = isDeviceParameterId;
|
|
39
|
-
//# sourceMappingURL=device-parameter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"device-parameter.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/device-parameter.ts"],"names":[],"mappings":";;;AAAA,2CAAyD;AA2CzD,SAAgB,qBAAqB,CAAC,YAAoB,EAAE,CAA0I,EAAE,CAAmB;IACzN,MAAM,WAAW,GAAG,IAAA,2BAAe,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,GAAG,WAAW,IAAI,YAAY,EAAE,CAAC;AAC1C,CAAC;AAHD,sDAGC;AAED;;;;;GAKG;AACU,QAAA,uBAAuB,GAAG,kDAAkD,CAAC;AAE1F;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,EAAU;IAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,+BAAuB,CAAC,CAAC;IAEhD,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,2CAA2C,+BAAuB,EAAE,CAAC,CAAC;KACjH;IAED,OAAO;QACL,KAAK,CAAC,CAAC,CAAC;QACR,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACtB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW;KACpC,CAAC;AACJ,CAAC;AAZD,wDAYC;AAED,SAAgB,mBAAmB,CAAC,EAAU;IAC5C,OAAO,+BAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1C,CAAC;AAFD,kDAEC"}
|
package/src/lib/device.d.ts
DELETED
package/src/lib/device.js
DELETED
package/src/lib/device.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/device.ts"],"names":[],"mappings":""}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export interface HardwareComponent {
|
|
2
|
-
name: string;
|
|
3
|
-
version: string;
|
|
4
|
-
serialNumber: string;
|
|
5
|
-
}
|
|
6
|
-
export type AssemblyComponent = HardwareComponent;
|
|
7
|
-
export 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;
|
|
38
|
-
export declare function isHardwareDescriptionCompatibleWithPackageFilename(hardwareDescription: HardwareDescription, packageFilename: string): boolean;
|
|
39
|
-
export declare function getHardwareComponentsFromPackageFilename(packageFilename: string): HardwareComponent[];
|
|
40
|
-
export declare function getVersionFromPackageFilename(packageFilename: string): string | undefined;
|
|
41
|
-
export declare function getApiIdentifierFromPackageFilename(packageFilename: string): string | undefined;
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getApiIdentifierFromPackageFilename = exports.getVersionFromPackageFilename = exports.getHardwareComponentsFromPackageFilename = exports.isHardwareDescriptionCompatibleWithPackageFilename = exports.hardwareComponentsMatch = exports.getAllComponentsFromHardwareDescription = exports.getSerialNumberFromHardwareDescription = exports.getNameFromHardwareDescription = exports.getApiIdentifierFromHardwareDescription = exports.getIdFromHardwareDescription = void 0;
|
|
4
|
-
const lodash_1 = require("lodash");
|
|
5
|
-
const semver_1 = require("semver");
|
|
6
|
-
function getIdFromHardwareDescription(hd) {
|
|
7
|
-
return hd.assembly
|
|
8
|
-
? hd.assembly.id
|
|
9
|
-
: hd.device.id;
|
|
10
|
-
}
|
|
11
|
-
exports.getIdFromHardwareDescription = getIdFromHardwareDescription;
|
|
12
|
-
function getApiIdentifierFromHardwareDescription(hd, skipKeyId = false) {
|
|
13
|
-
let apiId = hd.assembly
|
|
14
|
-
? `${hd.assembly.id}-${hd.assembly.version}`
|
|
15
|
-
: `${hd.device.id}-${hd.device.version}`;
|
|
16
|
-
if (!skipKeyId && hd.device.keyId) {
|
|
17
|
-
apiId += `-${hd.device.keyId}`;
|
|
18
|
-
}
|
|
19
|
-
return apiId;
|
|
20
|
-
}
|
|
21
|
-
exports.getApiIdentifierFromHardwareDescription = getApiIdentifierFromHardwareDescription;
|
|
22
|
-
function getNameFromHardwareDescription(hd) {
|
|
23
|
-
return hd.assembly
|
|
24
|
-
? hd.assembly.name
|
|
25
|
-
: hd.device.name;
|
|
26
|
-
}
|
|
27
|
-
exports.getNameFromHardwareDescription = getNameFromHardwareDescription;
|
|
28
|
-
function getSerialNumberFromHardwareDescription(hd) {
|
|
29
|
-
return hd.assembly
|
|
30
|
-
? hd.assembly.serialNumber
|
|
31
|
-
: hd.device.serialNumber;
|
|
32
|
-
}
|
|
33
|
-
exports.getSerialNumberFromHardwareDescription = getSerialNumberFromHardwareDescription;
|
|
34
|
-
function getAllComponentsFromHardwareDescription(hd) {
|
|
35
|
-
return hd.assembly
|
|
36
|
-
? [...hd.assembly.components, ...hd.device.components]
|
|
37
|
-
: hd.device.components;
|
|
38
|
-
}
|
|
39
|
-
exports.getAllComponentsFromHardwareDescription = getAllComponentsFromHardwareDescription;
|
|
40
|
-
function hardwareComponentsMatch(a, b) {
|
|
41
|
-
if (a.length === 0 && b.length === 0) {
|
|
42
|
-
return false; // edge case: when both components are empty they don't match since there are no components to compare
|
|
43
|
-
}
|
|
44
|
-
const ac = a.map((c) => `${c.name}-${c.version[0]}`.replace(/\s/g, '').toLocaleLowerCase()).sort();
|
|
45
|
-
const bc = b.map((c) => `${c.name}-${c.version[0]}`.replace(/\s/g, '').toLocaleLowerCase()).sort();
|
|
46
|
-
return (0, lodash_1.isEqual)(ac, bc);
|
|
47
|
-
}
|
|
48
|
-
exports.hardwareComponentsMatch = hardwareComponentsMatch;
|
|
49
|
-
function isHardwareDescriptionCompatibleWithPackageFilename(hardwareDescription, packageFilename) {
|
|
50
|
-
const hdApiId = getApiIdentifierFromHardwareDescription(hardwareDescription);
|
|
51
|
-
const pfApiId = getApiIdentifierFromPackageFilename(packageFilename);
|
|
52
|
-
if (hdApiId && pfApiId) {
|
|
53
|
-
return hdApiId === pfApiId;
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
const pfComponents = getHardwareComponentsFromPackageFilename(packageFilename);
|
|
57
|
-
const hdComponents = getAllComponentsFromHardwareDescription(hardwareDescription);
|
|
58
|
-
return hardwareComponentsMatch(pfComponents, hdComponents);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.isHardwareDescriptionCompatibleWithPackageFilename = isHardwareDescriptionCompatibleWithPackageFilename;
|
|
62
|
-
function getHardwareComponentsFromPackageFilename(packageFilename) {
|
|
63
|
-
if (packageFilename.match(/_Com[^_]+_Core[^_]+_Drive/g)) {
|
|
64
|
-
return packageFilename.split('_').slice(1, 4).map((b) => {
|
|
65
|
-
const p = b.split('-'); // ['ComEtherCAT', 'b']
|
|
66
|
-
return {
|
|
67
|
-
name: p[0],
|
|
68
|
-
serialNumber: '',
|
|
69
|
-
version: p[1],
|
|
70
|
-
};
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
// not all package filenames have components,
|
|
75
|
-
// e.g. 'package_SOMANET-Servo-Node-Circulo-1800_circulo1800_motion-drive_v4.2.0-beta.5.zip'
|
|
76
|
-
return [];
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
exports.getHardwareComponentsFromPackageFilename = getHardwareComponentsFromPackageFilename;
|
|
80
|
-
function getVersionFromPackageFilename(packageFilename) {
|
|
81
|
-
const parts = packageFilename.split('_');
|
|
82
|
-
const version = parts[parts.length - 1].replace(/\.zip$/, '').split(/\s+/)[0];
|
|
83
|
-
return semver_1.default.valid(version) ? version : undefined;
|
|
84
|
-
}
|
|
85
|
-
exports.getVersionFromPackageFilename = getVersionFromPackageFilename;
|
|
86
|
-
function getApiIdentifierFromPackageFilename(packageFilename) {
|
|
87
|
-
if (packageFilename.match(/_Com[^_]+_Core[^_]+_Drive/g)) {
|
|
88
|
-
return undefined;
|
|
89
|
-
}
|
|
90
|
-
const [, , apiIdentifier] = packageFilename.split('_');
|
|
91
|
-
return apiIdentifier;
|
|
92
|
-
}
|
|
93
|
-
exports.getApiIdentifierFromPackageFilename = getApiIdentifierFromPackageFilename;
|
|
94
|
-
//# sourceMappingURL=hardware-description.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hardware-description.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/hardware-description.ts"],"names":[],"mappings":"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"}
|
package/src/lib/logger.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const logger: import("roarr").Logger<import("roarr/dist/types").JsonObject>;
|
package/src/lib/logger.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
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
|
package/src/lib/logger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"monitoring-config.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/monitoring-config.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"monitoring-entry.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/monitoring-entry.ts"],"names":[],"mappings":""}
|
|
@@ -1,52 +0,0 @@
|
|
|
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 { DeviceParameterIds, DeviceRef, ParameterValueType } from "./types";
|
|
8
|
-
import { Parameter } from "./parameter";
|
|
9
|
-
export declare function createMotionMasterClient(hostname: string): MotionMasterClient;
|
|
10
|
-
export declare class MotionMasterClient {
|
|
11
|
-
readonly reqResSocket: MotionMasterReqResSocket;
|
|
12
|
-
readonly pubSubSocket: MotionMasterPubSubSocket;
|
|
13
|
-
readonly request: MotionMasterReqResClient;
|
|
14
|
-
readonly monitor: MotionMasterPubSubClient;
|
|
15
|
-
constructor(reqResSocket: MotionMasterReqResSocket, pubSubSocket: MotionMasterPubSubSocket);
|
|
16
|
-
/**
|
|
17
|
-
* This observable will emit true when both req/res and pub/sub sockets are opened.
|
|
18
|
-
* If any socket gets closed, this observable will emit false.
|
|
19
|
-
* This is a hot observable that will on subscription emit the last value of sockets opened.
|
|
20
|
-
*/
|
|
21
|
-
socketsOpened$: Observable<boolean>;
|
|
22
|
-
/**
|
|
23
|
-
* Client is ready when both req/res and pub/sub sockets are opened.
|
|
24
|
-
* This observable will emit whenever the sockets opened property changes to true.
|
|
25
|
-
*/
|
|
26
|
-
ready$: Observable<true>;
|
|
27
|
-
/**
|
|
28
|
-
* This observable will emit only once when both req/res and pub/sub sockets are opened.
|
|
29
|
-
* NOTE: This observable might never emit and it doesn't timeout.
|
|
30
|
-
*/
|
|
31
|
-
onceReady$: Observable<true>;
|
|
32
|
-
/**
|
|
33
|
-
* Client is ready when both req/res and pub/sub sockets are opened.
|
|
34
|
-
* If both sockets are already opened, this function will immediately resolve to true.
|
|
35
|
-
* Otherwise, it will wait up to requestTimeout for both sockets to open, or throw an error.
|
|
36
|
-
*/
|
|
37
|
-
whenReady(requestTimeout?: number): Promise<true>;
|
|
38
|
-
startMonitoring(ids: DeviceParameterIds, interval: number, config?: MonitoringConfig, requestTimeout?: number): Observable<ParameterValueType[]>;
|
|
39
|
-
/**
|
|
40
|
-
* TODO: return device parameters instead of just parameters
|
|
41
|
-
* get parameters from ESI uprfront, and then when parameters are received
|
|
42
|
-
* from motion master just concatenate (spread operator) props from ESI and props from parameter
|
|
43
|
-
* assign device parameter id like 0x1018:00.12345
|
|
44
|
-
* when assembling device parameter, get parameter from device in ESI based on product code, see ESI service
|
|
45
|
-
* this should probably done for other get parameters functions, get ESI file from device or prepared, get data from it
|
|
46
|
-
*/
|
|
47
|
-
startMonitoringDeviceParameters(ids: DeviceParameterIds, interval: number, config?: MonitoringConfig, requestTimeout?: number): Observable<Parameter[]>;
|
|
48
|
-
startMonitoringValue<T extends ParameterValueType = number>(id: string | [DeviceRef, number, number], interval: number, config?: MonitoringConfig, requestTimeout?: number): Observable<T>;
|
|
49
|
-
stopMonitoring(messageId: string): void;
|
|
50
|
-
closeSockets(): void;
|
|
51
|
-
reopenSockets(): void;
|
|
52
|
-
}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MotionMasterClient = exports.createMotionMasterClient = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const rxjs_1 = require("rxjs");
|
|
6
|
-
const uuid_1 = require("uuid");
|
|
7
|
-
const motion_master_pub_sub_client_1 = require("./motion-master-pub-sub-client");
|
|
8
|
-
const motion_master_pub_sub_web_socket_1 = require("./motion-master-pub-sub-web-socket");
|
|
9
|
-
const motion_master_req_res_client_1 = require("./motion-master-req-res-client");
|
|
10
|
-
const motion_master_req_res_web_socket_1 = require("./motion-master-req-res-web-socket");
|
|
11
|
-
const operators_1 = require("./operators");
|
|
12
|
-
function createMotionMasterClient(hostname) {
|
|
13
|
-
const reqResSocket = new motion_master_req_res_web_socket_1.MotionMasterReqResWebSocket();
|
|
14
|
-
const pubSubSocket = new motion_master_pub_sub_web_socket_1.MotionMasterPubSubWebSocket();
|
|
15
|
-
const client = new MotionMasterClient(reqResSocket, pubSubSocket);
|
|
16
|
-
const clientId = (0, uuid_1.v4)();
|
|
17
|
-
reqResSocket.open(`ws://${hostname}:63524?clientId=${clientId}`);
|
|
18
|
-
pubSubSocket.open(`ws://${hostname}:63525?clientId=${clientId}`);
|
|
19
|
-
return client;
|
|
20
|
-
}
|
|
21
|
-
exports.createMotionMasterClient = createMotionMasterClient;
|
|
22
|
-
class MotionMasterClient {
|
|
23
|
-
constructor(reqResSocket, pubSubSocket) {
|
|
24
|
-
this.reqResSocket = reqResSocket;
|
|
25
|
-
this.pubSubSocket = pubSubSocket;
|
|
26
|
-
/**
|
|
27
|
-
* This observable will emit true when both req/res and pub/sub sockets are opened.
|
|
28
|
-
* If any socket gets closed, this observable will emit false.
|
|
29
|
-
* This is a hot observable that will on subscription emit the last value of sockets opened.
|
|
30
|
-
*/
|
|
31
|
-
this.socketsOpened$ = (0, rxjs_1.combineLatest)([this.reqResSocket.opened$, this.pubSubSocket.opened$]).pipe((0, rxjs_1.map)(([reqResSocketOpened, pubSubSocketOpened]) => reqResSocketOpened && pubSubSocketOpened));
|
|
32
|
-
/**
|
|
33
|
-
* Client is ready when both req/res and pub/sub sockets are opened.
|
|
34
|
-
* This observable will emit whenever the sockets opened property changes to true.
|
|
35
|
-
*/
|
|
36
|
-
this.ready$ = this.socketsOpened$.pipe((0, rxjs_1.filter)(Boolean));
|
|
37
|
-
/**
|
|
38
|
-
* This observable will emit only once when both req/res and pub/sub sockets are opened.
|
|
39
|
-
* NOTE: This observable might never emit and it doesn't timeout.
|
|
40
|
-
*/
|
|
41
|
-
this.onceReady$ = this.ready$.pipe((0, rxjs_1.first)());
|
|
42
|
-
this.request = new motion_master_req_res_client_1.MotionMasterReqResClient(this.reqResSocket);
|
|
43
|
-
this.monitor = new motion_master_pub_sub_client_1.MotionMasterPubSubClient(this.pubSubSocket);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Client is ready when both req/res and pub/sub sockets are opened.
|
|
47
|
-
* If both sockets are already opened, this function will immediately resolve to true.
|
|
48
|
-
* Otherwise, it will wait up to requestTimeout for both sockets to open, or throw an error.
|
|
49
|
-
*/
|
|
50
|
-
whenReady(requestTimeout = 5000) {
|
|
51
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
52
|
-
return (0, rxjs_1.firstValueFrom)(this.ready$.pipe((0, rxjs_1.timeout)(requestTimeout)));
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
startMonitoring(ids, interval, config, requestTimeout = 5000) {
|
|
56
|
-
return (0, rxjs_1.defer)(() => {
|
|
57
|
-
var _a, _b;
|
|
58
|
-
const topic = (_a = config === null || config === void 0 ? void 0 : config.topic) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)();
|
|
59
|
-
const messageId = (_b = config === null || config === void 0 ? void 0 : config.messageId) !== null && _b !== void 0 ? _b : (0, uuid_1.v4)();
|
|
60
|
-
if (!config) {
|
|
61
|
-
config = { messageId, topic, bufferSize: 1, distinct: false };
|
|
62
|
-
}
|
|
63
|
-
this.request.resolveGetParameterValuesIds(ids).pipe((0, rxjs_1.mergeMap)((refs) => {
|
|
64
|
-
if ((new Set(refs.map(([deviceAddress]) => deviceAddress))).size !== 1) {
|
|
65
|
-
throw new Error('Start monitoring only supports a single device');
|
|
66
|
-
}
|
|
67
|
-
const deviceAddress = refs[0][0];
|
|
68
|
-
const props = {
|
|
69
|
-
getDeviceParameterValues: {
|
|
70
|
-
deviceAddress,
|
|
71
|
-
parameters: refs.map(([, index, subindex]) => ({ index, subindex, loadFromCache: false })),
|
|
72
|
-
sendProgress: false,
|
|
73
|
-
},
|
|
74
|
-
interval,
|
|
75
|
-
topic,
|
|
76
|
-
};
|
|
77
|
-
return this.request.startMonitoringDeviceParameterValues(props, requestTimeout, messageId);
|
|
78
|
-
})).subscribe();
|
|
79
|
-
this.monitor.subscribe(config);
|
|
80
|
-
const values$ = this.monitor.socket.data$.pipe((0, operators_1.selectMotionMasterMessageByTopic)(config.topic), (0, operators_1.mapMonitoringParameterValuesStatusMessageToParameterValues)(), (0, rxjs_1.map)((values) => values.slice(1)));
|
|
81
|
-
return new rxjs_1.Observable((subscriber) => {
|
|
82
|
-
const subscription = values$.subscribe(subscriber);
|
|
83
|
-
return () => {
|
|
84
|
-
subscription.unsubscribe();
|
|
85
|
-
this.stopMonitoring(messageId);
|
|
86
|
-
};
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* TODO: return device parameters instead of just parameters
|
|
92
|
-
* get parameters from ESI uprfront, and then when parameters are received
|
|
93
|
-
* from motion master just concatenate (spread operator) props from ESI and props from parameter
|
|
94
|
-
* assign device parameter id like 0x1018:00.12345
|
|
95
|
-
* when assembling device parameter, get parameter from device in ESI based on product code, see ESI service
|
|
96
|
-
* this should probably done for other get parameters functions, get ESI file from device or prepared, get data from it
|
|
97
|
-
*/
|
|
98
|
-
startMonitoringDeviceParameters(ids, interval, config, requestTimeout = 5000) {
|
|
99
|
-
return (0, rxjs_1.defer)(() => {
|
|
100
|
-
var _a, _b;
|
|
101
|
-
const topic = (_a = config === null || config === void 0 ? void 0 : config.topic) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)();
|
|
102
|
-
const messageId = (_b = config === null || config === void 0 ? void 0 : config.messageId) !== null && _b !== void 0 ? _b : (0, uuid_1.v4)();
|
|
103
|
-
if (!config) {
|
|
104
|
-
config = { messageId, topic, bufferSize: 1, distinct: false };
|
|
105
|
-
}
|
|
106
|
-
this.request.resolveGetParameterValuesIds(ids).pipe((0, rxjs_1.mergeMap)((refs) => {
|
|
107
|
-
if ((new Set(refs.map(([deviceAddress]) => deviceAddress))).size !== 1) {
|
|
108
|
-
throw new Error('Start monitoring only supports a single device');
|
|
109
|
-
}
|
|
110
|
-
const deviceAddress = refs[0][0];
|
|
111
|
-
const props = {
|
|
112
|
-
getDeviceParameterValues: {
|
|
113
|
-
deviceAddress,
|
|
114
|
-
parameters: refs.map(([, index, subindex]) => ({ index, subindex, loadFromCache: false })),
|
|
115
|
-
sendProgress: false,
|
|
116
|
-
},
|
|
117
|
-
interval,
|
|
118
|
-
topic,
|
|
119
|
-
};
|
|
120
|
-
return this.request.startMonitoringDeviceParameterValues(props, requestTimeout, messageId);
|
|
121
|
-
})).subscribe();
|
|
122
|
-
this.monitor.subscribe(config);
|
|
123
|
-
const values$ = this.monitor.socket.data$.pipe((0, operators_1.selectMotionMasterMessageByTopic)(config.topic), (0, operators_1.mapMonitoringParameterValuesStatusMessageToDeviceParameters)(), (0, rxjs_1.map)((values) => values.slice(1)));
|
|
124
|
-
return new rxjs_1.Observable((subscriber) => {
|
|
125
|
-
const subscription = values$.subscribe(subscriber);
|
|
126
|
-
return () => {
|
|
127
|
-
subscription.unsubscribe();
|
|
128
|
-
this.stopMonitoring(messageId);
|
|
129
|
-
};
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
startMonitoringValue(id, interval, config, requestTimeout = 5000) {
|
|
134
|
-
const ids = typeof id === 'string' ? [id] : [id];
|
|
135
|
-
return this.startMonitoring(ids, interval, config, requestTimeout).pipe((0, rxjs_1.map)((parameters) => { var _a; return ((_a = parameters[0]) !== null && _a !== void 0 ? _a : 0); }));
|
|
136
|
-
}
|
|
137
|
-
stopMonitoring(messageId) {
|
|
138
|
-
this.request.stopMonitoringDeviceParameterValues({ startMonitoringRequestId: messageId });
|
|
139
|
-
this.monitor.unsubscribe(messageId);
|
|
140
|
-
}
|
|
141
|
-
closeSockets() {
|
|
142
|
-
this.reqResSocket.close();
|
|
143
|
-
this.pubSubSocket.close();
|
|
144
|
-
}
|
|
145
|
-
reopenSockets() {
|
|
146
|
-
this.reqResSocket.reopen();
|
|
147
|
-
this.pubSubSocket.reopen();
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
exports.MotionMasterClient = MotionMasterClient;
|
|
151
|
-
//# sourceMappingURL=motion-master-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Observable, Subject } from "rxjs";
|
|
2
|
-
import { MonitoringConfig } from "./monitoring-config";
|
|
3
|
-
import { MotionMasterPubSubSocket } from "./motion-master-pub-sub-socket";
|
|
4
|
-
import { IMotionMasterMessage, MotionMasterMessage } from "./types";
|
|
5
|
-
export declare class MotionMasterPubSubClient {
|
|
6
|
-
readonly socket: MotionMasterPubSubSocket;
|
|
7
|
-
readonly data$: Subject<[string, IMotionMasterMessage[]]>;
|
|
8
|
-
private subscriptions;
|
|
9
|
-
readonly notification$: Observable<IMotionMasterMessage>;
|
|
10
|
-
readonly systemEvent$: Observable<MotionMasterMessage.Status.ISystemEvent>;
|
|
11
|
-
readonly deviceEvent$: Observable<MotionMasterMessage.Status.IDeviceEvent>;
|
|
12
|
-
constructor(socket: MotionMasterPubSubSocket);
|
|
13
|
-
subscribe(config: MonitoringConfig): string;
|
|
14
|
-
unsubscribe(messageId: string): void;
|
|
15
|
-
unsubscribeAll(): void;
|
|
16
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
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 equal = require("fast-deep-equal");
|
|
8
|
-
const motion_master_pub_sub_worker_socket_1 = require("./motion-master-pub-sub-worker-socket");
|
|
9
|
-
class MotionMasterPubSubClient {
|
|
10
|
-
constructor(socket) {
|
|
11
|
-
this.socket = socket;
|
|
12
|
-
this.data$ = new rxjs_1.Subject();
|
|
13
|
-
this.subscriptions = new Map();
|
|
14
|
-
this.notification$ = this.socket.data$.pipe((0, operators_1.selectMotionMasterMessageByTopic)('notification'));
|
|
15
|
-
this.systemEvent$ = this.notification$.pipe((0, operators_1.selectMotionMasterMessageStatusByKey)('systemEvent'));
|
|
16
|
-
this.deviceEvent$ = this.notification$.pipe((0, operators_1.selectMotionMasterMessageStatusByKey)('deviceEvent'));
|
|
17
|
-
}
|
|
18
|
-
subscribe(config) {
|
|
19
|
-
if (!config.messageId) {
|
|
20
|
-
config = Object.assign(Object.assign({}, config), { messageId: (0, uuid_1.v4)() });
|
|
21
|
-
}
|
|
22
|
-
if (this.socket instanceof motion_master_pub_sub_worker_socket_1.MotionMasterPubSubWorkerSocket) {
|
|
23
|
-
this.socket.worker.postMessage({ subscribe: config });
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
const { bufferSize = 1, distinct = false, messageId, topic } = config;
|
|
27
|
-
let observable = this.socket.data$.pipe((0, rxjs_1.filter)((data) => data[0] === topic), (0, rxjs_1.map)((data) => data[1]));
|
|
28
|
-
if (distinct) {
|
|
29
|
-
observable = observable.pipe((0, rxjs_1.distinctUntilChanged)((prev, curr) => {
|
|
30
|
-
var _a, _b, _c, _d, _e, _f;
|
|
31
|
-
if (((_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)
|
|
32
|
-
&& ((_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)) {
|
|
33
|
-
return equal(prev.status.monitoringParameterValues.deviceParameterValues.parameterValues, curr.status.monitoringParameterValues.deviceParameterValues.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
|
|
@@ -1 +0,0 @@
|
|
|
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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"}
|