dualsense-ts 5.2.3 → 5.3.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.
- package/dist/hid/hid_provider.d.ts +6 -2
- package/dist/hid/hid_provider.d.ts.map +1 -1
- package/dist/hid/hid_provider.js +4 -2
- package/dist/hid/hid_provider.js.map +1 -1
- package/dist/hid/node_hid_provider.d.ts +1 -0
- package/dist/hid/node_hid_provider.d.ts.map +1 -1
- package/dist/hid/node_hid_provider.js +4 -1
- package/dist/hid/node_hid_provider.js.map +1 -1
- package/dist/hid/web_hid_provider.d.ts +1 -0
- package/dist/hid/web_hid_provider.d.ts.map +1 -1
- package/dist/hid/web_hid_provider.js +6 -2
- package/dist/hid/web_hid_provider.js.map +1 -1
- package/package.json +1 -1
- package/src/hid/hid_provider.ts +10 -4
- package/src/hid/node_hid_provider.ts +7 -1
- package/src/hid/web_hid_provider.ts +9 -2
- package/webhid_example/build/asset-manifest.json +27 -17
- package/webhid_example/build/index.html +1 -1
- package/webhid_example/build/static/css/main.237f8cfa.css +2 -0
- package/webhid_example/build/static/css/main.237f8cfa.css.map +1 -0
- package/webhid_example/build/static/js/blueprint-icons-16px-paths.0c2662b2.chunk.js +2 -0
- package/webhid_example/build/static/js/blueprint-icons-16px-paths.0c2662b2.chunk.js.map +1 -0
- package/webhid_example/build/static/js/blueprint-icons-20px-paths.e0ebc028.chunk.js +2 -0
- package/webhid_example/build/static/js/blueprint-icons-20px-paths.e0ebc028.chunk.js.map +1 -0
- package/webhid_example/build/static/js/blueprint-icons-all-paths-loader.53883a20.chunk.js +2 -0
- package/webhid_example/build/static/js/blueprint-icons-all-paths-loader.53883a20.chunk.js.map +1 -0
- package/webhid_example/build/static/js/blueprint-icons-all-paths.e643b2c5.chunk.js +2 -0
- package/webhid_example/build/static/js/blueprint-icons-all-paths.e643b2c5.chunk.js.map +1 -0
- package/webhid_example/build/static/js/blueprint-icons-split-paths-by-size-loader.6d8a31ce.chunk.js +2 -0
- package/webhid_example/build/static/js/blueprint-icons-split-paths-by-size-loader.6d8a31ce.chunk.js.map +1 -0
- package/webhid_example/build/static/js/main.38a225bc.js +3 -0
- package/webhid_example/build/static/js/{main.5428c4b5.js.LICENSE.txt → main.38a225bc.js.LICENSE.txt} +0 -23
- package/webhid_example/build/static/js/main.38a225bc.js.map +1 -0
- package/webhid_example/package.json +2 -20
- package/webhid_example/public/index.html +2 -2
- package/webhid_example/src/App.tsx +7 -2
- package/webhid_example/src/hud/Debugger.tsx +124 -0
- package/webhid_example/src/hud/HUDLayout.tsx +14 -0
- package/webhid_example/src/hud/index.tsx +2 -0
- package/webhid_example/build/static/css/main.6dc04a6e.css +0 -2
- package/webhid_example/build/static/css/main.6dc04a6e.css.map +0 -1
- package/webhid_example/build/static/js/main.5428c4b5.js +0 -3
- package/webhid_example/build/static/js/main.5428c4b5.js.map +0 -1
|
@@ -70,9 +70,13 @@ export declare abstract class HIDProvider {
|
|
|
70
70
|
abstract process(input: unknown): DualsenseHIDState;
|
|
71
71
|
/** Write to the HID device */
|
|
72
72
|
abstract write(data: Uint8Array): Promise<void>;
|
|
73
|
-
/** Treat the device as if it were connected over Bluetooth */
|
|
73
|
+
/** Debug: Treat the device as if it were connected over Bluetooth */
|
|
74
74
|
setWireless(): void;
|
|
75
|
-
/** Treat the device as if it were connected over USB */
|
|
75
|
+
/** Debug: Treat the device as if it were connected over USB */
|
|
76
76
|
setWired(): void;
|
|
77
|
+
/** Debug: Reference to the most recent HID report buffer (Buffer or DataView) */
|
|
78
|
+
abstract buffer?: unknown;
|
|
79
|
+
/** Debug: Adjust the HID report byte offset */
|
|
80
|
+
reportOffset: number;
|
|
77
81
|
}
|
|
78
82
|
//# sourceMappingURL=hid_provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/hid_provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/hid_provider.ts"],"names":[],"mappings":"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"}
|
package/dist/hid/hid_provider.js
CHANGED
|
@@ -33,12 +33,14 @@ class HIDProvider {
|
|
|
33
33
|
this.onData = () => { };
|
|
34
34
|
/** Callback to use for Error events */
|
|
35
35
|
this.onError = () => { };
|
|
36
|
+
/** Debug: Adjust the HID report byte offset */
|
|
37
|
+
this.reportOffset = 0;
|
|
36
38
|
}
|
|
37
|
-
/** Treat the device as if it were connected over Bluetooth */
|
|
39
|
+
/** Debug: Treat the device as if it were connected over Bluetooth */
|
|
38
40
|
setWireless() {
|
|
39
41
|
this.wireless = true;
|
|
40
42
|
}
|
|
41
|
-
/** Treat the device as if it were connected over USB */
|
|
43
|
+
/** Debug: Treat the device as if it were connected over USB */
|
|
42
44
|
setWired() {
|
|
43
45
|
this.wireless = false;
|
|
44
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hid_provider.js","sourceRoot":"","sources":["../../src/hid/hid_provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,wCAAsB;AAEtB,0CAA0C;AAC1C,SAAgB,OAAO,CAAC,KAAa,EAAE,MAAc,GAAG;IACtD,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AAFD,0BAEC;AAED,2CAA2C;AAC3C,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAFD,gCAEC;AA+CD,sEAAsE;AACtE,MAAsB,WAAW;IAAjC;QAME,2CAA2C;QACpC,WAAM,GAAuC,GAAG,EAAE,GAAE,CAAC,CAAC;QAE7D,uCAAuC;QAChC,YAAO,GAA2B,GAAG,EAAE,GAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"hid_provider.js","sourceRoot":"","sources":["../../src/hid/hid_provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,wCAAsB;AAEtB,0CAA0C;AAC1C,SAAgB,OAAO,CAAC,KAAa,EAAE,MAAc,GAAG;IACtD,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AAFD,0BAEC;AAED,2CAA2C;AAC3C,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAFD,gCAEC;AA+CD,sEAAsE;AACtE,MAAsB,WAAW;IAAjC;QAME,2CAA2C;QACpC,WAAM,GAAuC,GAAG,EAAE,GAAE,CAAC,CAAC;QAE7D,uCAAuC;QAChC,YAAO,GAA2B,GAAG,EAAE,GAAE,CAAC,CAAC;QAiClD,+CAA+C;QACxC,iBAAY,GAAW,CAAC,CAAC;IAClC,CAAC;IAfC,qEAAqE;IAC9D,WAAW;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,+DAA+D;IACxD,QAAQ;QACb,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;;AAtCH,kCA6CC;AA5CC,8CAA8C;AAC9B,oBAAQ,GAAW,IAAI,CAAC;AACxC,+CAA+C;AAC/B,qBAAS,GAAW,IAAI,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { HIDProvider, DualsenseHIDState } from "./hid_provider";
|
|
|
3
3
|
export declare class NodeHIDProvider extends HIDProvider {
|
|
4
4
|
private device?;
|
|
5
5
|
wireless: boolean;
|
|
6
|
+
buffer?: Buffer;
|
|
6
7
|
connect(): Promise<void>;
|
|
7
8
|
write(data: Uint8Array): Promise<void>;
|
|
8
9
|
get connected(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node_hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/node_hid_provider.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EAIlB,MAAM,gBAAgB,CAAC;AASxB,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,MAAM,CAAC,CAAU;
|
|
1
|
+
{"version":3,"file":"node_hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/node_hid_provider.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EAIlB,MAAM,gBAAgB,CAAC;AASxB,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,MAAM,CAAC,CAAU;IAElB,QAAQ,EAAE,OAAO,CAAS;IAE1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C9B,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,UAAU,IAAI,IAAI;IAUlB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB;CA4D3C"}
|
|
@@ -43,6 +43,7 @@ class NodeHIDProvider extends hid_provider_1.HIDProvider {
|
|
|
43
43
|
this.wireless = true;
|
|
44
44
|
const device = new HID(controllers[0].path);
|
|
45
45
|
device.on("data", (arg) => {
|
|
46
|
+
this.buffer = arg;
|
|
46
47
|
this.onData(this.process(arg));
|
|
47
48
|
});
|
|
48
49
|
device.on("error", (err) => {
|
|
@@ -70,10 +71,12 @@ class NodeHIDProvider extends hid_provider_1.HIDProvider {
|
|
|
70
71
|
this.device = undefined;
|
|
71
72
|
this.wireless = false;
|
|
72
73
|
}
|
|
74
|
+
this.buffer = undefined;
|
|
73
75
|
}
|
|
74
76
|
process(buffer) {
|
|
75
77
|
// Bluetooth buffer starts with an extra byte
|
|
76
|
-
const
|
|
78
|
+
const offset = (this.wireless ? 2 : 1) + this.reportOffset;
|
|
79
|
+
const report = buffer.subarray(offset < 0 ? 0 : offset);
|
|
77
80
|
const mainButtons = report.readUint8(7);
|
|
78
81
|
const miscButtons = report.readUint8(8);
|
|
79
82
|
const lastButtons = report.readUint8(9);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node_hid_provider.js","sourceRoot":"","sources":["../../src/hid/node_hid_provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAMwB;AASxB,MAAa,eAAgB,SAAQ,0BAAW;IAAhD;;
|
|
1
|
+
{"version":3,"file":"node_hid_provider.js","sourceRoot":"","sources":["../../src/hid/node_hid_provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;IAEpB,QAAQ,EAAE,OAAO,CAAQ;IAEzB,MAAM,CAAC,EAAE,QAAQ,CAAC;;IAgBzB,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAe/B;;;;OAIG;IACH,UAAU,IAAI,MAAM,OAAO,CAAC,OAAO,CAAC;IAsBpC,OAAO,IAAI,IAAI;IAIf,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,UAAU,IAAI,IAAI;IAUZ,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,OAAO,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB;CA6D7C"}
|
|
@@ -5,13 +5,14 @@ const hid_provider_1 = require("./hid_provider");
|
|
|
5
5
|
class WebHIDProvider extends hid_provider_1.HIDProvider {
|
|
6
6
|
constructor() {
|
|
7
7
|
super();
|
|
8
|
-
this.wireless = true;
|
|
8
|
+
this.wireless = true;
|
|
9
9
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
10
10
|
if (!navigator.hid)
|
|
11
11
|
throw new Error("WebHID not supported by this browser");
|
|
12
12
|
navigator.hid.addEventListener("disconnect", ({ device }) => {
|
|
13
13
|
if (device === this.device)
|
|
14
14
|
this.device = undefined;
|
|
15
|
+
this.buffer = undefined;
|
|
15
16
|
});
|
|
16
17
|
navigator.hid.addEventListener("connect", ({ device }) => {
|
|
17
18
|
if (!this.device)
|
|
@@ -25,6 +26,7 @@ class WebHIDProvider extends hid_provider_1.HIDProvider {
|
|
|
25
26
|
this.device = device;
|
|
26
27
|
this.device.addEventListener("inputreport", ({ data }) => {
|
|
27
28
|
this.onData(this.process(data));
|
|
29
|
+
this.buffer = data;
|
|
28
30
|
});
|
|
29
31
|
})
|
|
30
32
|
.catch((err) => {
|
|
@@ -69,6 +71,7 @@ class WebHIDProvider extends hid_provider_1.HIDProvider {
|
|
|
69
71
|
this.wireless = false;
|
|
70
72
|
});
|
|
71
73
|
}
|
|
74
|
+
this.buffer = undefined;
|
|
72
75
|
}
|
|
73
76
|
async write(data) {
|
|
74
77
|
if (!this.device)
|
|
@@ -78,7 +81,8 @@ class WebHIDProvider extends hid_provider_1.HIDProvider {
|
|
|
78
81
|
process(buffer) {
|
|
79
82
|
// Bluetooth buffer starts with an extra byte
|
|
80
83
|
this.wireless = buffer.byteLength > 70;
|
|
81
|
-
const
|
|
84
|
+
const offset = (this.wireless ? 1 : 0) + this.reportOffset;
|
|
85
|
+
const report = new DataView(buffer.buffer, offset < 0 ? 0 : offset);
|
|
82
86
|
const mainButtons = report.getUint8(7);
|
|
83
87
|
const miscButtons = report.getUint8(8);
|
|
84
88
|
const lastButtons = report.getUint8(9);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web_hid_provider.js","sourceRoot":"","sources":["../../src/hid/web_hid_provider.ts"],"names":[],"mappings":";;;AAAA,iDAMwB;AAExB,MAAa,cAAe,SAAQ,0BAAW;
|
|
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
package/src/hid/hid_provider.ts
CHANGED
|
@@ -88,13 +88,19 @@ export abstract class HIDProvider {
|
|
|
88
88
|
/** Write to the HID device */
|
|
89
89
|
abstract write(data: Uint8Array): Promise<void>;
|
|
90
90
|
|
|
91
|
-
/** Treat the device as if it were connected over Bluetooth */
|
|
92
|
-
setWireless(): void {
|
|
91
|
+
/** Debug: Treat the device as if it were connected over Bluetooth */
|
|
92
|
+
public setWireless(): void {
|
|
93
93
|
this.wireless = true;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
/** Treat the device as if it were connected over USB */
|
|
97
|
-
setWired(): void {
|
|
96
|
+
/** Debug: Treat the device as if it were connected over USB */
|
|
97
|
+
public setWired(): void {
|
|
98
98
|
this.wireless = false;
|
|
99
99
|
}
|
|
100
|
+
|
|
101
|
+
/** Debug: Reference to the most recent HID report buffer (Buffer or DataView) */
|
|
102
|
+
abstract buffer?: unknown;
|
|
103
|
+
|
|
104
|
+
/** Debug: Adjust the HID report byte offset */
|
|
105
|
+
public reportOffset: number = 0;
|
|
100
106
|
}
|
|
@@ -15,8 +15,11 @@ interface HIDable {
|
|
|
15
15
|
|
|
16
16
|
export class NodeHIDProvider extends HIDProvider {
|
|
17
17
|
private device?: HIDable;
|
|
18
|
+
|
|
18
19
|
public wireless: boolean = false;
|
|
19
20
|
|
|
21
|
+
public buffer?: Buffer;
|
|
22
|
+
|
|
20
23
|
async connect(): Promise<void> {
|
|
21
24
|
if (typeof window !== "undefined")
|
|
22
25
|
return this.onError(
|
|
@@ -41,6 +44,7 @@ export class NodeHIDProvider extends HIDProvider {
|
|
|
41
44
|
|
|
42
45
|
const device = new HID(controllers[0].path);
|
|
43
46
|
device.on("data", (arg: Buffer) => {
|
|
47
|
+
this.buffer = arg;
|
|
44
48
|
this.onData(this.process(arg));
|
|
45
49
|
});
|
|
46
50
|
device.on("error", (err: Error) => {
|
|
@@ -77,11 +81,13 @@ export class NodeHIDProvider extends HIDProvider {
|
|
|
77
81
|
this.device = undefined;
|
|
78
82
|
this.wireless = false;
|
|
79
83
|
}
|
|
84
|
+
this.buffer = undefined;
|
|
80
85
|
}
|
|
81
86
|
|
|
82
87
|
process(buffer: Buffer): DualsenseHIDState {
|
|
83
88
|
// Bluetooth buffer starts with an extra byte
|
|
84
|
-
const
|
|
89
|
+
const offset = (this.wireless ? 2 : 1) + this.reportOffset;
|
|
90
|
+
const report = buffer.subarray(offset < 0 ? 0 : offset);
|
|
85
91
|
|
|
86
92
|
const mainButtons = report.readUint8(7);
|
|
87
93
|
const miscButtons = report.readUint8(8);
|
|
@@ -8,7 +8,10 @@ import {
|
|
|
8
8
|
|
|
9
9
|
export class WebHIDProvider extends HIDProvider {
|
|
10
10
|
private device?: HIDDevice;
|
|
11
|
-
|
|
11
|
+
|
|
12
|
+
public wireless: boolean = true;
|
|
13
|
+
|
|
14
|
+
public buffer?: DataView;
|
|
12
15
|
|
|
13
16
|
constructor() {
|
|
14
17
|
super();
|
|
@@ -17,6 +20,7 @@ export class WebHIDProvider extends HIDProvider {
|
|
|
17
20
|
|
|
18
21
|
navigator.hid.addEventListener("disconnect", ({ device }) => {
|
|
19
22
|
if (device === this.device) this.device = undefined;
|
|
23
|
+
this.buffer = undefined;
|
|
20
24
|
});
|
|
21
25
|
navigator.hid.addEventListener("connect", ({ device }) => {
|
|
22
26
|
if (!this.device) this.attach(device);
|
|
@@ -30,6 +34,7 @@ export class WebHIDProvider extends HIDProvider {
|
|
|
30
34
|
this.device = device;
|
|
31
35
|
this.device.addEventListener("inputreport", ({ data }) => {
|
|
32
36
|
this.onData(this.process(data));
|
|
37
|
+
this.buffer = data;
|
|
33
38
|
});
|
|
34
39
|
})
|
|
35
40
|
.catch((err: Error) => {
|
|
@@ -79,6 +84,7 @@ export class WebHIDProvider extends HIDProvider {
|
|
|
79
84
|
this.wireless = false;
|
|
80
85
|
});
|
|
81
86
|
}
|
|
87
|
+
this.buffer = undefined;
|
|
82
88
|
}
|
|
83
89
|
|
|
84
90
|
async write(data: Uint8Array): Promise<void> {
|
|
@@ -89,7 +95,8 @@ export class WebHIDProvider extends HIDProvider {
|
|
|
89
95
|
process(buffer: DataView): DualsenseHIDState {
|
|
90
96
|
// Bluetooth buffer starts with an extra byte
|
|
91
97
|
this.wireless = buffer.byteLength > 70;
|
|
92
|
-
const
|
|
98
|
+
const offset = (this.wireless ? 1 : 0) + this.reportOffset;
|
|
99
|
+
const report = new DataView(buffer.buffer, offset < 0 ? 0 : offset);
|
|
93
100
|
|
|
94
101
|
const mainButtons = report.getUint8(7);
|
|
95
102
|
const miscButtons = report.getUint8(8);
|
|
@@ -1,23 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
|
-
"main.css": "/static/css/main.
|
|
4
|
-
"main.js": "/static/js/main.
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"static/
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"static/media/blueprint-icons-
|
|
12
|
-
"static/media/blueprint-icons-20.
|
|
13
|
-
"static/media/blueprint-icons-16.
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
3
|
+
"main.css": "/dualsense-ts/static/css/main.237f8cfa.css",
|
|
4
|
+
"main.js": "/dualsense-ts/static/js/main.38a225bc.js",
|
|
5
|
+
"blueprint-icons-all-paths-loader.js": "/dualsense-ts/static/js/blueprint-icons-all-paths-loader.53883a20.chunk.js",
|
|
6
|
+
"blueprint-icons-split-paths-by-size-loader.js": "/dualsense-ts/static/js/blueprint-icons-split-paths-by-size-loader.6d8a31ce.chunk.js",
|
|
7
|
+
"static/js/787.b12b0301.chunk.js": "/dualsense-ts/static/js/787.b12b0301.chunk.js",
|
|
8
|
+
"blueprint-icons-all-paths.js": "/dualsense-ts/static/js/blueprint-icons-all-paths.e643b2c5.chunk.js",
|
|
9
|
+
"blueprint-icons-16px-paths.js": "/dualsense-ts/static/js/blueprint-icons-16px-paths.0c2662b2.chunk.js",
|
|
10
|
+
"blueprint-icons-20px-paths.js": "/dualsense-ts/static/js/blueprint-icons-20px-paths.e0ebc028.chunk.js",
|
|
11
|
+
"static/media/blueprint-icons-20.eot?": "/dualsense-ts/static/media/blueprint-icons-20.f7d18295d5c386a1a9b5.eot",
|
|
12
|
+
"static/media/blueprint-icons-20.ttf?": "/dualsense-ts/static/media/blueprint-icons-20.5e8bcc2fa7b81492f163.ttf",
|
|
13
|
+
"static/media/blueprint-icons-16.eot?": "/dualsense-ts/static/media/blueprint-icons-16.14e70b6793c6b84b0760.eot",
|
|
14
|
+
"static/media/blueprint-icons-16.ttf?": "/dualsense-ts/static/media/blueprint-icons-16.4fdbe723235ba0fc46fb.ttf",
|
|
15
|
+
"static/media/blueprint-icons-20.woff?": "/dualsense-ts/static/media/blueprint-icons-20.7f441e84a24ef32d88d9.woff",
|
|
16
|
+
"static/media/blueprint-icons-16.woff?": "/dualsense-ts/static/media/blueprint-icons-16.f5b1a9d55dd59fe717ab.woff",
|
|
17
|
+
"static/media/blueprint-icons-20.woff2?": "/dualsense-ts/static/media/blueprint-icons-20.f356a02cac03708c9328.woff2",
|
|
18
|
+
"static/media/blueprint-icons-16.woff2?": "/dualsense-ts/static/media/blueprint-icons-16.582f87288ff1d1f0dfae.woff2",
|
|
19
|
+
"index.html": "/dualsense-ts/index.html",
|
|
20
|
+
"main.237f8cfa.css.map": "/dualsense-ts/static/css/main.237f8cfa.css.map",
|
|
21
|
+
"main.38a225bc.js.map": "/dualsense-ts/static/js/main.38a225bc.js.map",
|
|
22
|
+
"blueprint-icons-all-paths-loader.53883a20.chunk.js.map": "/dualsense-ts/static/js/blueprint-icons-all-paths-loader.53883a20.chunk.js.map",
|
|
23
|
+
"blueprint-icons-split-paths-by-size-loader.6d8a31ce.chunk.js.map": "/dualsense-ts/static/js/blueprint-icons-split-paths-by-size-loader.6d8a31ce.chunk.js.map",
|
|
24
|
+
"787.b12b0301.chunk.js.map": "/dualsense-ts/static/js/787.b12b0301.chunk.js.map",
|
|
25
|
+
"blueprint-icons-all-paths.e643b2c5.chunk.js.map": "/dualsense-ts/static/js/blueprint-icons-all-paths.e643b2c5.chunk.js.map",
|
|
26
|
+
"blueprint-icons-16px-paths.0c2662b2.chunk.js.map": "/dualsense-ts/static/js/blueprint-icons-16px-paths.0c2662b2.chunk.js.map",
|
|
27
|
+
"blueprint-icons-20px-paths.e0ebc028.chunk.js.map": "/dualsense-ts/static/js/blueprint-icons-20px-paths.e0ebc028.chunk.js.map"
|
|
18
28
|
},
|
|
19
29
|
"entrypoints": [
|
|
20
|
-
"static/css/main.
|
|
21
|
-
"static/js/main.
|
|
30
|
+
"static/css/main.237f8cfa.css",
|
|
31
|
+
"static/js/main.38a225bc.js"
|
|
22
32
|
]
|
|
23
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="dualsense-ts
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/dualsense-ts/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/dualsense-ts/manifest.json"/><script type="text/javascript">!function(n){if("/"===n.search[1]){var a=n.search.slice(1).split("&").map((function(n){return n.replace(/~and~/g,"&")})).join("?");window.history.replaceState(null,null,n.pathname.slice(0,-1)+a+n.hash)}}(window.location)</script><title>dualsense-ts</title><script defer="defer" src="/dualsense-ts/static/js/main.38a225bc.js"></script><link href="/dualsense-ts/static/css/main.237f8cfa.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|