@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.
@@ -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,EAAE,CAAC,CAAC;gBAC1B,uBAAA,IAAI,oDAA4B,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBAC7D,GAAG,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;aAC3C;YAED,MAAM,UAAU,GAAG,MAAM,uBAAA,IAAI,sEAAiB,MAArB,IAAI,EAAkB,cAAc,EAAE,KAAK,CAAC,CAAC;YAEtE,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC;YAExD,OAAO,UAAU,CAAC;SACnB;gBAAS;YACR,WAAW,EAAE,CAAC;SACf;IACH,CAAC;CAuBF;AAzED,4CAyEC;oOArBC,KAAK,4CACH,cAAsB,EACtB,KAAgB;IAEhB,IAAI;QACF,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC3D,OAAO;YACL,cAAc,EAAE,gBAAgB,CAAC,MAAM,EAAE;YACzC,oBAAoB,EAAE;gBACpB,IAAI,EAAE,gBAAgB,CAAC,IAAI;gBAC3B,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;aAC5D;SACF,CAAC;KACH;IAAC,MAAM;QACN,GAAG,CAAC,sCAAsC,EAAE,cAAc,CAAC,CAAC;QAC5D,OAAO;YACL,cAAc,EAAE,EAAE;YAClB,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;SAC3D,CAAC;KACH;AACH,CAAC","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\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([]);\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
+ {"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;AAI3D,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
+ {"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;AAI3D,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
+ {"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,EAAE,CAAC,CAAC;gBAC1B,uBAAA,IAAI,oDAA4B,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBAC7D,GAAG,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;aAC3C;YAED,MAAM,UAAU,GAAG,MAAM,uBAAA,IAAI,sEAAiB,MAArB,IAAI,EAAkB,cAAc,EAAE,KAAK,CAAC,CAAC;YAEtE,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC;YAExD,OAAO,UAAU,CAAC;SACnB;gBAAS;YACR,WAAW,EAAE,CAAC;SACf;IACH,CAAC;CAuBF;oOArBC,KAAK,4CACH,cAAsB,EACtB,KAAgB;IAEhB,IAAI;QACF,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC3D,OAAO;YACL,cAAc,EAAE,gBAAgB,CAAC,MAAM,EAAE;YACzC,oBAAoB,EAAE;gBACpB,IAAI,EAAE,gBAAgB,CAAC,IAAI;gBAC3B,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;aAC5D;SACF,CAAC;KACH;IAAC,MAAM;QACN,GAAG,CAAC,sCAAsC,EAAE,cAAc,CAAC,CAAC;QAC5D,OAAO;YACL,cAAc,EAAE,EAAE;YAClB,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;SAC3D,CAAC;KACH;AACH,CAAC","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\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([]);\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
+ {"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-77c9cd86",
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",