@ledgerhq/devices 8.6.1 → 8.7.0-nightly.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +13 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib-es/index.js +1 -1
- package/lib-es/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -1
- package/lib/ble/receiveAPDU.test.d.ts +0 -2
- package/lib/ble/receiveAPDU.test.d.ts.map +0 -1
- package/lib/ble/receiveAPDU.test.js +0 -115
- package/lib/ble/receiveAPDU.test.js.map +0 -1
- package/lib/ble/sendAPDU.test.d.ts +0 -2
- package/lib/ble/sendAPDU.test.d.ts.map +0 -1
- package/lib/ble/sendAPDU.test.js +0 -73
- package/lib/ble/sendAPDU.test.js.map +0 -1
- package/lib/helpers.test.d.ts +0 -2
- package/lib/helpers.test.d.ts.map +0 -1
- package/lib/helpers.test.js +0 -39
- package/lib/helpers.test.js.map +0 -1
- package/lib/hid-framing.test.d.ts +0 -2
- package/lib/hid-framing.test.d.ts.map +0 -1
- package/lib/hid-framing.test.js +0 -139
- package/lib/hid-framing.test.js.map +0 -1
- package/lib-es/ble/receiveAPDU.test.d.ts +0 -2
- package/lib-es/ble/receiveAPDU.test.d.ts.map +0 -1
- package/lib-es/ble/receiveAPDU.test.js +0 -113
- package/lib-es/ble/receiveAPDU.test.js.map +0 -1
- package/lib-es/ble/sendAPDU.test.d.ts +0 -2
- package/lib-es/ble/sendAPDU.test.d.ts.map +0 -1
- package/lib-es/ble/sendAPDU.test.js +0 -71
- package/lib-es/ble/sendAPDU.test.js.map +0 -1
- package/lib-es/helpers.test.d.ts +0 -2
- package/lib-es/helpers.test.d.ts.map +0 -1
- package/lib-es/helpers.test.js +0 -37
- package/lib-es/helpers.test.js.map +0 -1
- package/lib-es/hid-framing.test.d.ts +0 -2
- package/lib-es/hid-framing.test.d.ts.map +0 -1
- package/lib-es/hid-framing.test.js +0 -134
- package/lib-es/hid-framing.test.js.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @ledgerhq/devices@8.6.
|
|
2
|
+
> @ledgerhq/devices@8.6.2-nightly.0 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/devices
|
|
3
3
|
> tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
|
|
4
4
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @ledgerhq/devices
|
|
2
2
|
|
|
3
|
+
## 8.7.0-nightly.1
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#12449](https://github.com/LedgerHQ/ledger-live/pull/12449) [`c1a4bfd`](https://github.com/LedgerHQ/ledger-live/commit/c1a4bfd34b46c6b6587d247673cadb3c078deb1d) Thanks [@jiyuzhuang](https://github.com/jiyuzhuang)! - Update Apex assets
|
|
8
|
+
|
|
9
|
+
## 8.6.2-nightly.0
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [[`759064d`](https://github.com/LedgerHQ/ledger-live/commit/759064d4815c636af2d73ba548a85b4f53e7b491)]:
|
|
14
|
+
- @ledgerhq/errors@6.27.0-nightly.0
|
|
15
|
+
|
|
3
16
|
## 8.6.1
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/lib/index.js
CHANGED
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B;;;;;;;;;;;;;;GAcG;AACU,QAAA,YAAY,GAAG,IAAI,CAAC;AACpB,QAAA,aAAa,GAAG,IAAI,CAAC;AACrB,QAAA,KAAK,GAAG,IAAI,CAAC;AACb,QAAA,MAAM,GAAG,IAAI,CAAC;AACd,QAAA,QAAQ,GAAG,IAAI,CAAC;AAE7B,IAAY,aAeX;AAfD,WAAY,aAAa;IACvB,kBAAkB;IAClB,8BAAa,CAAA;IACb,oBAAoB;IACpB,gCAAe,CAAA;IACf,yBAAyB;IACzB,kCAAiB,CAAA;IACjB,oBAAoB;IACpB,gCAAe,CAAA;IACf,kBAAkB;IAClB,8BAAa,CAAA;IACb,kDAAkD;IAClD,kCAAiB,CAAA;IACjB,WAAW;IACX,8BAAa,CAAA;AACf,CAAC,EAfW,aAAa,6BAAb,aAAa,QAexB;AAED,MAAM,OAAO,GAA4C;IACvD,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;QACpB,EAAE,EAAE,aAAa,CAAC,IAAI;QACtB,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,MAAM;QAC1B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,GAAG,GAAG,IAAI;QACtB,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QAC/B,YAAY,EAAE,CAAC,eAAuB,EAAU,EAAE,CAAC,CAAC,GAAG,IAAI;KAC5D;IACD,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QACrB,EAAE,EAAE,aAAa,CAAC,KAAK;QACvB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,MAAM;QAC1B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,GAAG,GAAG,IAAI;QACtB,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,YAAY,EAAE,CAAC,eAAuB,EAAU,EAAE,CAChD,gBAAM,CAAC,EAAE,CAAC,gBAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;KACjF;IACD,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QACrB,EAAE,EAAE,aAAa,CAAC,KAAK;QACvB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,MAAM;QAC1B,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;QAC3B,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,YAAY,EAAE,CAAC,eAAuB,EAAU,EAAE,CAAC,CAAC,GAAG,IAAI;QAC3D,aAAa,EAAE;YACb;gBACE,WAAW,EAAE,sCAAsC;gBACnD,UAAU,EAAE,sCAAsC;gBAClD,SAAS,EAAE,sCAAsC;gBACjD,YAAY,EAAE,sCAAsC;aACrD;SACF;KACF;IACD,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;QACtB,EAAE,EAAE,aAAa,CAAC,MAAM;QACxB,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,MAAM;QAC1B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI,GAAG,IAAI;QACvB,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,YAAY,EAAE,CAAC,gBAAwB,EAAU,EAAE,CAAC,EAAE;KACvD;IACD,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;QACpB,EAAE,EAAE,aAAa,CAAC,IAAI;QACtB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib-es/index.js
CHANGED
package/lib-es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;AAC3B,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC;AAE7B,MAAM,CAAN,IAAY,aAeX;AAfD,WAAY,aAAa;IACvB,kBAAkB;IAClB,8BAAa,CAAA;IACb,oBAAoB;IACpB,gCAAe,CAAA;IACf,yBAAyB;IACzB,kCAAiB,CAAA;IACjB,oBAAoB;IACpB,gCAAe,CAAA;IACf,kBAAkB;IAClB,8BAAa,CAAA;IACb,kDAAkD;IAClD,kCAAiB,CAAA;IACjB,WAAW;IACX,8BAAa,CAAA;AACf,CAAC,EAfW,aAAa,KAAb,aAAa,QAexB;AAED,MAAM,OAAO,GAA4C;IACvD,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;QACpB,EAAE,EAAE,aAAa,CAAC,IAAI;QACtB,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,MAAM;QAC1B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,GAAG,GAAG,IAAI;QACtB,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QAC/B,YAAY,EAAE,CAAC,eAAuB,EAAU,EAAE,CAAC,CAAC,GAAG,IAAI;KAC5D;IACD,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QACrB,EAAE,EAAE,aAAa,CAAC,KAAK;QACvB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,MAAM;QAC1B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,GAAG,GAAG,IAAI;QACtB,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,YAAY,EAAE,CAAC,eAAuB,EAAU,EAAE,CAChD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;KACjF;IACD,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QACrB,EAAE,EAAE,aAAa,CAAC,KAAK;QACvB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,MAAM;QAC1B,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;QAC3B,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,YAAY,EAAE,CAAC,eAAuB,EAAU,EAAE,CAAC,CAAC,GAAG,IAAI;QAC3D,aAAa,EAAE;YACb;gBACE,WAAW,EAAE,sCAAsC;gBACnD,UAAU,EAAE,sCAAsC;gBAClD,SAAS,EAAE,sCAAsC;gBACjD,YAAY,EAAE,sCAAsC;aACrD;SACF;KACF;IACD,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;QACtB,EAAE,EAAE,aAAa,CAAC,MAAM;QACxB,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,MAAM;QAC1B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI,GAAG,IAAI;QACvB,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,YAAY,EAAE,CAAC,gBAAwB,EAAU,EAAE,CAAC,EAAE;KACvD;IACD,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;QACpB,EAAE,EAAE,aAAa,CAAC,IAAI;QACtB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/devices",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.7.0-nightly.1",
|
|
4
4
|
"description": "Ledger devices",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger"
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"rxjs": "^7.8.1",
|
|
57
57
|
"semver": "^7.3.5",
|
|
58
|
-
"@ledgerhq/errors": "^6.
|
|
58
|
+
"@ledgerhq/errors": "^6.27.0-nightly.0",
|
|
59
59
|
"@ledgerhq/logs": "^6.13.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
package/src/index.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"receiveAPDU.test.d.ts","sourceRoot":"","sources":["../../src/ble/receiveAPDU.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const rxjs_1 = require("rxjs");
|
|
4
|
-
const receiveAPDU_1 = require("./receiveAPDU");
|
|
5
|
-
describe("receiveAPDU", () => {
|
|
6
|
-
const tests = [
|
|
7
|
-
// 1. Response from a get version
|
|
8
|
-
{
|
|
9
|
-
input: [
|
|
10
|
-
Buffer.from([
|
|
11
|
-
...[0x05, 0, 0, 0, 0x1f], // Tag, frame id and message length (2 bytes)
|
|
12
|
-
...[
|
|
13
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00,
|
|
14
|
-
0x00, 0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01,
|
|
15
|
-
0x00, 0x90, 0x00,
|
|
16
|
-
],
|
|
17
|
-
// No 0-padding
|
|
18
|
-
]),
|
|
19
|
-
],
|
|
20
|
-
expectedOutput: Buffer.from([
|
|
21
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00, 0x00,
|
|
22
|
-
0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01, 0x00, 0x90,
|
|
23
|
-
0x00,
|
|
24
|
-
]),
|
|
25
|
-
},
|
|
26
|
-
// 2. Response from a get device (long) name
|
|
27
|
-
{
|
|
28
|
-
input: [
|
|
29
|
-
// 1st frame
|
|
30
|
-
Buffer.from([
|
|
31
|
-
...[0x05, 0, 0, 0, 0x42], // Tag, frame id and message length (2 bytes)
|
|
32
|
-
...[
|
|
33
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f,
|
|
34
|
-
0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79,
|
|
35
|
-
0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69,
|
|
36
|
-
0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45,
|
|
37
|
-
0x76, 0x65, 0x72,
|
|
38
|
-
],
|
|
39
|
-
]),
|
|
40
|
-
// 2nd frame
|
|
41
|
-
Buffer.from([
|
|
42
|
-
...[0x05, 0, 0x01], // Tag and frame id
|
|
43
|
-
...[0x79, 0x42, 0x69, 0x74, 0x65, 0x90, 0x00],
|
|
44
|
-
// No 0-padding
|
|
45
|
-
]),
|
|
46
|
-
],
|
|
47
|
-
expectedOutput: Buffer.from([
|
|
48
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f, 0x75,
|
|
49
|
-
0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79, 0x44, 0x65,
|
|
50
|
-
0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73,
|
|
51
|
-
0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45, 0x76, 0x65, 0x72, 0x79,
|
|
52
|
-
0x42, 0x69, 0x74, 0x65, 0x90, 0x00,
|
|
53
|
-
]),
|
|
54
|
-
},
|
|
55
|
-
// 3. A device that went rogue and is sending multiple time the same response, while only 1 frame is expected
|
|
56
|
-
{
|
|
57
|
-
input: [
|
|
58
|
-
Buffer.from([
|
|
59
|
-
...[0x05, 0, 0, 0, 0x1f], // Tag, frame id and message length (2 bytes)
|
|
60
|
-
...[
|
|
61
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00,
|
|
62
|
-
0x00, 0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01,
|
|
63
|
-
0x00, 0x90, 0x00,
|
|
64
|
-
],
|
|
65
|
-
// No 0-padding
|
|
66
|
-
]),
|
|
67
|
-
Buffer.from([
|
|
68
|
-
...[0x05, 0, 0, 0, 0x1f], // Tag, frame id and message length (2 bytes)
|
|
69
|
-
...[
|
|
70
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00,
|
|
71
|
-
0x00, 0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01,
|
|
72
|
-
0x00, 0x90, 0x00,
|
|
73
|
-
],
|
|
74
|
-
// No 0-padding
|
|
75
|
-
]),
|
|
76
|
-
Buffer.from([
|
|
77
|
-
...[0x05, 0, 0, 0, 0x1f], // Tag, frame id and message length (2 bytes)
|
|
78
|
-
...[
|
|
79
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00,
|
|
80
|
-
0x00, 0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01,
|
|
81
|
-
0x00, 0x90, 0x00,
|
|
82
|
-
],
|
|
83
|
-
// No 0-padding
|
|
84
|
-
]),
|
|
85
|
-
],
|
|
86
|
-
// Only 1 response should be recorded, as only 1 frame was set in the 1st frame of the response
|
|
87
|
-
expectedOutput: Buffer.from([
|
|
88
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00, 0x00,
|
|
89
|
-
0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01, 0x00, 0x90,
|
|
90
|
-
0x00,
|
|
91
|
-
]),
|
|
92
|
-
},
|
|
93
|
-
];
|
|
94
|
-
tests.forEach(({ input, expectedOutput }) => {
|
|
95
|
-
test(`Input: ${JSON.stringify(input)} -> Expected output: ${JSON.stringify(expectedOutput)}`, done => {
|
|
96
|
-
const rawStream = (0, rxjs_1.from)(input);
|
|
97
|
-
(0, receiveAPDU_1.receiveAPDU)(rawStream).subscribe({
|
|
98
|
-
error: error => {
|
|
99
|
-
done(`An error should not occur: ${error}`);
|
|
100
|
-
},
|
|
101
|
-
next: result => {
|
|
102
|
-
try {
|
|
103
|
-
expect(result).toEqual(expectedOutput);
|
|
104
|
-
done();
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
done(error);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
//# sourceMappingURL=receiveAPDU.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"receiveAPDU.test.js","sourceRoot":"","sources":["../../src/ble/receiveAPDU.test.ts"],"names":[],"mappings":";;AAAA,+BAA4B;AAC5B,+CAA4C;AAE5C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,MAAM,KAAK,GAAG;QACZ,iCAAiC;QACjC;YACE,KAAK,EAAE;gBACL,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,6CAA6C;oBACvE,GAAG;wBACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI;qBACjB;oBACD,eAAe;iBAChB,CAAC;aACH;YACD,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI;aACL,CAAC;SACH;QACD,4CAA4C;QAC5C;YACE,KAAK,EAAE;gBACL,YAAY;gBACZ,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,6CAA6C;oBACvE,GAAG;wBACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI;qBACjB;iBACF,CAAC;gBACF,YAAY;gBACZ,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,mBAAmB;oBACvC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;oBAC7C,eAAe;iBAChB,CAAC;aACH;YACD,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;aACnC,CAAC;SACH;QACD,6GAA6G;QAC7G;YACE,KAAK,EAAE;gBACL,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,6CAA6C;oBACvE,GAAG;wBACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI;qBACjB;oBACD,eAAe;iBAChB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,6CAA6C;oBACvE,GAAG;wBACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI;qBACjB;oBACD,eAAe;iBAChB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,6CAA6C;oBACvE,GAAG;wBACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI;qBACjB;oBACD,eAAe;iBAChB,CAAC;aACH;YACD,+FAA+F;YAC/F,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI;aACL,CAAC;SACH;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CACxE,cAAc,CACf,EAAE,EAAE,IAAI,CAAC,EAAE;YACV,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,KAAK,CAAC,CAAC;YAE9B,IAAA,yBAAW,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC;gBAC/B,KAAK,EAAE,KAAK,CAAC,EAAE;oBACb,IAAI,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,EAAE,MAAM,CAAC,EAAE;oBACb,IAAI,CAAC;wBACH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;wBACvC,IAAI,EAAE,CAAC;oBACT,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,KAAK,CAAC,CAAC;wBACZ,OAAO;oBACT,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sendAPDU.test.d.ts","sourceRoot":"","sources":["../../src/ble/sendAPDU.test.ts"],"names":[],"mappings":""}
|
package/lib/ble/sendAPDU.test.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const sendAPDU_1 = require("./sendAPDU");
|
|
4
|
-
describe("sendAPDU", () => {
|
|
5
|
-
const mtu = 64; // Arbitrary chosen MTU, in bytes, so we can compare those tests with the HID framing ones
|
|
6
|
-
const tests = [
|
|
7
|
-
{
|
|
8
|
-
// A get version
|
|
9
|
-
input: { apdu: Buffer.from([0xe0, 0x01, 0, 0, 0]) },
|
|
10
|
-
expectedOutput: [
|
|
11
|
-
// No 0-padding is needed
|
|
12
|
-
Buffer.from([0x05, 0, 0, 0, 0x05, 0xe0, 0x01, 0x00, 0x00, 0x00]),
|
|
13
|
-
],
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
// A (long) edit device name
|
|
17
|
-
input: {
|
|
18
|
-
apdu: Buffer.from([
|
|
19
|
-
0xe0, 0xd4, 0, 0, 0x40, 0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69,
|
|
20
|
-
0x74, 0x69, 0x6f, 0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a,
|
|
21
|
-
0x6f, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
|
|
22
|
-
0x69, 0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45,
|
|
23
|
-
0x76, 0x65, 0x72, 0x79, 0x42, 0x69, 0x74, 0x65,
|
|
24
|
-
]),
|
|
25
|
-
},
|
|
26
|
-
expectedOutput: [
|
|
27
|
-
// Frame 1
|
|
28
|
-
Buffer.from([
|
|
29
|
-
...[0x05, 0, 0, 0, 0x45, 0xe0, 0xd4, 0x00, 0x00, 0x40], // Tag, frame id, total length, and APDU until the Data part
|
|
30
|
-
...[
|
|
31
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f,
|
|
32
|
-
0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79,
|
|
33
|
-
0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69,
|
|
34
|
-
0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49,
|
|
35
|
-
], // First part of the new device name
|
|
36
|
-
]),
|
|
37
|
-
// Frame 2
|
|
38
|
-
Buffer.from([
|
|
39
|
-
...[0x05, 0, 0x01], // Tag and frame id
|
|
40
|
-
...[0x6e, 0x45, 0x76, 0x65, 0x72, 0x79, 0x42, 0x69, 0x74, 0x65], // Second part of the new device name
|
|
41
|
-
// No 0-padding is needed
|
|
42
|
-
]),
|
|
43
|
-
],
|
|
44
|
-
},
|
|
45
|
-
];
|
|
46
|
-
tests.forEach(({ input, expectedOutput }) => {
|
|
47
|
-
test(`Input: ${JSON.stringify(input)} -> Expected output: ${JSON.stringify(expectedOutput)}`, done => {
|
|
48
|
-
let i = 0;
|
|
49
|
-
// Compares each frame given to the `write` function to the expected frame
|
|
50
|
-
const write = (frame) => {
|
|
51
|
-
expect(frame).toEqual(expectedOutput[i]);
|
|
52
|
-
i++;
|
|
53
|
-
return Promise.resolve();
|
|
54
|
-
};
|
|
55
|
-
(0, sendAPDU_1.sendAPDU)(write, input.apdu, mtu).subscribe({
|
|
56
|
-
error: error => {
|
|
57
|
-
done(`An error should not occur: ${error}`);
|
|
58
|
-
},
|
|
59
|
-
complete: () => {
|
|
60
|
-
try {
|
|
61
|
-
expect(i).toBe(expectedOutput.length);
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
done(error);
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
done();
|
|
68
|
-
},
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
//# sourceMappingURL=sendAPDU.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sendAPDU.test.js","sourceRoot":"","sources":["../../src/ble/sendAPDU.test.ts"],"names":[],"mappings":"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"}
|
package/lib/helpers.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.test.d.ts","sourceRoot":"","sources":["../src/helpers.test.ts"],"names":[],"mappings":""}
|
package/lib/helpers.test.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const _1 = require(".");
|
|
4
|
-
const helpers_1 = require("./helpers");
|
|
5
|
-
const validDeviceModelsIds = ["nanoS", "nanoX", "blue", "nanoSP", "stax", "europa"];
|
|
6
|
-
const invalidDeviceModelsIds = ["does-not-exist", "", null, undefined];
|
|
7
|
-
describe("isDeviceModelId", () => {
|
|
8
|
-
validDeviceModelsIds.forEach(potentialModelId => {
|
|
9
|
-
test(`Input: ${potentialModelId} -> Expected output: true`, () => {
|
|
10
|
-
const result = (0, helpers_1.isDeviceModelId)(potentialModelId);
|
|
11
|
-
expect(result).toEqual(true);
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
invalidDeviceModelsIds.forEach(potentialModelId => {
|
|
15
|
-
test(`Input: ${potentialModelId} -> Expected output: false`, () => {
|
|
16
|
-
const result = (0, helpers_1.isDeviceModelId)(potentialModelId);
|
|
17
|
-
expect(result).toEqual(false);
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
describe("stringToDeviceModelId", () => {
|
|
22
|
-
const tests = [
|
|
23
|
-
{
|
|
24
|
-
input: ["stax", _1.DeviceModelId.nanoSP],
|
|
25
|
-
expectedOutput: _1.DeviceModelId.stax,
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
input: ["does-not-exist", _1.DeviceModelId.nanoSP],
|
|
29
|
-
expectedOutput: _1.DeviceModelId.nanoSP,
|
|
30
|
-
},
|
|
31
|
-
];
|
|
32
|
-
tests.forEach(({ input, expectedOutput }) => {
|
|
33
|
-
test(`Input: ${JSON.stringify(input)} -> Expected output: ${expectedOutput}`, () => {
|
|
34
|
-
const result = (0, helpers_1.stringToDeviceModelId)(...input);
|
|
35
|
-
expect(result).toEqual(expectedOutput);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
//# sourceMappingURL=helpers.test.js.map
|
package/lib/helpers.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.test.js","sourceRoot":"","sources":["../src/helpers.test.ts"],"names":[],"mappings":";;AAAA,wBAAkC;AAClC,uCAAmE;AAEnE,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpF,MAAM,sBAAsB,GAAG,CAAC,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAEvE,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QAC9C,IAAI,CAAC,UAAU,gBAAgB,2BAA2B,EAAE,GAAG,EAAE;YAC/D,MAAM,MAAM,GAAG,IAAA,yBAAe,EAAC,gBAAgB,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sBAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QAChD,IAAI,CAAC,UAAU,gBAAgB,4BAA4B,EAAE,GAAG,EAAE;YAChE,MAAM,MAAM,GAAG,IAAA,yBAAe,EAAC,gBAAgB,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAOH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,KAAK,GAAW;QACpB;YACE,KAAK,EAAE,CAAC,MAAM,EAAE,gBAAa,CAAC,MAAM,CAAC;YACrC,cAAc,EAAE,gBAAa,CAAC,IAAI;SACnC;QACD;YACE,KAAK,EAAE,CAAC,gBAAgB,EAAE,gBAAa,CAAC,MAAM,CAAC;YAC/C,cAAc,EAAE,gBAAa,CAAC,MAAM;SACrC;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,cAAc,EAAE,EAAE,GAAG,EAAE;YACjF,MAAM,MAAM,GAAG,IAAA,+BAAqB,EAAC,GAAG,KAAK,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hid-framing.test.d.ts","sourceRoot":"","sources":["../src/hid-framing.test.ts"],"names":[],"mappings":""}
|
package/lib/hid-framing.test.js
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const hid_framing_1 = __importDefault(require("./hid-framing"));
|
|
7
|
-
describe("createHIDframing.makeBlocks", () => {
|
|
8
|
-
const channel = Math.floor(Math.random() * 0xffff);
|
|
9
|
-
const channelBytes = [channel >> 8, channel & 0x00ff];
|
|
10
|
-
const packetSize = 64;
|
|
11
|
-
const hidFramingHelper = (0, hid_framing_1.default)(channel, packetSize);
|
|
12
|
-
const tests = [
|
|
13
|
-
{
|
|
14
|
-
// A get version
|
|
15
|
-
input: { apdu: Buffer.from([0xe0, 0x01, 0, 0, 0]) },
|
|
16
|
-
expectedOutput: [
|
|
17
|
-
Buffer.from([
|
|
18
|
-
...channelBytes,
|
|
19
|
-
...[0x05, 0, 0, 0, 0x05, 0xe0, 0x01, 0x00, 0x00, 0x00],
|
|
20
|
-
...Buffer.alloc(52, 0), // 0-padding
|
|
21
|
-
]),
|
|
22
|
-
],
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
// A (long) edit device name
|
|
26
|
-
input: {
|
|
27
|
-
apdu: Buffer.from([
|
|
28
|
-
0xe0, 0xd4, 0, 0, 0x40, 0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69,
|
|
29
|
-
0x74, 0x69, 0x6f, 0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a,
|
|
30
|
-
0x6f, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
|
|
31
|
-
0x69, 0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45,
|
|
32
|
-
0x76, 0x65, 0x72, 0x79, 0x42, 0x69, 0x74, 0x65,
|
|
33
|
-
]),
|
|
34
|
-
},
|
|
35
|
-
expectedOutput: [
|
|
36
|
-
// Frame 1
|
|
37
|
-
Buffer.from([
|
|
38
|
-
...channelBytes,
|
|
39
|
-
...[0x05, 0, 0, 0, 0x45, 0xe0, 0xd4, 0x00, 0x00, 0x40], // Tag, frame id, total length, and APDU until the Data part
|
|
40
|
-
...[
|
|
41
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f,
|
|
42
|
-
0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79,
|
|
43
|
-
0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69,
|
|
44
|
-
0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e,
|
|
45
|
-
], // First part of the new device name
|
|
46
|
-
]),
|
|
47
|
-
// Frame 2
|
|
48
|
-
Buffer.from([
|
|
49
|
-
...channelBytes,
|
|
50
|
-
...[0x05, 0, 0x01], // Tag and frame id
|
|
51
|
-
...[0x79, 0x49, 0x6e, 0x45, 0x76, 0x65, 0x72, 0x79, 0x42, 0x69, 0x74, 0x65], // Second part of the new device name
|
|
52
|
-
...Buffer.alloc(47, 0), // 0-padding
|
|
53
|
-
]),
|
|
54
|
-
],
|
|
55
|
-
},
|
|
56
|
-
];
|
|
57
|
-
tests.forEach(({ input, expectedOutput }) => {
|
|
58
|
-
test(`Input: ${JSON.stringify(input)} -> Expected output: ${JSON.stringify(expectedOutput)}`, () => {
|
|
59
|
-
const result = hidFramingHelper.makeBlocks(input.apdu);
|
|
60
|
-
expect(result).toEqual(expectedOutput);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
describe("createHIDframing.reduceResponse and createHIDframing.getReducedResult", () => {
|
|
65
|
-
const channel = Math.floor(Math.random() * 0xffff);
|
|
66
|
-
const channelBytes = [channel >> 8, channel & 0x00ff];
|
|
67
|
-
const packetSize = 64;
|
|
68
|
-
const hidFramingHelper = (0, hid_framing_1.default)(channel, packetSize);
|
|
69
|
-
const tests = [
|
|
70
|
-
{
|
|
71
|
-
// Response from a get version
|
|
72
|
-
input: [
|
|
73
|
-
{
|
|
74
|
-
chunk: Buffer.from([
|
|
75
|
-
...channelBytes,
|
|
76
|
-
...[0x05, 0, 0, 0, 0x1f], // Tag, frame id and message length (2 bytes)
|
|
77
|
-
...[
|
|
78
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00,
|
|
79
|
-
0x00, 0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01,
|
|
80
|
-
0x00, 0x90, 0x00,
|
|
81
|
-
],
|
|
82
|
-
...Buffer.alloc(26, 0), // 0-padding
|
|
83
|
-
]),
|
|
84
|
-
},
|
|
85
|
-
],
|
|
86
|
-
expectedOutput: Buffer.from([
|
|
87
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00, 0x00,
|
|
88
|
-
0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01, 0x00, 0x90,
|
|
89
|
-
0x00,
|
|
90
|
-
]),
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
// Response from a get device (long) name
|
|
94
|
-
input: [
|
|
95
|
-
// 1st frame
|
|
96
|
-
{
|
|
97
|
-
chunk: Buffer.from([
|
|
98
|
-
...channelBytes,
|
|
99
|
-
...[0x05, 0, 0, 0, 0x42], // Tag, frame id and message length (2 bytes)
|
|
100
|
-
...[
|
|
101
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f,
|
|
102
|
-
0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79,
|
|
103
|
-
0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69,
|
|
104
|
-
0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45,
|
|
105
|
-
0x76,
|
|
106
|
-
],
|
|
107
|
-
]),
|
|
108
|
-
},
|
|
109
|
-
// 2nd frame
|
|
110
|
-
{
|
|
111
|
-
chunk: Buffer.from([
|
|
112
|
-
...channelBytes,
|
|
113
|
-
...[0x05, 0, 0x01], // Tag and frame id
|
|
114
|
-
...[0x65, 0x72, 0x79, 0x42, 0x69, 0x74, 0x65, 0x90, 0x00],
|
|
115
|
-
...Buffer.alloc(50, 0), // 0-padding
|
|
116
|
-
]),
|
|
117
|
-
},
|
|
118
|
-
],
|
|
119
|
-
expectedOutput: Buffer.from([
|
|
120
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f, 0x75,
|
|
121
|
-
0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79, 0x44, 0x65,
|
|
122
|
-
0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73,
|
|
123
|
-
0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45, 0x76, 0x65, 0x72, 0x79,
|
|
124
|
-
0x42, 0x69, 0x74, 0x65, 0x90, 0x00,
|
|
125
|
-
]),
|
|
126
|
-
},
|
|
127
|
-
];
|
|
128
|
-
tests.forEach(({ input, expectedOutput }) => {
|
|
129
|
-
test(`Input: ${JSON.stringify(input)} -> Expected output: ${JSON.stringify(expectedOutput)}`, () => {
|
|
130
|
-
let responseAccumulator = null;
|
|
131
|
-
for (const currentFrame of input) {
|
|
132
|
-
responseAccumulator = hidFramingHelper.reduceResponse(responseAccumulator, currentFrame.chunk);
|
|
133
|
-
}
|
|
134
|
-
const result = hidFramingHelper.getReducedResult(responseAccumulator);
|
|
135
|
-
expect(result).toEqual(expectedOutput);
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
//# sourceMappingURL=hid-framing.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hid-framing.test.js","sourceRoot":"","sources":["../src/hid-framing.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAA8D;AAE9D,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,gBAAgB,GAAG,IAAA,qBAAgB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE/D,MAAM,KAAK,GAAG;QACZ;YACE,gBAAgB;YAChB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACnD,cAAc,EAAE;gBACd,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,YAAY;oBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;oBACtD,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY;iBACrC,CAAC;aACH;SACF;QACD;YACE,4BAA4B;YAC5B,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;iBAC/C,CAAC;aACH;YACD,cAAc,EAAE;gBACd,UAAU;gBACV,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,YAAY;oBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,4DAA4D;oBACpH,GAAG;wBACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;qBAC3D,EAAE,oCAAoC;iBACxC,CAAC;gBACF,UAAU;gBACV,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,YAAY;oBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,mBAAmB;oBACvC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,qCAAqC;oBAClH,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY;iBACrC,CAAC;aACH;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CACxE,cAAc,CACf,EAAE,EAAE,GAAG,EAAE;YACR,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACrF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,gBAAgB,GAAG,IAAA,qBAAgB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE/D,MAAM,KAAK,GAAG;QACZ;YACE,8BAA8B;YAC9B,KAAK,EAAE;gBACL;oBACE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;wBACjB,GAAG,YAAY;wBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,6CAA6C;wBACvE,GAAG;4BACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI,EAAE,IAAI,EAAE,IAAI;yBACjB;wBACD,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY;qBACrC,CAAC;iBACH;aACF;YACD,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI;aACL,CAAC;SACH;QACD;YACE,yCAAyC;YACzC,KAAK,EAAE;gBACL,YAAY;gBACZ;oBACE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;wBACjB,GAAG,YAAY;wBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,6CAA6C;wBACvE,GAAG;4BACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI;yBACL;qBACF,CAAC;iBACH;gBACD,YAAY;gBACZ;oBACE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;wBACjB,GAAG,YAAY;wBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,mBAAmB;wBACvC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;wBACzD,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY;qBACrC,CAAC;iBACH;aACF;YACD,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;aACnC,CAAC;SACH;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CACxE,cAAc,CACf,EAAE,EAAE,GAAG,EAAE;YACR,IAAI,mBAAmB,GAAuB,IAAI,CAAC;YAEnD,KAAK,MAAM,YAAY,IAAI,KAAK,EAAE,CAAC;gBACjC,mBAAmB,GAAG,gBAAgB,CAAC,cAAc,CACnD,mBAAmB,EACnB,YAAY,CAAC,KAAK,CACnB,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YAEtE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"receiveAPDU.test.d.ts","sourceRoot":"","sources":["../../src/ble/receiveAPDU.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { from } from "rxjs";
|
|
2
|
-
import { receiveAPDU } from "./receiveAPDU";
|
|
3
|
-
describe("receiveAPDU", () => {
|
|
4
|
-
const tests = [
|
|
5
|
-
// 1. Response from a get version
|
|
6
|
-
{
|
|
7
|
-
input: [
|
|
8
|
-
Buffer.from([
|
|
9
|
-
...[0x05, 0, 0, 0, 0x1f], // Tag, frame id and message length (2 bytes)
|
|
10
|
-
...[
|
|
11
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00,
|
|
12
|
-
0x00, 0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01,
|
|
13
|
-
0x00, 0x90, 0x00,
|
|
14
|
-
],
|
|
15
|
-
// No 0-padding
|
|
16
|
-
]),
|
|
17
|
-
],
|
|
18
|
-
expectedOutput: Buffer.from([
|
|
19
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00, 0x00,
|
|
20
|
-
0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01, 0x00, 0x90,
|
|
21
|
-
0x00,
|
|
22
|
-
]),
|
|
23
|
-
},
|
|
24
|
-
// 2. Response from a get device (long) name
|
|
25
|
-
{
|
|
26
|
-
input: [
|
|
27
|
-
// 1st frame
|
|
28
|
-
Buffer.from([
|
|
29
|
-
...[0x05, 0, 0, 0, 0x42], // Tag, frame id and message length (2 bytes)
|
|
30
|
-
...[
|
|
31
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f,
|
|
32
|
-
0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79,
|
|
33
|
-
0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69,
|
|
34
|
-
0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45,
|
|
35
|
-
0x76, 0x65, 0x72,
|
|
36
|
-
],
|
|
37
|
-
]),
|
|
38
|
-
// 2nd frame
|
|
39
|
-
Buffer.from([
|
|
40
|
-
...[0x05, 0, 0x01], // Tag and frame id
|
|
41
|
-
...[0x79, 0x42, 0x69, 0x74, 0x65, 0x90, 0x00],
|
|
42
|
-
// No 0-padding
|
|
43
|
-
]),
|
|
44
|
-
],
|
|
45
|
-
expectedOutput: Buffer.from([
|
|
46
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f, 0x75,
|
|
47
|
-
0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79, 0x44, 0x65,
|
|
48
|
-
0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73,
|
|
49
|
-
0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45, 0x76, 0x65, 0x72, 0x79,
|
|
50
|
-
0x42, 0x69, 0x74, 0x65, 0x90, 0x00,
|
|
51
|
-
]),
|
|
52
|
-
},
|
|
53
|
-
// 3. A device that went rogue and is sending multiple time the same response, while only 1 frame is expected
|
|
54
|
-
{
|
|
55
|
-
input: [
|
|
56
|
-
Buffer.from([
|
|
57
|
-
...[0x05, 0, 0, 0, 0x1f], // Tag, frame id and message length (2 bytes)
|
|
58
|
-
...[
|
|
59
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00,
|
|
60
|
-
0x00, 0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01,
|
|
61
|
-
0x00, 0x90, 0x00,
|
|
62
|
-
],
|
|
63
|
-
// No 0-padding
|
|
64
|
-
]),
|
|
65
|
-
Buffer.from([
|
|
66
|
-
...[0x05, 0, 0, 0, 0x1f], // Tag, frame id and message length (2 bytes)
|
|
67
|
-
...[
|
|
68
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00,
|
|
69
|
-
0x00, 0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01,
|
|
70
|
-
0x00, 0x90, 0x00,
|
|
71
|
-
],
|
|
72
|
-
// No 0-padding
|
|
73
|
-
]),
|
|
74
|
-
Buffer.from([
|
|
75
|
-
...[0x05, 0, 0, 0, 0x1f], // Tag, frame id and message length (2 bytes)
|
|
76
|
-
...[
|
|
77
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00,
|
|
78
|
-
0x00, 0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01,
|
|
79
|
-
0x00, 0x90, 0x00,
|
|
80
|
-
],
|
|
81
|
-
// No 0-padding
|
|
82
|
-
]),
|
|
83
|
-
],
|
|
84
|
-
// Only 1 response should be recorded, as only 1 frame was set in the 1st frame of the response
|
|
85
|
-
expectedOutput: Buffer.from([
|
|
86
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00, 0x00,
|
|
87
|
-
0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01, 0x00, 0x90,
|
|
88
|
-
0x00,
|
|
89
|
-
]),
|
|
90
|
-
},
|
|
91
|
-
];
|
|
92
|
-
tests.forEach(({ input, expectedOutput }) => {
|
|
93
|
-
test(`Input: ${JSON.stringify(input)} -> Expected output: ${JSON.stringify(expectedOutput)}`, done => {
|
|
94
|
-
const rawStream = from(input);
|
|
95
|
-
receiveAPDU(rawStream).subscribe({
|
|
96
|
-
error: error => {
|
|
97
|
-
done(`An error should not occur: ${error}`);
|
|
98
|
-
},
|
|
99
|
-
next: result => {
|
|
100
|
-
try {
|
|
101
|
-
expect(result).toEqual(expectedOutput);
|
|
102
|
-
done();
|
|
103
|
-
}
|
|
104
|
-
catch (error) {
|
|
105
|
-
done(error);
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
//# sourceMappingURL=receiveAPDU.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"receiveAPDU.test.js","sourceRoot":"","sources":["../../src/ble/receiveAPDU.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sendAPDU.test.d.ts","sourceRoot":"","sources":["../../src/ble/sendAPDU.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { sendAPDU } from "./sendAPDU";
|
|
2
|
-
describe("sendAPDU", () => {
|
|
3
|
-
const mtu = 64; // Arbitrary chosen MTU, in bytes, so we can compare those tests with the HID framing ones
|
|
4
|
-
const tests = [
|
|
5
|
-
{
|
|
6
|
-
// A get version
|
|
7
|
-
input: { apdu: Buffer.from([0xe0, 0x01, 0, 0, 0]) },
|
|
8
|
-
expectedOutput: [
|
|
9
|
-
// No 0-padding is needed
|
|
10
|
-
Buffer.from([0x05, 0, 0, 0, 0x05, 0xe0, 0x01, 0x00, 0x00, 0x00]),
|
|
11
|
-
],
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
// A (long) edit device name
|
|
15
|
-
input: {
|
|
16
|
-
apdu: Buffer.from([
|
|
17
|
-
0xe0, 0xd4, 0, 0, 0x40, 0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69,
|
|
18
|
-
0x74, 0x69, 0x6f, 0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a,
|
|
19
|
-
0x6f, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
|
|
20
|
-
0x69, 0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45,
|
|
21
|
-
0x76, 0x65, 0x72, 0x79, 0x42, 0x69, 0x74, 0x65,
|
|
22
|
-
]),
|
|
23
|
-
},
|
|
24
|
-
expectedOutput: [
|
|
25
|
-
// Frame 1
|
|
26
|
-
Buffer.from([
|
|
27
|
-
...[0x05, 0, 0, 0, 0x45, 0xe0, 0xd4, 0x00, 0x00, 0x40], // Tag, frame id, total length, and APDU until the Data part
|
|
28
|
-
...[
|
|
29
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f,
|
|
30
|
-
0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79,
|
|
31
|
-
0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69,
|
|
32
|
-
0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49,
|
|
33
|
-
], // First part of the new device name
|
|
34
|
-
]),
|
|
35
|
-
// Frame 2
|
|
36
|
-
Buffer.from([
|
|
37
|
-
...[0x05, 0, 0x01], // Tag and frame id
|
|
38
|
-
...[0x6e, 0x45, 0x76, 0x65, 0x72, 0x79, 0x42, 0x69, 0x74, 0x65], // Second part of the new device name
|
|
39
|
-
// No 0-padding is needed
|
|
40
|
-
]),
|
|
41
|
-
],
|
|
42
|
-
},
|
|
43
|
-
];
|
|
44
|
-
tests.forEach(({ input, expectedOutput }) => {
|
|
45
|
-
test(`Input: ${JSON.stringify(input)} -> Expected output: ${JSON.stringify(expectedOutput)}`, done => {
|
|
46
|
-
let i = 0;
|
|
47
|
-
// Compares each frame given to the `write` function to the expected frame
|
|
48
|
-
const write = (frame) => {
|
|
49
|
-
expect(frame).toEqual(expectedOutput[i]);
|
|
50
|
-
i++;
|
|
51
|
-
return Promise.resolve();
|
|
52
|
-
};
|
|
53
|
-
sendAPDU(write, input.apdu, mtu).subscribe({
|
|
54
|
-
error: error => {
|
|
55
|
-
done(`An error should not occur: ${error}`);
|
|
56
|
-
},
|
|
57
|
-
complete: () => {
|
|
58
|
-
try {
|
|
59
|
-
expect(i).toBe(expectedOutput.length);
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
done(error);
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
done();
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
//# sourceMappingURL=sendAPDU.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sendAPDU.test.js","sourceRoot":"","sources":["../../src/ble/sendAPDU.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,0FAA0F;IAE1G,MAAM,KAAK,GAAG;QACZ;YACE,gBAAgB;YAChB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACnD,cAAc,EAAE;gBACd,yBAAyB;gBACzB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;aACjE;SACF;QACD;YACE,4BAA4B;YAC5B,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;iBAC/C,CAAC;aACH;YACD,cAAc,EAAE;gBACd,UAAU;gBACV,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,4DAA4D;oBACpH,GAAG;wBACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;qBACvE,EAAE,oCAAoC;iBACxC,CAAC;gBACF,UAAU;gBACV,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,mBAAmB;oBACvC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,qCAAqC;oBACtG,yBAAyB;iBAC1B,CAAC;aACH;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CACxE,cAAc,CACf,EAAE,EAAE,IAAI,CAAC,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,CAAC;YAEV,0EAA0E;YAC1E,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE;gBAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzC,CAAC,EAAE,CAAC;gBAEJ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,CAAC,CAAC;YAEF,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC;gBACzC,KAAK,EAAE,KAAK,CAAC,EAAE;oBACb,IAAI,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBACD,QAAQ,EAAE,GAAG,EAAE;oBACb,IAAI,CAAC;wBACH,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBACxC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,KAAK,CAAC,CAAC;wBACZ,OAAO;oBACT,CAAC;oBACD,IAAI,EAAE,CAAC;gBACT,CAAC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/lib-es/helpers.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.test.d.ts","sourceRoot":"","sources":["../src/helpers.test.ts"],"names":[],"mappings":""}
|
package/lib-es/helpers.test.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { DeviceModelId } from ".";
|
|
2
|
-
import { stringToDeviceModelId, isDeviceModelId } from "./helpers";
|
|
3
|
-
const validDeviceModelsIds = ["nanoS", "nanoX", "blue", "nanoSP", "stax", "europa"];
|
|
4
|
-
const invalidDeviceModelsIds = ["does-not-exist", "", null, undefined];
|
|
5
|
-
describe("isDeviceModelId", () => {
|
|
6
|
-
validDeviceModelsIds.forEach(potentialModelId => {
|
|
7
|
-
test(`Input: ${potentialModelId} -> Expected output: true`, () => {
|
|
8
|
-
const result = isDeviceModelId(potentialModelId);
|
|
9
|
-
expect(result).toEqual(true);
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
invalidDeviceModelsIds.forEach(potentialModelId => {
|
|
13
|
-
test(`Input: ${potentialModelId} -> Expected output: false`, () => {
|
|
14
|
-
const result = isDeviceModelId(potentialModelId);
|
|
15
|
-
expect(result).toEqual(false);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
describe("stringToDeviceModelId", () => {
|
|
20
|
-
const tests = [
|
|
21
|
-
{
|
|
22
|
-
input: ["stax", DeviceModelId.nanoSP],
|
|
23
|
-
expectedOutput: DeviceModelId.stax,
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
input: ["does-not-exist", DeviceModelId.nanoSP],
|
|
27
|
-
expectedOutput: DeviceModelId.nanoSP,
|
|
28
|
-
},
|
|
29
|
-
];
|
|
30
|
-
tests.forEach(({ input, expectedOutput }) => {
|
|
31
|
-
test(`Input: ${JSON.stringify(input)} -> Expected output: ${expectedOutput}`, () => {
|
|
32
|
-
const result = stringToDeviceModelId(...input);
|
|
33
|
-
expect(result).toEqual(expectedOutput);
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
//# sourceMappingURL=helpers.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.test.js","sourceRoot":"","sources":["../src/helpers.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEnE,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpF,MAAM,sBAAsB,GAAG,CAAC,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAEvE,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QAC9C,IAAI,CAAC,UAAU,gBAAgB,2BAA2B,EAAE,GAAG,EAAE;YAC/D,MAAM,MAAM,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sBAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QAChD,IAAI,CAAC,UAAU,gBAAgB,4BAA4B,EAAE,GAAG,EAAE;YAChE,MAAM,MAAM,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAOH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,KAAK,GAAW;QACpB;YACE,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;YACrC,cAAc,EAAE,aAAa,CAAC,IAAI;SACnC;QACD;YACE,KAAK,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC;YAC/C,cAAc,EAAE,aAAa,CAAC,MAAM;SACrC;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,cAAc,EAAE,EAAE,GAAG,EAAE;YACjF,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,KAAK,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hid-framing.test.d.ts","sourceRoot":"","sources":["../src/hid-framing.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import createHIDframing from "./hid-framing";
|
|
2
|
-
describe("createHIDframing.makeBlocks", () => {
|
|
3
|
-
const channel = Math.floor(Math.random() * 0xffff);
|
|
4
|
-
const channelBytes = [channel >> 8, channel & 0x00ff];
|
|
5
|
-
const packetSize = 64;
|
|
6
|
-
const hidFramingHelper = createHIDframing(channel, packetSize);
|
|
7
|
-
const tests = [
|
|
8
|
-
{
|
|
9
|
-
// A get version
|
|
10
|
-
input: { apdu: Buffer.from([0xe0, 0x01, 0, 0, 0]) },
|
|
11
|
-
expectedOutput: [
|
|
12
|
-
Buffer.from([
|
|
13
|
-
...channelBytes,
|
|
14
|
-
...[0x05, 0, 0, 0, 0x05, 0xe0, 0x01, 0x00, 0x00, 0x00],
|
|
15
|
-
...Buffer.alloc(52, 0), // 0-padding
|
|
16
|
-
]),
|
|
17
|
-
],
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
// A (long) edit device name
|
|
21
|
-
input: {
|
|
22
|
-
apdu: Buffer.from([
|
|
23
|
-
0xe0, 0xd4, 0, 0, 0x40, 0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69,
|
|
24
|
-
0x74, 0x69, 0x6f, 0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a,
|
|
25
|
-
0x6f, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
|
|
26
|
-
0x69, 0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45,
|
|
27
|
-
0x76, 0x65, 0x72, 0x79, 0x42, 0x69, 0x74, 0x65,
|
|
28
|
-
]),
|
|
29
|
-
},
|
|
30
|
-
expectedOutput: [
|
|
31
|
-
// Frame 1
|
|
32
|
-
Buffer.from([
|
|
33
|
-
...channelBytes,
|
|
34
|
-
...[0x05, 0, 0, 0, 0x45, 0xe0, 0xd4, 0x00, 0x00, 0x40], // Tag, frame id, total length, and APDU until the Data part
|
|
35
|
-
...[
|
|
36
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f,
|
|
37
|
-
0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79,
|
|
38
|
-
0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69,
|
|
39
|
-
0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e,
|
|
40
|
-
], // First part of the new device name
|
|
41
|
-
]),
|
|
42
|
-
// Frame 2
|
|
43
|
-
Buffer.from([
|
|
44
|
-
...channelBytes,
|
|
45
|
-
...[0x05, 0, 0x01], // Tag and frame id
|
|
46
|
-
...[0x79, 0x49, 0x6e, 0x45, 0x76, 0x65, 0x72, 0x79, 0x42, 0x69, 0x74, 0x65], // Second part of the new device name
|
|
47
|
-
...Buffer.alloc(47, 0), // 0-padding
|
|
48
|
-
]),
|
|
49
|
-
],
|
|
50
|
-
},
|
|
51
|
-
];
|
|
52
|
-
tests.forEach(({ input, expectedOutput }) => {
|
|
53
|
-
test(`Input: ${JSON.stringify(input)} -> Expected output: ${JSON.stringify(expectedOutput)}`, () => {
|
|
54
|
-
const result = hidFramingHelper.makeBlocks(input.apdu);
|
|
55
|
-
expect(result).toEqual(expectedOutput);
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
describe("createHIDframing.reduceResponse and createHIDframing.getReducedResult", () => {
|
|
60
|
-
const channel = Math.floor(Math.random() * 0xffff);
|
|
61
|
-
const channelBytes = [channel >> 8, channel & 0x00ff];
|
|
62
|
-
const packetSize = 64;
|
|
63
|
-
const hidFramingHelper = createHIDframing(channel, packetSize);
|
|
64
|
-
const tests = [
|
|
65
|
-
{
|
|
66
|
-
// Response from a get version
|
|
67
|
-
input: [
|
|
68
|
-
{
|
|
69
|
-
chunk: Buffer.from([
|
|
70
|
-
...channelBytes,
|
|
71
|
-
...[0x05, 0, 0, 0, 0x1f], // Tag, frame id and message length (2 bytes)
|
|
72
|
-
...[
|
|
73
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00,
|
|
74
|
-
0x00, 0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01,
|
|
75
|
-
0x00, 0x90, 0x00,
|
|
76
|
-
],
|
|
77
|
-
...Buffer.alloc(26, 0), // 0-padding
|
|
78
|
-
]),
|
|
79
|
-
},
|
|
80
|
-
],
|
|
81
|
-
expectedOutput: Buffer.from([
|
|
82
|
-
0x33, 0x20, 0x00, 0x04, 0x05, 0x31, 0x2e, 0x33, 0x2e, 0x30, 0x04, 0xe6, 0x02, 0x00, 0x00,
|
|
83
|
-
0x04, 0x35, 0x2e, 0x32, 0x34, 0x04, 0x30, 0x2e, 0x34, 0x38, 0x01, 0x00, 0x01, 0x00, 0x90,
|
|
84
|
-
0x00,
|
|
85
|
-
]),
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
// Response from a get device (long) name
|
|
89
|
-
input: [
|
|
90
|
-
// 1st frame
|
|
91
|
-
{
|
|
92
|
-
chunk: Buffer.from([
|
|
93
|
-
...channelBytes,
|
|
94
|
-
...[0x05, 0, 0, 0, 0x42], // Tag, frame id and message length (2 bytes)
|
|
95
|
-
...[
|
|
96
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f,
|
|
97
|
-
0x75, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79,
|
|
98
|
-
0x44, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69,
|
|
99
|
-
0x6e, 0x65, 0x73, 0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45,
|
|
100
|
-
0x76,
|
|
101
|
-
],
|
|
102
|
-
]),
|
|
103
|
-
},
|
|
104
|
-
// 2nd frame
|
|
105
|
-
{
|
|
106
|
-
chunk: Buffer.from([
|
|
107
|
-
...channelBytes,
|
|
108
|
-
...[0x05, 0, 0x01], // Tag and frame id
|
|
109
|
-
...[0x65, 0x72, 0x79, 0x42, 0x69, 0x74, 0x65, 0x90, 0x00],
|
|
110
|
-
...Buffer.alloc(50, 0), // 0-padding
|
|
111
|
-
]),
|
|
112
|
-
},
|
|
113
|
-
],
|
|
114
|
-
expectedOutput: Buffer.from([
|
|
115
|
-
0x54, 0x6f, 0x66, 0x75, 0x49, 0x73, 0x4e, 0x75, 0x74, 0x72, 0x69, 0x74, 0x69, 0x6f, 0x75,
|
|
116
|
-
0x73, 0x41, 0x6e, 0x64, 0x42, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x79, 0x44, 0x65,
|
|
117
|
-
0x6c, 0x69, 0x67, 0x68, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73,
|
|
118
|
-
0x73, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x45, 0x76, 0x65, 0x72, 0x79,
|
|
119
|
-
0x42, 0x69, 0x74, 0x65, 0x90, 0x00,
|
|
120
|
-
]),
|
|
121
|
-
},
|
|
122
|
-
];
|
|
123
|
-
tests.forEach(({ input, expectedOutput }) => {
|
|
124
|
-
test(`Input: ${JSON.stringify(input)} -> Expected output: ${JSON.stringify(expectedOutput)}`, () => {
|
|
125
|
-
let responseAccumulator = null;
|
|
126
|
-
for (const currentFrame of input) {
|
|
127
|
-
responseAccumulator = hidFramingHelper.reduceResponse(responseAccumulator, currentFrame.chunk);
|
|
128
|
-
}
|
|
129
|
-
const result = hidFramingHelper.getReducedResult(responseAccumulator);
|
|
130
|
-
expect(result).toEqual(expectedOutput);
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
//# sourceMappingURL=hid-framing.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hid-framing.test.js","sourceRoot":"","sources":["../src/hid-framing.test.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAiC,MAAM,eAAe,CAAC;AAE9D,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE/D,MAAM,KAAK,GAAG;QACZ;YACE,gBAAgB;YAChB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACnD,cAAc,EAAE;gBACd,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,YAAY;oBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;oBACtD,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY;iBACrC,CAAC;aACH;SACF;QACD;YACE,4BAA4B;YAC5B,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;oBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;iBAC/C,CAAC;aACH;YACD,cAAc,EAAE;gBACd,UAAU;gBACV,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,YAAY;oBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,4DAA4D;oBACpH,GAAG;wBACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;qBAC3D,EAAE,oCAAoC;iBACxC,CAAC;gBACF,UAAU;gBACV,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,YAAY;oBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,mBAAmB;oBACvC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,qCAAqC;oBAClH,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY;iBACrC,CAAC;aACH;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CACxE,cAAc,CACf,EAAE,EAAE,GAAG,EAAE;YACR,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACrF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE/D,MAAM,KAAK,GAAG;QACZ;YACE,8BAA8B;YAC9B,KAAK,EAAE;gBACL;oBACE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;wBACjB,GAAG,YAAY;wBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,6CAA6C;wBACvE,GAAG;4BACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI,EAAE,IAAI,EAAE,IAAI;yBACjB;wBACD,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY;qBACrC,CAAC;iBACH;aACF;YACD,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI;aACL,CAAC;SACH;QACD;YACE,yCAAyC;YACzC,KAAK,EAAE;gBACL,YAAY;gBACZ;oBACE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;wBACjB,GAAG,YAAY;wBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,6CAA6C;wBACvE,GAAG;4BACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;4BAClF,IAAI;yBACL;qBACF,CAAC;iBACH;gBACD,YAAY;gBACZ;oBACE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;wBACjB,GAAG,YAAY;wBACf,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,mBAAmB;wBACvC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;wBACzD,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY;qBACrC,CAAC;iBACH;aACF;YACD,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;gBACxF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;aACnC,CAAC;SACH;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CACxE,cAAc,CACf,EAAE,EAAE,GAAG,EAAE;YACR,IAAI,mBAAmB,GAAuB,IAAI,CAAC;YAEnD,KAAK,MAAM,YAAY,IAAI,KAAK,EAAE,CAAC;gBACjC,mBAAmB,GAAG,gBAAgB,CAAC,cAAc,CACnD,mBAAmB,EACnB,YAAY,CAAC,KAAK,CACnB,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YAEtE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|