buttplug 3.2.2 → 4.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 (179) hide show
  1. package/.eslintrc.js +25 -25
  2. package/.jscsrc +2 -2
  3. package/.jshintrc +5 -5
  4. package/.prettierrc.json +3 -3
  5. package/.yarnrc.yml +5 -5
  6. package/CHANGELOG.md +591 -577
  7. package/LICENSE +27 -27
  8. package/README.md +105 -97
  9. package/dist/main/src/client/ButtplugBrowserWebsocketClientConnector.js +6 -9
  10. package/dist/main/src/client/ButtplugBrowserWebsocketClientConnector.js.map +1 -1
  11. package/dist/main/src/client/{Client.d.ts → ButtplugClient.d.ts} +3 -4
  12. package/dist/main/src/client/ButtplugClient.js +232 -0
  13. package/dist/main/src/client/ButtplugClient.js.map +1 -0
  14. package/dist/main/src/client/ButtplugClientConnectorException.js +17 -7
  15. package/dist/main/src/client/ButtplugClientConnectorException.js.map +1 -1
  16. package/dist/main/src/client/ButtplugClientDevice.d.ts +13 -28
  17. package/dist/main/src/client/ButtplugClientDevice.js +105 -247
  18. package/dist/main/src/client/ButtplugClientDevice.js.map +1 -1
  19. package/dist/main/src/client/ButtplugClientDeviceCommand.d.ts +42 -0
  20. package/dist/main/src/client/ButtplugClientDeviceCommand.js +105 -0
  21. package/dist/main/src/client/ButtplugClientDeviceCommand.js.map +1 -0
  22. package/dist/main/src/client/ButtplugClientDeviceFeature.d.ts +18 -0
  23. package/dist/main/src/client/ButtplugClientDeviceFeature.js +166 -0
  24. package/dist/main/src/client/ButtplugClientDeviceFeature.js.map +1 -0
  25. package/dist/main/src/client/ButtplugNodeWebsocketClientConnector.d.ts +1 -8
  26. package/dist/main/src/client/ButtplugNodeWebsocketClientConnector.js +1 -4
  27. package/dist/main/src/client/ButtplugNodeWebsocketClientConnector.js.map +1 -1
  28. package/dist/main/src/core/Exceptions.js +27 -9
  29. package/dist/main/src/core/Exceptions.js.map +1 -1
  30. package/dist/main/src/core/Logging.js +12 -6
  31. package/dist/main/src/core/Logging.js.map +1 -1
  32. package/dist/main/src/core/Messages.d.ts +119 -230
  33. package/dist/main/src/core/Messages.js +50 -404
  34. package/dist/main/src/core/Messages.js.map +1 -1
  35. package/dist/main/src/index.d.ts +2 -2
  36. package/dist/main/src/index.js +4 -2
  37. package/dist/main/src/index.js.map +1 -1
  38. package/dist/main/src/utils/ButtplugBrowserWebsocketConnector.js +40 -52
  39. package/dist/main/src/utils/ButtplugBrowserWebsocketConnector.js.map +1 -1
  40. package/dist/main/src/utils/ButtplugMessageSorter.js +27 -15
  41. package/dist/main/src/utils/ButtplugMessageSorter.js.map +1 -1
  42. package/dist/main/src/utils/Utils.js +1 -2
  43. package/dist/main/src/utils/Utils.js.map +1 -1
  44. package/dist/web/buttplug.js +1 -38
  45. package/dist/web/buttplug.mjs +595 -1984
  46. package/dist/web/client/ButtplugBrowserWebsocketClientConnector.d.ts +0 -7
  47. package/dist/web/client/{Client.d.ts → ButtplugClient.d.ts} +3 -11
  48. package/dist/web/client/ButtplugClientConnectorException.d.ts +0 -7
  49. package/dist/web/client/ButtplugClientDevice.d.ts +14 -29
  50. package/dist/web/client/ButtplugClientDeviceCommand.d.ts +42 -0
  51. package/dist/web/client/ButtplugClientDeviceFeature.d.ts +18 -0
  52. package/dist/web/client/ButtplugNodeWebsocketClientConnector.d.ts +1 -15
  53. package/dist/web/client/IButtplugClientConnector.d.ts +0 -7
  54. package/dist/web/core/Exceptions.d.ts +1 -1
  55. package/dist/web/core/Logging.d.ts +0 -7
  56. package/dist/web/core/Messages.d.ts +119 -229
  57. package/dist/web/index.d.ts +2 -2
  58. package/dist/web/utils/ButtplugBrowserWebsocketConnector.d.ts +0 -7
  59. package/examples/node/SYNC_MANIFEST.md +105 -0
  60. package/examples/node/application-example.ts +213 -0
  61. package/examples/node/async-example.ts +124 -0
  62. package/examples/node/connection-example.ts +76 -0
  63. package/examples/node/device-control-example.ts +131 -0
  64. package/examples/node/device-enumeration-example.ts +86 -0
  65. package/examples/node/device-info-example.ts +131 -0
  66. package/examples/node/errors-example.ts +166 -0
  67. package/examples/node/package-lock.json +281 -0
  68. package/examples/node/package.json +25 -0
  69. package/examples/node/remote-connector-example.ts +84 -0
  70. package/examples/node/tsconfig.json +14 -0
  71. package/examples/web/application-example.js +197 -0
  72. package/examples/web/async-example.js +90 -0
  73. package/examples/web/device-control-example.js +87 -0
  74. package/examples/web/device-enumeration-example.js +49 -0
  75. package/examples/web/device-info-example.js +100 -0
  76. package/examples/web/errors-example.js +110 -0
  77. package/examples/web/index.html +55 -0
  78. package/examples/web/logging.js +42 -0
  79. package/examples/web/ping-timeout-example.js +59 -0
  80. package/examples/web/remote-connector-example.js +68 -0
  81. package/node-test.js +24 -0
  82. package/node-test.ts +23 -5
  83. package/package.json +85 -87
  84. package/src/client/ButtplugBrowserWebsocketClientConnector.ts +25 -25
  85. package/src/client/ButtplugClient.ts +242 -0
  86. package/src/client/ButtplugClientConnectorException.ts +16 -16
  87. package/src/client/ButtplugClientDevice.ts +178 -401
  88. package/src/client/ButtplugClientDeviceCommand.ts +112 -0
  89. package/src/client/ButtplugClientDeviceFeature.ts +138 -0
  90. package/src/client/ButtplugNodeWebsocketClientConnector.ts +17 -17
  91. package/src/client/IButtplugClientConnector.ts +18 -18
  92. package/src/core/Exceptions.ts +107 -101
  93. package/src/core/Logging.ts +197 -197
  94. package/src/core/Messages.ts +205 -480
  95. package/src/core/index.d.ts +4 -4
  96. package/src/index.ts +21 -19
  97. package/src/utils/ButtplugBrowserWebsocketConnector.ts +89 -89
  98. package/src/utils/ButtplugMessageSorter.ts +66 -65
  99. package/src/utils/Utils.ts +3 -3
  100. package/tsconfig.json +22 -22
  101. package/tsfmt.json +14 -14
  102. package/tslint.json +27 -27
  103. package/typedocconfig.js +6 -6
  104. package/vite.config.ts +26 -26
  105. package/dist/main/src/client/Client.js +0 -242
  106. package/dist/main/src/client/Client.js.map +0 -1
  107. package/dist/main/src/core/MessageUtils.d.ts +0 -10
  108. package/dist/main/src/core/MessageUtils.js +0 -65
  109. package/dist/main/src/core/MessageUtils.js.map +0 -1
  110. package/dist/web/core/MessageUtils.d.ts +0 -10
  111. package/doc/.nojekyll +0 -1
  112. package/doc/assets/highlight.css +0 -22
  113. package/doc/assets/main.js +0 -58
  114. package/doc/assets/search.js +0 -1
  115. package/doc/assets/style.css +0 -1280
  116. package/doc/classes/ButtplugBrowserWebsocketClientConnector.html +0 -234
  117. package/doc/classes/ButtplugClient.html +0 -331
  118. package/doc/classes/ButtplugClientConnectorException.html +0 -216
  119. package/doc/classes/ButtplugClientDevice.html +0 -489
  120. package/doc/classes/ButtplugDeviceError.html +0 -218
  121. package/doc/classes/ButtplugDeviceMessage.html +0 -165
  122. package/doc/classes/ButtplugError.html +0 -220
  123. package/doc/classes/ButtplugInitError.html +0 -218
  124. package/doc/classes/ButtplugLogger.html +0 -288
  125. package/doc/classes/ButtplugMessage.html +0 -147
  126. package/doc/classes/ButtplugMessageError.html +0 -218
  127. package/doc/classes/ButtplugMessageSorter.html +0 -128
  128. package/doc/classes/ButtplugNodeWebsocketClientConnector.html +0 -239
  129. package/doc/classes/ButtplugPingError.html +0 -218
  130. package/doc/classes/ButtplugSystemMessage.html +0 -150
  131. package/doc/classes/ButtplugUnknownError.html +0 -218
  132. package/doc/classes/DeviceAdded.html +0 -186
  133. package/doc/classes/DeviceInfo.html +0 -114
  134. package/doc/classes/DeviceList.html +0 -160
  135. package/doc/classes/DeviceRemoved.html +0 -158
  136. package/doc/classes/Error.html +0 -179
  137. package/doc/classes/GenericDeviceMessageAttributes.html +0 -107
  138. package/doc/classes/GenericMessageSubcommand.html +0 -90
  139. package/doc/classes/LinearCmd.html +0 -187
  140. package/doc/classes/LogMessage.html +0 -134
  141. package/doc/classes/MessageAttributes.html +0 -160
  142. package/doc/classes/Ok.html +0 -151
  143. package/doc/classes/Ping.html +0 -151
  144. package/doc/classes/RawDeviceMessageAttributes.html +0 -86
  145. package/doc/classes/RawReadCmd.html +0 -188
  146. package/doc/classes/RawReading.html +0 -179
  147. package/doc/classes/RawSubscribeCmd.html +0 -170
  148. package/doc/classes/RawUnsubscribeCmd.html +0 -170
  149. package/doc/classes/RawWriteCmd.html +0 -188
  150. package/doc/classes/RequestDeviceList.html +0 -151
  151. package/doc/classes/RequestServerInfo.html +0 -169
  152. package/doc/classes/RotateCmd.html +0 -187
  153. package/doc/classes/RotateSubcommand.html +0 -108
  154. package/doc/classes/ScalarCmd.html +0 -170
  155. package/doc/classes/ScalarSubcommand.html +0 -108
  156. package/doc/classes/ScanningFinished.html +0 -146
  157. package/doc/classes/SensorDeviceMessageAttributes.html +0 -107
  158. package/doc/classes/SensorReadCmd.html +0 -179
  159. package/doc/classes/SensorReading.html +0 -188
  160. package/doc/classes/ServerInfo.html +0 -178
  161. package/doc/classes/StartScanning.html +0 -151
  162. package/doc/classes/StopAllDevices.html +0 -151
  163. package/doc/classes/StopDeviceCmd.html +0 -161
  164. package/doc/classes/StopScanning.html +0 -151
  165. package/doc/classes/VectorSubcommand.html +0 -108
  166. package/doc/enums/ActuatorType.html +0 -104
  167. package/doc/enums/ButtplugLogLevel.html +0 -97
  168. package/doc/enums/ErrorClass.html +0 -90
  169. package/doc/enums/SensorType.html +0 -90
  170. package/doc/functions/FromJSON.html +0 -113
  171. package/doc/index.html +0 -184
  172. package/doc/interfaces/IButtplugClientConnector.html +0 -137
  173. package/doc/modules.html +0 -176
  174. package/doc/variables/DEFAULT_MESSAGE_ID.html +0 -104
  175. package/doc/variables/MAX_ID.html +0 -104
  176. package/doc/variables/MESSAGE_SPEC_VERSION.html +0 -104
  177. package/doc/variables/SYSTEM_MESSAGE_ID.html +0 -104
  178. package/src/client/Client.ts +0 -276
  179. package/src/core/MessageUtils.ts +0 -48
@@ -1,10 +1,3 @@
1
- /*!
2
- * Buttplug JS Source Code File - Visit https://buttplug.io for more info about
3
- * the project. Licensed under the BSD 3-Clause license. See LICENSE file in the
4
- * project root for full license information.
5
- *
6
- * @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
7
- */
8
1
  import { IButtplugClientConnector } from './IButtplugClientConnector';
9
2
  import { ButtplugMessage } from '../core/Messages';
10
3
  import { ButtplugBrowserWebsocketConnector } from '../utils/ButtplugBrowserWebsocketConnector';
@@ -1,11 +1,3 @@
1
- /*!
2
- * Buttplug JS Source Code File - Visit https://buttplug.io for more info about
3
- * the project. Licensed under the BSD 3-Clause license. See LICENSE file in the
4
- * project root for full license information.
5
- *
6
- * @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
7
- */
8
- /// <reference types="node" />
9
1
  import { ButtplugLogger } from '../core/Logging';
10
2
  import { EventEmitter } from 'eventemitter3';
11
3
  import { ButtplugClientDevice } from './ButtplugClientDevice';
@@ -21,21 +13,21 @@ export declare class ButtplugClient extends EventEmitter {
21
13
  private _sorter;
22
14
  constructor(clientName?: string);
23
15
  get connected(): boolean;
24
- get devices(): ButtplugClientDevice[];
16
+ get devices(): Map<number, ButtplugClientDevice>;
25
17
  get isScanning(): boolean;
26
18
  connect: (connector: IButtplugClientConnector) => Promise<void>;
27
19
  disconnect: () => Promise<void>;
28
20
  startScanning: () => Promise<void>;
29
21
  stopScanning: () => Promise<void>;
30
22
  stopAllDevices: () => Promise<void>;
31
- private sendDeviceMessage;
32
23
  protected disconnectHandler: () => void;
33
24
  protected parseMessages: (msgs: Messages.ButtplugMessage[]) => void;
34
25
  protected initializeConnection: () => Promise<boolean>;
26
+ private parseDeviceList;
35
27
  protected requestDeviceList: () => Promise<void>;
36
28
  protected shutdownConnection: () => Promise<void>;
37
29
  protected sendMessage(msg: Messages.ButtplugMessage): Promise<Messages.ButtplugMessage>;
38
30
  protected checkConnector(): void;
39
31
  protected sendMsgExpectOk: (msg: Messages.ButtplugMessage) => Promise<void>;
40
- protected sendDeviceMessageClosure: (device: ButtplugClientDevice, msg: Messages.ButtplugDeviceMessage) => Promise<Messages.ButtplugMessage>;
32
+ protected sendMessageClosure: (msg: Messages.ButtplugMessage) => Promise<Messages.ButtplugMessage>;
41
33
  }
@@ -1,10 +1,3 @@
1
- /*!
2
- * Buttplug JS Source Code File - Visit https://buttplug.io for more info about
3
- * the project. Licensed under the BSD 3-Clause license. See LICENSE file in the
4
- * project root for full license information.
5
- *
6
- * @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
7
- */
8
1
  import { ButtplugError } from '../core/Exceptions';
9
2
  export declare class ButtplugClientConnectorException extends ButtplugError {
10
3
  constructor(message: string);
@@ -1,3 +1,6 @@
1
+ import { EventEmitter } from 'eventemitter3';
2
+ import { ButtplugClientDeviceFeature } from './ButtplugClientDeviceFeature';
3
+ import { DeviceOutputCommand } from './ButtplugClientDeviceCommand';
1
4
  /*!
2
5
  * Buttplug JS Source Code File - Visit https://buttplug.io for more info about
3
6
  * the project. Licensed under the BSD 3-Clause license. See LICENSE file in the
@@ -6,13 +9,13 @@
6
9
  * @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
7
10
  */
8
11
  import * as Messages from '../core/Messages';
9
- import { EventEmitter } from 'eventemitter3';
10
12
  /**
11
13
  * Represents an abstract device, capable of taking certain kinds of messages.
12
14
  */
13
15
  export declare class ButtplugClientDevice extends EventEmitter {
14
16
  private _deviceInfo;
15
17
  private _sendClosure;
18
+ private _features;
16
19
  /**
17
20
  * Return the name of the device.
18
21
  */
@@ -29,39 +32,21 @@ export declare class ButtplugClientDevice extends EventEmitter {
29
32
  * Return the index of the device.
30
33
  */
31
34
  get messageTimingGap(): number | undefined;
32
- /**
33
- * Return a list of message types the device accepts.
34
- */
35
- get messageAttributes(): Messages.MessageAttributes;
36
- static fromMsg(msg: Messages.DeviceInfo, sendClosure: (device: ButtplugClientDevice, msg: Messages.ButtplugDeviceMessage) => Promise<Messages.ButtplugMessage>): ButtplugClientDevice;
37
- private allowedMsgs;
35
+ get features(): Map<number, ButtplugClientDeviceFeature>;
36
+ static fromMsg(msg: Messages.DeviceInfo, sendClosure: (msg: Messages.ButtplugMessage) => Promise<Messages.ButtplugMessage>): ButtplugClientDevice;
38
37
  /**
39
38
  * @param _index Index of the device, as created by the device manager.
40
39
  * @param _name Name of the device.
41
40
  * @param allowedMsgs Buttplug messages the device can receive.
42
41
  */
43
- constructor(_deviceInfo: Messages.DeviceInfo, _sendClosure: (device: ButtplugClientDevice, msg: Messages.ButtplugDeviceMessage) => Promise<Messages.ButtplugMessage>);
44
- send(msg: Messages.ButtplugDeviceMessage): Promise<Messages.ButtplugMessage>;
45
- sendExpectOk(msg: Messages.ButtplugDeviceMessage): Promise<void>;
46
- scalar(scalar: Messages.ScalarSubcommand | Messages.ScalarSubcommand[]): Promise<void>;
47
- private scalarCommandBuilder;
48
- get vibrateAttributes(): Messages.GenericDeviceMessageAttributes[];
49
- vibrate(speed: number | number[]): Promise<void>;
50
- get oscillateAttributes(): Messages.GenericDeviceMessageAttributes[];
51
- oscillate(speed: number | number[]): Promise<void>;
52
- get rotateAttributes(): Messages.GenericDeviceMessageAttributes[];
53
- rotate(values: number | [number, boolean][], clockwise?: boolean): Promise<void>;
54
- get linearAttributes(): Messages.GenericDeviceMessageAttributes[];
55
- linear(values: number | [number, number][], duration?: number): Promise<void>;
56
- sensorRead(sensorIndex: number, sensorType: Messages.SensorType): Promise<number[]>;
57
- get hasBattery(): boolean;
58
- battery(): Promise<number>;
59
- get hasRssi(): boolean;
60
- rssi(): Promise<number>;
61
- rawRead(endpoint: string, expectedLength: number, timeout: number): Promise<Uint8Array>;
62
- rawWrite(endpoint: string, data: Uint8Array, writeWithResponse: boolean): Promise<void>;
63
- rawSubscribe(endpoint: string): Promise<void>;
64
- rawUnsubscribe(endpoint: string): Promise<void>;
42
+ private constructor();
43
+ send(msg: Messages.ButtplugMessage): Promise<Messages.ButtplugMessage>;
44
+ protected sendMsgExpectOk: (msg: Messages.ButtplugMessage) => Promise<void>;
45
+ protected isOutputValid(featureIndex: number, type: Messages.OutputType): void;
46
+ hasOutput(type: Messages.OutputType): boolean;
47
+ hasInput(type: Messages.InputType): boolean;
48
+ runOutput(cmd: DeviceOutputCommand): Promise<void>;
65
49
  stop(): Promise<void>;
50
+ battery(): Promise<number>;
66
51
  emitDisconnected(): void;
67
52
  }
@@ -0,0 +1,42 @@
1
+ import { OutputType } from '../core/Messages';
2
+ declare class PercentOrSteps {
3
+ private _percent;
4
+ private _steps;
5
+ get percent(): number | undefined;
6
+ get steps(): number | undefined;
7
+ static createSteps(s: number): PercentOrSteps;
8
+ static createPercent(p: number): PercentOrSteps;
9
+ }
10
+ export declare class DeviceOutputCommand {
11
+ private _outputType;
12
+ private _value;
13
+ private _duration?;
14
+ constructor(_outputType: OutputType, _value: PercentOrSteps, _duration?: number | undefined);
15
+ get outputType(): OutputType;
16
+ get value(): PercentOrSteps;
17
+ get duration(): number | undefined;
18
+ }
19
+ export declare class DeviceOutputValueConstructor {
20
+ private _outputType;
21
+ constructor(_outputType: OutputType);
22
+ steps(steps: number): DeviceOutputCommand;
23
+ percent(percent: number): DeviceOutputCommand;
24
+ }
25
+ export declare class DeviceOutputPositionWithDurationConstructor {
26
+ steps(steps: number, duration: number): DeviceOutputCommand;
27
+ percent(percent: number, duration: number): DeviceOutputCommand;
28
+ }
29
+ export declare class DeviceOutput {
30
+ private constructor();
31
+ static get Vibrate(): DeviceOutputValueConstructor;
32
+ static get Rotate(): DeviceOutputValueConstructor;
33
+ static get Oscillate(): DeviceOutputValueConstructor;
34
+ static get Constrict(): DeviceOutputValueConstructor;
35
+ static get Inflate(): DeviceOutputValueConstructor;
36
+ static get Temperature(): DeviceOutputValueConstructor;
37
+ static get Led(): DeviceOutputValueConstructor;
38
+ static get Spray(): DeviceOutputValueConstructor;
39
+ static get Position(): DeviceOutputValueConstructor;
40
+ static get PositionWithDuration(): DeviceOutputPositionWithDurationConstructor;
41
+ }
42
+ export {};
@@ -0,0 +1,18 @@
1
+ import { DeviceOutputCommand } from './ButtplugClientDeviceCommand';
2
+ import * as Messages from "../core/Messages";
3
+ export declare class ButtplugClientDeviceFeature {
4
+ private _deviceIndex;
5
+ private _deviceName;
6
+ private _feature;
7
+ private _sendClosure;
8
+ constructor(_deviceIndex: number, _deviceName: string, _feature: Messages.DeviceFeature, _sendClosure: (msg: Messages.ButtplugMessage) => Promise<Messages.ButtplugMessage>);
9
+ protected send: (msg: Messages.ButtplugMessage) => Promise<Messages.ButtplugMessage>;
10
+ protected sendMsgExpectOk: (msg: Messages.ButtplugMessage) => Promise<void>;
11
+ protected isOutputValid(type: Messages.OutputType): void;
12
+ protected isInputValid(type: Messages.InputType): void;
13
+ protected sendOutputCmd(command: DeviceOutputCommand): Promise<void>;
14
+ hasOutput(type: Messages.OutputType): boolean;
15
+ hasInput(type: Messages.InputType): boolean;
16
+ runOutput(cmd: DeviceOutputCommand): Promise<void>;
17
+ runInput(inputType: Messages.InputType, inputCommand: Messages.InputCommandType): Promise<Messages.InputReading | undefined>;
18
+ }
@@ -1,18 +1,4 @@
1
- /*!
2
- * Buttplug JS Source Code File - Visit https://buttplug.io for more info about
3
- * the project. Licensed under the BSD 3-Clause license. See LICENSE file in the
4
- * project root for full license information.
5
- *
6
- * @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
7
- */
8
1
  import { ButtplugBrowserWebsocketClientConnector } from './ButtplugBrowserWebsocketClientConnector';
9
2
  export declare class ButtplugNodeWebsocketClientConnector extends ButtplugBrowserWebsocketClientConnector {
10
- protected _websocketConstructor: {
11
- new (url: string | URL, protocols?: string | string[] | undefined): WebSocket;
12
- prototype: WebSocket;
13
- readonly CONNECTING: 0;
14
- readonly OPEN: 1;
15
- readonly CLOSING: 2;
16
- readonly CLOSED: 3;
17
- };
3
+ protected _websocketConstructor: typeof WebSocket;
18
4
  }
@@ -1,10 +1,3 @@
1
- /*!
2
- * Buttplug JS Source Code File - Visit https://buttplug.io for more info about
3
- * the project. Licensed under the BSD 3-Clause license. See LICENSE file in the
4
- * project root for full license information.
5
- *
6
- * @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
7
- */
8
1
  import { ButtplugMessage } from '../core/Messages';
9
2
  import { EventEmitter } from 'eventemitter3';
10
3
  export interface IButtplugClientConnector extends EventEmitter {
@@ -1,3 +1,4 @@
1
+ import { ButtplugLogger } from './Logging';
1
2
  /*!
2
3
  * Buttplug JS Source Code File - Visit https://buttplug.io for more info about
3
4
  * the project. Licensed under the BSD 3-Clause license. See LICENSE file in the
@@ -6,7 +7,6 @@
6
7
  * @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
7
8
  */
8
9
  import * as Messages from './Messages';
9
- import { ButtplugLogger } from './Logging';
10
10
  export declare class ButtplugError extends Error {
11
11
  get ErrorClass(): Messages.ErrorClass;
12
12
  get InnerError(): Error | undefined;
@@ -1,10 +1,3 @@
1
- /*!
2
- * Buttplug JS Source Code File - Visit https://buttplug.io for more info about
3
- * the project. Licensed under the BSD 3-Clause license. See LICENSE file in the
4
- * project root for full license information.
5
- *
6
- * @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
7
- */
8
1
  import { EventEmitter } from 'eventemitter3';
9
2
  export declare enum ButtplugLogLevel {
10
3
  Off = 0,
@@ -8,80 +8,31 @@
8
8
  export declare const SYSTEM_MESSAGE_ID = 0;
9
9
  export declare const DEFAULT_MESSAGE_ID = 1;
10
10
  export declare const MAX_ID = 4294967295;
11
- export declare const MESSAGE_SPEC_VERSION = 3;
12
- export declare class MessageAttributes {
13
- ScalarCmd?: Array<GenericDeviceMessageAttributes>;
14
- RotateCmd?: Array<GenericDeviceMessageAttributes>;
15
- LinearCmd?: Array<GenericDeviceMessageAttributes>;
16
- RawReadCmd?: RawDeviceMessageAttributes;
17
- RawWriteCmd?: RawDeviceMessageAttributes;
18
- RawSubscribeCmd?: RawDeviceMessageAttributes;
19
- SensorReadCmd?: Array<SensorDeviceMessageAttributes>;
20
- SensorSubscribeCmd?: Array<SensorDeviceMessageAttributes>;
21
- StopDeviceCmd: {};
22
- constructor(data: Partial<MessageAttributes>);
23
- update(): void;
24
- }
25
- export declare enum ActuatorType {
26
- Unknown = "Unknown",
27
- Vibrate = "Vibrate",
28
- Rotate = "Rotate",
29
- Oscillate = "Oscillate",
30
- Constrict = "Constrict",
31
- Inflate = "Inflate",
32
- Position = "Position"
33
- }
34
- export declare enum SensorType {
35
- Unknown = "Unknown",
36
- Battery = "Battery",
37
- RSSI = "RSSI",
38
- Button = "Button",
39
- Pressure = "Pressure"
40
- }
41
- export declare class GenericDeviceMessageAttributes {
42
- FeatureDescriptor: string;
43
- ActuatorType: ActuatorType;
44
- StepCount: number;
45
- Index: number;
46
- constructor(data: Partial<GenericDeviceMessageAttributes>);
47
- }
48
- export declare class RawDeviceMessageAttributes {
49
- Endpoints: Array<string>;
50
- constructor(Endpoints: Array<string>);
51
- }
52
- export declare class SensorDeviceMessageAttributes {
53
- FeatureDescriptor: string;
54
- SensorType: SensorType;
55
- StepRange: Array<number>;
56
- Index: number;
57
- constructor(data: Partial<GenericDeviceMessageAttributes>);
58
- }
59
- export declare abstract class ButtplugMessage {
60
- Id: number;
61
- constructor(Id: number);
62
- get Type(): Function;
63
- toJSON(): string;
64
- toProtocolFormat(): object;
65
- update(): void;
66
- }
67
- export declare abstract class ButtplugDeviceMessage extends ButtplugMessage {
68
- DeviceIndex: number;
69
- Id: number;
70
- constructor(DeviceIndex: number, Id: number);
71
- }
72
- export declare abstract class ButtplugSystemMessage extends ButtplugMessage {
73
- Id: number;
74
- constructor(Id?: number);
75
- }
76
- export declare class Ok extends ButtplugSystemMessage {
77
- Id: number;
78
- static Name: string;
79
- constructor(Id?: number);
80
- }
81
- export declare class Ping extends ButtplugMessage {
82
- Id: number;
83
- static Name: string;
84
- constructor(Id?: number);
11
+ export declare const MESSAGE_SPEC_VERSION_MAJOR = 4;
12
+ export declare const MESSAGE_SPEC_VERSION_MINOR = 0;
13
+ export interface ButtplugMessage {
14
+ Ok?: Ok;
15
+ Ping?: Ping;
16
+ Error?: Error;
17
+ RequestServerInfo?: RequestServerInfo;
18
+ ServerInfo?: ServerInfo;
19
+ RequestDeviceList?: RequestDeviceList;
20
+ StartScanning?: StartScanning;
21
+ StopScanning?: StopScanning;
22
+ ScanningFinished?: ScanningFinished;
23
+ StopCmd?: StopCmd;
24
+ InputCmd?: InputCmd;
25
+ InputReading?: InputReading;
26
+ OutputCmd?: OutputCmd;
27
+ DeviceList?: DeviceList;
28
+ }
29
+ export declare function msgId(msg: ButtplugMessage): number;
30
+ export declare function setMsgId(msg: ButtplugMessage, id: number): void;
31
+ export interface Ok {
32
+ Id: number | undefined;
33
+ }
34
+ export interface Ping {
35
+ Id: number | undefined;
85
36
  }
86
37
  export declare enum ErrorClass {
87
38
  ERROR_UNKNOWN = 0,
@@ -90,185 +41,124 @@ export declare enum ErrorClass {
90
41
  ERROR_MSG = 3,
91
42
  ERROR_DEVICE = 4
92
43
  }
93
- export declare class Error extends ButtplugMessage {
44
+ export interface Error {
94
45
  ErrorMessage: string;
95
46
  ErrorCode: ErrorClass;
96
- Id: number;
97
- static Name: string;
98
- constructor(ErrorMessage: string, ErrorCode?: ErrorClass, Id?: number);
99
- get Schemversion(): number;
100
- }
101
- export declare class DeviceInfo {
102
- DeviceIndex: number;
103
- DeviceName: string;
104
- DeviceMessages: MessageAttributes;
105
- DeviceDisplayName?: string;
106
- DeviceMessageTimingGap?: number;
107
- constructor(data: Partial<DeviceInfo>);
108
- }
109
- export declare class DeviceList extends ButtplugMessage {
110
- static Name: string;
111
- Devices: DeviceInfo[];
112
- Id: number;
113
- constructor(devices: DeviceInfo[], id?: number);
114
- update(): void;
115
- }
116
- export declare class DeviceAdded extends ButtplugSystemMessage {
117
- static Name: string;
118
- DeviceIndex: number;
119
- DeviceName: string;
120
- DeviceMessages: MessageAttributes;
121
- DeviceDisplayName?: string;
122
- DeviceMessageTimingGap?: number;
123
- constructor(data: Partial<DeviceAdded>);
124
- update(): void;
125
- }
126
- export declare class DeviceRemoved extends ButtplugSystemMessage {
127
- DeviceIndex: number;
128
- static Name: string;
129
- constructor(DeviceIndex: number);
47
+ Id: number | undefined;
130
48
  }
131
- export declare class RequestDeviceList extends ButtplugMessage {
132
- Id: number;
133
- static Name: string;
134
- constructor(Id?: number);
49
+ export interface RequestDeviceList {
50
+ Id: number | undefined;
135
51
  }
136
- export declare class StartScanning extends ButtplugMessage {
137
- Id: number;
138
- static Name: string;
139
- constructor(Id?: number);
52
+ export interface StartScanning {
53
+ Id: number | undefined;
140
54
  }
141
- export declare class StopScanning extends ButtplugMessage {
142
- Id: number;
143
- static Name: string;
144
- constructor(Id?: number);
55
+ export interface StopScanning {
56
+ Id: number | undefined;
145
57
  }
146
- export declare class ScanningFinished extends ButtplugSystemMessage {
147
- static Name: string;
148
- constructor();
58
+ export interface ScanningFinished {
59
+ Id: number | undefined;
149
60
  }
150
- export declare class RequestServerInfo extends ButtplugMessage {
61
+ export interface RequestServerInfo {
151
62
  ClientName: string;
152
- MessageVersion: number;
153
- Id: number;
154
- static Name: string;
155
- constructor(ClientName: string, MessageVersion?: number, Id?: number);
63
+ ProtocolVersionMajor: number;
64
+ ProtocolVersionMinor: number;
65
+ Id: number | undefined;
156
66
  }
157
- export declare class ServerInfo extends ButtplugSystemMessage {
158
- MessageVersion: number;
67
+ export interface ServerInfo {
159
68
  MaxPingTime: number;
160
69
  ServerName: string;
161
- Id: number;
162
- static Name: string;
163
- constructor(MessageVersion: number, MaxPingTime: number, ServerName: string, Id?: number);
164
- }
165
- export declare class StopDeviceCmd extends ButtplugDeviceMessage {
166
- DeviceIndex: number;
167
- Id: number;
168
- static Name: string;
169
- constructor(DeviceIndex?: number, Id?: number);
170
- }
171
- export declare class StopAllDevices extends ButtplugMessage {
172
- Id: number;
173
- static Name: string;
174
- constructor(Id?: number);
70
+ ProtocolVersionMajor: number;
71
+ ProtocolVersionMinor: number;
72
+ Id: number | undefined;
175
73
  }
176
- export declare class GenericMessageSubcommand {
177
- Index: number;
178
- protected constructor(Index: number);
179
- }
180
- export declare class ScalarSubcommand extends GenericMessageSubcommand {
181
- Scalar: number;
182
- ActuatorType: ActuatorType;
183
- constructor(Index: number, Scalar: number, ActuatorType: ActuatorType);
184
- }
185
- export declare class ScalarCmd extends ButtplugDeviceMessage {
186
- Scalars: ScalarSubcommand[];
74
+ export interface DeviceFeature {
75
+ FeatureDescriptor: string;
76
+ Output: {
77
+ [key: string]: DeviceFeatureOutput;
78
+ };
79
+ Input: {
80
+ [key: string]: DeviceFeatureInput;
81
+ };
82
+ FeatureIndex: number;
83
+ }
84
+ export interface DeviceInfo {
187
85
  DeviceIndex: number;
188
- Id: number;
189
- static Name: string;
190
- constructor(Scalars: ScalarSubcommand[], DeviceIndex?: number, Id?: number);
191
- }
192
- export declare class RotateSubcommand extends GenericMessageSubcommand {
193
- Speed: number;
194
- Clockwise: boolean;
195
- constructor(Index: number, Speed: number, Clockwise: boolean);
86
+ DeviceName: string;
87
+ DeviceFeatures: {
88
+ [key: number]: DeviceFeature;
89
+ };
90
+ DeviceDisplayName?: string;
91
+ DeviceMessageTimingGap?: number;
196
92
  }
197
- export declare class RotateCmd extends ButtplugDeviceMessage {
198
- Rotations: RotateSubcommand[];
199
- DeviceIndex: number;
200
- Id: number;
201
- static Name: string;
202
- static Create(deviceIndex: number, commands: [number, boolean][]): RotateCmd;
203
- constructor(Rotations: RotateSubcommand[], DeviceIndex?: number, Id?: number);
93
+ export interface DeviceList {
94
+ Devices: {
95
+ [key: number]: DeviceInfo;
96
+ };
97
+ Id: number | undefined;
204
98
  }
205
- export declare class VectorSubcommand extends GenericMessageSubcommand {
206
- Position: number;
207
- Duration: number;
208
- constructor(Index: number, Position: number, Duration: number);
99
+ export declare enum OutputType {
100
+ Unknown = "Unknown",
101
+ Vibrate = "Vibrate",
102
+ Rotate = "Rotate",
103
+ Oscillate = "Oscillate",
104
+ Constrict = "Constrict",
105
+ Inflate = "Inflate",
106
+ Position = "Position",
107
+ HwPositionWithDuration = "HwPositionWithDuration",
108
+ Temperature = "Temperature",
109
+ Spray = "Spray",
110
+ Led = "Led"
209
111
  }
210
- export declare class LinearCmd extends ButtplugDeviceMessage {
211
- Vectors: VectorSubcommand[];
212
- DeviceIndex: number;
213
- Id: number;
214
- static Name: string;
215
- static Create(deviceIndex: number, commands: [number, number][]): LinearCmd;
216
- constructor(Vectors: VectorSubcommand[], DeviceIndex?: number, Id?: number);
112
+ export declare enum InputType {
113
+ Unknown = "Unknown",
114
+ Battery = "Battery",
115
+ RSSI = "RSSI",
116
+ Button = "Button",
117
+ Pressure = "Pressure"
217
118
  }
218
- export declare class SensorReadCmd extends ButtplugDeviceMessage {
219
- DeviceIndex: number;
220
- SensorIndex: number;
221
- SensorType: SensorType;
222
- Id: number;
223
- static Name: string;
224
- constructor(DeviceIndex: number, SensorIndex: number, SensorType: SensorType, Id?: number);
119
+ export declare enum InputCommandType {
120
+ Read = "Read",
121
+ Subscribe = "Subscribe",
122
+ Unsubscribe = "Unsubscribe"
225
123
  }
226
- export declare class SensorReading extends ButtplugDeviceMessage {
227
- DeviceIndex: number;
228
- SensorIndex: number;
229
- SensorType: SensorType;
230
- Data: number[];
231
- Id: number;
232
- static Name: string;
233
- constructor(DeviceIndex: number, SensorIndex: number, SensorType: SensorType, Data: number[], Id?: number);
124
+ export interface DeviceFeatureInput {
125
+ Value: number[];
126
+ Command: InputCommandType[];
234
127
  }
235
- export declare class RawReadCmd extends ButtplugDeviceMessage {
236
- DeviceIndex: number;
237
- Endpoint: string;
238
- ExpectedLength: number;
239
- Timeout: number;
240
- Id: number;
241
- static Name: string;
242
- constructor(DeviceIndex: number, Endpoint: string, ExpectedLength: number, Timeout: number, Id?: number);
128
+ export interface DeviceFeatureOutput {
129
+ Value: number;
130
+ Duration?: number;
243
131
  }
244
- export declare class RawWriteCmd extends ButtplugDeviceMessage {
132
+ export interface OutputCmd {
245
133
  DeviceIndex: number;
246
- Endpoint: string;
247
- Data: Uint8Array;
248
- WriteWithResponse: boolean;
249
- Id: number;
250
- static Name: string;
251
- constructor(DeviceIndex: number, Endpoint: string, Data: Uint8Array, WriteWithResponse: boolean, Id?: number);
134
+ FeatureIndex: number;
135
+ Command: {
136
+ [key: string]: DeviceFeatureOutput;
137
+ };
138
+ Id: number | undefined;
252
139
  }
253
- export declare class RawSubscribeCmd extends ButtplugDeviceMessage {
140
+ export interface InputCmd {
254
141
  DeviceIndex: number;
255
- Endpoint: string;
256
- Id: number;
257
- static Name: string;
258
- constructor(DeviceIndex: number, Endpoint: string, Id?: number);
142
+ FeatureIndex: number;
143
+ Type: InputType;
144
+ Command: InputCommandType;
145
+ Id: number | undefined;
259
146
  }
260
- export declare class RawUnsubscribeCmd extends ButtplugDeviceMessage {
261
- DeviceIndex: number;
262
- Endpoint: string;
263
- Id: number;
264
- static Name: string;
265
- constructor(DeviceIndex: number, Endpoint: string, Id?: number);
147
+ export interface InputValue {
148
+ Value: number;
266
149
  }
267
- export declare class RawReading extends ButtplugDeviceMessage {
150
+ export interface InputReading {
268
151
  DeviceIndex: number;
269
- Endpoint: string;
270
- Data: number[];
271
- Id: number;
272
- static Name: string;
273
- constructor(DeviceIndex: number, Endpoint: string, Data: number[], Id?: number);
152
+ FeatureIndex: number;
153
+ Reading: {
154
+ [key: string]: InputValue;
155
+ };
156
+ Id: number | undefined;
157
+ }
158
+ export interface StopCmd {
159
+ Id: number | undefined;
160
+ DeviceIndex: number | undefined;
161
+ FeatureIndex: number | undefined;
162
+ Inputs: boolean | undefined;
163
+ Outputs: boolean | undefined;
274
164
  }
@@ -5,14 +5,14 @@
5
5
  *
6
6
  * @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
7
7
  */
8
- export * from './client/Client';
8
+ export * from './client/ButtplugClient';
9
9
  export * from './client/ButtplugClientDevice';
10
10
  export * from './client/ButtplugBrowserWebsocketClientConnector';
11
11
  export * from './client/ButtplugNodeWebsocketClientConnector';
12
12
  export * from './client/ButtplugClientConnectorException';
13
13
  export * from './utils/ButtplugMessageSorter';
14
+ export * from './client/ButtplugClientDeviceCommand';
14
15
  export * from './client/IButtplugClientConnector';
15
16
  export * from './core/Messages';
16
- export * from './core/MessageUtils';
17
17
  export * from './core/Logging';
18
18
  export * from './core/Exceptions';