motion-master-client 0.0.1

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.
Files changed (71) hide show
  1. package/README.md +7 -0
  2. package/package.json +9 -0
  3. package/src/index.d.ts +21 -0
  4. package/src/index.js +22 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/device-log-line.d.ts +5 -0
  7. package/src/lib/device-log-line.js +2 -0
  8. package/src/lib/device-log-line.js.map +1 -0
  9. package/src/lib/hardware-description.d.ts +36 -0
  10. package/src/lib/hardware-description.js +38 -0
  11. package/src/lib/hardware-description.js.map +1 -0
  12. package/src/lib/logger.d.ts +1 -0
  13. package/src/lib/logger.js +5 -0
  14. package/src/lib/logger.js.map +1 -0
  15. package/src/lib/monitoring-config.d.ts +6 -0
  16. package/src/lib/monitoring-config.js +2 -0
  17. package/src/lib/monitoring-config.js.map +1 -0
  18. package/src/lib/monitoring-entry.d.ts +10 -0
  19. package/src/lib/monitoring-entry.js +2 -0
  20. package/src/lib/monitoring-entry.js.map +1 -0
  21. package/src/lib/motion-master-client.d.ts +18 -0
  22. package/src/lib/motion-master-client.js +48 -0
  23. package/src/lib/motion-master-client.js.map +1 -0
  24. package/src/lib/motion-master-pub-sub-client.d.ts +16 -0
  25. package/src/lib/motion-master-pub-sub-client.js +64 -0
  26. package/src/lib/motion-master-pub-sub-client.js.map +1 -0
  27. package/src/lib/motion-master-pub-sub-socket.d.ts +28 -0
  28. package/src/lib/motion-master-pub-sub-socket.js +2 -0
  29. package/src/lib/motion-master-pub-sub-socket.js.map +1 -0
  30. package/src/lib/motion-master-pub-sub-web-socket.d.ts +13 -0
  31. package/src/lib/motion-master-pub-sub-web-socket.js +57 -0
  32. package/src/lib/motion-master-pub-sub-web-socket.js.map +1 -0
  33. package/src/lib/motion-master-pub-sub-worker-socket.d.ts +16 -0
  34. package/src/lib/motion-master-pub-sub-worker-socket.js +37 -0
  35. package/src/lib/motion-master-pub-sub-worker-socket.js.map +1 -0
  36. package/src/lib/motion-master-req-res-client.d.ts +370 -0
  37. package/src/lib/motion-master-req-res-client.js +1067 -0
  38. package/src/lib/motion-master-req-res-client.js.map +1 -0
  39. package/src/lib/motion-master-req-res-socket.d.ts +38 -0
  40. package/src/lib/motion-master-req-res-socket.js +2 -0
  41. package/src/lib/motion-master-req-res-socket.js.map +1 -0
  42. package/src/lib/motion-master-req-res-web-socket.d.ts +20 -0
  43. package/src/lib/motion-master-req-res-web-socket.js +96 -0
  44. package/src/lib/motion-master-req-res-web-socket.js.map +1 -0
  45. package/src/lib/motion-master-req-res-worker-socket.d.ts +15 -0
  46. package/src/lib/motion-master-req-res-worker-socket.js +49 -0
  47. package/src/lib/motion-master-req-res-worker-socket.js.map +1 -0
  48. package/src/lib/operators.d.ts +21 -0
  49. package/src/lib/operators.js +62 -0
  50. package/src/lib/operators.js.map +1 -0
  51. package/src/lib/options.d.ts +10 -0
  52. package/src/lib/options.js +11 -0
  53. package/src/lib/options.js.map +1 -0
  54. package/src/lib/parameter.d.ts +9 -0
  55. package/src/lib/parameter.js +2 -0
  56. package/src/lib/parameter.js.map +1 -0
  57. package/src/lib/request-status-resolver.d.ts +4 -0
  58. package/src/lib/request-status-resolver.js +320 -0
  59. package/src/lib/request-status-resolver.js.map +1 -0
  60. package/src/lib/system-log-line.d.ts +8 -0
  61. package/src/lib/system-log-line.js +2 -0
  62. package/src/lib/system-log-line.js.map +1 -0
  63. package/src/lib/types.d.ts +41 -0
  64. package/src/lib/types.js +9 -0
  65. package/src/lib/types.js.map +1 -0
  66. package/src/lib/urls.d.ts +3 -0
  67. package/src/lib/urls.js +6 -0
  68. package/src/lib/urls.js.map +1 -0
  69. package/src/lib/util.d.ts +33 -0
  70. package/src/lib/util.js +247 -0
  71. package/src/lib/util.js.map +1 -0
@@ -0,0 +1,1067 @@
1
+ import { __awaiter } from "tslib";
2
+ import { defer, from, lastValueFrom, of, tap } from "rxjs";
3
+ import { delay, map, mergeMap } from "rxjs/operators";
4
+ import { v4 } from "uuid";
5
+ import { getApiIdentifierFromHardwareDescription, getSerialNumberFromHardwareDescription } from "./hardware-description";
6
+ import { retryWithDelay, transformMotionMasterMessageToStatus } from "./operators";
7
+ import { MotionMasterMessage } from "./types";
8
+ import { decodeTextContent, valueTypeToParameterTypeValueKeyMap, getParameterAddress, getParameterValue, parseSystemLogContent } from "./util";
9
+ export class MotionMasterReqResClient {
10
+ constructor(socket) {
11
+ this.socket = socket;
12
+ this.parameterAddressToParameterTypeValueKeyMap = new Map();
13
+ this.deviceSerialNumberToDeviceAddressMap = new Map();
14
+ }
15
+ //
16
+ // Requests
17
+ //
18
+ pingSystem(messageId) {
19
+ const pingSystem = MotionMasterMessage.Request.PingSystem.create();
20
+ this.sendRequest({ pingSystem }, messageId);
21
+ return of(undefined);
22
+ }
23
+ pingSystemAsync(messageId) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ return yield lastValueFrom(this.pingSystem(messageId));
26
+ });
27
+ }
28
+ getSystemVersion(requestTimeout, messageId) {
29
+ const getSystemVersion = MotionMasterMessage.Request.GetSystemVersion.create();
30
+ const id = this.sendRequest({ getSystemVersion }, messageId);
31
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('systemVersion', requestTimeout, id));
32
+ }
33
+ getSystemVersionAsync(requestTimeout) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ const status = yield lastValueFrom(this.getSystemVersion(requestTimeout));
36
+ if (status.request === 'succeeded') {
37
+ return status.version;
38
+ }
39
+ throw new Error('Get system version request failed.');
40
+ });
41
+ }
42
+ getDeviceInfo(requestTimeout, messageId) {
43
+ const getDeviceInfo = MotionMasterMessage.Request.GetDeviceInfo.create();
44
+ const id = this.sendRequest({ getDeviceInfo }, messageId);
45
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceInfo', requestTimeout, id));
46
+ }
47
+ getDeviceInfoAsync(requestTimeout) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ const status = yield lastValueFrom(this.getDeviceInfo(requestTimeout));
50
+ if (status.request === 'succeeded') {
51
+ return status.devices;
52
+ }
53
+ throw new Error('Get device info request failed.');
54
+ });
55
+ }
56
+ getDeviceParameterInfo(props, requestTimeout, messageId) {
57
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
58
+ const getDeviceParameterInfo = MotionMasterMessage.Request.GetDeviceParameterInfo.create(Object.assign(Object.assign({}, props), { deviceAddress }));
59
+ const id = this.sendRequest({ getDeviceParameterInfo }, messageId);
60
+ return this.socket.message$.pipe(tap((message) => {
61
+ var _a, _b;
62
+ const parameters = (_b = (_a = message.status) === null || _a === void 0 ? void 0 : _a.deviceParameterInfo) === null || _b === void 0 ? void 0 : _b.parameters;
63
+ if (parameters) {
64
+ this.parameterAddressToParameterTypeValueKeyMap.clear();
65
+ for (const parameter of parameters) {
66
+ const parameterAddress = getParameterAddress(parameter);
67
+ if (parameter.valueType) {
68
+ const typeValueKey = valueTypeToParameterTypeValueKeyMap.get(parameter.valueType);
69
+ if (typeValueKey) {
70
+ this.parameterAddressToParameterTypeValueKeyMap.set(parameterAddress, typeValueKey);
71
+ }
72
+ }
73
+ }
74
+ }
75
+ }), transformMotionMasterMessageToStatus('deviceParameterInfo', requestTimeout, id));
76
+ }));
77
+ }
78
+ getDeviceParameterInfoAsync(props, requestTimeout, messageId) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ const status = yield lastValueFrom(this.getDeviceParameterInfo(props, requestTimeout, messageId));
81
+ if (status.request === 'succeeded') {
82
+ return status.parameters;
83
+ }
84
+ throw new Error('Get device parameter info request failed.');
85
+ });
86
+ }
87
+ getDeviceParameterValues(props, requestTimeout, messageId) {
88
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
89
+ const getDeviceParameterValues = MotionMasterMessage.Request.GetDeviceParameterValues.create(Object.assign(Object.assign({}, props), { deviceAddress }));
90
+ const id = this.sendRequest({ getDeviceParameterValues }, messageId);
91
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceParameterValues', requestTimeout, id));
92
+ }));
93
+ }
94
+ getDeviceParameterValuesAsync(props, requestTimeout, messageId) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ const status = yield lastValueFrom(this.getDeviceParameterValues(props, requestTimeout, messageId));
97
+ return status.parameterValues;
98
+ });
99
+ }
100
+ getMultiDeviceParameterValues(props, requestTimeout, messageId) {
101
+ const getMultiDeviceParameterValues = MotionMasterMessage.Request.GetMultiDeviceParameterValues.create(props);
102
+ const id = this.sendRequest({ getMultiDeviceParameterValues }, messageId);
103
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('multiDeviceParameterValues', requestTimeout, id));
104
+ }
105
+ getMultiDeviceParameterValuesAsync(props, requestTimeout, messageId) {
106
+ return __awaiter(this, void 0, void 0, function* () {
107
+ const status = yield lastValueFrom(this.getMultiDeviceParameterValues(props, requestTimeout, messageId));
108
+ return status.collection;
109
+ });
110
+ }
111
+ setDeviceParameterValues(props, requestTimeout, messageId) {
112
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
113
+ const setDeviceParameterValues = MotionMasterMessage.Request.SetDeviceParameterValues.create(Object.assign(Object.assign({}, props), { deviceAddress }));
114
+ const id = this.sendRequest({ setDeviceParameterValues }, messageId);
115
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceParameterValues', requestTimeout, id));
116
+ }));
117
+ }
118
+ setDeviceParameterValuesAsync(props, requestTimeout, messageId) {
119
+ return __awaiter(this, void 0, void 0, function* () {
120
+ const status = yield lastValueFrom(this.setDeviceParameterValues(props, requestTimeout, messageId));
121
+ return status.parameterValues;
122
+ });
123
+ }
124
+ setMultiDeviceParameterValues(props, requestTimeout, messageId) {
125
+ const setMultiDeviceParameterValues = MotionMasterMessage.Request.SetMultiDeviceParameterValues.create(props);
126
+ const id = this.sendRequest({ setMultiDeviceParameterValues }, messageId);
127
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('multiDeviceParameterValues', requestTimeout, id));
128
+ }
129
+ setMultiDeviceParameterValuesAsync(props, requestTimeout, messageId) {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ const status = yield lastValueFrom(this.setMultiDeviceParameterValues(props, requestTimeout, messageId));
132
+ return status.collection;
133
+ });
134
+ }
135
+ getDeviceFileList(props, requestTimeout, messageId) {
136
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
137
+ const getDeviceFileList = MotionMasterMessage.Request.GetDeviceFileList.create(Object.assign(Object.assign({}, props), { deviceAddress }));
138
+ const id = this.sendRequest({ getDeviceFileList }, messageId);
139
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceFileList', requestTimeout, id));
140
+ }));
141
+ }
142
+ getDeviceFileListAsync(props, requestTimeout, messageId) {
143
+ var _a, _b, _c;
144
+ return __awaiter(this, void 0, void 0, function* () {
145
+ const status = yield lastValueFrom(this.getDeviceFileList(props, requestTimeout, messageId));
146
+ if (status.request === 'succeeded') {
147
+ return (_b = (_a = status.fileList) === null || _a === void 0 ? void 0 : _a.files) !== null && _b !== void 0 ? _b : [];
148
+ }
149
+ throw new Error(`Failed to get device file list. ${(_c = status.error) === null || _c === void 0 ? void 0 : _c.message} ${JSON.stringify(props)}`);
150
+ });
151
+ }
152
+ getDeviceFile(props, requestTimeout, messageId) {
153
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
154
+ const getDeviceFile = MotionMasterMessage.Request.GetDeviceFile.create(Object.assign(Object.assign({}, props), { deviceAddress }));
155
+ const id = this.sendRequest({ getDeviceFile }, messageId);
156
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceFile', requestTimeout, id));
157
+ }));
158
+ }
159
+ getDeviceFileAsync(props, requestTimeout, messageId) {
160
+ var _a;
161
+ return __awaiter(this, void 0, void 0, function* () {
162
+ const status = yield lastValueFrom(this.getDeviceFile(props, requestTimeout, messageId));
163
+ if (status.request === 'succeeded') {
164
+ if (status.content) {
165
+ return status.content;
166
+ }
167
+ }
168
+ throw new Error(`Failed to get device file. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.message} ${JSON.stringify(props)}`);
169
+ });
170
+ }
171
+ setDeviceFile(props, requestTimeout, messageId) {
172
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
173
+ const setDeviceFile = MotionMasterMessage.Request.SetDeviceFile.create(Object.assign(Object.assign({}, props), { deviceAddress }));
174
+ const id = this.sendRequest({ setDeviceFile }, messageId);
175
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceFile', requestTimeout, id));
176
+ }));
177
+ }
178
+ setDeviceFileAsync(props, requestTimeout, messageId) {
179
+ var _a;
180
+ return __awaiter(this, void 0, void 0, function* () {
181
+ const status = yield lastValueFrom(this.setDeviceFile(props, requestTimeout, messageId));
182
+ if (status.request === 'succeeded') {
183
+ return;
184
+ }
185
+ throw new Error(`Failed to set device file. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.message} ${JSON.stringify(props)}`);
186
+ });
187
+ }
188
+ deleteDeviceFile(props, requestTimeout, messageId) {
189
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
190
+ const deleteDeviceFile = MotionMasterMessage.Request.DeleteDeviceFile.create(Object.assign(Object.assign({}, props), { deviceAddress }));
191
+ const id = this.sendRequest({ deleteDeviceFile }, messageId);
192
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceFile', requestTimeout, id));
193
+ }));
194
+ }
195
+ deleteDeviceFileAsync(props, requestTimeout, messageId) {
196
+ var _a;
197
+ return __awaiter(this, void 0, void 0, function* () {
198
+ const status = yield lastValueFrom(this.deleteDeviceFile(props, requestTimeout, messageId));
199
+ if (status.request === 'succeeded') {
200
+ return;
201
+ }
202
+ throw new Error(`Failed to delete device file. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.message} ${JSON.stringify(props)}`);
203
+ });
204
+ }
205
+ resetDeviceFault(props, requestTimeout, messageId) {
206
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
207
+ const resetDeviceFault = MotionMasterMessage.Request.ResetDeviceFault.create(Object.assign(Object.assign({}, props), { deviceAddress }));
208
+ const id = this.sendRequest({ resetDeviceFault }, messageId);
209
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceFaultReset', requestTimeout, id));
210
+ }));
211
+ }
212
+ resetDeviceFaultAsync(props, requestTimeout, messageId) {
213
+ var _a;
214
+ return __awaiter(this, void 0, void 0, function* () {
215
+ const status = yield lastValueFrom(this.resetDeviceFault(props, requestTimeout, messageId));
216
+ if (status.request === 'succeeded') {
217
+ return;
218
+ }
219
+ throw new Error(`Failed to reset device fault. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.message} ${JSON.stringify(props)}`);
220
+ });
221
+ }
222
+ stopDevice(props, requestTimeout, messageId) {
223
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
224
+ const stopDevice = MotionMasterMessage.Request.StopDevice.create(Object.assign(Object.assign({}, props), { deviceAddress }));
225
+ const id = this.sendRequest({ stopDevice }, messageId);
226
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceStop', requestTimeout, id));
227
+ }));
228
+ }
229
+ stopDeviceAsync(props, requestTimeout, messageId) {
230
+ var _a;
231
+ return __awaiter(this, void 0, void 0, function* () {
232
+ const status = yield lastValueFrom(this.stopDevice(props, requestTimeout, messageId));
233
+ if (status.request === 'succeeded') {
234
+ return;
235
+ }
236
+ throw new Error(`Failed to stop device. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.message} ${JSON.stringify(props)}`);
237
+ });
238
+ }
239
+ startDeviceFirmwareInstallation(props, requestTimeout, messageId) {
240
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
241
+ const startDeviceFirmwareInstallation = MotionMasterMessage.Request.StartDeviceFirmwareInstallation.create(Object.assign(Object.assign({}, props), { deviceAddress }));
242
+ const id = this.sendRequest({ startDeviceFirmwareInstallation }, messageId);
243
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceFirmwareInstallation', requestTimeout, id));
244
+ }));
245
+ }
246
+ startDeviceFirmwareInstallationAsync(props, requestTimeout, messageId) {
247
+ var _a, _b;
248
+ return __awaiter(this, void 0, void 0, function* () {
249
+ const status = yield lastValueFrom(this.startDeviceFirmwareInstallation(props, requestTimeout, messageId));
250
+ if (status.request === 'succeeded') {
251
+ return;
252
+ }
253
+ throw new Error(`Failed to start device firmware installation. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
254
+ });
255
+ }
256
+ getDeviceLog(props, requestTimeout, messageId) {
257
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
258
+ const getDeviceLog = MotionMasterMessage.Request.GetDeviceLog.create(Object.assign(Object.assign({}, props), { deviceAddress }));
259
+ const id = this.sendRequest({ getDeviceLog }, messageId);
260
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceLog', requestTimeout, id));
261
+ }));
262
+ }
263
+ getDeviceLogAsync(props, requestTimeout, messageId) {
264
+ var _a, _b;
265
+ return __awaiter(this, void 0, void 0, function* () {
266
+ const status = yield lastValueFrom(this.getDeviceLog(props, requestTimeout, messageId));
267
+ if (status.request === 'succeeded') {
268
+ return status.content;
269
+ }
270
+ throw new Error(`Failed to get device log. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
271
+ });
272
+ }
273
+ startCoggingTorqueRecording(props, requestTimeout, messageId) {
274
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
275
+ const startCoggingTorqueRecording = MotionMasterMessage.Request.StartCoggingTorqueRecording.create(Object.assign(Object.assign({}, props), { deviceAddress }));
276
+ const id = this.sendRequest({ startCoggingTorqueRecording }, messageId);
277
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('coggingTorqueRecording', requestTimeout, id));
278
+ }));
279
+ }
280
+ startCoggingTorqueRecordingAsync(props, requestTimeout, messageId) {
281
+ var _a, _b;
282
+ return __awaiter(this, void 0, void 0, function* () {
283
+ const status = yield lastValueFrom(this.startCoggingTorqueRecording(props, requestTimeout, messageId));
284
+ if (status.request === 'succeeded') {
285
+ return;
286
+ }
287
+ throw new Error(`Failed to start cogging torque recording. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
288
+ });
289
+ }
290
+ getCoggingTorqueData(props, requestTimeout, messageId) {
291
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
292
+ const getCoggingTorqueData = MotionMasterMessage.Request.GetCoggingTorqueData.create(Object.assign(Object.assign({}, props), { deviceAddress }));
293
+ const id = this.sendRequest({ getCoggingTorqueData }, messageId);
294
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('coggingTorqueData', requestTimeout, id));
295
+ }));
296
+ }
297
+ getCoggingTorqueDataAsync(props, requestTimeout, messageId) {
298
+ var _a, _b, _c, _d;
299
+ return __awaiter(this, void 0, void 0, function* () {
300
+ const status = yield lastValueFrom(this.getCoggingTorqueData(props, requestTimeout, messageId));
301
+ if (status.request === 'succeeded') {
302
+ return (_b = (_a = status.table) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : [];
303
+ }
304
+ throw new Error(`Failed to get cogging torque data. ${(_c = status.error) === null || _c === void 0 ? void 0 : _c.code}: ${(_d = status.error) === null || _d === void 0 ? void 0 : _d.message} ${JSON.stringify(props)}`);
305
+ });
306
+ }
307
+ startOffsetDetection(props, requestTimeout, messageId) {
308
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
309
+ const startOffsetDetection = MotionMasterMessage.Request.StartOffsetDetection.create(Object.assign(Object.assign({}, props), { deviceAddress }));
310
+ const id = this.sendRequest({ startOffsetDetection }, messageId);
311
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('offsetDetection', requestTimeout, id));
312
+ }));
313
+ }
314
+ startOffsetDetectionAsync(props, requestTimeout, messageId) {
315
+ var _a, _b;
316
+ return __awaiter(this, void 0, void 0, function* () {
317
+ const status = yield lastValueFrom(this.startOffsetDetection(props, requestTimeout, messageId));
318
+ if (status.request === 'succeeded') {
319
+ return;
320
+ }
321
+ throw new Error(`Failed start offset detection. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
322
+ });
323
+ }
324
+ /**
325
+ * @deprecated
326
+ */
327
+ startPlantIdentification(props, requestTimeout, messageId) {
328
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
329
+ const startPlantIdentification = MotionMasterMessage.Request.StartPlantIdentification.create(Object.assign(Object.assign({}, props), { deviceAddress }));
330
+ const id = this.sendRequest({ startPlantIdentification }, messageId);
331
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('plantIdentification', requestTimeout, id));
332
+ }));
333
+ }
334
+ /**
335
+ * @deprecated
336
+ */
337
+ startPlantIdentificationAsync(props, requestTimeout, messageId) {
338
+ var _a, _b;
339
+ return __awaiter(this, void 0, void 0, function* () {
340
+ const status = yield lastValueFrom(this.startPlantIdentification(props, requestTimeout, messageId));
341
+ if (status.request === 'succeeded') {
342
+ return;
343
+ }
344
+ throw new Error(`Failed start plant identification. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
345
+ });
346
+ }
347
+ computeAutoTuningGains(props, requestTimeout, messageId) {
348
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
349
+ const computeAutoTuningGains = MotionMasterMessage.Request.ComputeAutoTuningGains.create(Object.assign(Object.assign({}, props), { deviceAddress }));
350
+ const id = this.sendRequest({ computeAutoTuningGains }, messageId);
351
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('autoTuning', requestTimeout, id));
352
+ }));
353
+ }
354
+ computeAutoTuningGainsAsync(props, requestTimeout, messageId) {
355
+ var _a, _b;
356
+ return __awaiter(this, void 0, void 0, function* () {
357
+ const status = yield lastValueFrom(this.computeAutoTuningGains(props, requestTimeout, messageId));
358
+ if (status.request === 'succeeded') {
359
+ return;
360
+ }
361
+ throw new Error(`Failed to compute auto tuning gains. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
362
+ });
363
+ }
364
+ setMotionControllerParameters(props, messageId) {
365
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
366
+ const setMotionControllerParameters = MotionMasterMessage.Request.SetMotionControllerParameters.create(Object.assign(Object.assign({}, props), { deviceAddress }));
367
+ this.sendRequest({ setMotionControllerParameters }, messageId);
368
+ return of(undefined);
369
+ }));
370
+ }
371
+ setMotionControllerParametersAsync(props, messageId) {
372
+ return __awaiter(this, void 0, void 0, function* () {
373
+ return yield lastValueFrom(this.setMotionControllerParameters(props, messageId));
374
+ });
375
+ }
376
+ enableMotionController(props, requestTimeout, messageId) {
377
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
378
+ const enableMotionController = MotionMasterMessage.Request.EnableMotionController.create(Object.assign(Object.assign({}, props), { deviceAddress }));
379
+ const id = this.sendRequest({ enableMotionController }, messageId);
380
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('motionController', requestTimeout, id));
381
+ }));
382
+ }
383
+ enableMotionControllerAsync(props, requestTimeout, messageId) {
384
+ var _a, _b;
385
+ return __awaiter(this, void 0, void 0, function* () {
386
+ const status = yield lastValueFrom(this.enableMotionController(props, requestTimeout, messageId));
387
+ if (status.request === 'succeeded') {
388
+ return (({ controllerType, enabled, filter }) => ({ controllerType, enabled, filter }))(status);
389
+ }
390
+ throw new Error(`Failed to enable motion controller. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
391
+ });
392
+ }
393
+ disableMotionController(props, requestTimeout, messageId) {
394
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
395
+ const disableMotionController = MotionMasterMessage.Request.DisableMotionController.create(Object.assign(Object.assign({}, props), { deviceAddress }));
396
+ const id = this.sendRequest({ disableMotionController }, messageId);
397
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('motionController', requestTimeout, id));
398
+ }));
399
+ }
400
+ disableMotionControllerAsync(props, requestTimeout, messageId) {
401
+ var _a, _b;
402
+ return __awaiter(this, void 0, void 0, function* () {
403
+ const status = yield lastValueFrom(this.disableMotionController(props, requestTimeout, messageId));
404
+ if (status.request === 'succeeded') {
405
+ return (({ controllerType, enabled, filter }) => ({ controllerType, enabled, filter }))(status);
406
+ }
407
+ throw new Error(`Failed to disable motion controller. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
408
+ });
409
+ }
410
+ setSignalGeneratorParameters(props, requestTimeout, messageId) {
411
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
412
+ const setSignalGeneratorParameters = MotionMasterMessage.Request.SetSignalGeneratorParameters.create(Object.assign(Object.assign({}, props), { deviceAddress }));
413
+ const id = this.sendRequest({ setSignalGeneratorParameters }, messageId);
414
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('signalGenerator', requestTimeout, id));
415
+ }));
416
+ }
417
+ setSignalGeneratorParametersAsync(props, requestTimeout, messageId) {
418
+ var _a, _b;
419
+ return __awaiter(this, void 0, void 0, function* () {
420
+ const status = yield lastValueFrom(this.setSignalGeneratorParameters(props, requestTimeout, messageId));
421
+ if (status.request === 'succeeded') {
422
+ return;
423
+ }
424
+ throw new Error(`Failed to set signal generator parameters. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
425
+ });
426
+ }
427
+ startSignalGenerator(props, requestTimeout, messageId) {
428
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
429
+ const startSignalGenerator = MotionMasterMessage.Request.StartSignalGenerator.create(Object.assign(Object.assign({}, props), { deviceAddress }));
430
+ const id = this.sendRequest({ startSignalGenerator }, messageId);
431
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('signalGenerator', requestTimeout, id));
432
+ }));
433
+ }
434
+ startSignalGeneratorAsync(props, requestTimeout, messageId) {
435
+ var _a, _b;
436
+ return __awaiter(this, void 0, void 0, function* () {
437
+ const status = yield lastValueFrom(this.startSignalGenerator(props, requestTimeout, messageId));
438
+ if (status.request === 'succeeded') {
439
+ return;
440
+ }
441
+ throw new Error(`Failed to start signal generator. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
442
+ });
443
+ }
444
+ stopSignalGenerator(props, requestTimeout, messageId) {
445
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
446
+ const stopSignalGenerator = MotionMasterMessage.Request.StopSignalGenerator.create(Object.assign(Object.assign({}, props), { deviceAddress }));
447
+ const id = this.sendRequest({ stopSignalGenerator }, messageId);
448
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('signalGenerator', requestTimeout, id));
449
+ }));
450
+ }
451
+ stopSignalGeneratorAsync(props, requestTimeout, messageId) {
452
+ var _a, _b;
453
+ return __awaiter(this, void 0, void 0, function* () {
454
+ const status = yield lastValueFrom(this.stopSignalGenerator(props, requestTimeout, messageId));
455
+ if (status.request === 'succeeded') {
456
+ return;
457
+ }
458
+ throw new Error(`Failed to stop signal generator. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
459
+ });
460
+ }
461
+ startMonitoringDeviceParameterValues(props, requestTimeout, messageId) {
462
+ const startMonitoringDeviceParameterValues = MotionMasterMessage.Request.StartMonitoringDeviceParameterValues.create(props);
463
+ const id = this.sendRequest({ startMonitoringDeviceParameterValues }, messageId);
464
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('monitoringParameterValues', requestTimeout, id));
465
+ }
466
+ startMonitoringDeviceParameterValuesAsync(props, requestTimeout, messageId) {
467
+ var _a, _b;
468
+ return __awaiter(this, void 0, void 0, function* () {
469
+ const status = yield lastValueFrom(this.startMonitoringDeviceParameterValues(props, requestTimeout, messageId));
470
+ if (status.request === 'succeeded') {
471
+ return status.messageId;
472
+ }
473
+ throw new Error(`Failed to start monitoring device parameter values. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
474
+ });
475
+ }
476
+ stopMonitoringDeviceParameterValues(props, messageId) {
477
+ const stopMonitoringDeviceParameterValues = MotionMasterMessage.Request.StopMonitoringDeviceParameterValues.create(props);
478
+ this.sendRequest({ stopMonitoringDeviceParameterValues }, messageId);
479
+ return of(undefined);
480
+ }
481
+ stopMonitoringDeviceParameterValuesAsync(props, messageId) {
482
+ return __awaiter(this, void 0, void 0, function* () {
483
+ return yield lastValueFrom(this.stopMonitoringDeviceParameterValues(props, messageId));
484
+ });
485
+ }
486
+ getEthercatNetworkState(props, requestTimeout, messageId) {
487
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
488
+ const getEthercatNetworkState = MotionMasterMessage.Request.GetEthercatNetworkState.create(Object.assign(Object.assign({}, props), { deviceAddress }));
489
+ const id = this.sendRequest({ getEthercatNetworkState }, messageId);
490
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('ethercatNetworkState', requestTimeout, id));
491
+ }));
492
+ }
493
+ getEthercatNetworkStateAsync(props, requestTimeout, messageId) {
494
+ var _a, _b;
495
+ return __awaiter(this, void 0, void 0, function* () {
496
+ const status = yield lastValueFrom(this.getEthercatNetworkState(props, requestTimeout, messageId));
497
+ if (status.request === 'succeeded') {
498
+ if (typeof status.state === 'number') {
499
+ return status.state;
500
+ }
501
+ }
502
+ throw new Error(`Failed get ethercat network state. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
503
+ });
504
+ }
505
+ setEthercatNetworkState(props, requestTimeout, messageId) {
506
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
507
+ const setEthercatNetworkState = MotionMasterMessage.Request.SetEthercatNetworkState.create(Object.assign(Object.assign({}, props), { deviceAddress }));
508
+ const id = this.sendRequest({ setEthercatNetworkState }, messageId);
509
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('ethercatNetworkState', requestTimeout, id));
510
+ }));
511
+ }
512
+ setEthercatNetworkStateAsync(props, requestTimeout, messageId) {
513
+ var _a, _b;
514
+ return __awaiter(this, void 0, void 0, function* () {
515
+ const status = yield lastValueFrom(this.setEthercatNetworkState(props, requestTimeout, messageId));
516
+ if (status.request === 'succeeded') {
517
+ return;
518
+ }
519
+ throw new Error(`Failed set ethercat network state. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
520
+ });
521
+ }
522
+ /**
523
+ * @deprecated
524
+ */
525
+ startNarrowAngleCalibration(props, requestTimeout, messageId) {
526
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
527
+ const startNarrowAngleCalibration = MotionMasterMessage.Request.StartNarrowAngleCalibration.create(Object.assign(Object.assign({}, props), { deviceAddress }));
528
+ const id = this.sendRequest({ startNarrowAngleCalibration }, messageId);
529
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('narrowAngleCalibration', requestTimeout, id));
530
+ }));
531
+ }
532
+ /**
533
+ * @deprecated
534
+ */
535
+ startNarrowAngleCalibrationAsync(props, requestTimeout, messageId) {
536
+ var _a, _b;
537
+ return __awaiter(this, void 0, void 0, function* () {
538
+ const status = yield lastValueFrom(this.startNarrowAngleCalibration(props, requestTimeout, messageId));
539
+ if (status.request === 'succeeded') {
540
+ return;
541
+ }
542
+ throw new Error(`Failed start narrow angle calibration. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
543
+ });
544
+ }
545
+ setSystemClientTimeout(props, messageId) {
546
+ const setSystemClientTimeout = MotionMasterMessage.Request.SetSystemClientTimeout.create(props);
547
+ this.sendRequest({ setSystemClientTimeout }, messageId);
548
+ return of(undefined);
549
+ }
550
+ setSystemClientTimeoutAsync(props, messageId) {
551
+ return __awaiter(this, void 0, void 0, function* () {
552
+ return yield lastValueFrom(this.setSystemClientTimeout(props, messageId));
553
+ });
554
+ }
555
+ startSystemIdentification(props, requestTimeout, messageId) {
556
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
557
+ const startSystemIdentification = MotionMasterMessage.Request.StartSystemIdentification.create(Object.assign(Object.assign({}, props), { deviceAddress }));
558
+ const id = this.sendRequest({ startSystemIdentification }, messageId);
559
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('systemIdentification', requestTimeout, id));
560
+ }));
561
+ }
562
+ startSystemIdentificationAsync(props, requestTimeout, messageId) {
563
+ var _a, _b;
564
+ return __awaiter(this, void 0, void 0, function* () {
565
+ const status = yield lastValueFrom(this.startSystemIdentification(props, requestTimeout, messageId));
566
+ if (status.request === 'succeeded') {
567
+ return;
568
+ }
569
+ throw new Error(`Failed start system identification. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
570
+ });
571
+ }
572
+ getCirculoEncoderMagnetDistance(props, requestTimeout, messageId) {
573
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
574
+ const getCirculoEncoderMagnetDistance = MotionMasterMessage.Request.GetCirculoEncoderMagnetDistance.create(Object.assign(Object.assign({}, props), { deviceAddress }));
575
+ const id = this.sendRequest({ getCirculoEncoderMagnetDistance }, messageId);
576
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('circuloEncoderMagnetDistance', requestTimeout, id));
577
+ }));
578
+ }
579
+ getCirculoEncoderMagnetDistanceAsync(props, requestTimeout, messageId) {
580
+ return __awaiter(this, void 0, void 0, function* () {
581
+ const status = yield lastValueFrom(this.getCirculoEncoderMagnetDistance(props, requestTimeout, messageId));
582
+ if (status.request === 'succeeded') {
583
+ return (({ distance, encoderOrdinal, position }) => ({ distance, encoderOrdinal, position }))(status);
584
+ }
585
+ throw new Error(`Failed to get circulo encoder magnet distance. ${JSON.stringify(props)}`);
586
+ });
587
+ }
588
+ startCirculoEncoderNarrowAngleCalibrationProcedure(props, requestTimeout, messageId) {
589
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
590
+ const startCirculoEncoderNarrowAngleCalibrationProcedure = MotionMasterMessage.Request.StartCirculoEncoderNarrowAngleCalibrationProcedure.create(Object.assign(Object.assign({}, props), { deviceAddress }));
591
+ const id = this.sendRequest({ startCirculoEncoderNarrowAngleCalibrationProcedure }, messageId);
592
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('circuloEncoderNarrowAngleCalibrationProcedure', requestTimeout, id));
593
+ }));
594
+ }
595
+ startCirculoEncoderNarrowAngleCalibrationProcedureAsync(props, requestTimeout, messageId) {
596
+ var _a, _b;
597
+ return __awaiter(this, void 0, void 0, function* () {
598
+ const status = yield lastValueFrom(this.startCirculoEncoderNarrowAngleCalibrationProcedure(props, requestTimeout, messageId));
599
+ if (status.request === 'succeeded') {
600
+ return;
601
+ }
602
+ throw new Error(`Failed start circulo encoder narrow angle calibration procedure. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
603
+ });
604
+ }
605
+ getDeviceCia402State(props, requestTimeout, messageId) {
606
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
607
+ const getDeviceCia402State = MotionMasterMessage.Request.GetDeviceCiA402State.create(Object.assign(Object.assign({}, props), { deviceAddress }));
608
+ const id = this.sendRequest({ getDeviceCia402State }, messageId);
609
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceCia402State', requestTimeout, id));
610
+ }));
611
+ }
612
+ getDeviceCia402StateAsync(props, requestTimeout, messageId) {
613
+ var _a, _b;
614
+ return __awaiter(this, void 0, void 0, function* () {
615
+ const status = yield lastValueFrom(this.getDeviceCia402State(props, requestTimeout, messageId));
616
+ if (status.request === 'succeeded') {
617
+ if (status.state) {
618
+ return status.state;
619
+ }
620
+ }
621
+ throw new Error(`Failed to get device cia 402 state. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
622
+ });
623
+ }
624
+ setDeviceCia402State(props, requestTimeout, messageId) {
625
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
626
+ const setDeviceCia402State = MotionMasterMessage.Request.SetDeviceCiA402State.create(Object.assign(Object.assign({}, props), { deviceAddress }));
627
+ const id = this.sendRequest({ setDeviceCia402State }, messageId);
628
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceCia402State', requestTimeout, id));
629
+ }));
630
+ }
631
+ setDeviceCia402StateAsync(props, requestTimeout, messageId) {
632
+ var _a, _b;
633
+ return __awaiter(this, void 0, void 0, function* () {
634
+ const status = yield lastValueFrom(this.setDeviceCia402State(props, requestTimeout, messageId));
635
+ if (status.request === 'succeeded') {
636
+ return;
637
+ }
638
+ throw new Error(`Failed to set device cia 402 state. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
639
+ });
640
+ }
641
+ getSystemLog(requestTimeout, messageId) {
642
+ const getSystemLog = MotionMasterMessage.Request.GetSystemVersion.create();
643
+ const id = this.sendRequest({ getSystemLog }, messageId);
644
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('systemLog', requestTimeout, id));
645
+ }
646
+ getSystemLogAsync(requestTimeout) {
647
+ return __awaiter(this, void 0, void 0, function* () {
648
+ const status = yield lastValueFrom(this.getSystemLog(requestTimeout));
649
+ if (status.request === 'succeeded') {
650
+ return (({ content, runEnv }) => ({ content, runEnv }))(status);
651
+ }
652
+ throw new Error(`Failed to get system log.`);
653
+ });
654
+ }
655
+ startDeviceSiiRestore(props, requestTimeout, messageId) {
656
+ const startDeviceSiiRestore = MotionMasterMessage.Request.StartDeviceSiiRestore.create(props);
657
+ const id = this.sendRequest({ startDeviceSiiRestore }, messageId);
658
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('deviceSiiRestore', requestTimeout, id));
659
+ }
660
+ startDeviceSiiRestoreAsync(props, requestTimeout, messageId) {
661
+ var _a, _b;
662
+ return __awaiter(this, void 0, void 0, function* () {
663
+ const status = yield lastValueFrom(this.startDeviceSiiRestore(props, requestTimeout, messageId));
664
+ if (status.request === 'succeeded') {
665
+ return;
666
+ }
667
+ throw new Error(`Failed to start device sii restore. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
668
+ });
669
+ }
670
+ startOpenLoopFieldControl(props, requestTimeout, messageId) {
671
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
672
+ const startOpenLoopFieldControl = MotionMasterMessage.Request.StartOpenLoopFieldControl.create(Object.assign(Object.assign({}, props), { deviceAddress }));
673
+ const id = this.sendRequest({ startOpenLoopFieldControl }, messageId);
674
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('openLoopFieldControl', requestTimeout, id));
675
+ }));
676
+ }
677
+ startOpenLoopFieldControlAsync(props, requestTimeout, messageId) {
678
+ var _a, _b;
679
+ return __awaiter(this, void 0, void 0, function* () {
680
+ const status = yield lastValueFrom(this.startOpenLoopFieldControl(props, requestTimeout, messageId));
681
+ if (status.request === 'succeeded') {
682
+ return;
683
+ }
684
+ throw new Error(`Failed to start open loop field control. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
685
+ });
686
+ }
687
+ /**
688
+ * @deprecated
689
+ */
690
+ computeFullAutoTuningGains(props, requestTimeout, messageId) {
691
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
692
+ const computeFullAutoTuningGains = MotionMasterMessage.Request.ComputeFullAutoTuningGains.create(Object.assign(Object.assign({}, props), { deviceAddress }));
693
+ const id = this.sendRequest({ computeFullAutoTuningGains }, messageId);
694
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('fullAutoTuning', requestTimeout, id));
695
+ }));
696
+ }
697
+ /**
698
+ * @deprecated
699
+ */
700
+ computeFullAutoTuningGainsAsync(props, requestTimeout, messageId) {
701
+ var _a, _b;
702
+ return __awaiter(this, void 0, void 0, function* () {
703
+ const status = yield lastValueFrom(this.computeFullAutoTuningGains(props, requestTimeout, messageId));
704
+ if (status.request === 'succeeded') {
705
+ return;
706
+ }
707
+ throw new Error(`Failed to compute full auto tuning gains. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
708
+ });
709
+ }
710
+ startFullAutoTuning(props, requestTimeout, messageId) {
711
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
712
+ const startFullAutoTuning = MotionMasterMessage.Request.StartFullAutoTuning.create(Object.assign(Object.assign({}, props), { deviceAddress }));
713
+ const id = this.sendRequest({ startFullAutoTuning }, messageId);
714
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('fullAutoTuning', requestTimeout, id));
715
+ }));
716
+ }
717
+ startFullAutoTuningAsync(props, requestTimeout, messageId) {
718
+ var _a, _b;
719
+ return __awaiter(this, void 0, void 0, function* () {
720
+ const status = yield lastValueFrom(this.startFullAutoTuning(props, requestTimeout, messageId));
721
+ if (status.request === 'succeeded') {
722
+ if (status.settlingTimeOrBandwidth === 'bandwidth') {
723
+ return (({ bandwidth, dampingRatio }) => ({ bandwidth, dampingRatio }))(status);
724
+ }
725
+ else if (status.settlingTimeOrBandwidth === 'settlingTime') {
726
+ return (({ settlingTime, dampingRatio }) => ({ dampingRatio, settlingTime }))(status);
727
+ }
728
+ }
729
+ throw new Error(`Failed to start full auto tuning. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
730
+ });
731
+ }
732
+ stopFullAutoTuning(props, requestTimeout, messageId) {
733
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
734
+ const stopFullAutoTuning = MotionMasterMessage.Request.StopFullAutoTuning.create(Object.assign(Object.assign({}, props), { deviceAddress }));
735
+ const id = this.sendRequest({ stopFullAutoTuning }, messageId);
736
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('fullAutoTuning', requestTimeout, id), map((status) => {
737
+ var _a, _b;
738
+ if (((_a = status.success) === null || _a === void 0 ? void 0 : _a.code) === MotionMasterMessage.Status.FullAutoTuning.Success.Code.POSITION_STOPPED ||
739
+ ((_b = status.success) === null || _b === void 0 ? void 0 : _b.code) === MotionMasterMessage.Status.FullAutoTuning.Success.Code.VELOCITY_STOPPED) {
740
+ // Full auto tuning status is shared between start and stop.
741
+ // When full auto tuning has stopped this request is considered successful.
742
+ status.request = 'succeeded';
743
+ }
744
+ return status;
745
+ }));
746
+ }));
747
+ }
748
+ stopFullAutoTuningAsync(props, requestTimeout, messageId) {
749
+ var _a, _b;
750
+ return __awaiter(this, void 0, void 0, function* () {
751
+ const status = yield lastValueFrom(this.stopFullAutoTuning(props, requestTimeout, messageId));
752
+ if (status.request === 'succeeded') {
753
+ return;
754
+ }
755
+ throw new Error(`Failed to stop full auto tuning. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
756
+ });
757
+ }
758
+ startCirculoEncoderConfiguration(props, requestTimeout, messageId) {
759
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
760
+ const startCirculoEncoderConfiguration = MotionMasterMessage.Request.StartCirculoEncoderConfiguration.create(Object.assign(Object.assign({}, props), { deviceAddress }));
761
+ const id = this.sendRequest({ startCirculoEncoderConfiguration }, messageId);
762
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('circuloEncoderConfiguration', requestTimeout, id));
763
+ }));
764
+ }
765
+ startCirculoEncoderConfigurationAsync(props, requestTimeout, messageId) {
766
+ var _a, _b;
767
+ return __awaiter(this, void 0, void 0, function* () {
768
+ const status = yield lastValueFrom(this.startCirculoEncoderConfiguration(props, requestTimeout, messageId));
769
+ if (status.request === 'succeeded') {
770
+ return;
771
+ }
772
+ throw new Error(`Failed to start circulo encoder configuration. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
773
+ });
774
+ }
775
+ stopCirculoEncoderNarrowAngleCalibrationProcedure(props, requestTimeout, messageId) {
776
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
777
+ const stopCirculoEncoderNarrowAngleCalibrationProcedure = MotionMasterMessage.Request.StopCirculoEncoderNarrowAngleCalibrationProcedure.create(Object.assign(Object.assign({}, props), { deviceAddress }));
778
+ const id = this.sendRequest({ stopCirculoEncoderNarrowAngleCalibrationProcedure }, messageId);
779
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('circuloEncoderNarrowAngleCalibrationProcedure', requestTimeout, id));
780
+ }));
781
+ }
782
+ stopCirculoEncoderNarrowAngleCalibrationProcedureAsync(props, requestTimeout, messageId) {
783
+ var _a, _b;
784
+ return __awaiter(this, void 0, void 0, function* () {
785
+ const status = yield lastValueFrom(this.stopCirculoEncoderNarrowAngleCalibrationProcedure(props, requestTimeout, messageId));
786
+ if (status.request === 'succeeded') {
787
+ return;
788
+ }
789
+ throw new Error(`Failed to stop circulo encoder narrow angle calibration procedure. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
790
+ });
791
+ }
792
+ startOsCommand(props, requestTimeout, messageId) {
793
+ return from(this.resolveDeviceAddress(props)).pipe(mergeMap((deviceAddress) => {
794
+ const startOsCommand = MotionMasterMessage.Request.StartOsCommand.create(Object.assign(Object.assign({}, props), { deviceAddress }));
795
+ const id = this.sendRequest({ startOsCommand }, messageId);
796
+ return this.socket.message$.pipe(transformMotionMasterMessageToStatus('osCommand', requestTimeout, id));
797
+ }));
798
+ }
799
+ startOsCommandAsync(props, requestTimeout, messageId) {
800
+ var _a, _b;
801
+ return __awaiter(this, void 0, void 0, function* () {
802
+ const status = yield lastValueFrom(this.startOsCommand(props, requestTimeout, messageId));
803
+ if (status.request === 'succeeded') {
804
+ return status.response;
805
+ }
806
+ throw new Error(`Failed to start os command. ${(_a = status.error) === null || _a === void 0 ? void 0 : _a.code}: ${(_b = status.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
807
+ });
808
+ }
809
+ sendRequest(request, messageId) {
810
+ const id = messageId !== null && messageId !== void 0 ? messageId : v4();
811
+ const message = MotionMasterMessage.create({ request, id });
812
+ this.socket.send(message);
813
+ return id;
814
+ }
815
+ //
816
+ // Helpers
817
+ //
818
+ resolveDeviceAddress(deviceRef) {
819
+ return __awaiter(this, void 0, void 0, function* () {
820
+ if (deviceRef.deviceAddress) {
821
+ return deviceRef.deviceAddress;
822
+ }
823
+ if (this.deviceSerialNumberToDeviceAddressMap.size === 0) {
824
+ const devices = yield this.getDeviceInfoAsync(2000);
825
+ for (const device of devices) {
826
+ if (device.deviceAddress) {
827
+ const hardwareDescripition = yield this.getDeviceHardwareDescription(device.deviceAddress);
828
+ const serialNumber = getSerialNumberFromHardwareDescription(hardwareDescripition);
829
+ this.deviceSerialNumberToDeviceAddressMap.set(serialNumber, device.deviceAddress);
830
+ }
831
+ }
832
+ }
833
+ if (deviceRef.deviceSerialNumber) {
834
+ const deviceAddress = this.deviceSerialNumberToDeviceAddressMap.get(deviceRef.deviceSerialNumber);
835
+ if (deviceAddress) {
836
+ return deviceAddress;
837
+ }
838
+ throw new Error(`No device found by device serial number when resolving device address: ${deviceRef.deviceSerialNumber}`);
839
+ }
840
+ if (deviceRef.devicePosition) {
841
+ const entries = this.deviceSerialNumberToDeviceAddressMap.entries();
842
+ for (const [value, index] of entries) {
843
+ if (deviceRef.devicePosition === index) {
844
+ const deviceAddress = this.deviceSerialNumberToDeviceAddressMap.get(value);
845
+ if (deviceAddress) {
846
+ return deviceAddress;
847
+ }
848
+ }
849
+ }
850
+ throw new Error(`No device found by device position when resolving device address: ${deviceRef.devicePosition}`);
851
+ }
852
+ throw new Error(`Unable to resolve device address. One of device address, serial number, or position must be specified.`);
853
+ });
854
+ }
855
+ getDeviceAddresses(requestTimeout = 2000) {
856
+ return __awaiter(this, void 0, void 0, function* () {
857
+ const deviceInfo = yield this.getDeviceInfoAsync(requestTimeout);
858
+ if (deviceInfo) {
859
+ return deviceInfo.reduce((acc, val) => {
860
+ if (typeof val.deviceAddress === 'number') {
861
+ acc.push(val.deviceAddress);
862
+ }
863
+ return acc;
864
+ }, []);
865
+ }
866
+ return [];
867
+ });
868
+ }
869
+ getDeviceHardwareDescription(deviceAddress, requestTimeout = 2000) {
870
+ return __awaiter(this, void 0, void 0, function* () {
871
+ const content = yield this.getDecodedDeviceFile({ deviceAddress, name: '.hardware_description' }, requestTimeout);
872
+ return JSON.parse(content);
873
+ });
874
+ }
875
+ getSystemLogLines(requestTimeout = 2000) {
876
+ return __awaiter(this, void 0, void 0, function* () {
877
+ const systemLog = yield this.getSystemLogAsync(requestTimeout);
878
+ return parseSystemLogContent(systemLog.content);
879
+ });
880
+ }
881
+ getAllParameters(props, requestTimeout) {
882
+ const { deviceAddress, loadFromCache, sendProgress } = props;
883
+ return this.getDeviceParameterInfo({ deviceAddress }, requestTimeout).pipe(mergeMap(deviceParameterInfoStatus => {
884
+ const parameters = deviceParameterInfoStatus.parameters.map(p => { var _a, _b; return ({ index: (_a = p.index) !== null && _a !== void 0 ? _a : 0, subindex: (_b = p.subindex) !== null && _b !== void 0 ? _b : 0, loadFromCache }); });
885
+ return this.getDeviceParameterValues({ deviceAddress, parameters, sendProgress }, requestTimeout).pipe(map(deviceParameterValuesStatus => {
886
+ const parameters = deviceParameterValuesStatus.parameterValues.map((value, i) => {
887
+ var _a, _b;
888
+ const index = (_a = value.index) !== null && _a !== void 0 ? _a : 0;
889
+ const subindex = (_b = value.subindex) !== null && _b !== void 0 ? _b : 0;
890
+ return (Object.assign(Object.assign(Object.assign({}, value), deviceParameterInfoStatus.parameters[i]), { index, subindex, value: getParameterValue(value) }));
891
+ });
892
+ return parameters;
893
+ }));
894
+ }));
895
+ }
896
+ getAllParametersAsync(props, requestTimeout) {
897
+ return __awaiter(this, void 0, void 0, function* () {
898
+ return yield lastValueFrom(this.getAllParameters(props, requestTimeout));
899
+ });
900
+ }
901
+ getParameterValue(deviceAddress, index, subindex, loadFromCache = false, requestTimeout = 1000) {
902
+ var _a, _b, _c, _d;
903
+ return __awaiter(this, void 0, void 0, function* () {
904
+ const status = yield lastValueFrom(this.getDeviceParameterValues({ deviceAddress, parameters: [{ index, subindex, loadFromCache }] }, requestTimeout));
905
+ const parameterValue = status.parameterValues[0];
906
+ if (parameterValue.success) {
907
+ const typeValue = parameterValue.typeValue;
908
+ if (typeValue) {
909
+ return status.parameterValues[0][typeValue];
910
+ }
911
+ }
912
+ const props = { deviceAddress, index, subindex, loadFromCache };
913
+ throw new Error(`Failed to get parameter value. ${(_b = (_a = status.parameterValues[0]) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.code}: ${(_d = (_c = status.parameterValues[0]) === null || _c === void 0 ? void 0 : _c.error) === null || _d === void 0 ? void 0 : _d.message} ${JSON.stringify(props)}`);
914
+ });
915
+ }
916
+ setParameterValue(deviceAddress, index, subindex, value, valueTypeKey, requestTimeout = 1000) {
917
+ var _a, _b;
918
+ return __awaiter(this, void 0, void 0, function* () {
919
+ const props = { deviceAddress, index, subindex, value, valueTypeKey };
920
+ if (!valueTypeKey) {
921
+ const parameterAddress = getParameterAddress(index, subindex);
922
+ valueTypeKey = this.parameterAddressToParameterTypeValueKeyMap.get(parameterAddress);
923
+ if (!valueTypeKey) {
924
+ throw new Error(`Failed to set device parameter value. Value type key is not set. ${JSON.stringify(props)}`);
925
+ }
926
+ }
927
+ const parameterValue = { index, subindex, [valueTypeKey]: value };
928
+ const status = yield lastValueFrom(this.setDeviceParameterValues({ deviceAddress, parameterValues: [parameterValue] }, requestTimeout));
929
+ if (status.request === 'succeeded') {
930
+ return;
931
+ }
932
+ throw new Error(`Failed to set device parameter value. ${(_b = (_a = status.parameterValues[0]) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
933
+ });
934
+ }
935
+ setParameterValues(deviceAddress, values, requestTimeout = 1000) {
936
+ var _a, _b;
937
+ return __awaiter(this, void 0, void 0, function* () {
938
+ const props = { deviceAddress, parameters: values };
939
+ const parameterValues = values.map(([index, subindex, value, valueTypeKey]) => {
940
+ if (!valueTypeKey) {
941
+ const parameterAddress = getParameterAddress(index, subindex);
942
+ valueTypeKey = this.parameterAddressToParameterTypeValueKeyMap.get(parameterAddress);
943
+ if (!valueTypeKey) {
944
+ throw new Error(`Failed to set device parameter values. Value type key is not set. ${JSON.stringify(props)}`);
945
+ }
946
+ }
947
+ return { index, subindex, [valueTypeKey]: value };
948
+ });
949
+ const status = yield lastValueFrom(this.setDeviceParameterValues({ deviceAddress, parameterValues }, requestTimeout));
950
+ if (status.request === 'succeeded') {
951
+ return;
952
+ }
953
+ throw new Error(`Failed to set device parameter values. ${(_b = (_a = status.parameterValues[0]) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.message} ${JSON.stringify(props)}`);
954
+ });
955
+ }
956
+ getDecodedDeviceFile(props, requestTimeout, messageId) {
957
+ return __awaiter(this, void 0, void 0, function* () {
958
+ const content = yield this.getDeviceFileAsync(props, requestTimeout, messageId);
959
+ return decodeTextContent(content);
960
+ });
961
+ }
962
+ getDeviceFiles(deviceAddress, requestTimeout = 30000) {
963
+ return __awaiter(this, void 0, void 0, function* () {
964
+ return this.getDeviceFileListAsync({ deviceAddress }, requestTimeout);
965
+ });
966
+ }
967
+ getDeviceParameterInfoAndValues(props, requestTimeout) {
968
+ const { deviceAddress, loadFromCache, sendProgress } = props;
969
+ return this.getDeviceParameterInfo({ deviceAddress }, requestTimeout).pipe(mergeMap(deviceParameterInfo => {
970
+ const parameters = deviceParameterInfo.parameters.map(p => { var _a, _b; return ({ index: (_a = p.index) !== null && _a !== void 0 ? _a : 0, subindex: (_b = p.subindex) !== null && _b !== void 0 ? _b : 0, loadFromCache }); });
971
+ return this.getDeviceParameterValues({ deviceAddress, parameters, sendProgress }, requestTimeout).pipe(map(deviceParameterValues => {
972
+ const parameters = deviceParameterValues.parameterValues
973
+ .map((value, index) => (Object.assign(Object.assign({}, value), deviceParameterInfo.parameters[index])));
974
+ deviceParameterValues.parameterValues = parameters;
975
+ return deviceParameterValues;
976
+ }));
977
+ }));
978
+ }
979
+ getDeviceParameterInfoAndValuesAsync(props, requestTimeout) {
980
+ return __awaiter(this, void 0, void 0, function* () {
981
+ const status = yield lastValueFrom(this.getDeviceParameterInfoAndValues(props, requestTimeout));
982
+ if (status.request === 'succeeded') {
983
+ return status.parameterValues;
984
+ }
985
+ throw new Error(`Failed to get device parameter info and values. ${JSON.stringify(props)}`);
986
+ });
987
+ }
988
+ saveAllParameters(props, requestTimeout) {
989
+ const { deviceAddress } = props;
990
+ const parameter = { index: 0x1010, subindex: 1, uintValue: 0x65766173 }; // "evas"
991
+ const parameterAddress = getParameterAddress(parameter);
992
+ const result$ = defer(() => this.checkDeviceParameterValue({ deviceAddress, parameter, expectedValue: 1 }, requestTimeout)).pipe(retryWithDelay(500, 10));
993
+ return this.setDeviceParameterValues({ deviceAddress, parameterValues: [parameter] }, requestTimeout).pipe(delay(2000), // give some initial time for operation to complete
994
+ mergeMap(({ parameterValues }) => {
995
+ const parameter = parameterValues[0];
996
+ if (parameter) {
997
+ if (parameter.error) {
998
+ throw new Error(`Failed to set ${parameterAddress} value to ${parameter.uintValue}`);
999
+ }
1000
+ }
1001
+ else {
1002
+ throw new Error(`No parameters in status for ${parameterAddress}`);
1003
+ }
1004
+ return result$;
1005
+ }));
1006
+ }
1007
+ restoreAllDefaultParameters(props, requestTimeout) {
1008
+ const { deviceAddress } = props;
1009
+ const parameter = { index: 0x1011, subindex: 1, uintValue: 0x64616f6c }; // "daol"
1010
+ const parameterAddress = getParameterAddress(parameter);
1011
+ const result$ = defer(() => this.checkDeviceParameterValue({ deviceAddress, parameter, expectedValue: 1 }, requestTimeout)).pipe(retryWithDelay(500, 10));
1012
+ return this.setDeviceParameterValues({ deviceAddress, parameterValues: [parameter] }, requestTimeout).pipe(delay(500), // give some initial time for operation to complete
1013
+ mergeMap(({ parameterValues }) => {
1014
+ const parameter = parameterValues[0];
1015
+ if (parameter) {
1016
+ if (parameter.error) {
1017
+ throw new Error(`Failed to set ${parameterAddress} value to ${parameter.uintValue}`);
1018
+ }
1019
+ }
1020
+ else {
1021
+ throw new Error(`No parameters in status for ${parameterAddress}`);
1022
+ }
1023
+ return result$;
1024
+ }));
1025
+ }
1026
+ checkDeviceParameterValue(props, requestTimeout, messageId) {
1027
+ const { deviceAddress, expectedValue } = props;
1028
+ const parameterAddress = getParameterAddress(props.parameter);
1029
+ return this.getDeviceParameterValues({ deviceAddress, parameters: [props.parameter] }, requestTimeout, messageId).pipe(map(({ parameterValues }) => {
1030
+ const parameter = parameterValues[0];
1031
+ if (parameter) {
1032
+ const parameterValue = getParameterValue(parameter);
1033
+ if (parameter.error) {
1034
+ throw new Error(`Failed to get ${parameterAddress}`);
1035
+ }
1036
+ else if (parameterValue !== expectedValue) {
1037
+ throw new Error(`Value of ${parameterAddress} didn't change to ${expectedValue}`);
1038
+ }
1039
+ }
1040
+ else {
1041
+ throw new Error(`No parameters in status for ${parameterAddress}`);
1042
+ }
1043
+ }));
1044
+ }
1045
+ getDeviceApiIdentifier(deviceAddress, requestTimeout = 2000) {
1046
+ return __awaiter(this, void 0, void 0, function* () {
1047
+ const hardwareDescription = yield this.getDeviceHardwareDescription(deviceAddress, requestTimeout);
1048
+ return getApiIdentifierFromHardwareDescription(hardwareDescription);
1049
+ });
1050
+ }
1051
+ enableMotion(deviceAddress, controllerType, filter = false, requestTimeout = 2000) {
1052
+ return __awaiter(this, void 0, void 0, function* () {
1053
+ return yield this.enableMotionControllerAsync({ deviceAddress, controllerType, filter }, requestTimeout);
1054
+ });
1055
+ }
1056
+ setMotionTarget(deviceAddress, target) {
1057
+ return __awaiter(this, void 0, void 0, function* () {
1058
+ return yield this.setMotionControllerParametersAsync({ deviceAddress, target });
1059
+ });
1060
+ }
1061
+ disableMotion(deviceAddress, requestTimeout = 3000) {
1062
+ return __awaiter(this, void 0, void 0, function* () {
1063
+ return yield this.disableMotionControllerAsync({ deviceAddress }, requestTimeout);
1064
+ });
1065
+ }
1066
+ }
1067
+ //# sourceMappingURL=motion-master-req-res-client.js.map