@ledgerhq/context-module 0.0.0-develop-20241007001127 → 0.0.0-develop-20241008001036
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/lib/cjs/src/typed-data/data/FiltersDto.d.ts +39 -19
- package/lib/cjs/src/typed-data/data/FiltersDto.d.ts.map +1 -1
- package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.d.ts +4 -3
- package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.d.ts.map +1 -1
- package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js +59 -39
- package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js.map +1 -1
- package/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/esm/src/typed-data/data/FiltersDto.d.ts +39 -19
- package/lib/esm/src/typed-data/data/FiltersDto.d.ts.map +1 -1
- package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.d.ts +4 -3
- package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.d.ts.map +1 -1
- package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js +59 -39
- package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js.map +1 -1
- package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -1,33 +1,53 @@
|
|
|
1
|
-
export type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export type InstructionSignatures = {
|
|
2
|
+
prod: string;
|
|
3
|
+
test: string;
|
|
4
|
+
};
|
|
5
|
+
export type InstructionFieldV1 = {
|
|
6
|
+
display_name: string;
|
|
7
|
+
field_mappers_count?: never;
|
|
8
|
+
field_path: string;
|
|
9
|
+
signatures: InstructionSignatures;
|
|
10
|
+
type: "field" | "message";
|
|
5
11
|
format?: never;
|
|
6
12
|
};
|
|
7
|
-
export type
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
export type InstructionFieldV2 = {
|
|
14
|
+
display_name: string;
|
|
15
|
+
field_mappers_count?: never;
|
|
16
|
+
field_path: string;
|
|
17
|
+
descriptor: string;
|
|
18
|
+
signatures: InstructionSignatures;
|
|
11
19
|
format: "raw" | "datetime";
|
|
12
20
|
coin_ref?: never;
|
|
21
|
+
type: "field" | "message";
|
|
13
22
|
};
|
|
14
|
-
export type
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
signature: string;
|
|
23
|
+
export type InstructionFieldV2WithCoinRef = {
|
|
24
|
+
display_name: string;
|
|
25
|
+
field_mappers_count?: never;
|
|
18
26
|
format: "token" | "amount";
|
|
27
|
+
field_path: string;
|
|
19
28
|
coin_ref: number;
|
|
29
|
+
descriptor: string;
|
|
30
|
+
signatures: InstructionSignatures;
|
|
31
|
+
type: "field";
|
|
32
|
+
};
|
|
33
|
+
export type InstructionContractInfo = {
|
|
34
|
+
display_name: string;
|
|
35
|
+
field_mappers_count: number;
|
|
36
|
+
field_path?: never;
|
|
37
|
+
descriptor: string;
|
|
38
|
+
signatures: InstructionSignatures;
|
|
39
|
+
type: "message";
|
|
20
40
|
};
|
|
21
|
-
export type
|
|
41
|
+
export type InstructionField = InstructionFieldV1 | InstructionFieldV2 | InstructionFieldV2WithCoinRef | InstructionContractInfo;
|
|
22
42
|
export type FiltersDto = {
|
|
23
|
-
|
|
43
|
+
descriptors_eip712: {
|
|
24
44
|
[contractAddress: string]: {
|
|
25
45
|
[schemaHash: string]: {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
46
|
+
schema: Record<string, {
|
|
47
|
+
name: string;
|
|
48
|
+
type: string;
|
|
49
|
+
}[]>;
|
|
50
|
+
instructions: InstructionField[];
|
|
31
51
|
};
|
|
32
52
|
};
|
|
33
53
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FiltersDto.d.ts","sourceRoot":"","sources":["../../../../../src/typed-data/data/FiltersDto.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"FiltersDto.d.ts","sourceRoot":"","sources":["../../../../../src/typed-data/data/FiltersDto.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,KAAK,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,qBAAqB,CAAC;IAClC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,KAAK,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,qBAAqB,CAAC;IAClC,MAAM,EAAE,KAAK,GAAG,UAAU,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,KAAK,CAAC;IAC5B,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,qBAAqB,CAAC;IAClC,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,qBAAqB,CAAC;IAClC,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,kBAAkB,GAClB,6BAA6B,GAC7B,uBAAuB,CAAC;AAE5B,MAAM,MAAM,UAAU,GAAG;IACvB,kBAAkB,EAAE;QAClB,CAAC,eAAe,EAAE,MAAM,GAAG;YACzB,CAAC,UAAU,EAAE,MAAM,GAAG;gBACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;oBAAE,IAAI,EAAE,MAAM,CAAC;oBAAC,IAAI,EAAE,MAAM,CAAA;iBAAE,EAAE,CAAC,CAAC;gBACzD,YAAY,EAAE,gBAAgB,EAAE,CAAC;aAClC,CAAC;SACH,CAAC;KACH,CAAC;CACH,CAAC"}
|
|
@@ -5,9 +5,10 @@ export declare class HttpTypedDataDataSource implements TypedDataDataSource {
|
|
|
5
5
|
private readonly config;
|
|
6
6
|
constructor(config: ContextModuleConfig);
|
|
7
7
|
getTypedDataFilters({ chainId, address, schema, version, }: GetTypedDataFiltersParams): Promise<Either<Error, GetTypedDataFiltersResult>>;
|
|
8
|
-
private
|
|
9
|
-
private
|
|
10
|
-
private
|
|
8
|
+
private isInstructionFieldV1;
|
|
9
|
+
private isInstructionFieldV2;
|
|
10
|
+
private isInstructionFieldV2WithCoinRef;
|
|
11
|
+
private isInstructionContractInfo;
|
|
11
12
|
private sortTypes;
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=HttpTypedDataDataSource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpTypedDataDataSource.d.ts","sourceRoot":"","sources":["../../../../../src/typed-data/data/HttpTypedDataDataSource.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AAGhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"HttpTypedDataDataSource.d.ts","sourceRoot":"","sources":["../../../../../src/typed-data/data/HttpTypedDataDataSource.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AAGhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAgB9E,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAE/B,qBACa,uBAAwB,YAAW,mBAAmB;IAEnC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,mBAAmB;IAG7D,mBAAmB,CAAC,EAC/B,OAAO,EACP,OAAO,EACP,MAAM,EACN,OAAO,GACR,EAAE,yBAAyB,GAAG,OAAO,CACpC,MAAM,CAAC,KAAK,EAAE,yBAAyB,CAAC,CACzC;IAoGD,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,+BAA+B;IAgBvC,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,SAAS;CAUlB"}
|
|
@@ -22,6 +22,7 @@ let HttpTypedDataDataSource = class HttpTypedDataDataSource {
|
|
|
22
22
|
this.config = config;
|
|
23
23
|
}
|
|
24
24
|
async getTypedDataFilters({ chainId, address, schema, version, }) {
|
|
25
|
+
let messageInfo = undefined;
|
|
25
26
|
try {
|
|
26
27
|
const response = await axios.request({
|
|
27
28
|
method: "GET",
|
|
@@ -29,8 +30,9 @@ let HttpTypedDataDataSource = class HttpTypedDataDataSource {
|
|
|
29
30
|
params: {
|
|
30
31
|
contracts: address,
|
|
31
32
|
chain_id: chainId,
|
|
32
|
-
output: "
|
|
33
|
-
|
|
33
|
+
output: "descriptors_eip712",
|
|
34
|
+
descriptors_eip712_version: version,
|
|
35
|
+
descriptors_eip712: "<set>",
|
|
34
36
|
},
|
|
35
37
|
headers: {
|
|
36
38
|
"X-Ledger-Client-Version": `context-module/${PACKAGE.version}`,
|
|
@@ -38,47 +40,46 @@ let HttpTypedDataDataSource = class HttpTypedDataDataSource {
|
|
|
38
40
|
});
|
|
39
41
|
// Try to get the filters JSON descriptor, from address and schema hash
|
|
40
42
|
const schemaHash = SHA224(JSON.stringify(this.sortTypes(schema)).replace(" ", "")).toString();
|
|
41
|
-
const filtersJson = response.data?.[0]?.
|
|
43
|
+
const filtersJson = response.data?.[0]?.descriptors_eip712?.[address]?.[schemaHash];
|
|
42
44
|
if (!filtersJson) {
|
|
43
45
|
return Left(new Error(`[ContextModule] HttpTypedDataDataSource: no typed data filters for address ${address} on chain ${chainId} for schema ${schemaHash}`));
|
|
44
46
|
}
|
|
45
47
|
// Parse the message type, if available
|
|
46
|
-
if (!filtersJson.
|
|
47
|
-
typeof filtersJson.contractName.label !== "string" ||
|
|
48
|
-
typeof filtersJson.contractName.signature !== "string" ||
|
|
49
|
-
!Array.isArray(filtersJson.fields)) {
|
|
48
|
+
if (!filtersJson.schema || !Array.isArray(filtersJson.instructions)) {
|
|
50
49
|
return Left(new Error(`[ContextModule] HttpTypedDataDataSource: no message info for address ${address} on chain ${chainId} for schema ${schemaHash}`));
|
|
51
50
|
}
|
|
52
|
-
const messageInfo = {
|
|
53
|
-
displayName: filtersJson.contractName.label,
|
|
54
|
-
filtersCount: filtersJson.fields.length,
|
|
55
|
-
signature: filtersJson.contractName.signature,
|
|
56
|
-
};
|
|
57
51
|
// Parse all the filters
|
|
58
52
|
const filters = [];
|
|
59
|
-
for (const field of filtersJson.
|
|
60
|
-
if (this.
|
|
53
|
+
for (const field of filtersJson.instructions) {
|
|
54
|
+
if (this.isInstructionContractInfo(field)) {
|
|
55
|
+
messageInfo = {
|
|
56
|
+
displayName: field.display_name,
|
|
57
|
+
signature: field.signatures[this.config.cal.mode],
|
|
58
|
+
filtersCount: field.field_mappers_count,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
else if (version === "v1" && this.isInstructionFieldV1(field)) {
|
|
61
62
|
filters.push({
|
|
62
63
|
type: "raw",
|
|
63
|
-
displayName: field.
|
|
64
|
-
path: field.
|
|
65
|
-
signature: field.
|
|
64
|
+
displayName: field.display_name,
|
|
65
|
+
path: field.field_path,
|
|
66
|
+
signature: field.signatures[this.config.cal.mode],
|
|
66
67
|
});
|
|
67
68
|
}
|
|
68
|
-
else if (this.
|
|
69
|
+
else if (this.isInstructionFieldV2(field)) {
|
|
69
70
|
filters.push({
|
|
70
71
|
type: field.format,
|
|
71
|
-
displayName: field.
|
|
72
|
-
path: field.
|
|
73
|
-
signature: field.
|
|
72
|
+
displayName: field.display_name,
|
|
73
|
+
path: field.field_path,
|
|
74
|
+
signature: field.signatures[this.config.cal.mode],
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
|
-
else if (this.
|
|
77
|
+
else if (this.isInstructionFieldV2WithCoinRef(field)) {
|
|
77
78
|
filters.push({
|
|
78
79
|
type: field.format,
|
|
79
|
-
displayName: field.
|
|
80
|
-
path: field.
|
|
81
|
-
signature: field.
|
|
80
|
+
displayName: field.display_name,
|
|
81
|
+
path: field.field_path,
|
|
82
|
+
signature: field.signatures[this.config.cal.mode],
|
|
82
83
|
tokenIndex: field.coin_ref,
|
|
83
84
|
});
|
|
84
85
|
}
|
|
@@ -86,37 +87,56 @@ let HttpTypedDataDataSource = class HttpTypedDataDataSource {
|
|
|
86
87
|
return Left(new Error(`[ContextModule] HttpTypedDataDataSource: invalid typed data field for address ${address} on chain ${chainId} for schema ${schemaHash}`));
|
|
87
88
|
}
|
|
88
89
|
}
|
|
90
|
+
if (!messageInfo) {
|
|
91
|
+
return Left(new Error(`[ContextModule] HttpTypedDataDataSource: no message info for address ${address} on chain ${chainId} for schema ${schemaHash}`));
|
|
92
|
+
}
|
|
89
93
|
return Right({ messageInfo, filters });
|
|
90
94
|
}
|
|
91
95
|
catch (_error) {
|
|
92
96
|
return Left(new Error("[ContextModule] HttpTypedDataDataSource: Failed to fetch typed data informations"));
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
|
-
|
|
99
|
+
isInstructionFieldV1(data) {
|
|
100
|
+
// NOTE: Currently the backend return the same structure for V1 and V2,
|
|
101
|
+
// so we can't distinguish them here, but we can still check the required fields
|
|
96
102
|
return (typeof data === "object" &&
|
|
97
|
-
typeof data.
|
|
98
|
-
typeof data.
|
|
99
|
-
typeof data.
|
|
100
|
-
|
|
103
|
+
typeof data.display_name === "string" &&
|
|
104
|
+
typeof data.field_path === "string" &&
|
|
105
|
+
typeof data.signatures === "object" &&
|
|
106
|
+
typeof data.signatures.prod === "string" &&
|
|
107
|
+
typeof data.signatures.test === "string");
|
|
101
108
|
}
|
|
102
|
-
|
|
109
|
+
isInstructionFieldV2(data) {
|
|
103
110
|
return (typeof data === "object" &&
|
|
104
|
-
typeof data.
|
|
105
|
-
typeof data.
|
|
106
|
-
typeof data.
|
|
111
|
+
typeof data.display_name === "string" &&
|
|
112
|
+
typeof data.field_path === "string" &&
|
|
113
|
+
typeof data.signatures === "object" &&
|
|
114
|
+
typeof data.signatures.prod === "string" &&
|
|
115
|
+
typeof data.signatures.test === "string" &&
|
|
107
116
|
typeof data.format === "string" &&
|
|
108
117
|
["raw", "datetime"].includes(data.format) &&
|
|
109
|
-
|
|
118
|
+
data.coin_ref === undefined);
|
|
110
119
|
}
|
|
111
|
-
|
|
120
|
+
isInstructionFieldV2WithCoinRef(data) {
|
|
112
121
|
return (typeof data === "object" &&
|
|
113
|
-
typeof data.
|
|
114
|
-
typeof data.
|
|
115
|
-
typeof data.
|
|
122
|
+
typeof data.display_name === "string" &&
|
|
123
|
+
typeof data.field_path === "string" &&
|
|
124
|
+
typeof data.signatures === "object" &&
|
|
125
|
+
typeof data.signatures.prod === "string" &&
|
|
126
|
+
typeof data.signatures.test === "string" &&
|
|
116
127
|
typeof data.format === "string" &&
|
|
117
128
|
["token", "amount"].includes(data.format) &&
|
|
118
129
|
typeof data.coin_ref === "number");
|
|
119
130
|
}
|
|
131
|
+
isInstructionContractInfo(data) {
|
|
132
|
+
return (typeof data === "object" &&
|
|
133
|
+
typeof data.display_name === "string" &&
|
|
134
|
+
typeof data.field_mappers_count === "number" &&
|
|
135
|
+
typeof data.signatures === "object" &&
|
|
136
|
+
typeof data.signatures.prod === "string" &&
|
|
137
|
+
typeof data.signatures.test === "string" &&
|
|
138
|
+
data.field_path === undefined);
|
|
139
|
+
}
|
|
120
140
|
sortTypes(types) {
|
|
121
141
|
return Object.fromEntries(Object.entries(types)
|
|
122
142
|
.sort(([aKey], [bKey]) => aKey.localeCompare(bKey))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpTypedDataDataSource.js","sourceRoot":"","sources":["../../../../../src/typed-data/data/HttpTypedDataDataSource.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAU,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOtD,OAAO,OAAO,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"HttpTypedDataDataSource.js","sourceRoot":"","sources":["../../../../../src/typed-data/data/HttpTypedDataDataSource.ts"],"names":[],"mappings":"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"}
|