@ledgerhq/hw-app-hedera 1.0.1-nightly.0 → 1.1.0-next.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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @ledgerhq/hw-app-hedera@1.0.0 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/hw-app-hedera
3
- > tsc && tsc -m ES6 --outDir lib-es
2
+ > @ledgerhq/hw-app-hedera@1.0.1 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/hw-app-hedera
3
+ > tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
4
4
 
@@ -1,9 +1,5 @@
1
1
  {
2
2
  "ignoreUnresolved": [],
3
- "ignoreUnused": [
4
- "@ledgerhq/hw-transport"
5
- ],
6
- "ignoreUnimported": [
7
- "src/Hedera.ts"
8
- ]
3
+ "ignoreUnused": ["@ledgerhq/hw-transport", "jest-sonar"],
4
+ "ignoreUnimported": ["src/Hedera.ts"]
9
5
  }
package/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  # @ledgerhq/hw-app-hedera
2
2
 
3
- ## 1.0.1-nightly.0
3
+ ## 1.1.0-next.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#9298](https://github.com/LedgerHQ/ledger-live/pull/9298) [`2785d49`](https://github.com/LedgerHQ/ledger-live/commit/2785d49ac320498f98ed39b4eccc48310ad35fe1) Thanks [@Canestin](https://github.com/Canestin)! - config coin-integration env for sonarqube
8
+
9
+ ## 1.0.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [#8118](https://github.com/LedgerHQ/ledger-live/pull/8118) [`17d52ce`](https://github.com/LedgerHQ/ledger-live/commit/17d52ce37dd642a1d01aac2268e1b9623dc8a260) Thanks [@Wozacosta](https://github.com/Wozacosta)! - Creation of coin-hedera package
14
+
15
+ ## 1.0.1-next.0
4
16
 
5
17
  ### Patch Changes
6
18
 
package/jest.config.ts CHANGED
@@ -3,4 +3,21 @@ import baseConfig from "../../jest.config";
3
3
  export default {
4
4
  ...baseConfig,
5
5
  rootDir: __dirname,
6
+ collectCoverageFrom: [
7
+ "src/**/*.ts",
8
+ "!src/**/*.test.{ts,tsx}",
9
+ "!src/**/*.spec.{ts,tsx}",
10
+ "!src/**/__tests__/**",
11
+ "!tests/**",
12
+ ],
13
+ coverageReporters: ["json", ["lcov", { projectRoot: "../" }], "json-summary", "text"],
14
+ reporters: [
15
+ [
16
+ "jest-sonar",
17
+ {
18
+ outputName: "hw-app-hedera-sonar-executionTests-report.xml",
19
+ reportedFilePath: "absolute",
20
+ },
21
+ ],
22
+ ],
6
23
  };
package/lib/Hedera.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import type Transport from "@ledgerhq/hw-transport";
3
4
  /** Hedera BOLOS API */
4
5
  export default class Hedera {
@@ -1 +1 @@
1
- {"version":3,"file":"Hedera.d.ts","sourceRoot":"","sources":["../src/Hedera.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAepD,uBAAuB;AACvB,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,SAAS,EAAE,SAAS,CAAC;gBAET,SAAS,EAAE,SAAS,EAAE,WAAW,SAAS;IAMtD;;;;;;;;OAQG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB3C,eAAe,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBnE;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;CASvC"}
1
+ {"version":3,"file":"Hedera.d.ts","sourceRoot":"","sources":["../src/Hedera.ts"],"names":[],"mappings":";;AACA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAepD,uBAAuB;AACvB,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,SAAS,EAAE,SAAS,CAAC;gBAET,SAAS,EAAE,SAAS,EAAE,WAAW,SAAS;IAMtD;;;;;;;;OAQG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB3C,eAAe,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBnE;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;CASvC"}
package/lib/Hedera.js CHANGED
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -25,6 +16,7 @@ const STATUS = {
25
16
  };
26
17
  /** Hedera BOLOS API */
27
18
  class Hedera {
19
+ transport;
28
20
  constructor(transport, scrambleKey = "BOIL") {
29
21
  this.transport = transport;
30
22
  transport.decorateAppAPIMethods(this, ["getPublicKey"], scrambleKey);
@@ -38,37 +30,33 @@ class Hedera {
38
30
  * @param path a path in BIP-32 format
39
31
  * @return the public key
40
32
  */
41
- getPublicKey(path) {
42
- return __awaiter(this, void 0, void 0, function* () {
43
- const bipPath = bip32_path_1.default.fromString(path).toPathArray();
44
- const serializedPath = this._serializePath(bipPath);
45
- const p1 = 0x01;
46
- const p2 = 0x00;
47
- const response = yield this.transport.send(CLA, INS.GET_PUBLIC_KEY, p1, p2, serializedPath);
48
- const returnCodeBytes = response.slice(-2);
49
- const returnCode = (returnCodeBytes[0] << 8) | returnCodeBytes[1];
50
- if (returnCode === STATUS.USER_CANCEL) {
51
- throw new errors_1.UserRefusedAddress();
52
- }
53
- return response.slice(0, 32).toString("hex");
54
- });
33
+ async getPublicKey(path) {
34
+ const bipPath = bip32_path_1.default.fromString(path).toPathArray();
35
+ const serializedPath = this._serializePath(bipPath);
36
+ const p1 = 0x01;
37
+ const p2 = 0x00;
38
+ const response = await this.transport.send(CLA, INS.GET_PUBLIC_KEY, p1, p2, serializedPath);
39
+ const returnCodeBytes = response.slice(-2);
40
+ const returnCode = (returnCodeBytes[0] << 8) | returnCodeBytes[1];
41
+ if (returnCode === STATUS.USER_CANCEL) {
42
+ throw new errors_1.UserRefusedAddress();
43
+ }
44
+ return response.slice(0, 32).toString("hex");
55
45
  }
56
46
  // TODO: the BOLOS app does not support anything but index #0 for signing transactions
57
- signTransaction(transaction) {
58
- return __awaiter(this, void 0, void 0, function* () {
59
- const payload = Buffer.alloc(4 + transaction.length);
60
- payload.writeUInt32LE(0);
61
- payload.fill(transaction, 4);
62
- const p1 = 0x00;
63
- const p2 = 0x00;
64
- const response = yield this.transport.send(CLA, INS.SIGN_TRANSACTION, p1, p2, payload);
65
- const returnCodeBytes = response.slice(-2);
66
- const returnCode = (returnCodeBytes[0] << 8) | returnCodeBytes[1];
67
- if (returnCode === STATUS.USER_CANCEL) {
68
- throw new errors_1.UserRefusedOnDevice();
69
- }
70
- return response.slice(0, -2);
71
- });
47
+ async signTransaction(transaction) {
48
+ const payload = Buffer.alloc(4 + transaction.length);
49
+ payload.writeUInt32LE(0);
50
+ payload.fill(transaction, 4);
51
+ const p1 = 0x00;
52
+ const p2 = 0x00;
53
+ const response = await this.transport.send(CLA, INS.SIGN_TRANSACTION, p1, p2, payload);
54
+ const returnCodeBytes = response.slice(-2);
55
+ const returnCode = (returnCodeBytes[0] << 8) | returnCodeBytes[1];
56
+ if (returnCode === STATUS.USER_CANCEL) {
57
+ throw new errors_1.UserRefusedOnDevice();
58
+ }
59
+ return response.slice(0, -2);
72
60
  }
73
61
  /**
74
62
  * Serialize a BIP path to a data buffer, intended for
package/lib/Hedera.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Hedera.js","sourceRoot":"","sources":["../src/Hedera.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Hedera.js","sourceRoot":"","sources":["../src/Hedera.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import type Transport from "@ledgerhq/hw-transport";
3
4
  /** Hedera BOLOS API */
4
5
  export default class Hedera {
@@ -1 +1 @@
1
- {"version":3,"file":"Hedera.d.ts","sourceRoot":"","sources":["../src/Hedera.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAepD,uBAAuB;AACvB,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,SAAS,EAAE,SAAS,CAAC;gBAET,SAAS,EAAE,SAAS,EAAE,WAAW,SAAS;IAMtD;;;;;;;;OAQG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB3C,eAAe,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBnE;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;CASvC"}
1
+ {"version":3,"file":"Hedera.d.ts","sourceRoot":"","sources":["../src/Hedera.ts"],"names":[],"mappings":";;AACA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAepD,uBAAuB;AACvB,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,SAAS,EAAE,SAAS,CAAC;gBAET,SAAS,EAAE,SAAS,EAAE,WAAW,SAAS;IAMtD;;;;;;;;OAQG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB3C,eAAe,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBnE;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;CASvC"}
package/lib-es/Hedera.js CHANGED
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { UserRefusedAddress, UserRefusedOnDevice } from "@ledgerhq/errors";
11
2
  import BIPPath from "bip32-path";
12
3
  const CLA = 0xe0;
@@ -20,6 +11,7 @@ const STATUS = {
20
11
  };
21
12
  /** Hedera BOLOS API */
22
13
  export default class Hedera {
14
+ transport;
23
15
  constructor(transport, scrambleKey = "BOIL") {
24
16
  this.transport = transport;
25
17
  transport.decorateAppAPIMethods(this, ["getPublicKey"], scrambleKey);
@@ -33,37 +25,33 @@ export default class Hedera {
33
25
  * @param path a path in BIP-32 format
34
26
  * @return the public key
35
27
  */
36
- getPublicKey(path) {
37
- return __awaiter(this, void 0, void 0, function* () {
38
- const bipPath = BIPPath.fromString(path).toPathArray();
39
- const serializedPath = this._serializePath(bipPath);
40
- const p1 = 0x01;
41
- const p2 = 0x00;
42
- const response = yield this.transport.send(CLA, INS.GET_PUBLIC_KEY, p1, p2, serializedPath);
43
- const returnCodeBytes = response.slice(-2);
44
- const returnCode = (returnCodeBytes[0] << 8) | returnCodeBytes[1];
45
- if (returnCode === STATUS.USER_CANCEL) {
46
- throw new UserRefusedAddress();
47
- }
48
- return response.slice(0, 32).toString("hex");
49
- });
28
+ async getPublicKey(path) {
29
+ const bipPath = BIPPath.fromString(path).toPathArray();
30
+ const serializedPath = this._serializePath(bipPath);
31
+ const p1 = 0x01;
32
+ const p2 = 0x00;
33
+ const response = await this.transport.send(CLA, INS.GET_PUBLIC_KEY, p1, p2, serializedPath);
34
+ const returnCodeBytes = response.slice(-2);
35
+ const returnCode = (returnCodeBytes[0] << 8) | returnCodeBytes[1];
36
+ if (returnCode === STATUS.USER_CANCEL) {
37
+ throw new UserRefusedAddress();
38
+ }
39
+ return response.slice(0, 32).toString("hex");
50
40
  }
51
41
  // TODO: the BOLOS app does not support anything but index #0 for signing transactions
52
- signTransaction(transaction) {
53
- return __awaiter(this, void 0, void 0, function* () {
54
- const payload = Buffer.alloc(4 + transaction.length);
55
- payload.writeUInt32LE(0);
56
- payload.fill(transaction, 4);
57
- const p1 = 0x00;
58
- const p2 = 0x00;
59
- const response = yield this.transport.send(CLA, INS.SIGN_TRANSACTION, p1, p2, payload);
60
- const returnCodeBytes = response.slice(-2);
61
- const returnCode = (returnCodeBytes[0] << 8) | returnCodeBytes[1];
62
- if (returnCode === STATUS.USER_CANCEL) {
63
- throw new UserRefusedOnDevice();
64
- }
65
- return response.slice(0, -2);
66
- });
42
+ async signTransaction(transaction) {
43
+ const payload = Buffer.alloc(4 + transaction.length);
44
+ payload.writeUInt32LE(0);
45
+ payload.fill(transaction, 4);
46
+ const p1 = 0x00;
47
+ const p2 = 0x00;
48
+ const response = await this.transport.send(CLA, INS.SIGN_TRANSACTION, p1, p2, payload);
49
+ const returnCodeBytes = response.slice(-2);
50
+ const returnCode = (returnCodeBytes[0] << 8) | returnCodeBytes[1];
51
+ if (returnCode === STATUS.USER_CANCEL) {
52
+ throw new UserRefusedOnDevice();
53
+ }
54
+ return response.slice(0, -2);
67
55
  }
68
56
  /**
69
57
  * Serialize a BIP path to a data buffer, intended for
@@ -1 +1 @@
1
- {"version":3,"file":"Hedera.js","sourceRoot":"","sources":["../src/Hedera.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Hedera.js","sourceRoot":"","sources":["../src/Hedera.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/hw-app-hedera",
3
- "version": "1.0.1-nightly.0",
3
+ "version": "1.1.0-next.0",
4
4
  "description": "Ledger Hardware Wallet Hedera Application API",
5
5
  "keywords": [
6
6
  "Ledger",
@@ -26,25 +26,28 @@
26
26
  "license": "Apache-2.0",
27
27
  "dependencies": {
28
28
  "bip32-path": "^0.4.2",
29
- "@ledgerhq/hw-transport": "^6.31.4",
30
- "@ledgerhq/errors": "^6.19.1"
29
+ "@ledgerhq/errors": "^6.19.1",
30
+ "@ledgerhq/hw-transport": "^6.31.4"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/jest": "^29.5.10",
34
- "@types/node": "^20.8.10",
34
+ "@types/node": "^22.10.10",
35
35
  "documentation": "14.0.2",
36
36
  "jest": "^29.7.0",
37
37
  "rimraf": "^4.4.1",
38
38
  "source-map-support": "^0.5.21",
39
39
  "ts-jest": "^29.1.1",
40
40
  "ts-node": "^10.4.0",
41
+ "jest-sonar": "0.2.16",
41
42
  "@ledgerhq/hw-transport-mocker": "^6.29.4"
42
43
  },
43
44
  "scripts": {
44
45
  "clean": "rimraf lib lib-es",
45
- "build": "tsc && tsc -m ES6 --outDir lib-es",
46
+ "build": "tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es",
47
+ "coverage": "jest --coverage --passWithNoTests && mv coverage/coverage-final.json coverage/coverage-hw-app-hedera.json && mv coverage/lcov.info coverage/hw-app-hedera-lcov.info",
46
48
  "prewatch": "pnpm build",
47
49
  "watch": "tsc --watch",
50
+ "watch:es": "tsc --watch -m esnext --moduleResolution bundler --outDir lib-es",
48
51
  "doc": "documentation readme src/** --section=API --pe ts --re ts --re d.ts",
49
52
  "lint": "eslint ./src --no-error-on-unmatched-pattern --ext .ts,.tsx --cache",
50
53
  "lint:fix": "pnpm lint --fix",