dualsense-ts 5.0.1 → 5.0.3

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.
@@ -13,12 +13,12 @@ export declare class DualsenseHID {
13
13
  /**
14
14
  * Register a handler for HID state updates.
15
15
  */
16
- register(callback: (state: DualsenseHIDState) => void): void;
16
+ register(callback: HIDCallback): void;
17
17
  /**
18
18
  * Cancel a previously registered handler.
19
19
  */
20
- unregister(callback: (state: DualsenseHIDState) => void): void;
21
- on(type: "data" | "error", callback: ErrorCallback): void;
20
+ unregister(callback: HIDCallback): void;
21
+ on(type: "error", callback: ErrorCallback): void;
22
22
  private set;
23
23
  private handleError;
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dualsense_hid.d.ts","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAW,MAAM,gBAAgB,CAAC;AAEzE,oBAAY,WAAW,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAC7D,oBAAY,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAEnD;;GAEG;AACH,qBAAa,YAAY;IAgDX,QAAQ,CAAC,QAAQ,EAAE,WAAW;IA/C1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4B;IAEtD,KAAK,EAAE,iBAAiB,CA0C7B;gBAEmB,QAAQ,EAAE,WAAW;IAK1C;;OAEG;IACI,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAInE;;OAEG;IACI,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAI9D,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIhE,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,WAAW;CAOpB"}
1
+ {"version":3,"file":"dualsense_hid.d.ts","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAW,MAAM,gBAAgB,CAAC;AAEzE,oBAAY,WAAW,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAC7D,oBAAY,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAEnD;;GAEG;AACH,qBAAa,YAAY;IAgDX,QAAQ,CAAC,QAAQ,EAAE,WAAW;IA/C1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4B;IAEtD,KAAK,EAAE,iBAAiB,CA0C7B;gBAEmB,QAAQ,EAAE,WAAW;IAK1C;;OAEG;IACI,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAI5C;;OAEG;IACI,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAIvC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIvD,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,WAAW;CAGpB"}
@@ -77,10 +77,6 @@ class DualsenseHID {
77
77
  }
78
78
  handleError(error) {
79
79
  this.errorSubscribers.forEach((callback) => callback(error));
80
- setTimeout(() => {
81
- this.provider.disconnect();
82
- this.provider.connect();
83
- }, 50);
84
80
  }
85
81
  }
86
82
  exports.DualsenseHID = DualsenseHID;
@@ -1 +1 @@
1
- {"version":3,"file":"dualsense_hid.js","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dualsense_hid.js","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":";;;AAKA;;GAEG;AACH,MAAa,YAAY;IAgDvB,YAAqB,QAAqB;QAArB,aAAQ,GAAR,QAAQ,CAAa;QA/CzB,gBAAW,GAAG,IAAI,GAAG,EAAe,CAAC;QACrC,qBAAgB,GAAG,IAAI,GAAG,EAAiB,CAAC;QAEtD,UAAK,GAAsB;YAChC,gCAAqB,EAAE,CAAC;YACxB,gCAAqB,EAAE,CAAC;YACxB,iCAAsB,EAAE,CAAC;YACzB,iCAAsB,EAAE,CAAC;YACzB,gCAAqB,EAAE,CAAC;YACxB,iCAAsB,EAAE,CAAC;YACzB,mCAAkB,EAAE,KAAK;YACzB,+BAAgB,EAAE,KAAK;YACvB,6BAAe,EAAE,KAAK;YACtB,+BAAgB,EAAE,KAAK;YACvB,2BAAc,EAAE,CAAC;YACjB,uBAAY,EAAE,KAAK;YACnB,2BAAc,EAAE,KAAK;YACrB,2BAAc,EAAE,KAAK;YACrB,6BAAe,EAAE,KAAK;YACtB,sCAA2B,EAAE,KAAK;YAClC,qCAA0B,EAAE,KAAK;YACjC,iCAAiB,EAAE,KAAK;YACxB,+BAAgB,EAAE,KAAK;YACvB,6CAA4B,EAAE,KAAK;YACnC,4CAA2B,EAAE,KAAK;YAClC,gCAAqB,EAAE,KAAK;YAC5B,+BAAoB,EAAE,KAAK;YAC3B,yCAAqB,EAAE,KAAK;YAC5B,yCAAqB,EAAE,KAAK;YAC5B,2BAAc,EAAE,KAAK;YACrB,+BAAgB,EAAE,KAAK;YACvB,iCAAiB,EAAE,CAAC;YACpB,iCAAiB,EAAE,CAAC;YACpB,6CAAuB,EAAE,KAAK;YAC9B,mCAAkB,EAAE,CAAC;YACrB,iCAAiB,EAAE,CAAC;YACpB,iCAAiB,EAAE,CAAC;YACpB,6CAAuB,EAAE,KAAK;YAC9B,mCAAkB,EAAE,CAAC;YACrB,6BAAe,EAAE,CAAC;YAClB,6BAAe,EAAE,CAAC;YAClB,6BAAe,EAAE,CAAC;YAClB,+BAAgB,EAAE,CAAC;YACnB,+BAAgB,EAAE,CAAC;YACnB,+BAAgB,EAAE,CAAC;SACpB,CAAC;QAGA,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,QAAqB;QACnC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,QAAqB;QACrC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEM,EAAE,CAAC,IAAa,EAAE,QAAuB;QAC9C,IAAI,IAAI,KAAK,OAAO;YAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAEO,GAAG,CAAC,KAAwB;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,WAAW,CAAC,KAAY;QAC9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF;AA/ED,oCA+EC"}
@@ -2,6 +2,9 @@ import { HIDProvider, DualsenseHIDState } from "./hid_provider";
2
2
  export declare class WebHIDProvider extends HIDProvider {
3
3
  private device?;
4
4
  wireless: boolean;
5
+ connecting: boolean;
6
+ connection: boolean;
7
+ constructor();
5
8
  connect(): void;
6
9
  get connected(): boolean;
7
10
  disconnect(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"web_hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/web_hid_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EAIlB,MAAM,gBAAgB,CAAC;AAExB,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAY;IACpB,QAAQ,EAAE,OAAO,CAAQ;IAEhC,OAAO,IAAI,IAAI;IA+Bf,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,UAAU,IAAI,IAAI;IASlB,OAAO,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB;CA2D7C"}
1
+ {"version":3,"file":"web_hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/web_hid_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EAIlB,MAAM,gBAAgB,CAAC;AAExB,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAY;IACpB,QAAQ,EAAE,OAAO,CAAQ;IACzB,UAAU,EAAE,OAAO,CAAS;IAC5B,UAAU,EAAE,OAAO,CAAS;;IAUnC,OAAO,IAAI,IAAI;IAsCf,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,UAAU,IAAI,IAAI;IAUlB,OAAO,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB;CA2D7C"}
@@ -4,11 +4,23 @@ exports.WebHIDProvider = void 0;
4
4
  const hid_provider_1 = require("./hid_provider");
5
5
  class WebHIDProvider extends hid_provider_1.HIDProvider {
6
6
  constructor() {
7
- super(...arguments);
7
+ super();
8
8
  this.wireless = true; // TODO: Not sure what to check
9
+ this.connecting = false;
10
+ this.connection = false;
11
+ if (!navigator.hid)
12
+ throw new Error("");
13
+ navigator.hid.addEventListener("disconnect", ({ device }) => {
14
+ if (device === this.device)
15
+ this.connection = false;
16
+ });
9
17
  }
10
18
  connect() {
11
- this.disconnect();
19
+ if (this.connected)
20
+ return;
21
+ if (this.connecting)
22
+ return;
23
+ this.connecting = true;
12
24
  navigator.hid
13
25
  .requestDevice({
14
26
  filters: [
@@ -22,7 +34,9 @@ class WebHIDProvider extends hid_provider_1.HIDProvider {
22
34
  devices[0]
23
35
  .open()
24
36
  .then(() => {
37
+ this.disconnect();
25
38
  this.device = devices[0];
39
+ this.connection = true;
26
40
  this.device.addEventListener("inputreport", ({ data }) => {
27
41
  this.onData(this.process(data));
28
42
  });
@@ -33,10 +47,13 @@ class WebHIDProvider extends hid_provider_1.HIDProvider {
33
47
  })
34
48
  .catch((err) => {
35
49
  this.onError(err);
50
+ })
51
+ .finally(() => {
52
+ this.connecting = false;
36
53
  });
37
54
  }
38
55
  get connected() {
39
- return this.device !== undefined;
56
+ return this.device !== undefined && this.connection;
40
57
  }
41
58
  disconnect() {
42
59
  if (this.device) {
@@ -45,6 +62,7 @@ class WebHIDProvider extends hid_provider_1.HIDProvider {
45
62
  this.wireless = false;
46
63
  });
47
64
  }
65
+ this.connecting = false;
48
66
  }
49
67
  process(buffer) {
50
68
  // Bluetooth buffer starts with an extra byte
@@ -1 +1 @@
1
- {"version":3,"file":"web_hid_provider.js","sourceRoot":"","sources":["../../src/hid/web_hid_provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web_hid_provider.js","sourceRoot":"","sources":["../../src/hid/web_hid_provider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dualsense-ts",
3
- "version": "5.0.1",
3
+ "version": "5.0.3",
4
4
  "description": "A natural interface for your DualSense controller, with Typescript",
5
5
  "keywords": [
6
6
  "dualsense",
@@ -62,18 +62,18 @@ export class DualsenseHID {
62
62
  /**
63
63
  * Register a handler for HID state updates.
64
64
  */
65
- public register(callback: (state: DualsenseHIDState) => void): void {
65
+ public register(callback: HIDCallback): void {
66
66
  this.subscribers.add(callback);
67
67
  }
68
68
 
69
69
  /**
70
70
  * Cancel a previously registered handler.
71
71
  */
72
- public unregister(callback: (state: DualsenseHIDState) => void): void {
72
+ public unregister(callback: HIDCallback): void {
73
73
  this.subscribers.delete(callback);
74
74
  }
75
75
 
76
- public on(type: "data" | "error", callback: ErrorCallback): void {
76
+ public on(type: "error", callback: ErrorCallback): void {
77
77
  if (type === "error") this.errorSubscribers.add(callback);
78
78
  }
79
79
 
@@ -84,9 +84,5 @@ export class DualsenseHID {
84
84
 
85
85
  private handleError(error: Error): void {
86
86
  this.errorSubscribers.forEach((callback) => callback(error));
87
- setTimeout(() => {
88
- this.provider.disconnect();
89
- this.provider.connect();
90
- }, 50);
91
87
  }
92
88
  }
@@ -9,10 +9,22 @@ import {
9
9
  export class WebHIDProvider extends HIDProvider {
10
10
  private device?: HIDDevice;
11
11
  public wireless: boolean = true; // TODO: Not sure what to check
12
+ public connecting: boolean = false;
13
+ public connection: boolean = false;
14
+
15
+ constructor() {
16
+ super();
17
+ if (!navigator.hid) throw new Error("");
18
+ navigator.hid.addEventListener("disconnect", ({ device }) => {
19
+ if (device === this.device) this.connection = false;
20
+ });
21
+ }
12
22
 
13
23
  connect(): void {
14
- this.disconnect();
24
+ if (this.connected) return;
15
25
 
26
+ if (this.connecting) return;
27
+ this.connecting = true;
16
28
  navigator.hid
17
29
  .requestDevice({
18
30
  filters: [
@@ -27,7 +39,9 @@ export class WebHIDProvider extends HIDProvider {
27
39
  devices[0]
28
40
  .open()
29
41
  .then(() => {
42
+ this.disconnect();
30
43
  this.device = devices[0];
44
+ this.connection = true;
31
45
  this.device.addEventListener("inputreport", ({ data }) => {
32
46
  this.onData(this.process(data));
33
47
  });
@@ -38,11 +52,14 @@ export class WebHIDProvider extends HIDProvider {
38
52
  })
39
53
  .catch((err: Error) => {
40
54
  this.onError(err);
55
+ })
56
+ .finally(() => {
57
+ this.connecting = false;
41
58
  });
42
59
  }
43
60
 
44
61
  get connected(): boolean {
45
- return this.device !== undefined;
62
+ return this.device !== undefined && this.connection;
46
63
  }
47
64
 
48
65
  disconnect(): void {
@@ -52,6 +69,7 @@ export class WebHIDProvider extends HIDProvider {
52
69
  this.wireless = false;
53
70
  });
54
71
  }
72
+ this.connecting = false;
55
73
  }
56
74
 
57
75
  process(buffer: DataView): DualsenseHIDState {