brilliantsole 0.0.16 → 0.0.18

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 (41) hide show
  1. package/README.md +12 -0
  2. package/build/brilliantsole.cjs +51 -11
  3. package/build/brilliantsole.cjs.map +1 -1
  4. package/build/brilliantsole.js +53 -13
  5. package/build/brilliantsole.js.map +1 -1
  6. package/build/brilliantsole.ls.js +49 -11
  7. package/build/brilliantsole.ls.js.map +1 -1
  8. package/build/brilliantsole.min.js +1 -1
  9. package/build/brilliantsole.min.js.map +1 -1
  10. package/build/brilliantsole.module.d.ts +35 -21
  11. package/build/brilliantsole.module.js +53 -14
  12. package/build/brilliantsole.module.js.map +1 -1
  13. package/build/brilliantsole.module.min.d.ts +35 -21
  14. package/build/brilliantsole.module.min.js +1 -1
  15. package/build/brilliantsole.module.min.js.map +1 -1
  16. package/build/brilliantsole.node.module.d.ts +28 -14
  17. package/build/brilliantsole.node.module.js +51 -12
  18. package/build/brilliantsole.node.module.js.map +1 -1
  19. package/build/dts/BS.d.ts +1 -0
  20. package/build/dts/connection/BaseConnectionManager.d.ts +2 -0
  21. package/build/dts/utils/RangeHelper.d.ts +4 -0
  22. package/build/index.d.ts +15 -1
  23. package/build/index.node.d.ts +15 -1
  24. package/examples/3d/index.html +15 -0
  25. package/examples/3d/scene.html +23 -1
  26. package/examples/3d/script.js +0 -9
  27. package/examples/bottango/index.html +113 -0
  28. package/examples/bottango/script.js +345 -0
  29. package/examples/server/script.js +5 -5
  30. package/package.json +4 -1
  31. package/src/BS.ts +2 -0
  32. package/src/Device.ts +9 -2
  33. package/src/FileTransferManager.ts +3 -1
  34. package/src/InformationManager.ts +3 -3
  35. package/src/connection/BaseConnectionManager.ts +11 -1
  36. package/src/connection/ClientConnectionManager.ts +4 -0
  37. package/src/connection/bluetooth/BluetoothConnectionManager.ts +3 -0
  38. package/src/connection/bluetooth/NobleConnectionManager.ts +6 -0
  39. package/src/connection/bluetooth/WebBluetoothConnectionManager.ts +1 -1
  40. package/src/server/BaseClient.ts +2 -2
  41. package/src/utils/RangeHelper.ts +22 -1
package/README.md CHANGED
@@ -19,3 +19,15 @@ if it doesn't work, try turning the firewall off
19
19
 
20
20
  if you have issues saving or running stuff on mac, try:
21
21
  `sudo chown -R username directory_name`
22
+
23
+ ## Running the Node.js server for WebSocket/UDP stuff
24
+
25
+ __To insall via npm:__
26
+ ```javascript
27
+ npm install brilliantsole
28
+ ```
29
+
30
+ __to add in a webpage:__
31
+ ```html
32
+ <script src="https://unpkg.com/brilliantsole@latest/build/brilliantsole.js"></script>
33
+ ```
@@ -779,7 +779,9 @@ _a$6 = FileTransferManager, _FileTransferManager_maxLength = new WeakMap(), _Fil
779
779
  return;
780
780
  }
781
781
  if (!__classPrivateFieldGet(this, _FileTransferManager_buffer, "f")) {
782
- _console$x.error("no buffer defined");
782
+ if (!this.isServerSide) {
783
+ _console$x.error("no buffer defined");
784
+ }
783
785
  return;
784
786
  }
785
787
  const buffer = __classPrivateFieldGet(this, _FileTransferManager_buffer, "f");
@@ -840,19 +842,36 @@ function parseTimestamp(dataView, byteOffset) {
840
842
  return timestamp;
841
843
  }
842
844
 
843
- var _RangeHelper_range;
845
+ var _RangeHelper_instances, _RangeHelper_range, _RangeHelper_updateSpan;
844
846
  const initialRange = { min: Infinity, max: -Infinity, span: 0 };
845
847
  class RangeHelper {
846
848
  constructor() {
849
+ _RangeHelper_instances.add(this);
847
850
  _RangeHelper_range.set(this, Object.assign({}, initialRange));
848
851
  }
852
+ get min() {
853
+ return __classPrivateFieldGet(this, _RangeHelper_range, "f").min;
854
+ }
855
+ get max() {
856
+ return __classPrivateFieldGet(this, _RangeHelper_range, "f").max;
857
+ }
858
+ set min(newMin) {
859
+ __classPrivateFieldGet(this, _RangeHelper_range, "f").min = newMin;
860
+ __classPrivateFieldGet(this, _RangeHelper_range, "f").max = Math.max(newMin, __classPrivateFieldGet(this, _RangeHelper_range, "f").max);
861
+ __classPrivateFieldGet(this, _RangeHelper_instances, "m", _RangeHelper_updateSpan).call(this);
862
+ }
863
+ set max(newMax) {
864
+ __classPrivateFieldGet(this, _RangeHelper_range, "f").max = newMax;
865
+ __classPrivateFieldGet(this, _RangeHelper_range, "f").min = Math.min(newMax, __classPrivateFieldGet(this, _RangeHelper_range, "f").min);
866
+ __classPrivateFieldGet(this, _RangeHelper_instances, "m", _RangeHelper_updateSpan).call(this);
867
+ }
849
868
  reset() {
850
869
  Object.assign(__classPrivateFieldGet(this, _RangeHelper_range, "f"), initialRange);
851
870
  }
852
871
  update(value) {
853
872
  __classPrivateFieldGet(this, _RangeHelper_range, "f").min = Math.min(value, __classPrivateFieldGet(this, _RangeHelper_range, "f").min);
854
873
  __classPrivateFieldGet(this, _RangeHelper_range, "f").max = Math.max(value, __classPrivateFieldGet(this, _RangeHelper_range, "f").max);
855
- __classPrivateFieldGet(this, _RangeHelper_range, "f").span = __classPrivateFieldGet(this, _RangeHelper_range, "f").max - __classPrivateFieldGet(this, _RangeHelper_range, "f").min;
874
+ __classPrivateFieldGet(this, _RangeHelper_instances, "m", _RangeHelper_updateSpan).call(this);
856
875
  }
857
876
  getNormalization(value, weightByRange) {
858
877
  let normalization = getInterpolation(value, __classPrivateFieldGet(this, _RangeHelper_range, "f").min, __classPrivateFieldGet(this, _RangeHelper_range, "f").max, __classPrivateFieldGet(this, _RangeHelper_range, "f").span);
@@ -866,7 +885,9 @@ class RangeHelper {
866
885
  return this.getNormalization(value, weightByRange);
867
886
  }
868
887
  }
869
- _RangeHelper_range = new WeakMap();
888
+ _RangeHelper_range = new WeakMap(), _RangeHelper_instances = new WeakSet(), _RangeHelper_updateSpan = function _RangeHelper_updateSpan() {
889
+ __classPrivateFieldGet(this, _RangeHelper_range, "f").span = __classPrivateFieldGet(this, _RangeHelper_range, "f").max - __classPrivateFieldGet(this, _RangeHelper_range, "f").min;
890
+ };
870
891
 
871
892
  var _CenterOfPressureHelper_range;
872
893
  class CenterOfPressureHelper {
@@ -2017,14 +2038,14 @@ _InformationManager_isCharging = new WeakMap(), _InformationManager_batteryCurre
2017
2038
  _console$n.log({ currentTime });
2018
2039
  __classPrivateFieldSet(this, _InformationManager_isCurrentTimeSet, currentTime != 0 || Math.abs(Date.now() - currentTime) < Uint16Max, "f");
2019
2040
  if (!__classPrivateFieldGet(this, _InformationManager_isCurrentTimeSet, "f")) {
2020
- __classPrivateFieldGet(this, _InformationManager_instances, "m", _InformationManager_setCurrentTime).call(this);
2041
+ __classPrivateFieldGet(this, _InformationManager_instances, "m", _InformationManager_setCurrentTime).call(this, false);
2021
2042
  }
2022
- }, _InformationManager_setCurrentTime = async function _InformationManager_setCurrentTime() {
2043
+ }, _InformationManager_setCurrentTime = async function _InformationManager_setCurrentTime(sendImmediately) {
2023
2044
  _console$n.log("setting current time...");
2024
2045
  const dataView = new DataView(new ArrayBuffer(8));
2025
2046
  dataView.setBigUint64(0, BigInt(Date.now()), true);
2026
2047
  const promise = this.waitForEvent("getCurrentTime");
2027
- this.sendMessage([{ type: "setCurrentTime", data: dataView.buffer }]);
2048
+ this.sendMessage([{ type: "setCurrentTime", data: dataView.buffer }], sendImmediately);
2028
2049
  await promise;
2029
2050
  };
2030
2051
 
@@ -2334,7 +2355,7 @@ _VibrationManager_instances = new WeakSet(), _VibrationManager_verifyLocation =
2334
2355
  return data;
2335
2356
  };
2336
2357
 
2337
- var _BaseConnectionManager_instances, _a$4, _BaseConnectionManager_AssertValidTxRxMessageType, _BaseConnectionManager_assertIsSupported, _BaseConnectionManager_status, _BaseConnectionManager_assertIsNotConnected, _BaseConnectionManager_assertIsNotConnecting, _BaseConnectionManager_assertIsConnected, _BaseConnectionManager_assertIsNotDisconnecting, _BaseConnectionManager_assertIsConnectedAndNotDisconnecting, _BaseConnectionManager_pendingMessages, _BaseConnectionManager_onRxMessage, _BaseConnectionManager_timer, _BaseConnectionManager_checkConnection;
2358
+ var _BaseConnectionManager_instances, _a$4, _BaseConnectionManager_AssertValidTxRxMessageType, _BaseConnectionManager_assertIsSupported, _BaseConnectionManager_status, _BaseConnectionManager_assertIsNotConnected, _BaseConnectionManager_assertIsNotConnecting, _BaseConnectionManager_assertIsConnected, _BaseConnectionManager_assertIsNotDisconnecting, _BaseConnectionManager_assertIsConnectedAndNotDisconnecting, _BaseConnectionManager_pendingMessages, _BaseConnectionManager_isSendingMessages, _BaseConnectionManager_onRxMessage, _BaseConnectionManager_timer, _BaseConnectionManager_checkConnection;
2338
2359
  const _console$l = createConsole("BaseConnectionManager", { log: true });
2339
2360
  const ConnectionStatuses = ["notConnected", "connecting", "connected", "disconnecting"];
2340
2361
  const ConnectionEventTypes = [...ConnectionStatuses, "connectionStatus", "isConnected"];
@@ -2373,6 +2394,7 @@ class BaseConnectionManager {
2373
2394
  _BaseConnectionManager_instances.add(this);
2374
2395
  _BaseConnectionManager_status.set(this, "notConnected");
2375
2396
  _BaseConnectionManager_pendingMessages.set(this, []);
2397
+ _BaseConnectionManager_isSendingMessages.set(this, false);
2376
2398
  _BaseConnectionManager_timer.set(this, new Timer(__classPrivateFieldGet(this, _BaseConnectionManager_instances, "m", _BaseConnectionManager_checkConnection).bind(this), 5000));
2377
2399
  __classPrivateFieldGet(this, _BaseConnectionManager_instances, "m", _BaseConnectionManager_assertIsSupported).call(this);
2378
2400
  }
@@ -2432,6 +2454,10 @@ class BaseConnectionManager {
2432
2454
  if (!sendImmediately) {
2433
2455
  return;
2434
2456
  }
2457
+ if (__classPrivateFieldGet(this, _BaseConnectionManager_isSendingMessages, "f")) {
2458
+ return;
2459
+ }
2460
+ __classPrivateFieldSet(this, _BaseConnectionManager_isSendingMessages, true, "f");
2435
2461
  _console$l.log("sendTxMessages", __classPrivateFieldGet(this, _BaseConnectionManager_pendingMessages, "f").slice());
2436
2462
  const arrayBuffers = __classPrivateFieldGet(this, _BaseConnectionManager_pendingMessages, "f").map((message) => {
2437
2463
  __classPrivateFieldGet(_a$4, _a$4, "m", _BaseConnectionManager_AssertValidTxRxMessageType).call(_a$4, message.type);
@@ -2464,15 +2490,17 @@ class BaseConnectionManager {
2464
2490
  await this.sendTxData(arrayBuffer);
2465
2491
  }
2466
2492
  __classPrivateFieldGet(this, _BaseConnectionManager_pendingMessages, "f").length = 0;
2493
+ __classPrivateFieldSet(this, _BaseConnectionManager_isSendingMessages, false, "f");
2467
2494
  }
2468
2495
  async sendTxData(data) {
2469
2496
  _console$l.log("sendTxData", data);
2470
2497
  }
2471
2498
  parseRxMessage(dataView) {
2472
2499
  parseMessage(dataView, TxRxMessageTypes, __classPrivateFieldGet(this, _BaseConnectionManager_instances, "m", _BaseConnectionManager_onRxMessage).bind(this), null, true);
2500
+ this.onMessagesReceived();
2473
2501
  }
2474
2502
  }
2475
- _a$4 = BaseConnectionManager, _BaseConnectionManager_status = new WeakMap(), _BaseConnectionManager_pendingMessages = new WeakMap(), _BaseConnectionManager_timer = new WeakMap(), _BaseConnectionManager_instances = new WeakSet(), _BaseConnectionManager_AssertValidTxRxMessageType = function _BaseConnectionManager_AssertValidTxRxMessageType(messageType) {
2503
+ _a$4 = BaseConnectionManager, _BaseConnectionManager_status = new WeakMap(), _BaseConnectionManager_pendingMessages = new WeakMap(), _BaseConnectionManager_isSendingMessages = new WeakMap(), _BaseConnectionManager_timer = new WeakMap(), _BaseConnectionManager_instances = new WeakSet(), _BaseConnectionManager_AssertValidTxRxMessageType = function _BaseConnectionManager_AssertValidTxRxMessageType(messageType) {
2476
2504
  _console$l.assertEnumWithError(messageType, TxRxMessageTypes);
2477
2505
  }, _BaseConnectionManager_assertIsSupported = function _BaseConnectionManager_assertIsSupported() {
2478
2506
  _console$l.assertWithError(this.isSupported, `${this.constructor.name} is not supported`);
@@ -2706,6 +2734,9 @@ class BluetoothConnectionManager extends BaseConnectionManager {
2706
2734
  }
2707
2735
  async sendTxData(data) {
2708
2736
  super.sendTxData(data);
2737
+ if (data.byteLength == 0) {
2738
+ return;
2739
+ }
2709
2740
  await this.writeCharacteristic("tx", data);
2710
2741
  }
2711
2742
  }
@@ -2843,7 +2874,6 @@ _WebBluetoothConnectionManager_boundBluetoothCharacteristicEventListeners = new
2843
2874
  _console$h.log("getting services...");
2844
2875
  const services = await this.server.getPrimaryServices();
2845
2876
  _console$h.log("got services", services.length);
2846
- await this.server.getPrimaryService("8d53dc1d-1db7-4cd3-868b-8a527460aa84");
2847
2877
  _console$h.log("getting characteristics...");
2848
2878
  for (const serviceIndex in services) {
2849
2879
  const service = services[serviceIndex];
@@ -4126,7 +4156,7 @@ _DeviceManager_boundDeviceEventListeners = new WeakMap(), _DeviceManager_Connect
4126
4156
  DeviceManager.shared = new DeviceManager();
4127
4157
  var DeviceManager$1 = DeviceManager.shared;
4128
4158
 
4129
- var _Device_instances, _a$3, _Device_DefaultConnectionManager, _Device_eventDispatcher, _Device_dispatchEvent_get, _Device_connectionManager, _Device_sendTxMessages, _Device_isConnected, _Device_assertIsConnected, _Device_hasRequiredInformation_get, _Device_requestRequiredInformation, _Device_assertCanReconnect, _Device_ReconnectOnDisconnection, _Device_reconnectOnDisconnection, _Device_reconnectIntervalId, _Device_onConnectionStatusUpdated, _Device_dispatchConnectionEvents, _Device_checkConnection, _Device_clear, _Device_onConnectionMessageReceived, _Device_deviceInformationManager, _Device_batteryLevel, _Device_updateBatteryLevel, _Device_sensorConfigurationManager, _Device_ClearSensorConfigurationOnLeave, _Device_clearSensorConfigurationOnLeave, _Device_sensorDataManager, _Device_vibrationManager, _Device_fileTransferManager, _Device_tfliteManager, _Device_firmwareManager, _Device_sendSmpMessage, _Device_isServerSide;
4159
+ var _Device_instances, _a$3, _Device_DefaultConnectionManager, _Device_eventDispatcher, _Device_dispatchEvent_get, _Device_connectionManager, _Device_sendTxMessages, _Device_isConnected, _Device_assertIsConnected, _Device_hasRequiredInformation_get, _Device_requestRequiredInformation, _Device_assertCanReconnect, _Device_ReconnectOnDisconnection, _Device_reconnectOnDisconnection, _Device_reconnectIntervalId, _Device_onConnectionStatusUpdated, _Device_dispatchConnectionEvents, _Device_checkConnection, _Device_clear, _Device_onConnectionMessageReceived, _Device_onConnectionMessagesReceived, _Device_deviceInformationManager, _Device_batteryLevel, _Device_updateBatteryLevel, _Device_sensorConfigurationManager, _Device_ClearSensorConfigurationOnLeave, _Device_clearSensorConfigurationOnLeave, _Device_sensorDataManager, _Device_vibrationManager, _Device_fileTransferManager, _Device_tfliteManager, _Device_firmwareManager, _Device_sendSmpMessage, _Device_isServerSide;
4130
4160
  const _console$d = createConsole("Device", { log: true });
4131
4161
  const DeviceEventTypes = [
4132
4162
  "connectionMessage",
@@ -4251,10 +4281,12 @@ class Device {
4251
4281
  if (this.connectionManager) {
4252
4282
  this.connectionManager.onStatusUpdated = undefined;
4253
4283
  this.connectionManager.onMessageReceived = undefined;
4284
+ this.connectionManager.onMessagesReceived = undefined;
4254
4285
  }
4255
4286
  if (newConnectionManager) {
4256
4287
  newConnectionManager.onStatusUpdated = __classPrivateFieldGet(this, _Device_instances, "m", _Device_onConnectionStatusUpdated).bind(this);
4257
4288
  newConnectionManager.onMessageReceived = __classPrivateFieldGet(this, _Device_instances, "m", _Device_onConnectionMessageReceived).bind(this);
4289
+ newConnectionManager.onMessagesReceived = __classPrivateFieldGet(this, _Device_instances, "m", _Device_onConnectionMessagesReceived).bind(this);
4258
4290
  }
4259
4291
  __classPrivateFieldSet(this, _Device_connectionManager, newConnectionManager, "f");
4260
4292
  _console$d.log("assigned new connectionManager", __classPrivateFieldGet(this, _Device_connectionManager, "f"));
@@ -4631,9 +4663,14 @@ _a$3 = Device, _Device_eventDispatcher = new WeakMap(), _Device_connectionManage
4631
4663
  }
4632
4664
  this.latestConnectionMessage.set(messageType, dataView);
4633
4665
  __classPrivateFieldGet(this, _Device_instances, "a", _Device_dispatchEvent_get).call(this, "connectionMessage", { messageType, dataView });
4666
+ }, _Device_onConnectionMessagesReceived = function _Device_onConnectionMessagesReceived() {
4634
4667
  if (!this.isConnected && __classPrivateFieldGet(this, _Device_instances, "a", _Device_hasRequiredInformation_get)) {
4635
4668
  __classPrivateFieldGet(this, _Device_instances, "m", _Device_checkConnection).call(this);
4636
4669
  }
4670
+ if (this.connectionStatus == "notConnected") {
4671
+ return;
4672
+ }
4673
+ __classPrivateFieldGet(this, _Device_instances, "m", _Device_sendTxMessages).call(this);
4637
4674
  }, _Device_updateBatteryLevel = function _Device_updateBatteryLevel(updatedBatteryLevel) {
4638
4675
  _console$d.assertTypeWithError(updatedBatteryLevel, "number");
4639
4676
  if (__classPrivateFieldGet(this, _Device_batteryLevel, "f") == updatedBatteryLevel) {
@@ -5159,6 +5196,7 @@ class NobleConnectionManager extends BluetoothConnectionManager {
5159
5196
  __classPrivateFieldGet(this, _NobleConnectionManager_characteristics, "f").set(characteristicName, characteristic);
5160
5197
  characteristic.name = characteristicName;
5161
5198
  characteristic.connectionManager = this;
5199
+ _console$8.log(`adding listeners to characteristic "${characteristic.name}" (currently has ${characteristic.listeners.length} listeners)`);
5162
5200
  addEventListeners(characteristic, __classPrivateFieldGet(this, _NobleConnectionManager_unboundNobleCharacteristicListeners, "f"));
5163
5201
  if (characteristic.properties.includes("read")) {
5164
5202
  await characteristic.readAsync();
@@ -5217,6 +5255,7 @@ _NobleConnectionManager_noblePeripheral = new WeakMap(), _NobleConnectionManager
5217
5255
  });
5218
5256
  __classPrivateFieldGet(this, _NobleConnectionManager_services, "f").clear();
5219
5257
  __classPrivateFieldGet(this, _NobleConnectionManager_characteristics, "f").forEach((characteristic) => {
5258
+ _console$8.log(`removing listeners from characteristic "${characteristic.name}" has ${characteristic.listeners.length} listeners`);
5220
5259
  removeEventListeners(characteristic, __classPrivateFieldGet(this, _NobleConnectionManager_unboundNobleCharacteristicListeners, "f"));
5221
5260
  });
5222
5261
  __classPrivateFieldGet(this, _NobleConnectionManager_characteristics, "f").clear();
@@ -5987,6 +6026,7 @@ exports.MaxVibrationWaveformEffectSegmentLoopCount = MaxVibrationWaveformEffectS
5987
6026
  exports.MaxVibrationWaveformEffectSequenceLoopCount = MaxVibrationWaveformEffectSequenceLoopCount;
5988
6027
  exports.MaxVibrationWaveformSegmentDuration = MaxVibrationWaveformSegmentDuration;
5989
6028
  exports.MinNameLength = MinNameLength;
6029
+ exports.RangeHelper = RangeHelper;
5990
6030
  exports.Scanner = scanner$1;
5991
6031
  exports.SensorRateStep = SensorRateStep;
5992
6032
  exports.SensorTypes = SensorTypes;