buttplug 3.2.0 → 3.2.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.
@@ -6,4 +6,5 @@
6
6
  * @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
7
7
  */
8
8
  import * as Messages from './Messages';
9
+ export declare function getMessageClassFromMessage(msg: Messages.ButtplugMessage): (new (...args: unknown[]) => Messages.ButtplugMessage) | null;
9
10
  export declare function fromJSON(str: any): Messages.ButtplugMessage[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "buttplug",
3
- "version": "3.2.0",
3
+ "version": "3.2.1",
4
4
  "description": "Buttplug Client Implementation for Typescript/Javascript",
5
5
  "homepage": "https://github.com/buttplugio/buttplug-js/",
6
6
  "repository": {
@@ -14,6 +14,7 @@ import {
14
14
  ButtplugMessageError,
15
15
  } from '../core/Exceptions';
16
16
  import { EventEmitter } from 'eventemitter3';
17
+ import { getMessageClassFromMessage } from '../core/MessageUtils';
17
18
 
18
19
  /**
19
20
  * Represents an abstract device, capable of taking certain kinds of messages.
@@ -98,7 +99,7 @@ export class ButtplugClientDevice extends EventEmitter {
98
99
  msg: Messages.ButtplugDeviceMessage
99
100
  ): Promise<void> {
100
101
  const response = await this.send(msg);
101
- switch (response.constructor) {
102
+ switch (getMessageClassFromMessage(response)) {
102
103
  case Messages.Ok:
103
104
  return;
104
105
  case Messages.Error:
@@ -245,7 +246,7 @@ export class ButtplugClientDevice extends EventEmitter {
245
246
  const response = await this.send(
246
247
  new Messages.SensorReadCmd(this.index, sensorIndex, sensorType)
247
248
  );
248
- switch (response.constructor) {
249
+ switch (getMessageClassFromMessage(response)) {
249
250
  case Messages.SensorReading:
250
251
  return (response as Messages.SensorReading).Data;
251
252
  case Messages.Error:
@@ -323,7 +324,7 @@ export class ButtplugClientDevice extends EventEmitter {
323
324
  const response = await this.send(
324
325
  new Messages.RawReadCmd(this.index, endpoint, expectedLength, timeout)
325
326
  );
326
- switch (response.constructor) {
327
+ switch (getMessageClassFromMessage(response)) {
327
328
  case Messages.RawReading:
328
329
  return new Uint8Array((response as Messages.RawReading).Data);
329
330
  case Messages.Error:
@@ -22,6 +22,7 @@ import {
22
22
  ButtplugMessageError,
23
23
  } from '../core/Exceptions';
24
24
  import { ButtplugClientConnectorException } from './ButtplugClientConnectorException';
25
+ import { getMessageClassFromMessage } from '../core/MessageUtils';
25
26
 
26
27
  export class ButtplugClient extends EventEmitter {
27
28
  protected _pingTimer: NodeJS.Timeout | null = null;
@@ -117,7 +118,7 @@ export class ButtplugClient extends EventEmitter {
117
118
  protected parseMessages = (msgs: Messages.ButtplugMessage[]) => {
118
119
  const leftoverMsgs = this._sorter.ParseIncomingMessages(msgs);
119
120
  for (const x of leftoverMsgs) {
120
- switch (x.constructor) {
121
+ switch (getMessageClassFromMessage(x)) {
121
122
  case Messages.DeviceAdded: {
122
123
  const addedMsg = x as Messages.DeviceAdded;
123
124
  const addedDevice = ButtplugClientDevice.fromMsg(
@@ -154,7 +155,7 @@ export class ButtplugClient extends EventEmitter {
154
155
  Messages.MESSAGE_SPEC_VERSION
155
156
  )
156
157
  );
157
- switch (msg.constructor) {
158
+ switch (getMessageClassFromMessage(msg)) {
158
159
  case Messages.ServerInfo: {
159
160
  const serverinfo = msg as Messages.ServerInfo;
160
161
  this._logger.Info(
@@ -252,7 +253,7 @@ export class ButtplugClient extends EventEmitter {
252
253
  msg: Messages.ButtplugMessage
253
254
  ): Promise<void> => {
254
255
  const response = await this.sendMessage(msg);
255
- switch (response.constructor) {
256
+ switch (getMessageClassFromMessage(response)) {
256
257
  case Messages.Ok:
257
258
  return;
258
259
  case Messages.Error:
@@ -261,7 +262,7 @@ export class ButtplugClient extends EventEmitter {
261
262
  throw ButtplugError.LogAndError(
262
263
  ButtplugMessageError,
263
264
  this._logger,
264
- `Message type ${response.constructor} not handled by SendMsgExpectOk`
265
+ `Message type ${getMessageClassFromMessage(response)!.constructor} not handled by SendMsgExpectOk`
265
266
  );
266
267
  }
267
268
  };
@@ -21,6 +21,14 @@ function getMessageClass(
21
21
  return null;
22
22
  }
23
23
 
24
+ export function getMessageClassFromMessage(
25
+ msg: Messages.ButtplugMessage
26
+ ): (new (...args: unknown[]) => Messages.ButtplugMessage) | null {
27
+ // Making the bold assumption all message classes have the Name static. Should define a
28
+ // requirement for this in the abstract class.
29
+ return getMessageClass(Object.getPrototypeOf(msg).constructor.Name);
30
+ }
31
+
24
32
  export function fromJSON(str): Messages.ButtplugMessage[] {
25
33
  const msgarray: object[] = JSON.parse(str);
26
34
  const msgs: Messages.ButtplugMessage[] = [];
@@ -1,6 +0,0 @@
1
- var inputfile = './dependencies/buttplug-device-config/buttplug-device-config.yml',
2
- outputfile = './dependencies/buttplug-device-config/buttplug-device-config.json',
3
- yaml = require('js-yaml'),
4
- fs = require('fs'),
5
- obj = yaml.load(fs.readFileSync(inputfile, {encoding: 'utf-8'}));
6
- fs.writeFileSync(outputfile, JSON.stringify(obj, null, 2));