@ledgerhq/context-module 0.0.1 → 0.0.2-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.
Files changed (76) hide show
  1. package/lib/external-plugin/__tests__/abi.json +92 -0
  2. package/lib/external-plugin/data/DAppDto.d.ts +38 -0
  3. package/lib/external-plugin/data/DAppDto.d.ts.map +1 -0
  4. package/lib/external-plugin/data/DAppDto.js +3 -0
  5. package/lib/external-plugin/data/DAppDto.js.map +1 -0
  6. package/lib/external-plugin/data/ExternalPluginDataSource.d.ts +10 -0
  7. package/lib/external-plugin/data/ExternalPluginDataSource.d.ts.map +1 -0
  8. package/lib/external-plugin/data/ExternalPluginDataSource.js +3 -0
  9. package/lib/external-plugin/data/ExternalPluginDataSource.js.map +1 -0
  10. package/lib/external-plugin/data/HttpExternalPluginDataSource.d.ts +7 -0
  11. package/lib/external-plugin/data/HttpExternalPluginDataSource.d.ts.map +1 -0
  12. package/lib/external-plugin/data/HttpExternalPluginDataSource.js +50 -0
  13. package/lib/external-plugin/data/HttpExternalPluginDataSource.js.map +1 -0
  14. package/lib/external-plugin/data/HttpExternalPluginDataSource.test.d.ts +2 -0
  15. package/lib/external-plugin/data/HttpExternalPluginDataSource.test.d.ts.map +1 -0
  16. package/lib/external-plugin/data/HttpExternalPluginDataSource.test.js +260 -0
  17. package/lib/external-plugin/data/HttpExternalPluginDataSource.test.js.map +1 -0
  18. package/lib/external-plugin/domain/ExternalPluginContextLoader.d.ts +15 -0
  19. package/lib/external-plugin/domain/ExternalPluginContextLoader.d.ts.map +1 -0
  20. package/lib/external-plugin/domain/ExternalPluginContextLoader.js +96 -0
  21. package/lib/external-plugin/domain/ExternalPluginContextLoader.js.map +1 -0
  22. package/lib/external-plugin/domain/ExternalPluginContextLoader.test.d.ts +2 -0
  23. package/lib/external-plugin/domain/ExternalPluginContextLoader.test.d.ts.map +1 -0
  24. package/lib/external-plugin/domain/ExternalPluginContextLoader.test.js +345 -0
  25. package/lib/external-plugin/domain/ExternalPluginContextLoader.test.js.map +1 -0
  26. package/lib/external-plugin/model/DappInfos.d.ts +6 -0
  27. package/lib/external-plugin/model/DappInfos.d.ts.map +1 -0
  28. package/lib/external-plugin/model/DappInfos.js +3 -0
  29. package/lib/external-plugin/model/DappInfos.js.map +1 -0
  30. package/lib/external-plugin/model/SelectorDetails.d.ts +8 -0
  31. package/lib/external-plugin/model/SelectorDetails.d.ts.map +1 -0
  32. package/lib/external-plugin/model/SelectorDetails.js +3 -0
  33. package/lib/external-plugin/model/SelectorDetails.js.map +1 -0
  34. package/lib/forward-domain/data/HttpForwardDomainDataSource.d.ts.map +1 -1
  35. package/lib/forward-domain/data/HttpForwardDomainDataSource.js +2 -0
  36. package/lib/forward-domain/data/HttpForwardDomainDataSource.js.map +1 -1
  37. package/lib/forward-domain/data/HttpForwardDomainDataSource.test.d.ts +2 -0
  38. package/lib/forward-domain/data/HttpForwardDomainDataSource.test.d.ts.map +1 -0
  39. package/lib/forward-domain/data/HttpForwardDomainDataSource.test.js +36 -0
  40. package/lib/forward-domain/data/HttpForwardDomainDataSource.test.js.map +1 -0
  41. package/lib/index.d.ts +2 -0
  42. package/lib/index.d.ts.map +1 -1
  43. package/lib/index.js +2 -0
  44. package/lib/index.js.map +1 -1
  45. package/lib/nft/data/HttpNftDataSource.d.ts.map +1 -1
  46. package/lib/nft/data/HttpNftDataSource.js +3 -0
  47. package/lib/nft/data/HttpNftDataSource.js.map +1 -1
  48. package/lib/nft/data/HttpNftDataSource.test.d.ts +2 -0
  49. package/lib/nft/data/HttpNftDataSource.test.d.ts.map +1 -0
  50. package/lib/nft/data/HttpNftDataSource.test.js +38 -0
  51. package/lib/nft/data/HttpNftDataSource.test.js.map +1 -0
  52. package/lib/token/data/HttpTokenDataSource.d.ts +5 -0
  53. package/lib/token/data/HttpTokenDataSource.d.ts.map +1 -0
  54. package/lib/token/data/HttpTokenDataSource.js +33 -0
  55. package/lib/token/data/HttpTokenDataSource.js.map +1 -0
  56. package/lib/token/data/HttpTokenDataSource.test.d.ts +2 -0
  57. package/lib/token/data/HttpTokenDataSource.test.d.ts.map +1 -0
  58. package/lib/token/data/HttpTokenDataSource.test.js +61 -0
  59. package/lib/token/data/HttpTokenDataSource.test.js.map +1 -0
  60. package/lib/token/data/TokenDataSource.d.ts +8 -0
  61. package/lib/token/data/TokenDataSource.d.ts.map +1 -0
  62. package/lib/token/data/TokenDataSource.js +3 -0
  63. package/lib/token/data/TokenDataSource.js.map +1 -0
  64. package/lib/token/data/TokenDto.d.ts +4 -0
  65. package/lib/token/data/TokenDto.d.ts.map +1 -0
  66. package/lib/token/data/TokenDto.js +3 -0
  67. package/lib/token/data/TokenDto.js.map +1 -0
  68. package/lib/token/domain/TokenContextLoader.d.ts +16 -0
  69. package/lib/token/domain/TokenContextLoader.d.ts.map +1 -0
  70. package/lib/token/domain/TokenContextLoader.js +52 -0
  71. package/lib/token/domain/TokenContextLoader.js.map +1 -0
  72. package/lib/token/domain/TokenContextLoader.test.d.ts +2 -0
  73. package/lib/token/domain/TokenContextLoader.test.d.ts.map +1 -0
  74. package/lib/token/domain/TokenContextLoader.test.js +97 -0
  75. package/lib/token/domain/TokenContextLoader.test.js.map +1 -0
  76. package/package.json +3 -2
@@ -0,0 +1,33 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.HttpTokenDataSource = void 0;
16
+ const axios_1 = __importDefault(require("axios"));
17
+ const package_json_1 = __importDefault(require("../../../package.json"));
18
+ class HttpTokenDataSource {
19
+ getTokenInfosPayload(_a) {
20
+ return __awaiter(this, arguments, void 0, function* ({ chainId, address, }) {
21
+ var _b, _c;
22
+ const response = yield axios_1.default.request({
23
+ method: "GET",
24
+ url: `https://crypto-assets-service.api.ledger.com/v1/tokens`,
25
+ params: { contract_address: address, chain_id: chainId, output: "live_signature" },
26
+ headers: { "X-Ledger-Client-Version": `context-module/${package_json_1.default.version}` },
27
+ });
28
+ return (_c = (_b = response.data) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.live_signature;
29
+ });
30
+ }
31
+ }
32
+ exports.HttpTokenDataSource = HttpTokenDataSource;
33
+ //# sourceMappingURL=HttpTokenDataSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpTokenDataSource.js","sourceRoot":"","sources":["../../../src/token/data/HttpTokenDataSource.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAG1B,yEAA4C;AAE5C,MAAa,mBAAmB;IACjB,oBAAoB;6DAAC,EAChC,OAAO,EACP,OAAO,GACa;;YACpB,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,OAAO,CAAa;gBAC/C,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,wDAAwD;gBAC7D,MAAM,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE;gBAClF,OAAO,EAAE,EAAE,yBAAyB,EAAE,kBAAkB,sBAAO,CAAC,OAAO,EAAE,EAAE;aAC5E,CAAC,CAAC;YAEH,OAAO,MAAA,MAAA,QAAQ,CAAC,IAAI,0CAAG,CAAC,CAAC,0CAAE,cAAc,CAAC;QAC5C,CAAC;KAAA;CACF;AAdD,kDAcC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=HttpTokenDataSource.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpTokenDataSource.test.d.ts","sourceRoot":"","sources":["../../../src/token/data/HttpTokenDataSource.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const axios_1 = __importDefault(require("axios"));
16
+ const HttpTokenDataSource_1 = require("./HttpTokenDataSource");
17
+ const package_json_1 = __importDefault(require("../../../package.json"));
18
+ jest.mock("axios");
19
+ describe("HttpTokenDataSource", () => {
20
+ let datasource;
21
+ beforeAll(() => {
22
+ datasource = new HttpTokenDataSource_1.HttpTokenDataSource();
23
+ jest.clearAllMocks();
24
+ });
25
+ it("should call axios with the ledger client version header", () => __awaiter(void 0, void 0, void 0, function* () {
26
+ // GIVEN
27
+ const version = `context-module/${package_json_1.default.version}`;
28
+ const requestSpy = jest.fn(() => Promise.resolve({ data: [] }));
29
+ jest.spyOn(axios_1.default, "request").mockImplementation(requestSpy);
30
+ // WHEN
31
+ yield datasource.getTokenInfosPayload({ address: "0x00", chainId: 1 });
32
+ // THEN
33
+ expect(requestSpy).toHaveBeenCalledWith(expect.objectContaining({ headers: { "X-Ledger-Client-Version": version } }));
34
+ }));
35
+ it("should return a string when axios response is correct", () => __awaiter(void 0, void 0, void 0, function* () {
36
+ // GIVEN
37
+ const tokenDTO = { live_signature: "0x0" };
38
+ jest.spyOn(axios_1.default, "request").mockResolvedValue({ data: [tokenDTO] });
39
+ // WHEN
40
+ const result = yield datasource.getTokenInfosPayload({ address: "0x00", chainId: 1 });
41
+ // THEN
42
+ expect(result).toEqual("0x0");
43
+ }));
44
+ it("should return undefined when data is empty", () => __awaiter(void 0, void 0, void 0, function* () {
45
+ // GIVEN
46
+ jest.spyOn(axios_1.default, "request").mockResolvedValue({ data: undefined });
47
+ // WHEN
48
+ const result = yield datasource.getTokenInfosPayload({ address: "0x00", chainId: 1 });
49
+ // THEN
50
+ expect(result).toEqual(undefined);
51
+ }));
52
+ it("should return undefined when no signature", () => __awaiter(void 0, void 0, void 0, function* () {
53
+ // GIVEN
54
+ jest.spyOn(axios_1.default, "request").mockResolvedValue({ data: [{}] });
55
+ // WHEN
56
+ const result = yield datasource.getTokenInfosPayload({ address: "0x00", chainId: 1 });
57
+ // THEN
58
+ expect(result).toEqual(undefined);
59
+ }));
60
+ });
61
+ //# sourceMappingURL=HttpTokenDataSource.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpTokenDataSource.test.js","sourceRoot":"","sources":["../../../src/token/data/HttpTokenDataSource.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kDAA0B;AAE1B,+DAA4D;AAE5D,yEAA4C;AAE5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEnB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,UAA2B,CAAC;IAEhC,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,GAAG,IAAI,yCAAmB,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAS,EAAE;QACvE,QAAQ;QACR,MAAM,OAAO,GAAG,kBAAkB,sBAAO,CAAC,OAAO,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAE5D,OAAO;QACP,MAAM,UAAU,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAEvE,OAAO;QACP,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CACrC,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,yBAAyB,EAAE,OAAO,EAAE,EAAE,CAAC,CAC7E,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAS,EAAE;QACrE,QAAQ;QACR,MAAM,QAAQ,GAAa,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAErE,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAEtF,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAS,EAAE;QAC1D,QAAQ;QACR,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAEpE,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAEtF,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;QACzD,QAAQ;QACR,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAE/D,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAEtF,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type GetTokenInfosParams = {
2
+ address: string;
3
+ chainId: number;
4
+ };
5
+ export interface TokenDataSource {
6
+ getTokenInfosPayload(params: GetTokenInfosParams): Promise<string | undefined>;
7
+ }
8
+ //# sourceMappingURL=TokenDataSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenDataSource.d.ts","sourceRoot":"","sources":["../../../src/token/data/TokenDataSource.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAChF"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TokenDataSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenDataSource.js","sourceRoot":"","sources":["../../../src/token/data/TokenDataSource.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export type TokenDto = {
2
+ live_signature: string;
3
+ };
4
+ //# sourceMappingURL=TokenDto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenDto.d.ts","sourceRoot":"","sources":["../../../src/token/data/TokenDto.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TokenDto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenDto.js","sourceRoot":"","sources":["../../../src/token/data/TokenDto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { ContextLoader } from "../../shared/domain/ContextLoader";
2
+ import { ContextResponse } from "../../shared/model/ContextResponse";
3
+ import { LoaderOptions } from "../../shared/model/LoaderOptions";
4
+ import { Transaction } from "../../shared/model/Transaction";
5
+ import { TokenDataSource } from "../data/TokenDataSource";
6
+ export declare enum ERC20_SUPPORTED_SELECTORS {
7
+ Approve = "0x095ea7b3",
8
+ Transfer = "0xa9059cbb"
9
+ }
10
+ export declare class TokenContextLoader implements ContextLoader {
11
+ private _dataSource;
12
+ constructor(dataSource: TokenDataSource);
13
+ load(transaction: Transaction, _options: LoaderOptions): Promise<ContextResponse[]>;
14
+ private isSelectorSupported;
15
+ }
16
+ //# sourceMappingURL=TokenContextLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenContextLoader.d.ts","sourceRoot":"","sources":["../../../src/token/domain/TokenContextLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,oBAAY,yBAAyB;IACnC,OAAO,eAAe;IACtB,QAAQ,eAAe;CACxB;AAID,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,WAAW,CAAkB;gBAEzB,UAAU,EAAE,eAAe;IAIjC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA4BzF,OAAO,CAAC,mBAAmB;CAG5B"}
@@ -0,0 +1,52 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TokenContextLoader = exports.ERC20_SUPPORTED_SELECTORS = void 0;
13
+ var ERC20_SUPPORTED_SELECTORS;
14
+ (function (ERC20_SUPPORTED_SELECTORS) {
15
+ ERC20_SUPPORTED_SELECTORS["Approve"] = "0x095ea7b3";
16
+ ERC20_SUPPORTED_SELECTORS["Transfer"] = "0xa9059cbb";
17
+ })(ERC20_SUPPORTED_SELECTORS || (exports.ERC20_SUPPORTED_SELECTORS = ERC20_SUPPORTED_SELECTORS = {}));
18
+ const SUPPORTED_SELECTORS = Object.values(ERC20_SUPPORTED_SELECTORS);
19
+ class TokenContextLoader {
20
+ constructor(dataSource) {
21
+ this._dataSource = dataSource;
22
+ }
23
+ load(transaction, _options) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ if (!transaction.to || !transaction.data || transaction.data === "0x") {
26
+ return [];
27
+ }
28
+ const selector = transaction.data.slice(0, 10);
29
+ if (!this.isSelectorSupported(selector)) {
30
+ return [];
31
+ }
32
+ const payload = yield this._dataSource.getTokenInfosPayload({
33
+ address: transaction.to,
34
+ chainId: transaction.chainId,
35
+ });
36
+ if (!payload) {
37
+ return [];
38
+ }
39
+ return [
40
+ {
41
+ type: "provideERC20TokenInformation",
42
+ payload,
43
+ },
44
+ ];
45
+ });
46
+ }
47
+ isSelectorSupported(selector) {
48
+ return Object.values(SUPPORTED_SELECTORS).includes(selector);
49
+ }
50
+ }
51
+ exports.TokenContextLoader = TokenContextLoader;
52
+ //# sourceMappingURL=TokenContextLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenContextLoader.js","sourceRoot":"","sources":["../../../src/token/domain/TokenContextLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,IAAY,yBAGX;AAHD,WAAY,yBAAyB;IACnC,mDAAsB,CAAA;IACtB,oDAAuB,CAAA;AACzB,CAAC,EAHW,yBAAyB,yCAAzB,yBAAyB,QAGpC;AAED,MAAM,mBAAmB,GAAoB,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAEtF,MAAa,kBAAkB;IAG7B,YAAY,UAA2B;QACrC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAEK,IAAI,CAAC,WAAwB,EAAE,QAAuB;;YAC1D,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACtE,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAkB,CAAC;YAEhE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxC,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;gBAC1D,OAAO,EAAE,WAAW,CAAC,EAAE;gBACvB,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO;gBACL;oBACE,IAAI,EAAE,8BAAuC;oBAC7C,OAAO;iBACR;aACF,CAAC;QACJ,CAAC;KAAA;IAEO,mBAAmB,CAAC,QAAuB;QACjD,OAAO,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;CACF;AAtCD,gDAsCC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TokenContextLoader.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenContextLoader.test.d.ts","sourceRoot":"","sources":["../../../src/token/domain/TokenContextLoader.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,97 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const TokenContextLoader_1 = require("./TokenContextLoader");
13
+ describe("TokenContextLoader", () => {
14
+ const mockTokenDataSource = { getTokenInfosPayload: jest.fn() };
15
+ const loader = new TokenContextLoader_1.TokenContextLoader(mockTokenDataSource);
16
+ const emptyOptions = {};
17
+ beforeEach(() => {
18
+ jest.restoreAllMocks();
19
+ jest
20
+ .spyOn(mockTokenDataSource, "getTokenInfosPayload")
21
+ .mockImplementation(({ address }) => Promise.resolve(`payload-${address}`));
22
+ });
23
+ describe("load function", () => {
24
+ it("should return an empty array if transaction dest is undefined", () => __awaiter(void 0, void 0, void 0, function* () {
25
+ // GIVEN
26
+ const transaction = { to: undefined, data: "0x01" };
27
+ // WHEN
28
+ const result = yield loader.load(transaction, emptyOptions);
29
+ // THEN
30
+ expect(result).toEqual([]);
31
+ }));
32
+ it("should return an empty array if transaction data is undefined", () => __awaiter(void 0, void 0, void 0, function* () {
33
+ // GIVEN
34
+ const transaction = {
35
+ to: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
36
+ data: undefined,
37
+ };
38
+ // WHEN
39
+ const result = yield loader.load(transaction, emptyOptions);
40
+ // THEN
41
+ expect(result).toEqual([]);
42
+ }));
43
+ it("should return an empty array if transaction data is empty", () => __awaiter(void 0, void 0, void 0, function* () {
44
+ // GIVEN
45
+ const transaction = {
46
+ to: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
47
+ data: "0x",
48
+ };
49
+ // WHEN
50
+ const result = yield loader.load(transaction, emptyOptions);
51
+ // THEN
52
+ expect(result).toEqual([]);
53
+ }));
54
+ it("should return an empty array if the selector is not supported", () => __awaiter(void 0, void 0, void 0, function* () {
55
+ // GIVEN
56
+ const transaction = {
57
+ to: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
58
+ data: "0x095ea7b20000000000000",
59
+ };
60
+ // WHEN
61
+ const result = yield loader.load(transaction, emptyOptions);
62
+ // THEN
63
+ expect(result).toEqual([]);
64
+ }));
65
+ it("should return undefined if the token is not supported by the CAL service", () => __awaiter(void 0, void 0, void 0, function* () {
66
+ // GIVEN
67
+ const transaction = {
68
+ to: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
69
+ data: "0x095ea7b30000000000",
70
+ chainId: 1,
71
+ };
72
+ jest.spyOn(mockTokenDataSource, "getTokenInfosPayload").mockResolvedValue(undefined);
73
+ // WHEN
74
+ const result = yield loader.load(transaction, emptyOptions);
75
+ // THEN
76
+ expect(result).toEqual([]);
77
+ }));
78
+ it("should return a correct response", () => __awaiter(void 0, void 0, void 0, function* () {
79
+ // GIVEN
80
+ const transaction = {
81
+ to: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
82
+ data: "0x095ea7b30000000000",
83
+ chainId: 1,
84
+ };
85
+ // WHEN
86
+ const result = yield loader.load(transaction, emptyOptions);
87
+ // THEN
88
+ expect(result).toEqual([
89
+ {
90
+ type: "provideERC20TokenInformation",
91
+ payload: "payload-0xdAC17F958D2ee523a2206206994597C13D831ec7",
92
+ },
93
+ ]);
94
+ }));
95
+ });
96
+ });
97
+ //# sourceMappingURL=TokenContextLoader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenContextLoader.test.js","sourceRoot":"","sources":["../../../src/token/domain/TokenContextLoader.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/context-module",
3
- "version": "0.0.1",
3
+ "version": "0.0.2-nightly.1",
4
4
  "description": "Ledger context module",
5
5
  "files": [
6
6
  "./lib"
@@ -24,7 +24,8 @@
24
24
  "ethers": "^5.7.2"
25
25
  },
26
26
  "scripts": {
27
- "build": "rimraf lib && tsc",
27
+ "clean": "rimraf lib lib-es",
28
+ "build": "tsc -p src && tsc -p src -m ES6 --outDir lib-es",
28
29
  "test": "jest"
29
30
  }
30
31
  }