@metamask-previews/transaction-controller 43.0.0-preview-77c9cd86 → 43.0.0-preview-009eef6b
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/dist/helpers/MethodDataHelper.cjs +71 -1
- package/dist/helpers/MethodDataHelper.cjs.map +1 -1
- package/dist/helpers/MethodDataHelper.d.cts.map +1 -1
- package/dist/helpers/MethodDataHelper.d.mts.map +1 -1
- package/dist/helpers/MethodDataHelper.mjs +71 -1
- package/dist/helpers/MethodDataHelper.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -24,6 +24,76 @@ const async_mutex_1 = require("async-mutex");
|
|
|
24
24
|
const events_1 = __importDefault(require("events"));
|
|
25
25
|
const logger_1 = require("../logger.cjs");
|
|
26
26
|
const log = (0, utils_1.createModuleLogger)(logger_1.projectLogger, 'method-data');
|
|
27
|
+
const methodRegistryAbi = [
|
|
28
|
+
{
|
|
29
|
+
constant: false,
|
|
30
|
+
inputs: [{ name: '_new', type: 'address' }],
|
|
31
|
+
name: 'setOwner',
|
|
32
|
+
outputs: [],
|
|
33
|
+
payable: false,
|
|
34
|
+
type: 'function',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
constant: true,
|
|
38
|
+
inputs: [],
|
|
39
|
+
name: 'totalSignatures',
|
|
40
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
41
|
+
payable: false,
|
|
42
|
+
type: 'function',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
constant: true,
|
|
46
|
+
inputs: [],
|
|
47
|
+
name: 'owner',
|
|
48
|
+
outputs: [{ name: '', type: 'address' }],
|
|
49
|
+
payable: false,
|
|
50
|
+
type: 'function',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
constant: false,
|
|
54
|
+
inputs: [],
|
|
55
|
+
name: 'drain',
|
|
56
|
+
outputs: [],
|
|
57
|
+
payable: false,
|
|
58
|
+
type: 'function',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
constant: true,
|
|
62
|
+
inputs: [{ name: '', type: 'bytes4' }],
|
|
63
|
+
name: 'entries',
|
|
64
|
+
outputs: [{ name: '', type: 'string' }],
|
|
65
|
+
payable: false,
|
|
66
|
+
type: 'function',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
constant: false,
|
|
70
|
+
inputs: [{ name: '_method', type: 'string' }],
|
|
71
|
+
name: 'register',
|
|
72
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
73
|
+
payable: false,
|
|
74
|
+
type: 'function',
|
|
75
|
+
},
|
|
76
|
+
{ inputs: [], type: 'constructor' },
|
|
77
|
+
{
|
|
78
|
+
anonymous: false,
|
|
79
|
+
inputs: [
|
|
80
|
+
{ indexed: true, name: 'creator', type: 'address' },
|
|
81
|
+
{ indexed: true, name: 'signature', type: 'bytes4' },
|
|
82
|
+
{ indexed: false, name: 'method', type: 'string' },
|
|
83
|
+
],
|
|
84
|
+
name: 'Registered',
|
|
85
|
+
type: 'event',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
anonymous: false,
|
|
89
|
+
inputs: [
|
|
90
|
+
{ indexed: true, name: 'old', type: 'address' },
|
|
91
|
+
{ indexed: true, name: 'current', type: 'address' },
|
|
92
|
+
],
|
|
93
|
+
name: 'NewOwner',
|
|
94
|
+
type: 'event',
|
|
95
|
+
},
|
|
96
|
+
];
|
|
27
97
|
class MethodDataHelper {
|
|
28
98
|
constructor({ getState }) {
|
|
29
99
|
_MethodDataHelper_instances.add(this);
|
|
@@ -45,7 +115,7 @@ class MethodDataHelper {
|
|
|
45
115
|
}
|
|
46
116
|
let iface = __classPrivateFieldGet(this, _MethodDataHelper_interfaceByNetworkClientId, "f").get(networkClientId);
|
|
47
117
|
if (!iface) {
|
|
48
|
-
iface = new abi_1.Interface(
|
|
118
|
+
iface = new abi_1.Interface(methodRegistryAbi);
|
|
49
119
|
__classPrivateFieldGet(this, _MethodDataHelper_interfaceByNetworkClientId, "f").set(networkClientId, iface);
|
|
50
120
|
log('Created interface', networkClientId);
|
|
51
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodDataHelper.cjs","sourceRoot":"","sources":["../../src/helpers/MethodDataHelper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,4CAA+C;AAE/C,2CAAqD;AACrD,6CAAoC;AACpC,kEAAkE;AAClE,sDAAsD;AACtD,oDAAkC;AAElC,0CAA0C;AAG1C,MAAM,GAAG,GAAG,IAAA,0BAAkB,EAAC,sBAAa,EAAE,aAAa,CAAC,CAAC;AAE7D,MAAa,gBAAgB;IAS3B,YAAY,EAAE,QAAQ,EAAkD;;QANxE,6CAA4C;QAE5C,+DAA6D;QAE7D,kCAAS,IAAI,mBAAK,EAAE,EAAC;QAGnB,IAAI,CAAC,GAAG,GAAG,IAAI,gBAAY,EAAE,CAAC;QAE9B,uBAAA,IAAI,8BAAa,QAAQ,MAAA,CAAC;QAC1B,uBAAA,IAAI,gDAA+B,IAAI,GAAG,EAAE,MAAA,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,MAAM,CACV,cAAsB,EACtB,eAAgC;QAEhC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;QAE/C,MAAM,WAAW,GAAG,MAAM,uBAAA,IAAI,+BAAO,CAAC,OAAO,EAAE,CAAC;QAEhD,IAAI;YACF,MAAM,YAAY,GAAG,uBAAA,IAAI,kCAAU,MAAd,IAAI,CAAY,CAAC,cAAc,CAAC,CAAC;YAEtD,IAAI,YAAY,EAAE;gBAChB,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBAC5B,OAAO,YAAY,CAAC;aACrB;YAED,IAAI,KAAK,GAAG,uBAAA,IAAI,oDAA4B,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAElE,IAAI,CAAC,KAAK,EAAE;gBACV,KAAK,GAAG,IAAI,eAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"MethodDataHelper.cjs","sourceRoot":"","sources":["../../src/helpers/MethodDataHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { Interface } from '@ethersproject/abi';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport { createModuleLogger } from '@metamask/utils';\nimport { Mutex } from 'async-mutex';\n// This package purposefully relies on Node's EventEmitter module.\n// eslint-disable-next-line import-x/no-nodejs-modules\nimport EventEmitter from 'events';\n\nimport { projectLogger } from '../logger';\nimport type { MethodData } from '../TransactionController';\n\nconst log = createModuleLogger(projectLogger, 'method-data');\n\nconst methodRegistryAbi = [\n {\n constant: false,\n inputs: [{ name: '_new', type: 'address' }],\n name: 'setOwner',\n outputs: [],\n payable: false,\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'totalSignatures',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'owner',\n outputs: [{ name: '', type: 'address' }],\n payable: false,\n type: 'function',\n },\n {\n constant: false,\n inputs: [],\n name: 'drain',\n outputs: [],\n payable: false,\n type: 'function',\n },\n {\n constant: true,\n inputs: [{ name: '', type: 'bytes4' }],\n name: 'entries',\n outputs: [{ name: '', type: 'string' }],\n payable: false,\n type: 'function',\n },\n {\n constant: false,\n inputs: [{ name: '_method', type: 'string' }],\n name: 'register',\n outputs: [{ name: '', type: 'bool' }],\n payable: false,\n type: 'function',\n },\n { inputs: [], type: 'constructor' },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'creator', type: 'address' },\n { indexed: true, name: 'signature', type: 'bytes4' },\n { indexed: false, name: 'method', type: 'string' },\n ],\n name: 'Registered',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'old', type: 'address' },\n { indexed: true, name: 'current', type: 'address' },\n ],\n name: 'NewOwner',\n type: 'event',\n },\n];\n\nexport class MethodDataHelper {\n hub: EventEmitter;\n\n #getState: () => Record<string, MethodData>;\n\n #interfaceByNetworkClientId: Map<NetworkClientId, Interface>;\n\n #mutex = new Mutex();\n\n constructor({ getState }: { getState: () => Record<string, MethodData> }) {\n this.hub = new EventEmitter();\n\n this.#getState = getState;\n this.#interfaceByNetworkClientId = new Map();\n }\n\n async lookup(\n fourBytePrefix: string,\n networkClientId: NetworkClientId,\n ): Promise<MethodData> {\n log('lookup', fourBytePrefix, networkClientId);\n\n const releaseLock = await this.#mutex.acquire();\n\n try {\n const cachedResult = this.#getState()[fourBytePrefix];\n\n if (cachedResult) {\n log('Cached', cachedResult);\n return cachedResult;\n }\n\n let iface = this.#interfaceByNetworkClientId.get(networkClientId);\n\n if (!iface) {\n iface = new Interface(methodRegistryAbi);\n this.#interfaceByNetworkClientId.set(networkClientId, iface);\n log('Created interface', networkClientId);\n }\n\n const methodData = await this.#interfaceLookup(fourBytePrefix, iface);\n\n log('Result', methodData);\n\n this.hub.emit('update', { fourBytePrefix, methodData });\n\n return methodData;\n } finally {\n releaseLock();\n }\n }\n\n async #interfaceLookup(\n fourBytePrefix: string,\n iface: Interface,\n ): Promise<MethodData> {\n try {\n const functionFragment = iface.getFunction(fourBytePrefix);\n return {\n registryMethod: functionFragment.format(),\n parsedRegistryMethod: {\n name: functionFragment.name,\n args: functionFragment.inputs.map(({ type }) => ({ type })),\n },\n };\n } catch {\n log('No method found or invalid signature', fourBytePrefix);\n return {\n registryMethod: '',\n parsedRegistryMethod: { name: undefined, args: undefined },\n };\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodDataHelper.d.cts","sourceRoot":"","sources":["../../src/helpers/MethodDataHelper.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,eAAe,EAAE,qCAAqC;AAKpE,OAAO,YAAY,eAAe;AAGlC,OAAO,KAAK,EAAE,UAAU,EAAE,qCAAiC;
|
|
1
|
+
{"version":3,"file":"MethodDataHelper.d.cts","sourceRoot":"","sources":["../../src/helpers/MethodDataHelper.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,eAAe,EAAE,qCAAqC;AAKpE,OAAO,YAAY,eAAe;AAGlC,OAAO,KAAK,EAAE,UAAU,EAAE,qCAAiC;AA2E3D,qBAAa,gBAAgB;;IAC3B,GAAG,EAAE,YAAY,CAAC;gBAQN,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;KAAE;IAOlE,MAAM,CACV,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,UAAU,CAAC;CAsDvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodDataHelper.d.mts","sourceRoot":"","sources":["../../src/helpers/MethodDataHelper.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,eAAe,EAAE,qCAAqC;AAKpE,OAAO,YAAY,eAAe;AAGlC,OAAO,KAAK,EAAE,UAAU,EAAE,qCAAiC;
|
|
1
|
+
{"version":3,"file":"MethodDataHelper.d.mts","sourceRoot":"","sources":["../../src/helpers/MethodDataHelper.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,eAAe,EAAE,qCAAqC;AAKpE,OAAO,YAAY,eAAe;AAGlC,OAAO,KAAK,EAAE,UAAU,EAAE,qCAAiC;AA2E3D,qBAAa,gBAAgB;;IAC3B,GAAG,EAAE,YAAY,CAAC;gBAQN,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;KAAE;IAOlE,MAAM,CACV,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,UAAU,CAAC;CAsDvB"}
|
|
@@ -18,6 +18,76 @@ import { Mutex } from "async-mutex";
|
|
|
18
18
|
import EventEmitter from "events";
|
|
19
19
|
import { projectLogger } from "../logger.mjs";
|
|
20
20
|
const log = createModuleLogger(projectLogger, 'method-data');
|
|
21
|
+
const methodRegistryAbi = [
|
|
22
|
+
{
|
|
23
|
+
constant: false,
|
|
24
|
+
inputs: [{ name: '_new', type: 'address' }],
|
|
25
|
+
name: 'setOwner',
|
|
26
|
+
outputs: [],
|
|
27
|
+
payable: false,
|
|
28
|
+
type: 'function',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
constant: true,
|
|
32
|
+
inputs: [],
|
|
33
|
+
name: 'totalSignatures',
|
|
34
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
35
|
+
payable: false,
|
|
36
|
+
type: 'function',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
constant: true,
|
|
40
|
+
inputs: [],
|
|
41
|
+
name: 'owner',
|
|
42
|
+
outputs: [{ name: '', type: 'address' }],
|
|
43
|
+
payable: false,
|
|
44
|
+
type: 'function',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
constant: false,
|
|
48
|
+
inputs: [],
|
|
49
|
+
name: 'drain',
|
|
50
|
+
outputs: [],
|
|
51
|
+
payable: false,
|
|
52
|
+
type: 'function',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
constant: true,
|
|
56
|
+
inputs: [{ name: '', type: 'bytes4' }],
|
|
57
|
+
name: 'entries',
|
|
58
|
+
outputs: [{ name: '', type: 'string' }],
|
|
59
|
+
payable: false,
|
|
60
|
+
type: 'function',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
constant: false,
|
|
64
|
+
inputs: [{ name: '_method', type: 'string' }],
|
|
65
|
+
name: 'register',
|
|
66
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
67
|
+
payable: false,
|
|
68
|
+
type: 'function',
|
|
69
|
+
},
|
|
70
|
+
{ inputs: [], type: 'constructor' },
|
|
71
|
+
{
|
|
72
|
+
anonymous: false,
|
|
73
|
+
inputs: [
|
|
74
|
+
{ indexed: true, name: 'creator', type: 'address' },
|
|
75
|
+
{ indexed: true, name: 'signature', type: 'bytes4' },
|
|
76
|
+
{ indexed: false, name: 'method', type: 'string' },
|
|
77
|
+
],
|
|
78
|
+
name: 'Registered',
|
|
79
|
+
type: 'event',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
anonymous: false,
|
|
83
|
+
inputs: [
|
|
84
|
+
{ indexed: true, name: 'old', type: 'address' },
|
|
85
|
+
{ indexed: true, name: 'current', type: 'address' },
|
|
86
|
+
],
|
|
87
|
+
name: 'NewOwner',
|
|
88
|
+
type: 'event',
|
|
89
|
+
},
|
|
90
|
+
];
|
|
21
91
|
export class MethodDataHelper {
|
|
22
92
|
constructor({ getState }) {
|
|
23
93
|
_MethodDataHelper_instances.add(this);
|
|
@@ -39,7 +109,7 @@ export class MethodDataHelper {
|
|
|
39
109
|
}
|
|
40
110
|
let iface = __classPrivateFieldGet(this, _MethodDataHelper_interfaceByNetworkClientId, "f").get(networkClientId);
|
|
41
111
|
if (!iface) {
|
|
42
|
-
iface = new Interface(
|
|
112
|
+
iface = new Interface(methodRegistryAbi);
|
|
43
113
|
__classPrivateFieldGet(this, _MethodDataHelper_interfaceByNetworkClientId, "f").set(networkClientId, iface);
|
|
44
114
|
log('Created interface', networkClientId);
|
|
45
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodDataHelper.mjs","sourceRoot":"","sources":["../../src/helpers/MethodDataHelper.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,2BAA2B;AAE/C,OAAO,EAAE,kBAAkB,EAAE,wBAAwB;AACrD,OAAO,EAAE,KAAK,EAAE,oBAAoB;AACpC,kEAAkE;AAClE,sDAAsD;AACtD,OAAO,YAAY,eAAe;AAElC,OAAO,EAAE,aAAa,EAAE,sBAAkB;AAG1C,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAE7D,MAAM,OAAO,gBAAgB;IAS3B,YAAY,EAAE,QAAQ,EAAkD;;QANxE,6CAA4C;QAE5C,+DAA6D;QAE7D,kCAAS,IAAI,KAAK,EAAE,EAAC;QAGnB,IAAI,CAAC,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAE9B,uBAAA,IAAI,8BAAa,QAAQ,MAAA,CAAC;QAC1B,uBAAA,IAAI,gDAA+B,IAAI,GAAG,EAAE,MAAA,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,MAAM,CACV,cAAsB,EACtB,eAAgC;QAEhC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;QAE/C,MAAM,WAAW,GAAG,MAAM,uBAAA,IAAI,+BAAO,CAAC,OAAO,EAAE,CAAC;QAEhD,IAAI;YACF,MAAM,YAAY,GAAG,uBAAA,IAAI,kCAAU,MAAd,IAAI,CAAY,CAAC,cAAc,CAAC,CAAC;YAEtD,IAAI,YAAY,EAAE;gBAChB,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBAC5B,OAAO,YAAY,CAAC;aACrB;YAED,IAAI,KAAK,GAAG,uBAAA,IAAI,oDAA4B,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAElE,IAAI,CAAC,KAAK,EAAE;gBACV,KAAK,GAAG,IAAI,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"MethodDataHelper.mjs","sourceRoot":"","sources":["../../src/helpers/MethodDataHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { Interface } from '@ethersproject/abi';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport { createModuleLogger } from '@metamask/utils';\nimport { Mutex } from 'async-mutex';\n// This package purposefully relies on Node's EventEmitter module.\n// eslint-disable-next-line import-x/no-nodejs-modules\nimport EventEmitter from 'events';\n\nimport { projectLogger } from '../logger';\nimport type { MethodData } from '../TransactionController';\n\nconst log = createModuleLogger(projectLogger, 'method-data');\n\nconst methodRegistryAbi = [\n {\n constant: false,\n inputs: [{ name: '_new', type: 'address' }],\n name: 'setOwner',\n outputs: [],\n payable: false,\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'totalSignatures',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'owner',\n outputs: [{ name: '', type: 'address' }],\n payable: false,\n type: 'function',\n },\n {\n constant: false,\n inputs: [],\n name: 'drain',\n outputs: [],\n payable: false,\n type: 'function',\n },\n {\n constant: true,\n inputs: [{ name: '', type: 'bytes4' }],\n name: 'entries',\n outputs: [{ name: '', type: 'string' }],\n payable: false,\n type: 'function',\n },\n {\n constant: false,\n inputs: [{ name: '_method', type: 'string' }],\n name: 'register',\n outputs: [{ name: '', type: 'bool' }],\n payable: false,\n type: 'function',\n },\n { inputs: [], type: 'constructor' },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'creator', type: 'address' },\n { indexed: true, name: 'signature', type: 'bytes4' },\n { indexed: false, name: 'method', type: 'string' },\n ],\n name: 'Registered',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'old', type: 'address' },\n { indexed: true, name: 'current', type: 'address' },\n ],\n name: 'NewOwner',\n type: 'event',\n },\n];\n\nexport class MethodDataHelper {\n hub: EventEmitter;\n\n #getState: () => Record<string, MethodData>;\n\n #interfaceByNetworkClientId: Map<NetworkClientId, Interface>;\n\n #mutex = new Mutex();\n\n constructor({ getState }: { getState: () => Record<string, MethodData> }) {\n this.hub = new EventEmitter();\n\n this.#getState = getState;\n this.#interfaceByNetworkClientId = new Map();\n }\n\n async lookup(\n fourBytePrefix: string,\n networkClientId: NetworkClientId,\n ): Promise<MethodData> {\n log('lookup', fourBytePrefix, networkClientId);\n\n const releaseLock = await this.#mutex.acquire();\n\n try {\n const cachedResult = this.#getState()[fourBytePrefix];\n\n if (cachedResult) {\n log('Cached', cachedResult);\n return cachedResult;\n }\n\n let iface = this.#interfaceByNetworkClientId.get(networkClientId);\n\n if (!iface) {\n iface = new Interface(methodRegistryAbi);\n this.#interfaceByNetworkClientId.set(networkClientId, iface);\n log('Created interface', networkClientId);\n }\n\n const methodData = await this.#interfaceLookup(fourBytePrefix, iface);\n\n log('Result', methodData);\n\n this.hub.emit('update', { fourBytePrefix, methodData });\n\n return methodData;\n } finally {\n releaseLock();\n }\n }\n\n async #interfaceLookup(\n fourBytePrefix: string,\n iface: Interface,\n ): Promise<MethodData> {\n try {\n const functionFragment = iface.getFunction(fourBytePrefix);\n return {\n registryMethod: functionFragment.format(),\n parsedRegistryMethod: {\n name: functionFragment.name,\n args: functionFragment.inputs.map(({ type }) => ({ type })),\n },\n };\n } catch {\n log('No method found or invalid signature', fourBytePrefix);\n return {\n registryMethod: '',\n parsedRegistryMethod: { name: undefined, args: undefined },\n };\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/transaction-controller",
|
|
3
|
-
"version": "43.0.0-preview-
|
|
3
|
+
"version": "43.0.0-preview-009eef6b",
|
|
4
4
|
"description": "Stores transactions alongside their periodically updated statuses and manages interactions such as approval and cancellation",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|