@voltras/node-sdk 0.1.0

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 (203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +272 -0
  3. package/dist/cjs/bluetooth/adapters/base.js +116 -0
  4. package/dist/cjs/bluetooth/adapters/base.js.map +1 -0
  5. package/dist/cjs/bluetooth/adapters/index.js +58 -0
  6. package/dist/cjs/bluetooth/adapters/index.js.map +1 -0
  7. package/dist/cjs/bluetooth/adapters/native.js +473 -0
  8. package/dist/cjs/bluetooth/adapters/native.js.map +1 -0
  9. package/dist/cjs/bluetooth/adapters/node.js +228 -0
  10. package/dist/cjs/bluetooth/adapters/node.js.map +1 -0
  11. package/dist/cjs/bluetooth/adapters/types.js +11 -0
  12. package/dist/cjs/bluetooth/adapters/types.js.map +1 -0
  13. package/dist/cjs/bluetooth/adapters/web-bluetooth-base.js +187 -0
  14. package/dist/cjs/bluetooth/adapters/web-bluetooth-base.js.map +1 -0
  15. package/dist/cjs/bluetooth/adapters/web.js +112 -0
  16. package/dist/cjs/bluetooth/adapters/web.js.map +1 -0
  17. package/dist/cjs/bluetooth/controllers/scanner-controller.js +145 -0
  18. package/dist/cjs/bluetooth/controllers/scanner-controller.js.map +1 -0
  19. package/dist/cjs/bluetooth/index.js +27 -0
  20. package/dist/cjs/bluetooth/index.js.map +1 -0
  21. package/dist/cjs/bluetooth/models/connection.js +68 -0
  22. package/dist/cjs/bluetooth/models/connection.js.map +1 -0
  23. package/dist/cjs/bluetooth/models/device.js +26 -0
  24. package/dist/cjs/bluetooth/models/device.js.map +1 -0
  25. package/dist/cjs/bluetooth/models/environment.js +106 -0
  26. package/dist/cjs/bluetooth/models/environment.js.map +1 -0
  27. package/dist/cjs/errors.js +167 -0
  28. package/dist/cjs/errors.js.map +1 -0
  29. package/dist/cjs/index.js +116 -0
  30. package/dist/cjs/index.js.map +1 -0
  31. package/dist/cjs/react/hooks.js +262 -0
  32. package/dist/cjs/react/hooks.js.map +1 -0
  33. package/dist/cjs/react/index.js +18 -0
  34. package/dist/cjs/react/index.js.map +1 -0
  35. package/dist/cjs/sdk/index.js +14 -0
  36. package/dist/cjs/sdk/index.js.map +1 -0
  37. package/dist/cjs/sdk/types.js +8 -0
  38. package/dist/cjs/sdk/types.js.map +1 -0
  39. package/dist/cjs/sdk/voltra-client.js +632 -0
  40. package/dist/cjs/sdk/voltra-client.js.map +1 -0
  41. package/dist/cjs/sdk/voltra-manager.js +419 -0
  42. package/dist/cjs/sdk/voltra-manager.js.map +1 -0
  43. package/dist/cjs/shared/index.js +12 -0
  44. package/dist/cjs/shared/index.js.map +1 -0
  45. package/dist/cjs/shared/utils.js +51 -0
  46. package/dist/cjs/shared/utils.js.map +1 -0
  47. package/dist/cjs/voltra/index.js +56 -0
  48. package/dist/cjs/voltra/index.js.map +1 -0
  49. package/dist/cjs/voltra/models/connection.js +68 -0
  50. package/dist/cjs/voltra/models/connection.js.map +1 -0
  51. package/dist/cjs/voltra/models/device-filter.js +28 -0
  52. package/dist/cjs/voltra/models/device-filter.js.map +1 -0
  53. package/dist/cjs/voltra/models/device.js +152 -0
  54. package/dist/cjs/voltra/models/device.js.map +1 -0
  55. package/dist/cjs/voltra/models/telemetry/frame.js +46 -0
  56. package/dist/cjs/voltra/models/telemetry/frame.js.map +1 -0
  57. package/dist/cjs/voltra/models/telemetry/index.js +14 -0
  58. package/dist/cjs/voltra/models/telemetry/index.js.map +1 -0
  59. package/dist/cjs/voltra/protocol/commands.js +230 -0
  60. package/dist/cjs/voltra/protocol/commands.js.map +1 -0
  61. package/dist/cjs/voltra/protocol/constants.js +136 -0
  62. package/dist/cjs/voltra/protocol/constants.js.map +1 -0
  63. package/dist/cjs/voltra/protocol/data/chains.json +830 -0
  64. package/dist/cjs/voltra/protocol/data/eccentric.json +1598 -0
  65. package/dist/cjs/voltra/protocol/data/protocol.json +54 -0
  66. package/dist/cjs/voltra/protocol/data/weights.json +62 -0
  67. package/dist/cjs/voltra/protocol/index.js +25 -0
  68. package/dist/cjs/voltra/protocol/index.js.map +1 -0
  69. package/dist/cjs/voltra/protocol/telemetry-decoder.js +146 -0
  70. package/dist/cjs/voltra/protocol/telemetry-decoder.js.map +1 -0
  71. package/dist/esm/bluetooth/adapters/base.js +112 -0
  72. package/dist/esm/bluetooth/adapters/base.js.map +1 -0
  73. package/dist/esm/bluetooth/adapters/index.js +51 -0
  74. package/dist/esm/bluetooth/adapters/index.js.map +1 -0
  75. package/dist/esm/bluetooth/adapters/native.js +469 -0
  76. package/dist/esm/bluetooth/adapters/native.js.map +1 -0
  77. package/dist/esm/bluetooth/adapters/node.js +191 -0
  78. package/dist/esm/bluetooth/adapters/node.js.map +1 -0
  79. package/dist/esm/bluetooth/adapters/types.js +10 -0
  80. package/dist/esm/bluetooth/adapters/types.js.map +1 -0
  81. package/dist/esm/bluetooth/adapters/web-bluetooth-base.js +183 -0
  82. package/dist/esm/bluetooth/adapters/web-bluetooth-base.js.map +1 -0
  83. package/dist/esm/bluetooth/adapters/web.js +108 -0
  84. package/dist/esm/bluetooth/adapters/web.js.map +1 -0
  85. package/dist/esm/bluetooth/controllers/scanner-controller.js +141 -0
  86. package/dist/esm/bluetooth/controllers/scanner-controller.js.map +1 -0
  87. package/dist/esm/bluetooth/index.js +17 -0
  88. package/dist/esm/bluetooth/index.js.map +1 -0
  89. package/dist/esm/bluetooth/models/connection.js +63 -0
  90. package/dist/esm/bluetooth/models/connection.js.map +1 -0
  91. package/dist/esm/bluetooth/models/device.js +22 -0
  92. package/dist/esm/bluetooth/models/device.js.map +1 -0
  93. package/dist/esm/bluetooth/models/environment.js +101 -0
  94. package/dist/esm/bluetooth/models/environment.js.map +1 -0
  95. package/dist/esm/errors.js +155 -0
  96. package/dist/esm/errors.js.map +1 -0
  97. package/dist/esm/index.js +72 -0
  98. package/dist/esm/index.js.map +1 -0
  99. package/dist/esm/react/hooks.js +257 -0
  100. package/dist/esm/react/hooks.js.map +1 -0
  101. package/dist/esm/react/index.js +12 -0
  102. package/dist/esm/react/index.js.map +1 -0
  103. package/dist/esm/sdk/index.js +9 -0
  104. package/dist/esm/sdk/index.js.map +1 -0
  105. package/dist/esm/sdk/types.js +7 -0
  106. package/dist/esm/sdk/types.js.map +1 -0
  107. package/dist/esm/sdk/voltra-client.js +628 -0
  108. package/dist/esm/sdk/voltra-client.js.map +1 -0
  109. package/dist/esm/sdk/voltra-manager.js +415 -0
  110. package/dist/esm/sdk/voltra-manager.js.map +1 -0
  111. package/dist/esm/shared/index.js +5 -0
  112. package/dist/esm/shared/index.js.map +1 -0
  113. package/dist/esm/shared/utils.js +45 -0
  114. package/dist/esm/shared/utils.js.map +1 -0
  115. package/dist/esm/voltra/index.js +26 -0
  116. package/dist/esm/voltra/index.js.map +1 -0
  117. package/dist/esm/voltra/models/connection.js +63 -0
  118. package/dist/esm/voltra/models/connection.js.map +1 -0
  119. package/dist/esm/voltra/models/device-filter.js +23 -0
  120. package/dist/esm/voltra/models/device-filter.js.map +1 -0
  121. package/dist/esm/voltra/models/device.js +148 -0
  122. package/dist/esm/voltra/models/device.js.map +1 -0
  123. package/dist/esm/voltra/models/telemetry/frame.js +40 -0
  124. package/dist/esm/voltra/models/telemetry/frame.js.map +1 -0
  125. package/dist/esm/voltra/models/telemetry/index.js +7 -0
  126. package/dist/esm/voltra/models/telemetry/index.js.map +1 -0
  127. package/dist/esm/voltra/protocol/commands.js +224 -0
  128. package/dist/esm/voltra/protocol/commands.js.map +1 -0
  129. package/dist/esm/voltra/protocol/constants.js +130 -0
  130. package/dist/esm/voltra/protocol/constants.js.map +1 -0
  131. package/dist/esm/voltra/protocol/data/chains.json +830 -0
  132. package/dist/esm/voltra/protocol/data/eccentric.json +1598 -0
  133. package/dist/esm/voltra/protocol/data/protocol.json +54 -0
  134. package/dist/esm/voltra/protocol/data/weights.json +62 -0
  135. package/dist/esm/voltra/protocol/index.js +9 -0
  136. package/dist/esm/voltra/protocol/index.js.map +1 -0
  137. package/dist/esm/voltra/protocol/telemetry-decoder.js +140 -0
  138. package/dist/esm/voltra/protocol/telemetry-decoder.js.map +1 -0
  139. package/dist/types/bluetooth/adapters/base.d.ts +85 -0
  140. package/dist/types/bluetooth/adapters/base.d.ts.map +1 -0
  141. package/dist/types/bluetooth/adapters/index.d.ts +35 -0
  142. package/dist/types/bluetooth/adapters/index.d.ts.map +1 -0
  143. package/dist/types/bluetooth/adapters/native.d.ts +109 -0
  144. package/dist/types/bluetooth/adapters/native.d.ts.map +1 -0
  145. package/dist/types/bluetooth/adapters/node.d.ts +91 -0
  146. package/dist/types/bluetooth/adapters/node.d.ts.map +1 -0
  147. package/dist/types/bluetooth/adapters/types.d.ts +102 -0
  148. package/dist/types/bluetooth/adapters/types.d.ts.map +1 -0
  149. package/dist/types/bluetooth/adapters/web-bluetooth-base.d.ts +90 -0
  150. package/dist/types/bluetooth/adapters/web-bluetooth-base.d.ts.map +1 -0
  151. package/dist/types/bluetooth/adapters/web.d.ts +57 -0
  152. package/dist/types/bluetooth/adapters/web.d.ts.map +1 -0
  153. package/dist/types/bluetooth/controllers/scanner-controller.d.ts +93 -0
  154. package/dist/types/bluetooth/controllers/scanner-controller.d.ts.map +1 -0
  155. package/dist/types/bluetooth/index.d.ts +14 -0
  156. package/dist/types/bluetooth/index.d.ts.map +1 -0
  157. package/dist/types/bluetooth/models/connection.d.ts +37 -0
  158. package/dist/types/bluetooth/models/connection.d.ts.map +1 -0
  159. package/dist/types/bluetooth/models/device.d.ts +25 -0
  160. package/dist/types/bluetooth/models/device.d.ts.map +1 -0
  161. package/dist/types/bluetooth/models/environment.d.ts +45 -0
  162. package/dist/types/bluetooth/models/environment.d.ts.map +1 -0
  163. package/dist/types/errors.d.ts +113 -0
  164. package/dist/types/errors.d.ts.map +1 -0
  165. package/dist/types/index.d.ts +55 -0
  166. package/dist/types/index.d.ts.map +1 -0
  167. package/dist/types/react/hooks.d.ts +130 -0
  168. package/dist/types/react/hooks.d.ts.map +1 -0
  169. package/dist/types/react/index.d.ts +12 -0
  170. package/dist/types/react/index.d.ts.map +1 -0
  171. package/dist/types/sdk/index.d.ts +11 -0
  172. package/dist/types/sdk/index.d.ts.map +1 -0
  173. package/dist/types/sdk/types.d.ts +104 -0
  174. package/dist/types/sdk/types.d.ts.map +1 -0
  175. package/dist/types/sdk/voltra-client.d.ts +221 -0
  176. package/dist/types/sdk/voltra-client.d.ts.map +1 -0
  177. package/dist/types/sdk/voltra-manager.d.ts +226 -0
  178. package/dist/types/sdk/voltra-manager.d.ts.map +1 -0
  179. package/dist/types/shared/index.d.ts +5 -0
  180. package/dist/types/shared/index.d.ts.map +1 -0
  181. package/dist/types/shared/utils.d.ts +25 -0
  182. package/dist/types/shared/utils.d.ts.map +1 -0
  183. package/dist/types/voltra/index.d.ts +13 -0
  184. package/dist/types/voltra/index.d.ts.map +1 -0
  185. package/dist/types/voltra/models/connection.d.ts +37 -0
  186. package/dist/types/voltra/models/connection.d.ts.map +1 -0
  187. package/dist/types/voltra/models/device-filter.d.ts +19 -0
  188. package/dist/types/voltra/models/device-filter.d.ts.map +1 -0
  189. package/dist/types/voltra/models/device.d.ts +105 -0
  190. package/dist/types/voltra/models/device.d.ts.map +1 -0
  191. package/dist/types/voltra/models/telemetry/frame.d.ts +41 -0
  192. package/dist/types/voltra/models/telemetry/frame.d.ts.map +1 -0
  193. package/dist/types/voltra/models/telemetry/index.d.ts +8 -0
  194. package/dist/types/voltra/models/telemetry/index.d.ts.map +1 -0
  195. package/dist/types/voltra/protocol/commands.d.ts +99 -0
  196. package/dist/types/voltra/protocol/commands.d.ts.map +1 -0
  197. package/dist/types/voltra/protocol/constants.d.ts +103 -0
  198. package/dist/types/voltra/protocol/constants.d.ts.map +1 -0
  199. package/dist/types/voltra/protocol/index.d.ts +9 -0
  200. package/dist/types/voltra/protocol/index.d.ts.map +1 -0
  201. package/dist/types/voltra/protocol/telemetry-decoder.d.ts +45 -0
  202. package/dist/types/voltra/protocol/telemetry-decoder.d.ts.map +1 -0
  203. package/package.json +111 -0
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Voltra Protocol Constants
3
+ *
4
+ * BLE configuration, authentication, and command constants for
5
+ * Beyond Power Voltra resistance training devices.
6
+ */
7
+ export declare const BLE: {
8
+ /** Main service UUID for Voltra devices */
9
+ readonly SERVICE_UUID: string;
10
+ /** Characteristic for receiving notifications */
11
+ readonly NOTIFY_CHAR_UUID: string;
12
+ /** Characteristic for writing commands */
13
+ readonly WRITE_CHAR_UUID: string;
14
+ /** Device name prefix for scanning (e.g., "VTR-") */
15
+ readonly DEVICE_NAME_PREFIX: string;
16
+ };
17
+ export declare const Timing: {
18
+ /** Delay between init commands (ms) */
19
+ readonly INIT_COMMAND_DELAY_MS: 20;
20
+ /** Delay between dual commands like chains/eccentric (ms) */
21
+ readonly DUAL_COMMAND_DELAY_MS: 500;
22
+ /** Timeout for authentication response (ms) */
23
+ readonly AUTH_TIMEOUT_MS: 3000;
24
+ /** Minimum responses expected during auth */
25
+ readonly MIN_AUTH_RESPONSES: 2;
26
+ /** Minimum responses expected after commands */
27
+ readonly MIN_COMMAND_RESPONSES: 4;
28
+ };
29
+ /**
30
+ * Device authentication identifiers.
31
+ *
32
+ * 41-byte device IDs that identify the connecting app.
33
+ * Both iPhone and iPad IDs work - the Voltra doesn't care which.
34
+ */
35
+ export declare const Auth: {
36
+ /** iPhone identity from Beyond+ app */
37
+ readonly DEVICE_ID: Uint8Array<ArrayBufferLike>;
38
+ /** iPad identity (alternative) */
39
+ readonly DEVICE_ID_IPAD: Uint8Array<ArrayBufferLike>;
40
+ };
41
+ /**
42
+ * Minimal 2-command init sequence (reduced from 22+ in Beyond+ app).
43
+ */
44
+ export declare const Init: {
45
+ readonly SEQUENCE: Uint8Array<ArrayBufferLike>[];
46
+ };
47
+ /**
48
+ * Workout control commands.
49
+ *
50
+ * To start: set weight -> PREPARE -> SETUP -> GO
51
+ * To stop: STOP
52
+ */
53
+ export declare const Workout: {
54
+ /** Prepare for workout (b04f=01) */
55
+ readonly PREPARE: Uint8Array<ArrayBufferLike>;
56
+ /** Setup workout mode (823e setup) */
57
+ readonly SETUP: Uint8Array<ArrayBufferLike>;
58
+ /** Start resistance (893e=05) */
59
+ readonly GO: Uint8Array<ArrayBufferLike>;
60
+ /** Stop resistance (893e=04) */
61
+ readonly STOP: Uint8Array<ArrayBufferLike>;
62
+ };
63
+ /**
64
+ * Message type identifiers (first 4 bytes of notifications).
65
+ * Values loaded from protocol.json for single source of truth.
66
+ */
67
+ export declare const MessageTypes: {
68
+ /** Real-time telemetry stream (~11 Hz) */
69
+ readonly TELEMETRY_STREAM: Uint8Array<ArrayBufferLike>;
70
+ /** Rep completion summary */
71
+ readonly REP_SUMMARY: Uint8Array<ArrayBufferLike>;
72
+ /** Set completion summary */
73
+ readonly SET_SUMMARY: Uint8Array<ArrayBufferLike>;
74
+ /** Status update */
75
+ readonly STATUS_UPDATE: Uint8Array<ArrayBufferLike>;
76
+ };
77
+ /**
78
+ * Byte offsets for parsing telemetry stream messages.
79
+ * Values loaded from protocol.json for single source of truth.
80
+ */
81
+ export declare const TelemetryOffsets: {
82
+ readonly SEQUENCE: number;
83
+ readonly PHASE: number;
84
+ readonly POSITION: number;
85
+ readonly FORCE: number;
86
+ readonly VELOCITY: number;
87
+ };
88
+ /**
89
+ * Movement phase during workout.
90
+ * Values match protocol.json telemetry.phases.
91
+ */
92
+ export declare enum MovementPhase {
93
+ IDLE = 0,// protocolData.telemetry.phases.idle
94
+ CONCENTRIC = 1,// protocolData.telemetry.phases.concentric - Pulling (muscle shortening)
95
+ HOLD = 2,// protocolData.telemetry.phases.hold - Top of rep / transition
96
+ ECCENTRIC = 3,// protocolData.telemetry.phases.eccentric - Releasing (muscle lengthening)
97
+ UNKNOWN = -1
98
+ }
99
+ /**
100
+ * Human-readable phase names.
101
+ */
102
+ export declare const PhaseNames: Record<MovementPhase, string>;
103
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/voltra/protocol/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,eAAO,MAAM,GAAG;IACd,2CAA2C;;IAE3C,iDAAiD;;IAEjD,0CAA0C;;IAE1C,qDAAqD;;CAE7C,CAAC;AAMX,eAAO,MAAM,MAAM;IACjB,uCAAuC;;IAEvC,6DAA6D;;IAE7D,+CAA+C;;IAE/C,6CAA6C;;IAE7C,gDAAgD;;CAExC,CAAC;AAMX;;;;;GAKG;AACH,eAAO,MAAM,IAAI;IACf,uCAAuC;;IAEvC,kCAAkC;;CAE1B,CAAC;AAMX;;GAEG;AACH,eAAO,MAAM,IAAI;;CAEP,CAAC;AAMX;;;;;GAKG;AACH,eAAO,MAAM,OAAO;IAClB,oCAAoC;;IAEpC,sCAAsC;;IAEtC,iCAAiC;;IAEjC,gCAAgC;;CAExB,CAAC;AAMX;;;GAGG;AACH,eAAO,MAAM,YAAY;IACvB,0CAA0C;;IAE1C,6BAA6B;;IAE7B,6BAA6B;;IAE7B,oBAAoB;;CAEZ,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;CAMnB,CAAC;AAEX;;;GAGG;AACH,oBAAY,aAAa;IACvB,IAAI,IAAI,CAAE,qCAAqC;IAC/C,UAAU,IAAI,CAAE,yEAAyE;IACzF,IAAI,IAAI,CAAE,+DAA+D;IACzE,SAAS,IAAI,CAAE,2EAA2E;IAC1F,OAAO,KAAK;CACb;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAMpD,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Voltra Protocol Module
3
+ *
4
+ * Complete TypeScript implementation of the Voltra BLE protocol.
5
+ */
6
+ export * from './constants';
7
+ export * from './commands';
8
+ export * from './telemetry-decoder';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/voltra/protocol/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Telemetry Decoder
3
+ *
4
+ * Low-level protocol decoder for Voltra BLE telemetry notifications.
5
+ * Only handles parsing bytes into typed data - no business logic.
6
+ */
7
+ import { type TelemetryFrame } from '../models/telemetry/frame';
8
+ /**
9
+ * Types of messages that can be decoded.
10
+ */
11
+ export type MessageType = 'telemetry_stream' | 'rep_summary' | 'set_summary' | 'status_update' | 'unknown';
12
+ /**
13
+ * Identify the message type from raw bytes.
14
+ */
15
+ export declare function identifyMessageType(data: Uint8Array): MessageType;
16
+ /**
17
+ * Result of decoding a telemetry notification.
18
+ */
19
+ export type DecodeResult = {
20
+ type: 'frame';
21
+ frame: TelemetryFrame;
22
+ } | {
23
+ type: 'rep_boundary';
24
+ } | {
25
+ type: 'set_boundary';
26
+ } | {
27
+ type: 'status';
28
+ data: Uint8Array;
29
+ } | null;
30
+ /**
31
+ * Decode a telemetry stream message into a TelemetryFrame.
32
+ */
33
+ export declare function decodeTelemetryFrame(data: Uint8Array): TelemetryFrame | null;
34
+ /**
35
+ * Decode a BLE notification.
36
+ * Returns structured data based on message type.
37
+ */
38
+ export declare function decodeNotification(data: Uint8Array): DecodeResult;
39
+ /**
40
+ * Encode a TelemetryFrame into a BLE notification payload.
41
+ * Creates a minimal 30-byte message that can be decoded by decodeTelemetryFrame.
42
+ * Used for replay functionality.
43
+ */
44
+ export declare function encodeTelemetryFrame(frame: TelemetryFrame): Uint8Array;
45
+ //# sourceMappingURL=telemetry-decoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-decoder.d.ts","sourceRoot":"","sources":["../../../../src/voltra/protocol/telemetry-decoder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AA4C7E;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,aAAa,GACb,aAAa,GACb,eAAe,GACf,SAAS,CAAC;AAEd;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAgBjE;AAMD;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GACpC,IAAI,CAAC;AAMT;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,IAAI,CAuB5E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CAuBjE;AAMD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,UAAU,CAyBtE"}
package/package.json ADDED
@@ -0,0 +1,111 @@
1
+ {
2
+ "name": "@voltras/node-sdk",
3
+ "version": "0.1.0",
4
+ "description": "SDK for connecting to and controlling Voltra fitness devices",
5
+ "main": "./dist/cjs/index.js",
6
+ "module": "./dist/esm/index.js",
7
+ "types": "./dist/types/index.d.ts",
8
+ "sideEffects": false,
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./dist/types/index.d.ts",
13
+ "default": "./dist/esm/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/types/index.d.ts",
17
+ "default": "./dist/cjs/index.js"
18
+ }
19
+ },
20
+ "./react": {
21
+ "import": {
22
+ "types": "./dist/types/react/index.d.ts",
23
+ "default": "./dist/esm/react/index.js"
24
+ },
25
+ "require": {
26
+ "types": "./dist/types/react/index.d.ts",
27
+ "default": "./dist/cjs/react/index.js"
28
+ }
29
+ }
30
+ },
31
+ "files": [
32
+ "dist"
33
+ ],
34
+ "scripts": {
35
+ "build": "npm run clean && npm run build:esm && npm run build:cjs",
36
+ "build:esm": "tsc -p tsconfig.esm.json",
37
+ "build:cjs": "tsc -p tsconfig.cjs.json",
38
+ "test": "vitest run",
39
+ "test:watch": "vitest",
40
+ "test:coverage": "vitest run --coverage",
41
+ "lint": "eslint src",
42
+ "lint:fix": "eslint src --fix",
43
+ "format": "prettier --write \"src/**/*.ts\"",
44
+ "format:check": "prettier --check \"src/**/*.ts\"",
45
+ "typecheck": "tsc --noEmit",
46
+ "docs:api": "typedoc --out docs/api src/index.ts",
47
+ "clean": "rm -rf dist",
48
+ "prepublishOnly": "npm run clean && npm run build && npm run test",
49
+ "prepare": "husky"
50
+ },
51
+ "peerDependencies": {
52
+ "react": ">=17.0.0",
53
+ "react-native-ble-plx": ">=3.0.0"
54
+ },
55
+ "peerDependenciesMeta": {
56
+ "react": {
57
+ "optional": true
58
+ },
59
+ "react-native-ble-plx": {
60
+ "optional": true
61
+ }
62
+ },
63
+ "optionalDependencies": {
64
+ "webbluetooth": "^3.4.0"
65
+ },
66
+ "devDependencies": {
67
+ "@commitlint/cli": "^19.6.0",
68
+ "@commitlint/config-conventional": "^19.6.0",
69
+ "@types/node": "^20.0.0",
70
+ "@types/react": "^19.0.0",
71
+ "@types/web-bluetooth": "^0.0.21",
72
+ "@vitest/coverage-v8": "^4.0.0",
73
+ "eslint": "^9.18.0",
74
+ "husky": "^9.1.0",
75
+ "lint-staged": "^15.3.0",
76
+ "prettier": "^3.4.0",
77
+ "typedoc": "^0.27.0",
78
+ "typescript": "~5.8.2",
79
+ "typescript-eslint": "^8.21.0",
80
+ "vitest": "^4.0.17"
81
+ },
82
+ "lint-staged": {
83
+ "*.ts": [
84
+ "eslint --fix",
85
+ "prettier --write"
86
+ ]
87
+ },
88
+ "keywords": [
89
+ "voltra",
90
+ "bluetooth",
91
+ "ble",
92
+ "fitness",
93
+ "sdk",
94
+ "react-native",
95
+ "node",
96
+ "web-bluetooth"
97
+ ],
98
+ "repository": {
99
+ "type": "git",
100
+ "url": "https://github.com/HJewkes/voltra-node-sdk.git"
101
+ },
102
+ "bugs": {
103
+ "url": "https://github.com/HJewkes/voltra-node-sdk/issues"
104
+ },
105
+ "homepage": "https://github.com/HJewkes/voltra-node-sdk#readme",
106
+ "author": "Voltra",
107
+ "license": "MIT",
108
+ "engines": {
109
+ "node": ">=18.0.0"
110
+ }
111
+ }