@ledgerhq/ledger-trust-service 0.4.0 → 0.4.1-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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @ledgerhq/ledger-trust-service@0.4.0 build /home/runner/work/ledger-live/ledger-live/libs/ledger-services/trust
2
+ > @ledgerhq/ledger-trust-service@0.4.1-nightly.0 build /home/runner/work/ledger-live/ledger-live/libs/ledger-services/trust
3
3
  > tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @ledgerhq/ledger-trust-service
2
2
 
3
+ ## 0.4.1-nightly.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`ccf788d`](https://github.com/LedgerHQ/ledger-live/commit/ccf788d7c0239ca95e76c3cc340f9a6bd09ea726), [`b962966`](https://github.com/LedgerHQ/ledger-live/commit/b962966525517c5cfa7f1f8826f8f2b9162189e4)]:
8
+ - @ledgerhq/live-env@2.20.0-nightly.0
9
+ - @ledgerhq/live-network@2.1.0-nightly.1
10
+
11
+ ## 0.4.1-nightly.0
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [[`63e8f34`](https://github.com/LedgerHQ/ledger-live/commit/63e8f342f6b951ab77bb710b9971f033c05e579e)]:
16
+ - @ledgerhq/live-network@2.1.0-nightly.0
17
+
3
18
  ## 0.4.0
4
19
 
5
20
  ### Minor Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/ledger-trust-service",
3
- "version": "0.4.0",
3
+ "version": "0.4.1-nightly.1",
4
4
  "description": "Ledger Trust service client",
5
5
  "keywords": [
6
6
  "Ledger",
@@ -55,8 +55,8 @@
55
55
  },
56
56
  "license": "Apache-2.0",
57
57
  "dependencies": {
58
- "@ledgerhq/live-env": "2.19.0",
59
- "@ledgerhq/live-network": "2.0.20"
58
+ "@ledgerhq/live-env": "2.20.0-nightly.0",
59
+ "@ledgerhq/live-network": "2.1.0-nightly.1"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@types/jest": "^29.5.10",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=hedera.integ.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hedera.integ.test.d.ts","sourceRoot":"","sources":["../src/hedera.integ.test.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const hedera_1 = require("./hedera");
4
- describe("getPublicKey", () => {
5
- it("returns expected public key info", async () => {
6
- // When
7
- const result = await (0, hedera_1.getPublicKey)("0.0.751515", "1", "test");
8
- // Then
9
- expect(result).toEqual(expect.objectContaining({
10
- account: "0.0.751515",
11
- key: "0xe645c093bab64b4d076e82a85fd11bbfac24af0d827e7dafa8c49e04395970eb",
12
- }));
13
- });
14
- });
15
- //# sourceMappingURL=hedera.integ.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hedera.integ.test.js","sourceRoot":"","sources":["../src/hedera.integ.test.ts"],"names":[],"mappings":";;AAAA,qCAAwC;AAExC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAY,EAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7D,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,MAAM,CAAC,gBAAgB,CAAC;YACtB,OAAO,EAAE,YAAY;YACrB,GAAG,EAAE,oEAAoE;SAC1E,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=hedera.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hedera.test.d.ts","sourceRoot":"","sources":["../src/hedera.test.ts"],"names":[],"mappings":""}
@@ -1,57 +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 live_network_1 = __importDefault(require("@ledgerhq/live-network"));
7
- const hedera_1 = require("./hedera");
8
- jest.mock("@ledgerhq/live-network");
9
- describe("hedera", () => {
10
- beforeEach(() => {
11
- jest.resetModules();
12
- jest.clearAllMocks();
13
- });
14
- describe("getPublicKey", () => {
15
- it.each([
16
- ["prod", "https://nft.api.live.ledger.com"],
17
- [undefined, "https://nft.api.live.ledger.com"],
18
- ["test", "https://nft.api.live.ledger-test.com"],
19
- ])("fetch the correct %s service environment", async (env, baseUrl) => {
20
- // Given
21
- const accountId = "HEDERA_ACCOUNT_ID";
22
- const challenge = "WHATEVER_CHALLENGE";
23
- const mockResponse = {};
24
- live_network_1.default.mockResolvedValue({ data: mockResponse });
25
- // When
26
- await (0, hedera_1.getPublicKey)(accountId, challenge, env);
27
- // Then
28
- expect(live_network_1.default).toHaveBeenCalledWith({
29
- method: "GET",
30
- url: `${baseUrl}/v2/hedera/pubkey/${accountId}?challenge=${challenge}`,
31
- });
32
- });
33
- it("transforms data as expected", async () => {
34
- // Given
35
- const accountId = "HEDERA_ACCOUNT_ID";
36
- const publicKey = "HEDERA_PUBLIC_KEY";
37
- const challenge = "WHATEVER_CHALLENGE";
38
- const mockResponse = {
39
- descriptorType: "TrustedDomainName",
40
- descriptorVersion: 3,
41
- account: accountId,
42
- key: publicKey,
43
- signedDescriptor: "SIGNATURE",
44
- };
45
- live_network_1.default.mockResolvedValue({ data: mockResponse });
46
- // When
47
- const result = await (0, hedera_1.getPublicKey)(accountId, challenge);
48
- // Then
49
- expect(result).toEqual({
50
- accountId,
51
- publicKey,
52
- signedDescriptor: "SIGNATURE",
53
- });
54
- });
55
- });
56
- });
57
- //# sourceMappingURL=hedera.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hedera.test.js","sourceRoot":"","sources":["../src/hedera.test.ts"],"names":[],"mappings":";;;;;AAAA,0EAA6C;AAC7C,qCAAwC;AAExC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEpC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,IAAI,CAAC;YACN,CAAC,MAAM,EAAE,iCAAiC,CAAC;YAC3C,CAAC,SAAS,EAAE,iCAAiC,CAAC;YAC9C,CAAC,MAAM,EAAE,sCAAsC,CAAC;SACjD,CAAC,CAAC,0CAA0C,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YACpE,QAAQ;YACR,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACtC,MAAM,SAAS,GAAG,oBAAoB,CAAC;YACvC,MAAM,YAAY,GAAG,EAAE,CAAC;YACvB,sBAAqB,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,IAAA,qBAAY,EAAC,SAAS,EAAE,SAAS,EAAE,GAAsB,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,CAAC,sBAAO,CAAC,CAAC,oBAAoB,CAAC;gBACnC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,GAAG,OAAO,qBAAqB,SAAS,cAAc,SAAS,EAAE;aACvE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,QAAQ;YACR,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACtC,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACtC,MAAM,SAAS,GAAG,oBAAoB,CAAC;YACvC,MAAM,YAAY,GAAG;gBACnB,cAAc,EAAE,mBAAmB;gBACnC,iBAAiB,EAAE,CAAC;gBACpB,OAAO,EAAE,SAAS;gBAClB,GAAG,EAAE,SAAS;gBACd,gBAAgB,EAAE,WAAW;aAC9B,CAAC;YACD,sBAAqB,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAY,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAExD,OAAO;YACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,SAAS;gBACT,SAAS;gBACT,gBAAgB,EAAE,WAAW;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=solana.integ.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana.integ.test.d.ts","sourceRoot":"","sources":["../src/solana.integ.test.ts"],"names":[],"mappings":""}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const solana_1 = require("./solana");
4
- describe("getOwnerAddress", () => {
5
- it("returns expected ATA info", async () => {
6
- // When
7
- const result = await (0, solana_1.getOwnerAddress)("EQ96zptNAWwM23m5v2ByChCMTFu6zUmJgRtUrQV1uYNM", "", "test");
8
- // Then
9
- expect(result).toEqual(expect.objectContaining({
10
- tokenAccount: "EQ96zptNAWwM23m5v2ByChCMTFu6zUmJgRtUrQV1uYNM",
11
- owner: "AS1kiySqqS6Tvv3KmBsr8Zbg4DUo5fDxDD9v1dF1TVYr",
12
- contract: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
13
- }));
14
- });
15
- });
16
- describe("computedTokenAddress", () => {
17
- it("returns expected ATA info", async () => {
18
- // When
19
- const result = await (0, solana_1.computedTokenAddress)("DHTPaexpcpK58w4UpvoLnFH55jfwJdpg4R73mUwryZU8", "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU", "", "test");
20
- // Then
21
- expect(result).toEqual(expect.objectContaining({
22
- tokenAccount: "GizbHjLkKspW5XzkUsWKSoWW3VwBJMYi39NwCmppsbRs",
23
- owner: "DHTPaexpcpK58w4UpvoLnFH55jfwJdpg4R73mUwryZU8",
24
- contract: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
25
- }));
26
- });
27
- });
28
- //# sourceMappingURL=solana.integ.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana.integ.test.js","sourceRoot":"","sources":["../src/solana.integ.test.ts"],"names":[],"mappings":";;AAAA,qCAAiE;AAEjE,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAe,EAClC,8CAA8C,EAC9C,EAAE,EACF,MAAM,CACP,CAAC;QAEF,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,MAAM,CAAC,gBAAgB,CAAC;YACtB,YAAY,EAAE,8CAA8C;YAC5D,KAAK,EAAE,8CAA8C;YACrD,QAAQ,EAAE,8CAA8C;SACzD,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAoB,EACvC,8CAA8C,EAC9C,8CAA8C,EAC9C,EAAE,EACF,MAAM,CACP,CAAC;QAEF,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,MAAM,CAAC,gBAAgB,CAAC;YACtB,YAAY,EAAE,8CAA8C;YAC5D,KAAK,EAAE,8CAA8C;YACrD,QAAQ,EAAE,8CAA8C;SACzD,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=solana.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana.test.d.ts","sourceRoot":"","sources":["../src/solana.test.ts"],"names":[],"mappings":""}
@@ -1,106 +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 solana_1 = require("./solana");
7
- const live_network_1 = __importDefault(require("@ledgerhq/live-network"));
8
- jest.mock("@ledgerhq/live-network");
9
- describe("solana", () => {
10
- beforeEach(() => {
11
- jest.resetModules();
12
- jest.clearAllMocks();
13
- });
14
- describe("getOwnerAddress", () => {
15
- it.each([
16
- ["prod", "https://nft.api.live.ledger.com"],
17
- [undefined, "https://nft.api.live.ledger.com"],
18
- ["test", "https://nft.api.live.ledger-test.com"],
19
- ])("fetch the correct %s service environement", async (env, baseUrl) => {
20
- // Given
21
- const ownerAddress = "SOL_ADDR";
22
- const challenge = "WHATEVER_CHALLENGE";
23
- const mockResponse = {};
24
- live_network_1.default.mockResolvedValue({ data: mockResponse });
25
- // When
26
- await (0, solana_1.getOwnerAddress)(ownerAddress, challenge, env);
27
- // Then
28
- expect(live_network_1.default).toHaveBeenCalledWith({
29
- method: "GET",
30
- url: `${baseUrl}/v2/solana/owner/${ownerAddress}?challenge=${challenge}`,
31
- });
32
- });
33
- it("transforms data as expected", async () => {
34
- // Given
35
- const ownerAddress = "SOL_ADDR";
36
- const challenge = "WHATEVER_CHALLENGE";
37
- const mintAddress = "MINT_ADDR";
38
- const tokenAddress = "TOKEN_ADDR";
39
- const mockResponse = {
40
- descriptorType: "TrustedName",
41
- descriptorVersion: 2,
42
- tokenAccount: tokenAddress,
43
- owner: ownerAddress,
44
- contract: mintAddress,
45
- signedDescriptor: "SIGNATURE",
46
- };
47
- live_network_1.default.mockResolvedValue({ data: mockResponse });
48
- // When
49
- const result = await (0, solana_1.getOwnerAddress)(ownerAddress, challenge);
50
- // Then
51
- expect(result).toEqual({
52
- contract: mintAddress,
53
- owner: ownerAddress,
54
- tokenAccount: tokenAddress,
55
- signedDescriptor: "SIGNATURE",
56
- });
57
- });
58
- });
59
- describe("computedTokenAddress", () => {
60
- it.each([
61
- ["prod", "https://nft.api.live.ledger.com"],
62
- [undefined, "https://nft.api.live.ledger.com"],
63
- ["test", "https://nft.api.live.ledger-test.com"],
64
- ])("fetch the correct %s service environement", async (env, baseUrl) => {
65
- // Given
66
- const ownerAddress = "SOL_ADDR";
67
- const mintAddress = "MINT_ADDR";
68
- const challenge = "WHATEVER_CHALLENGE";
69
- const mockResponse = {};
70
- live_network_1.default.mockResolvedValue({ data: mockResponse });
71
- // When
72
- await (0, solana_1.computedTokenAddress)(ownerAddress, mintAddress, challenge, env);
73
- // Then
74
- expect(live_network_1.default).toHaveBeenCalledWith({
75
- method: "GET",
76
- url: `${baseUrl}/v2/solana/computed-token-account/${ownerAddress}/${mintAddress}?challenge=${challenge}`,
77
- });
78
- });
79
- it("transforms data as expected", async () => {
80
- // Given
81
- const ownerAddress = "SOL_ADDR";
82
- const challenge = "WHATEVER_CHALLENGE";
83
- const mintAddress = "MINT_ADDR";
84
- const tokenAddress = "TOKEN_ADDR";
85
- const mockResponse = {
86
- descriptorType: "TrustedName",
87
- descriptorVersion: 2,
88
- tokenAccount: tokenAddress,
89
- owner: ownerAddress,
90
- contract: mintAddress,
91
- signedDescriptor: "SIGNATURE",
92
- };
93
- live_network_1.default.mockResolvedValue({ data: mockResponse });
94
- // When
95
- const result = await (0, solana_1.computedTokenAddress)(ownerAddress, mintAddress, challenge);
96
- // Then
97
- expect(result).toEqual({
98
- contract: mintAddress,
99
- owner: ownerAddress,
100
- tokenAccount: tokenAddress,
101
- signedDescriptor: "SIGNATURE",
102
- });
103
- });
104
- });
105
- });
106
- //# sourceMappingURL=solana.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana.test.js","sourceRoot":"","sources":["../src/solana.test.ts"],"names":[],"mappings":";;;;;AAAA,qCAAiE;AACjE,0EAA6C;AAE7C,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEpC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,IAAI,CAAC;YACN,CAAC,MAAM,EAAE,iCAAiC,CAAC;YAC3C,CAAC,SAAS,EAAE,iCAAiC,CAAC;YAC9C,CAAC,MAAM,EAAE,sCAAsC,CAAC;SACjD,CAAC,CAAC,2CAA2C,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YACrE,QAAQ;YACR,MAAM,YAAY,GAAG,UAAU,CAAC;YAChC,MAAM,SAAS,GAAG,oBAAoB,CAAC;YACvC,MAAM,YAAY,GAAG,EAAE,CAAC;YACvB,sBAAqB,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,IAAA,wBAAe,EAAC,YAAY,EAAE,SAAS,EAAE,GAAsB,CAAC,CAAC;YAEvE,OAAO;YACP,MAAM,CAAC,sBAAO,CAAC,CAAC,oBAAoB,CAAC;gBACnC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,GAAG,OAAO,oBAAoB,YAAY,cAAc,SAAS,EAAE;aACzE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,QAAQ;YACR,MAAM,YAAY,GAAG,UAAU,CAAC;YAChC,MAAM,SAAS,GAAG,oBAAoB,CAAC;YACvC,MAAM,WAAW,GAAG,WAAW,CAAC;YAChC,MAAM,YAAY,GAAG,YAAY,CAAC;YAClC,MAAM,YAAY,GAAG;gBACnB,cAAc,EAAE,aAAa;gBAC7B,iBAAiB,EAAE,CAAC;gBACpB,YAAY,EAAE,YAAY;gBAC1B,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,WAAW;gBACrB,gBAAgB,EAAE,WAAW;aAC9B,CAAC;YACD,sBAAqB,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAe,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAE9D,OAAO;YACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,QAAQ,EAAE,WAAW;gBACrB,KAAK,EAAE,YAAY;gBACnB,YAAY,EAAE,YAAY;gBAC1B,gBAAgB,EAAE,WAAW;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,IAAI,CAAC;YACN,CAAC,MAAM,EAAE,iCAAiC,CAAC;YAC3C,CAAC,SAAS,EAAE,iCAAiC,CAAC;YAC9C,CAAC,MAAM,EAAE,sCAAsC,CAAC;SACjD,CAAC,CAAC,2CAA2C,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YACrE,QAAQ;YACR,MAAM,YAAY,GAAG,UAAU,CAAC;YAChC,MAAM,WAAW,GAAG,WAAW,CAAC;YAChC,MAAM,SAAS,GAAG,oBAAoB,CAAC;YACvC,MAAM,YAAY,GAAG,EAAE,CAAC;YACvB,sBAAqB,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,IAAA,6BAAoB,EAAC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,GAAsB,CAAC,CAAC;YAEzF,OAAO;YACP,MAAM,CAAC,sBAAO,CAAC,CAAC,oBAAoB,CAAC;gBACnC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,GAAG,OAAO,qCAAqC,YAAY,IAAI,WAAW,cAAc,SAAS,EAAE;aACzG,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,QAAQ;YACR,MAAM,YAAY,GAAG,UAAU,CAAC;YAChC,MAAM,SAAS,GAAG,oBAAoB,CAAC;YACvC,MAAM,WAAW,GAAG,WAAW,CAAC;YAChC,MAAM,YAAY,GAAG,YAAY,CAAC;YAClC,MAAM,YAAY,GAAG;gBACnB,cAAc,EAAE,aAAa;gBAC7B,iBAAiB,EAAE,CAAC;gBACpB,YAAY,EAAE,YAAY;gBAC1B,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,WAAW;gBACrB,gBAAgB,EAAE,WAAW;aAC9B,CAAC;YACD,sBAAqB,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAoB,EAAC,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YAEhF,OAAO;YACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,QAAQ,EAAE,WAAW;gBACrB,KAAK,EAAE,YAAY;gBACnB,YAAY,EAAE,YAAY;gBAC1B,gBAAgB,EAAE,WAAW;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=hedera.integ.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hedera.integ.test.d.ts","sourceRoot":"","sources":["../src/hedera.integ.test.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- import { getPublicKey } from "./hedera";
2
- describe("getPublicKey", () => {
3
- it("returns expected public key info", async () => {
4
- // When
5
- const result = await getPublicKey("0.0.751515", "1", "test");
6
- // Then
7
- expect(result).toEqual(expect.objectContaining({
8
- account: "0.0.751515",
9
- key: "0xe645c093bab64b4d076e82a85fd11bbfac24af0d827e7dafa8c49e04395970eb",
10
- }));
11
- });
12
- });
13
- //# sourceMappingURL=hedera.integ.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hedera.integ.test.js","sourceRoot":"","sources":["../src/hedera.integ.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7D,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,MAAM,CAAC,gBAAgB,CAAC;YACtB,OAAO,EAAE,YAAY;YACrB,GAAG,EAAE,oEAAoE;SAC1E,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=hedera.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hedera.test.d.ts","sourceRoot":"","sources":["../src/hedera.test.ts"],"names":[],"mappings":""}
@@ -1,52 +0,0 @@
1
- import network from "@ledgerhq/live-network";
2
- import { getPublicKey } from "./hedera";
3
- jest.mock("@ledgerhq/live-network");
4
- describe("hedera", () => {
5
- beforeEach(() => {
6
- jest.resetModules();
7
- jest.clearAllMocks();
8
- });
9
- describe("getPublicKey", () => {
10
- it.each([
11
- ["prod", "https://nft.api.live.ledger.com"],
12
- [undefined, "https://nft.api.live.ledger.com"],
13
- ["test", "https://nft.api.live.ledger-test.com"],
14
- ])("fetch the correct %s service environment", async (env, baseUrl) => {
15
- // Given
16
- const accountId = "HEDERA_ACCOUNT_ID";
17
- const challenge = "WHATEVER_CHALLENGE";
18
- const mockResponse = {};
19
- network.mockResolvedValue({ data: mockResponse });
20
- // When
21
- await getPublicKey(accountId, challenge, env);
22
- // Then
23
- expect(network).toHaveBeenCalledWith({
24
- method: "GET",
25
- url: `${baseUrl}/v2/hedera/pubkey/${accountId}?challenge=${challenge}`,
26
- });
27
- });
28
- it("transforms data as expected", async () => {
29
- // Given
30
- const accountId = "HEDERA_ACCOUNT_ID";
31
- const publicKey = "HEDERA_PUBLIC_KEY";
32
- const challenge = "WHATEVER_CHALLENGE";
33
- const mockResponse = {
34
- descriptorType: "TrustedDomainName",
35
- descriptorVersion: 3,
36
- account: accountId,
37
- key: publicKey,
38
- signedDescriptor: "SIGNATURE",
39
- };
40
- network.mockResolvedValue({ data: mockResponse });
41
- // When
42
- const result = await getPublicKey(accountId, challenge);
43
- // Then
44
- expect(result).toEqual({
45
- accountId,
46
- publicKey,
47
- signedDescriptor: "SIGNATURE",
48
- });
49
- });
50
- });
51
- });
52
- //# sourceMappingURL=hedera.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hedera.test.js","sourceRoot":"","sources":["../src/hedera.test.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEpC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,IAAI,CAAC;YACN,CAAC,MAAM,EAAE,iCAAiC,CAAC;YAC3C,CAAC,SAAS,EAAE,iCAAiC,CAAC;YAC9C,CAAC,MAAM,EAAE,sCAAsC,CAAC;SACjD,CAAC,CAAC,0CAA0C,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YACpE,QAAQ;YACR,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACtC,MAAM,SAAS,GAAG,oBAAoB,CAAC;YACvC,MAAM,YAAY,GAAG,EAAE,CAAC;YACvB,OAAqB,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,GAAsB,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC;gBACnC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,GAAG,OAAO,qBAAqB,SAAS,cAAc,SAAS,EAAE;aACvE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,QAAQ;YACR,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACtC,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACtC,MAAM,SAAS,GAAG,oBAAoB,CAAC;YACvC,MAAM,YAAY,GAAG;gBACnB,cAAc,EAAE,mBAAmB;gBACnC,iBAAiB,EAAE,CAAC;gBACpB,OAAO,EAAE,SAAS;gBAClB,GAAG,EAAE,SAAS;gBACd,gBAAgB,EAAE,WAAW;aAC9B,CAAC;YACD,OAAqB,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAExD,OAAO;YACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,SAAS;gBACT,SAAS;gBACT,gBAAgB,EAAE,WAAW;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=solana.integ.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana.integ.test.d.ts","sourceRoot":"","sources":["../src/solana.integ.test.ts"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- import { computedTokenAddress, getOwnerAddress } from "./solana";
2
- describe("getOwnerAddress", () => {
3
- it("returns expected ATA info", async () => {
4
- // When
5
- const result = await getOwnerAddress("EQ96zptNAWwM23m5v2ByChCMTFu6zUmJgRtUrQV1uYNM", "", "test");
6
- // Then
7
- expect(result).toEqual(expect.objectContaining({
8
- tokenAccount: "EQ96zptNAWwM23m5v2ByChCMTFu6zUmJgRtUrQV1uYNM",
9
- owner: "AS1kiySqqS6Tvv3KmBsr8Zbg4DUo5fDxDD9v1dF1TVYr",
10
- contract: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
11
- }));
12
- });
13
- });
14
- describe("computedTokenAddress", () => {
15
- it("returns expected ATA info", async () => {
16
- // When
17
- const result = await computedTokenAddress("DHTPaexpcpK58w4UpvoLnFH55jfwJdpg4R73mUwryZU8", "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU", "", "test");
18
- // Then
19
- expect(result).toEqual(expect.objectContaining({
20
- tokenAccount: "GizbHjLkKspW5XzkUsWKSoWW3VwBJMYi39NwCmppsbRs",
21
- owner: "DHTPaexpcpK58w4UpvoLnFH55jfwJdpg4R73mUwryZU8",
22
- contract: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
23
- }));
24
- });
25
- });
26
- //# sourceMappingURL=solana.integ.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana.integ.test.js","sourceRoot":"","sources":["../src/solana.integ.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEjE,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,8CAA8C,EAC9C,EAAE,EACF,MAAM,CACP,CAAC;QAEF,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,MAAM,CAAC,gBAAgB,CAAC;YACtB,YAAY,EAAE,8CAA8C;YAC5D,KAAK,EAAE,8CAA8C;YACrD,QAAQ,EAAE,8CAA8C;SACzD,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,8CAA8C,EAC9C,8CAA8C,EAC9C,EAAE,EACF,MAAM,CACP,CAAC;QAEF,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,MAAM,CAAC,gBAAgB,CAAC;YACtB,YAAY,EAAE,8CAA8C;YAC5D,KAAK,EAAE,8CAA8C;YACrD,QAAQ,EAAE,8CAA8C;SACzD,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=solana.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana.test.d.ts","sourceRoot":"","sources":["../src/solana.test.ts"],"names":[],"mappings":""}
@@ -1,101 +0,0 @@
1
- import { computedTokenAddress, getOwnerAddress } from "./solana";
2
- import network from "@ledgerhq/live-network";
3
- jest.mock("@ledgerhq/live-network");
4
- describe("solana", () => {
5
- beforeEach(() => {
6
- jest.resetModules();
7
- jest.clearAllMocks();
8
- });
9
- describe("getOwnerAddress", () => {
10
- it.each([
11
- ["prod", "https://nft.api.live.ledger.com"],
12
- [undefined, "https://nft.api.live.ledger.com"],
13
- ["test", "https://nft.api.live.ledger-test.com"],
14
- ])("fetch the correct %s service environement", async (env, baseUrl) => {
15
- // Given
16
- const ownerAddress = "SOL_ADDR";
17
- const challenge = "WHATEVER_CHALLENGE";
18
- const mockResponse = {};
19
- network.mockResolvedValue({ data: mockResponse });
20
- // When
21
- await getOwnerAddress(ownerAddress, challenge, env);
22
- // Then
23
- expect(network).toHaveBeenCalledWith({
24
- method: "GET",
25
- url: `${baseUrl}/v2/solana/owner/${ownerAddress}?challenge=${challenge}`,
26
- });
27
- });
28
- it("transforms data as expected", async () => {
29
- // Given
30
- const ownerAddress = "SOL_ADDR";
31
- const challenge = "WHATEVER_CHALLENGE";
32
- const mintAddress = "MINT_ADDR";
33
- const tokenAddress = "TOKEN_ADDR";
34
- const mockResponse = {
35
- descriptorType: "TrustedName",
36
- descriptorVersion: 2,
37
- tokenAccount: tokenAddress,
38
- owner: ownerAddress,
39
- contract: mintAddress,
40
- signedDescriptor: "SIGNATURE",
41
- };
42
- network.mockResolvedValue({ data: mockResponse });
43
- // When
44
- const result = await getOwnerAddress(ownerAddress, challenge);
45
- // Then
46
- expect(result).toEqual({
47
- contract: mintAddress,
48
- owner: ownerAddress,
49
- tokenAccount: tokenAddress,
50
- signedDescriptor: "SIGNATURE",
51
- });
52
- });
53
- });
54
- describe("computedTokenAddress", () => {
55
- it.each([
56
- ["prod", "https://nft.api.live.ledger.com"],
57
- [undefined, "https://nft.api.live.ledger.com"],
58
- ["test", "https://nft.api.live.ledger-test.com"],
59
- ])("fetch the correct %s service environement", async (env, baseUrl) => {
60
- // Given
61
- const ownerAddress = "SOL_ADDR";
62
- const mintAddress = "MINT_ADDR";
63
- const challenge = "WHATEVER_CHALLENGE";
64
- const mockResponse = {};
65
- network.mockResolvedValue({ data: mockResponse });
66
- // When
67
- await computedTokenAddress(ownerAddress, mintAddress, challenge, env);
68
- // Then
69
- expect(network).toHaveBeenCalledWith({
70
- method: "GET",
71
- url: `${baseUrl}/v2/solana/computed-token-account/${ownerAddress}/${mintAddress}?challenge=${challenge}`,
72
- });
73
- });
74
- it("transforms data as expected", async () => {
75
- // Given
76
- const ownerAddress = "SOL_ADDR";
77
- const challenge = "WHATEVER_CHALLENGE";
78
- const mintAddress = "MINT_ADDR";
79
- const tokenAddress = "TOKEN_ADDR";
80
- const mockResponse = {
81
- descriptorType: "TrustedName",
82
- descriptorVersion: 2,
83
- tokenAccount: tokenAddress,
84
- owner: ownerAddress,
85
- contract: mintAddress,
86
- signedDescriptor: "SIGNATURE",
87
- };
88
- network.mockResolvedValue({ data: mockResponse });
89
- // When
90
- const result = await computedTokenAddress(ownerAddress, mintAddress, challenge);
91
- // Then
92
- expect(result).toEqual({
93
- contract: mintAddress,
94
- owner: ownerAddress,
95
- tokenAccount: tokenAddress,
96
- signedDescriptor: "SIGNATURE",
97
- });
98
- });
99
- });
100
- });
101
- //# sourceMappingURL=solana.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana.test.js","sourceRoot":"","sources":["../src/solana.test.ts"],"names":[],"mappings":"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"}