@massalabs/wallet-provider 3.1.2-dev.20250214001557 → 3.1.2-dev.20250218144940
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/esm/bearbyWallet/BearbyAccount.d.ts +1 -0
- package/dist/esm/bearbyWallet/BearbyAccount.d.ts.map +1 -1
- package/dist/esm/bearbyWallet/BearbyAccount.js +48 -25
- package/dist/esm/bearbyWallet/BearbyAccount.js.map +1 -1
- package/dist/esm/bearbyWallet/BearbyWallet.d.ts.map +1 -1
- package/dist/esm/bearbyWallet/BearbyWallet.js +5 -2
- package/dist/esm/bearbyWallet/BearbyWallet.js.map +1 -1
- package/dist/esm/bearbyWallet/utils/network.d.ts.map +1 -1
- package/dist/esm/bearbyWallet/utils/network.js +3 -4
- package/dist/esm/bearbyWallet/utils/network.js.map +1 -1
- package/dist/esm/errors/base.js +1 -1
- package/dist/esm/errors/base.js.map +1 -1
- package/dist/esm/errors/utils/errorHandler.js +1 -1
- package/dist/esm/errors/utils/errorHandler.js.map +1 -1
- package/dist/esm/massaStation/MassaStationAccount.d.ts +1 -1
- package/dist/esm/massaStation/MassaStationAccount.d.ts.map +1 -1
- package/dist/esm/massaStation/MassaStationAccount.js +8 -6
- package/dist/esm/massaStation/MassaStationAccount.js.map +1 -1
- package/dist/esm/massaStation/MassaStationDiscovery.js +1 -1
- package/dist/esm/massaStation/MassaStationDiscovery.js.map +1 -1
- package/dist/esm/massaStation/RequestHandler.d.ts.map +1 -1
- package/dist/esm/massaStation/RequestHandler.js +4 -7
- package/dist/esm/massaStation/RequestHandler.js.map +1 -1
- package/dist/esm/massaStation/utils/standalone.d.ts.map +1 -1
- package/dist/esm/massaStation/utils/standalone.js +1 -1
- package/dist/esm/massaStation/utils/standalone.js.map +1 -1
- package/dist/esm/metamaskSnap/MetamaskAccount.d.ts +1 -1
- package/dist/esm/metamaskSnap/MetamaskAccount.d.ts.map +1 -1
- package/dist/esm/metamaskSnap/MetamaskAccount.js +10 -10
- package/dist/esm/metamaskSnap/MetamaskAccount.js.map +1 -1
- package/dist/esm/metamaskSnap/MetamaskWallet.d.ts.map +1 -1
- package/dist/esm/metamaskSnap/MetamaskWallet.js +3 -9
- package/dist/esm/metamaskSnap/MetamaskWallet.js.map +1 -1
- package/dist/esm/metamaskSnap/snap.d.ts +2 -2
- package/dist/esm/metamaskSnap/snap.d.ts.map +1 -1
- package/dist/esm/metamaskSnap/snap.js +9 -3
- package/dist/esm/metamaskSnap/snap.js.map +1 -1
- package/dist/esm/metamaskSnap/utils/network.d.ts +5 -0
- package/dist/esm/metamaskSnap/utils/network.d.ts.map +1 -0
- package/dist/esm/metamaskSnap/utils/network.js +29 -0
- package/dist/esm/metamaskSnap/utils/network.js.map +1 -0
- package/dist/esm/utils/time.d.ts.map +1 -1
- package/dist/esm/utils/time.js.map +1 -1
- package/dist/esm/walletsManager/walletList.d.ts.map +1 -1
- package/dist/esm/walletsManager/walletList.js +1 -0
- package/dist/esm/walletsManager/walletList.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MassaStationDiscovery.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationDiscovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAuB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnE,4CAA4C;AAC5C,MAAM,WAAW,GAAG,cAAc,CAAC;AACnC,MAAM,aAAa,GAAG,YAAY,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC;AAErB,KAAK,UAAU,eAAe;IAC5B,OAAO,UAAU,CACf,iBAAiB,GAAG,gBAAgB,EACpC,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAqB;IAC7C,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,CAC3E,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,IAAI;QACF,MAAM,eAAe,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI;QACF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,eAAe,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"MassaStationDiscovery.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationDiscovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAuB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnE,4CAA4C;AAC5C,MAAM,WAAW,GAAG,cAAc,CAAC;AACnC,MAAM,aAAa,GAAG,YAAY,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC;AAErB,KAAK,UAAU,eAAe;IAC5B,OAAO,UAAU,CACf,iBAAiB,GAAG,gBAAgB,EACpC,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAqB;IAC7C,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,CAC3E,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,IAAI;QACF,MAAM,eAAe,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI;QACF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,eAAe,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC;KACvD;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAC;KACd;AACH,CAAC","sourcesContent":["import { MASSA_STATION_URL } from './MassaStationWallet';\nimport { JsonRpcResponseData, getRequest } from './RequestHandler';\nimport { PluginInfo } from './types';\n\n// Constants for URLs and plugin information\nconst PLUGIN_NAME = 'Massa Wallet';\nconst PLUGIN_AUTHOR = 'Massa Labs';\nconst TIMEOUT = 4000;\n\nasync function fetchPluginData(): Promise<JsonRpcResponseData<PluginInfo[]>> {\n return getRequest<PluginInfo[]>(\n MASSA_STATION_URL + 'plugin-manager',\n TIMEOUT,\n );\n}\n\nfunction findWalletPlugin(plugins: PluginInfo[]): PluginInfo | undefined {\n return plugins.find(\n (plugin) => plugin.name === PLUGIN_NAME && plugin.author === PLUGIN_AUTHOR,\n );\n}\n\nexport async function isMassaStationAvailable(): Promise<boolean> {\n try {\n await fetchPluginData();\n return true;\n } catch (_) {\n return false;\n }\n}\n\nexport async function isMassaWalletEnabled(): Promise<boolean> {\n try {\n const { result } = await fetchPluginData();\n const walletPlugin = findWalletPlugin(result);\n return !!walletPlugin && walletPlugin.status === 'Up';\n } catch (_) {\n return false;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestHandler.d.ts","sourceRoot":"","sources":["../../../src/massaStation/RequestHandler.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAeF;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,
|
|
1
|
+
{"version":3,"file":"RequestHandler.d.ts","sourceRoot":"","sources":["../../../src/massaStation/RequestHandler.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAeF;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAUjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAUjC;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAUjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAUjC"}
|
|
@@ -32,10 +32,9 @@ function handleAxiosError(error) {
|
|
|
32
32
|
* @returns a Promise that resolves to an instance of JsonRpcResponseData.
|
|
33
33
|
*
|
|
34
34
|
*/
|
|
35
|
-
export async function getRequest(url, timeout
|
|
36
|
-
let resp = null;
|
|
35
|
+
export async function getRequest(url, timeout) {
|
|
37
36
|
try {
|
|
38
|
-
resp = await axios.get(url, {
|
|
37
|
+
const resp = await axios.get(url, {
|
|
39
38
|
headers: requestHeaders,
|
|
40
39
|
timeout,
|
|
41
40
|
});
|
|
@@ -74,9 +73,8 @@ export async function postRequest(url, body) {
|
|
|
74
73
|
*
|
|
75
74
|
*/
|
|
76
75
|
export async function deleteRequest(url) {
|
|
77
|
-
let resp = null;
|
|
78
76
|
try {
|
|
79
|
-
resp = await axios.delete(url, {
|
|
77
|
+
const resp = await axios.delete(url, {
|
|
80
78
|
headers: requestHeaders,
|
|
81
79
|
});
|
|
82
80
|
return { result: resp.data };
|
|
@@ -95,9 +93,8 @@ export async function deleteRequest(url) {
|
|
|
95
93
|
*
|
|
96
94
|
*/
|
|
97
95
|
export async function putRequest(url, body) {
|
|
98
|
-
let resp = null;
|
|
99
96
|
try {
|
|
100
|
-
resp = await axios.put(url, body, {
|
|
97
|
+
const resp = await axios.put(url, body, {
|
|
101
98
|
headers: requestHeaders,
|
|
102
99
|
});
|
|
103
100
|
return { result: resp.data };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestHandler.js","sourceRoot":"","sources":["../../../src/massaStation/RequestHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,MAAM,cAAc,GAAG;IACrB,MAAM,EACJ,kFAAkF;IACpF,cAAc,EAAE,kBAAkB;CACnC,CAAC;AAQF;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,KAAU;IAClC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO;QACvC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,MAAM,GAAG,CAAC;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,
|
|
1
|
+
{"version":3,"file":"RequestHandler.js","sourceRoot":"","sources":["../../../src/massaStation/RequestHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,MAAM,cAAc,GAAG;IACrB,MAAM,EACJ,kFAAkF;IACpF,cAAc,EAAE,kBAAkB;CACnC,CAAC;AAQF;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,KAAU;IAClC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO;QACvC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,MAAM,GAAG,CAAC;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,OAAgB;IAEhB,IAAI;QACF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAiC,GAAG,EAAE;YAChE,OAAO,EAAE,cAAc;YACvB,OAAO;SACR,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;KAC9B;IAAC,OAAO,KAAK,EAAE;QACd,gBAAgB,CAAC,KAAK,CAAC,CAAC;KACzB;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAW,EACX,IAAY;IAEZ,IAAI;QACF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAiC,GAAG,EAAE,IAAI,EAAE;YACvE,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;KAC9B;IAAC,OAAO,KAAK,EAAE;QACd,gBAAgB,CAAC,KAAK,CAAC,CAAC;KACzB;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW;IAEX,IAAI;QACF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAiC,GAAG,EAAE;YACnE,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;KAC9B;IAAC,OAAO,KAAK,EAAE;QACd,gBAAgB,CAAC,KAAK,CAAC,CAAC;KACzB;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,IAAY;IAEZ,IAAI;QACF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAiC,GAAG,EAAE,IAAI,EAAE;YACtE,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;KAC9B;IAAC,OAAO,KAAK,EAAE;QACd,gBAAgB,CAAC,KAAK,CAAC,CAAC;KACzB;AACH,CAAC","sourcesContent":["/**\n * This file defines a TypeScript module with methods for performing GET, POST and DELETE http requests.\n *\n * @remarks\n * - The methods implemented here are quite generic and might be useful in other contexts too\n * but have been particularly developed for making http calls specific to MassaStation's server API\n * - If you want to work on this repo, you will probably be interested in this object\n *\n */\nimport axios, { AxiosResponse } from 'axios';\n\nconst requestHeaders = {\n Accept:\n 'application/json,text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',\n 'Content-Type': 'application/json',\n};\n/**\n * This interface represents a payload returned by making an http call\n */\nexport type JsonRpcResponseData<T> = {\n result: T;\n};\n\n/**\n * Handles errors from Axios requests.\n *\n * @param error - The error object thrown by Axios.\n * @throws a formatted error message.\n */\nfunction handleAxiosError(error: any): never {\n const err = error.response?.data?.message\n ? new Error(String(error.response.data.message))\n : new Error('Axios error: ' + String(error));\n throw err;\n}\n\n/**\n * This method makes a GET request to an http rest point.\n *\n *\n * @param url - The url to call.\n * @returns a Promise that resolves to an instance of JsonRpcResponseData.\n *\n */\nexport async function getRequest<T>(\n url: string,\n timeout?: number,\n): Promise<JsonRpcResponseData<T>> {\n try {\n const resp = await axios.get<unknown, AxiosResponse, object>(url, {\n headers: requestHeaders,\n timeout,\n });\n return { result: resp.data };\n } catch (error) {\n handleAxiosError(error);\n }\n}\n\n/**\n * This method makes a POST request to an http rest point.\n *\n *\n * @param url - The url to call.\n * @param body - The body of the request.\n * @returns a Promise that resolves to an instance of JsonRpcResponseData.\n *\n */\nexport async function postRequest<T>(\n url: string,\n body: object,\n): Promise<JsonRpcResponseData<T>> {\n try {\n const resp = await axios.post<unknown, AxiosResponse, object>(url, body, {\n headers: requestHeaders,\n });\n\n return { result: resp.data };\n } catch (error) {\n handleAxiosError(error);\n }\n}\n\n/**\n * This method makes a DELETE request to an http rest point.\n *\n *\n * @param url - The url to call.\n * @returns a Promise that resolves to an instance of JsonRpcResponseData.\n *\n */\nexport async function deleteRequest<T>(\n url: string,\n): Promise<JsonRpcResponseData<T>> {\n try {\n const resp = await axios.delete<unknown, AxiosResponse, object>(url, {\n headers: requestHeaders,\n });\n\n return { result: resp.data };\n } catch (error) {\n handleAxiosError(error);\n }\n}\n\n/**\n * This method makes a PUT request to an http rest point.\n *\n *\n * @param url - The url to call.\n * @param body - The body of the request.\n * @returns a Promise that resolves to an instance of JsonRpcResponseData.\n *\n */\nexport async function putRequest<T>(\n url: string,\n body: object,\n): Promise<JsonRpcResponseData<T>> {\n try {\n const resp = await axios.put<unknown, AxiosResponse, object>(url, body, {\n headers: requestHeaders,\n });\n\n return { result: resp.data };\n } catch (error) {\n handleAxiosError(error);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../../../src/massaStation/utils/standalone.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../../../src/massaStation/utils/standalone.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,IAAI,OAAO,CAKtC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export function isStandalone() {
|
|
2
2
|
// this is eventually set by wallet web-app
|
|
3
|
-
return typeof window !== 'undefined' && window.massaWallet?.standalone;
|
|
3
|
+
return (typeof window !== 'undefined' && Boolean(window.massaWallet?.standalone));
|
|
4
4
|
}
|
|
5
5
|
//# sourceMappingURL=standalone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standalone.js","sourceRoot":"","sources":["../../../../src/massaStation/utils/standalone.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY;IAC1B,2CAA2C;IAC3C,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"standalone.js","sourceRoot":"","sources":["../../../../src/massaStation/utils/standalone.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY;IAC1B,2CAA2C;IAC3C,OAAO,CACL,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CACzE,CAAC;AACJ,CAAC","sourcesContent":["export function isStandalone(): boolean {\n // this is eventually set by wallet web-app\n return (\n typeof window !== 'undefined' && Boolean(window.massaWallet?.standalone)\n );\n}\n"]}
|
|
@@ -24,7 +24,7 @@ export declare class MetamaskAccount implements Provider {
|
|
|
24
24
|
getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents>;
|
|
25
25
|
getNodeStatus(): Promise<NodeStatusInfo>;
|
|
26
26
|
getStorageKeys(address: string, filter?: Uint8Array | string, final?: boolean): Promise<Uint8Array[]>;
|
|
27
|
-
readStorage(address: string, keys: Uint8Array[] | string[], final?: boolean): Promise<Uint8Array[]>;
|
|
27
|
+
readStorage(address: string, keys: Uint8Array[] | string[], final?: boolean): Promise<(Uint8Array | null)[]>;
|
|
28
28
|
executeSC(): Promise<Operation>;
|
|
29
29
|
}
|
|
30
30
|
//# sourceMappingURL=MetamaskAccount.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetamaskAccount.d.ts","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,EACd,WAAW,EAGX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EAEb,QAAQ,EAET,MAAM,uBAAuB,CAAC;AAsB/B,qBAAa,eAAgB,YAAW,QAAQ;aAE5B,OAAO,EAAE,MAAM;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADT,OAAO,EAAE,MAAM,EACd,QAAQ,EAAE,sBAAsB;IAGnD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAEK,OAAO,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvC,SAAS,CACb,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,UAAQ,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAY5C,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YAgB9C,mBAAmB;IA0B3B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAIrE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAItE,QAAQ,CACZ,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAiBf,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IA8BhD,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAwBjD,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAqCxD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAK1D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAK9D,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAMxC,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAAU,GAAG,MAAyB,EAC9C,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;IAOlB,WAAW,CACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAC7B,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"MetamaskAccount.d.ts","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,EACd,WAAW,EAGX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EAEb,QAAQ,EAET,MAAM,uBAAuB,CAAC;AAsB/B,qBAAa,eAAgB,YAAW,QAAQ;aAE5B,OAAO,EAAE,MAAM;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADT,OAAO,EAAE,MAAM,EACd,QAAQ,EAAE,sBAAsB;IAGnD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAEK,OAAO,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvC,SAAS,CACb,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,UAAQ,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAY5C,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YAgB9C,mBAAmB;IA0B3B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAIrE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAItE,QAAQ,CACZ,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAiBf,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IA8BhD,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAwBjD,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAqCxD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAK1D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAK9D,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAMxC,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAAU,GAAG,MAAyB,EAC9C,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;IAOlB,WAAW,CACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAC7B,KAAK,UAAO,GACX,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IASjC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;CAGhC"}
|
|
@@ -2,7 +2,7 @@ import { formatNodeStatusObject, MAX_GAS_CALL, Operation, SmartContract, strToBy
|
|
|
2
2
|
import { WalletName } from '../wallet';
|
|
3
3
|
import { errorHandler } from '../errors/utils/errorHandler';
|
|
4
4
|
import { operationType } from '../utils/constants';
|
|
5
|
-
import {
|
|
5
|
+
import { networkInfos, getClient } from './utils/network';
|
|
6
6
|
import { buyRolls, callSC, deploySC, getBalance, sellRolls, signMessage, transfer, } from './services';
|
|
7
7
|
export class MetamaskAccount {
|
|
8
8
|
address;
|
|
@@ -24,7 +24,7 @@ export class MetamaskAccount {
|
|
|
24
24
|
return BigInt(final ? finalBalance : candidateBalance);
|
|
25
25
|
}
|
|
26
26
|
async balanceOf(addresses, final = false) {
|
|
27
|
-
const client = await getClient();
|
|
27
|
+
const client = await getClient(this.provider);
|
|
28
28
|
const addressesInfo = await client.getMultipleAddressInfo(addresses);
|
|
29
29
|
return addressesInfo.map((addressInfo) => ({
|
|
30
30
|
address: addressInfo.address,
|
|
@@ -34,7 +34,7 @@ export class MetamaskAccount {
|
|
|
34
34
|
}));
|
|
35
35
|
}
|
|
36
36
|
async networkInfos() {
|
|
37
|
-
return networkInfos();
|
|
37
|
+
return networkInfos(this.provider);
|
|
38
38
|
}
|
|
39
39
|
async sign(inData) {
|
|
40
40
|
try {
|
|
@@ -119,13 +119,13 @@ export class MetamaskAccount {
|
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
async readSC(params) {
|
|
122
|
-
if (params
|
|
122
|
+
if (params.maxGas && params.maxGas > MAX_GAS_CALL) {
|
|
123
123
|
throw new Error(`Gas amount ${params.maxGas} exceeds the maximum allowed ${MAX_GAS_CALL}`);
|
|
124
124
|
}
|
|
125
125
|
try {
|
|
126
126
|
const args = params.parameter ?? new Uint8Array();
|
|
127
127
|
const parameter = args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());
|
|
128
|
-
const client = await getClient();
|
|
128
|
+
const client = await getClient(this.provider);
|
|
129
129
|
const readOnlyParams = {
|
|
130
130
|
...params,
|
|
131
131
|
caller: params.caller ?? this.address,
|
|
@@ -170,25 +170,25 @@ export class MetamaskAccount {
|
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
async getOperationStatus(opId) {
|
|
173
|
-
const client = await getClient();
|
|
173
|
+
const client = await getClient(this.provider);
|
|
174
174
|
return client.getOperationStatus(opId);
|
|
175
175
|
}
|
|
176
176
|
async getEvents(filter) {
|
|
177
|
-
const client = await getClient();
|
|
177
|
+
const client = await getClient(this.provider);
|
|
178
178
|
return client.getEvents(filter);
|
|
179
179
|
}
|
|
180
180
|
async getNodeStatus() {
|
|
181
|
-
const client = await getClient();
|
|
181
|
+
const client = await getClient(this.provider);
|
|
182
182
|
const status = await client.status();
|
|
183
183
|
return formatNodeStatusObject(status);
|
|
184
184
|
}
|
|
185
185
|
async getStorageKeys(address, filter = new Uint8Array(), final = true) {
|
|
186
|
-
const client = await getClient();
|
|
186
|
+
const client = await getClient(this.provider);
|
|
187
187
|
const filterBytes = typeof filter === 'string' ? strToBytes(filter) : filter;
|
|
188
188
|
return client.getDataStoreKeys(address, filterBytes, final);
|
|
189
189
|
}
|
|
190
190
|
async readStorage(address, keys, final = true) {
|
|
191
|
-
const client = await getClient();
|
|
191
|
+
const client = await getClient(this.provider);
|
|
192
192
|
const entries = keys.map((key) => ({
|
|
193
193
|
key,
|
|
194
194
|
address,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetamaskAccount.js","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import { MetaMaskInpageProvider } from '@metamask/providers';\nimport {\n Address,\n CallSCParams,\n DatastoreEntry,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SmartContract,\n strToBytes,\n rpcTypes,\n Mas,\n} from '@massalabs/massa-web3';\nimport { WalletName } from '../wallet';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport { getClient, networkInfos } from '../massaStation/utils/network';\nimport {\n buyRolls,\n callSC,\n deploySC,\n getBalance,\n sellRolls,\n signMessage,\n transfer,\n} from './services';\nimport type {\n BuyRollsParams,\n SellRollsParams,\n TransferParams,\n CallSCParams as MMCallSCParams,\n DeploySCParams as MMDeploySCParams,\n} from '@massalabs/metamask-snap';\n\nexport class MetamaskAccount implements Provider {\n constructor(\n public readonly address: string,\n private readonly provider: MetaMaskInpageProvider,\n ) {}\n\n get accountName(): string {\n return this.address;\n }\n\n get providerName(): string {\n return WalletName.Metamask;\n }\n\n async balance(final = false): Promise<bigint> {\n const { finalBalance, candidateBalance } = await getBalance(this.provider, {\n address: this.address,\n });\n return BigInt(final ? finalBalance : candidateBalance);\n }\n\n async balanceOf(\n addresses: string[],\n final = false,\n ): Promise<{ address: string; balance: bigint }[]> {\n const client = await getClient();\n const addressesInfo = await client.getMultipleAddressInfo(addresses);\n\n return addressesInfo.map((addressInfo) => ({\n address: addressInfo.address,\n balance: final\n ? Mas.fromString(addressInfo.final_balance)\n : Mas.fromString(addressInfo.candidate_balance),\n }));\n }\n\n async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n async sign(inData: Uint8Array | string): Promise<SignedData> {\n try {\n const data = typeof inData === 'string' ? inData : Array.from(inData);\n const { publicKey, signature } = await signMessage(this.provider, {\n data,\n });\n\n return {\n publicKey,\n signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n private async handleRollOperation(\n operation: 'buy' | 'sell',\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n try {\n const params: BuyRollsParams | SellRollsParams = {\n amount: amount.toString(),\n };\n if (opts?.fee) {\n params.fee = opts?.fee.toString();\n }\n\n const { operationId } = await (operation === 'buy'\n ? buyRolls(this.provider, params)\n : sellRolls(this.provider, params));\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(\n operation === 'buy' ? operationType.BuyRolls : operationType.SellRolls,\n error,\n );\n }\n }\n\n async buyRolls(amount: bigint, opts?: OperationOptions): Promise<Operation> {\n return this.handleRollOperation('buy', amount, opts);\n }\n\n async sellRolls(amount: bigint, opts?: OperationOptions): Promise<Operation> {\n return this.handleRollOperation('sell', amount, opts);\n }\n\n async transfer(\n to: Address | string,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n try {\n const params: TransferParams = {\n amount: amount.toString(),\n recipientAddress: to.toString(),\n };\n if (opts?.fee) {\n params.fee = opts?.fee.toString();\n }\n const { operationId } = await transfer(this.provider, params);\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n async callSC(params: CallSCParams): Promise<Operation> {\n try {\n const callSCparams: MMCallSCParams = {\n functionName: params.func,\n at: params.target,\n };\n if (params.parameter) {\n callSCparams.args =\n params.parameter instanceof Uint8Array\n ? Array.from(params.parameter)\n : Array.from(params.parameter.serialize());\n }\n if (params.coins) {\n callSCparams.coins = params.coins.toString();\n }\n if (params.maxGas) {\n callSCparams.maxGas = params.maxGas.toString();\n }\n if (params.fee) {\n callSCparams.fee = params.fee.toString();\n }\n\n const { operationId } = await callSC(this.provider, callSCparams);\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.CallSC, error);\n }\n }\n\n async readSC(params: ReadSCParams): Promise<ReadSCData> {\n if (params?.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `Gas amount ${params.maxGas} exceeds the maximum allowed ${MAX_GAS_CALL}`,\n );\n }\n try {\n const args = params.parameter ?? new Uint8Array();\n const parameter =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const client = await getClient();\n const readOnlyParams = {\n ...params,\n caller: params.caller ?? this.address,\n parameter,\n };\n return client.executeReadOnlyCall(readOnlyParams);\n } catch (error) {\n throw new Error(`Smart contract read failed: ${error.message}`);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const deployParams: MMDeploySCParams = {\n bytecode: Array.from(params.byteCode),\n };\n if (params.parameter) {\n deployParams.args = Array.from(\n params.parameter instanceof Uint8Array\n ? params.parameter\n : params.parameter.serialize(),\n );\n }\n if (params.coins) {\n deployParams.coins = params.coins.toString();\n }\n if (params.maxGas) {\n deployParams.maxGas = params.maxGas.toString();\n }\n if (params.fee) {\n deployParams.fee = params.fee.toString();\n }\n if (params.maxCoins) {\n deployParams.maxCoins = params.maxCoins.toString();\n }\n\n const { operationId } = await deploySC(this.provider, deployParams);\n const op = new Operation(this, operationId);\n const deployedAddress = await op.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n throw errorHandler(operationType.DeploySC, error);\n }\n }\n\n async getOperationStatus(opId: string): Promise<OperationStatus> {\n const client = await getClient();\n return client.getOperationStatus(opId);\n }\n\n async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const client = await getClient();\n return client.getEvents(filter);\n }\n\n async getNodeStatus(): Promise<NodeStatusInfo> {\n const client = await getClient();\n const status = await client.status();\n return formatNodeStatusObject(status);\n }\n\n async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n const client = await getClient();\n const filterBytes =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n return client.getDataStoreKeys(address, filterBytes, final);\n }\n\n async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<Uint8Array[]> {\n const client = await getClient();\n const entries: DatastoreEntry[] = keys.map((key) => ({\n key,\n address,\n }));\n return client.getDatastoreEntries(entries, final);\n }\n\n executeSC(): Promise<Operation> {\n throw new Error('Method not implemented.');\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MetamaskAccount.js","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import { MetaMaskInpageProvider } from '@metamask/providers';\nimport {\n Address,\n CallSCParams,\n DatastoreEntry,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SmartContract,\n strToBytes,\n rpcTypes,\n Mas,\n} from '@massalabs/massa-web3';\nimport { WalletName } from '../wallet';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport { networkInfos, getClient } from './utils/network';\nimport {\n buyRolls,\n callSC,\n deploySC,\n getBalance,\n sellRolls,\n signMessage,\n transfer,\n} from './services';\nimport type {\n BuyRollsParams,\n SellRollsParams,\n TransferParams,\n CallSCParams as MMCallSCParams,\n DeploySCParams as MMDeploySCParams,\n} from '@massalabs/metamask-snap';\n\nexport class MetamaskAccount implements Provider {\n constructor(\n public readonly address: string,\n private readonly provider: MetaMaskInpageProvider,\n ) {}\n\n get accountName(): string {\n return this.address;\n }\n\n get providerName(): string {\n return WalletName.Metamask;\n }\n\n async balance(final = false): Promise<bigint> {\n const { finalBalance, candidateBalance } = await getBalance(this.provider, {\n address: this.address,\n });\n return BigInt(final ? finalBalance : candidateBalance);\n }\n\n async balanceOf(\n addresses: string[],\n final = false,\n ): Promise<{ address: string; balance: bigint }[]> {\n const client = await getClient(this.provider);\n const addressesInfo = await client.getMultipleAddressInfo(addresses);\n\n return addressesInfo.map((addressInfo) => ({\n address: addressInfo.address,\n balance: final\n ? Mas.fromString(addressInfo.final_balance)\n : Mas.fromString(addressInfo.candidate_balance),\n }));\n }\n\n async networkInfos(): Promise<Network> {\n return networkInfos(this.provider);\n }\n\n async sign(inData: Uint8Array | string): Promise<SignedData> {\n try {\n const data = typeof inData === 'string' ? inData : Array.from(inData);\n const { publicKey, signature } = await signMessage(this.provider, {\n data,\n });\n\n return {\n publicKey,\n signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n private async handleRollOperation(\n operation: 'buy' | 'sell',\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n try {\n const params: BuyRollsParams | SellRollsParams = {\n amount: amount.toString(),\n };\n if (opts?.fee) {\n params.fee = opts?.fee.toString();\n }\n\n const { operationId } = await (operation === 'buy'\n ? buyRolls(this.provider, params)\n : sellRolls(this.provider, params));\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(\n operation === 'buy' ? operationType.BuyRolls : operationType.SellRolls,\n error,\n );\n }\n }\n\n async buyRolls(amount: bigint, opts?: OperationOptions): Promise<Operation> {\n return this.handleRollOperation('buy', amount, opts);\n }\n\n async sellRolls(amount: bigint, opts?: OperationOptions): Promise<Operation> {\n return this.handleRollOperation('sell', amount, opts);\n }\n\n async transfer(\n to: Address | string,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n try {\n const params: TransferParams = {\n amount: amount.toString(),\n recipientAddress: to.toString(),\n };\n if (opts?.fee) {\n params.fee = opts?.fee.toString();\n }\n const { operationId } = await transfer(this.provider, params);\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n async callSC(params: CallSCParams): Promise<Operation> {\n try {\n const callSCparams: MMCallSCParams = {\n functionName: params.func,\n at: params.target,\n };\n if (params.parameter) {\n callSCparams.args =\n params.parameter instanceof Uint8Array\n ? Array.from(params.parameter)\n : Array.from(params.parameter.serialize());\n }\n if (params.coins) {\n callSCparams.coins = params.coins.toString();\n }\n if (params.maxGas) {\n callSCparams.maxGas = params.maxGas.toString();\n }\n if (params.fee) {\n callSCparams.fee = params.fee.toString();\n }\n\n const { operationId } = await callSC(this.provider, callSCparams);\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.CallSC, error);\n }\n }\n\n async readSC(params: ReadSCParams): Promise<ReadSCData> {\n if (params.maxGas && params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `Gas amount ${params.maxGas} exceeds the maximum allowed ${MAX_GAS_CALL}`,\n );\n }\n try {\n const args = params.parameter ?? new Uint8Array();\n const parameter =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const client = await getClient(this.provider);\n const readOnlyParams = {\n ...params,\n caller: params.caller ?? this.address,\n parameter,\n };\n return client.executeReadOnlyCall(readOnlyParams);\n } catch (error) {\n throw new Error(`Smart contract read failed: ${error.message}`);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const deployParams: MMDeploySCParams = {\n bytecode: Array.from(params.byteCode),\n };\n if (params.parameter) {\n deployParams.args = Array.from(\n params.parameter instanceof Uint8Array\n ? params.parameter\n : params.parameter.serialize(),\n );\n }\n if (params.coins) {\n deployParams.coins = params.coins.toString();\n }\n if (params.maxGas) {\n deployParams.maxGas = params.maxGas.toString();\n }\n if (params.fee) {\n deployParams.fee = params.fee.toString();\n }\n if (params.maxCoins) {\n deployParams.maxCoins = params.maxCoins.toString();\n }\n\n const { operationId } = await deploySC(this.provider, deployParams);\n const op = new Operation(this, operationId);\n const deployedAddress = await op.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n throw errorHandler(operationType.DeploySC, error);\n }\n }\n\n async getOperationStatus(opId: string): Promise<OperationStatus> {\n const client = await getClient(this.provider);\n return client.getOperationStatus(opId);\n }\n\n async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const client = await getClient(this.provider);\n return client.getEvents(filter);\n }\n\n async getNodeStatus(): Promise<NodeStatusInfo> {\n const client = await getClient(this.provider);\n const status = await client.status();\n return formatNodeStatusObject(status);\n }\n\n async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n const client = await getClient(this.provider);\n const filterBytes =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n return client.getDataStoreKeys(address, filterBytes, final);\n }\n\n async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<(Uint8Array | null)[]> {\n const client = await getClient(this.provider);\n const entries: DatastoreEntry[] = keys.map((key) => ({\n key,\n address,\n }));\n return client.getDatastoreEntries(entries, final);\n }\n\n executeSC(): Promise<Operation> {\n throw new Error('Method not implemented.');\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetamaskWallet.d.ts","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"MetamaskWallet.d.ts","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAO7D,qBAAa,cAAe,YAAW,MAAM;IAC3C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,cAAc,CAAU;IAEzB,IAAI,IAAI,UAAU;gBAIN,QAAQ,EAAE,sBAAsB;WAItC,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAY3C,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAKtC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7C;;;;;OAKG;IACU,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI7C,oBAAoB,IAAI;QAAE,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,SAAS;IAMtE;;;;;;;;;;;;;;OAcG;IACI,oBAAoB,CACzB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GACnC;QAAE,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,SAAS;IA2B1C;;;;OAIG;IACU,OAAO;IAaP,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,OAAO,IAAI,OAAO;CAG1B"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { getNetworkNameByChainId, } from '@massalabs/massa-web3';
|
|
2
1
|
import { WalletName } from '../wallet';
|
|
3
2
|
import { getMetamaskProvider } from './metamask';
|
|
4
3
|
import { connectSnap, isConnected } from './snap';
|
|
5
4
|
import { MetamaskAccount } from './MetamaskAccount';
|
|
6
|
-
import { getActiveAccount,
|
|
5
|
+
import { getActiveAccount, setRpcUrl } from './services';
|
|
6
|
+
import { networkInfos } from './utils/network';
|
|
7
7
|
import EventEmitter from 'eventemitter3';
|
|
8
8
|
const METAMASK_NETWORK_CHANGED = 'METAMASK_NETWORK_CHANGED';
|
|
9
9
|
export class MetamaskWallet {
|
|
@@ -39,13 +39,7 @@ export class MetamaskWallet {
|
|
|
39
39
|
throw new Error('Method not implemented.');
|
|
40
40
|
}
|
|
41
41
|
async networkInfos() {
|
|
42
|
-
|
|
43
|
-
return {
|
|
44
|
-
name: getNetworkNameByChainId(BigInt(res.chainId)),
|
|
45
|
-
chainId: BigInt(res.chainId),
|
|
46
|
-
url: res.network,
|
|
47
|
-
minimalFee: BigInt(res.minimalFees),
|
|
48
|
-
};
|
|
42
|
+
return networkInfos(this.metamaskProvider);
|
|
49
43
|
}
|
|
50
44
|
/**
|
|
51
45
|
* Sets the RPC URL for the MetaMask provider.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetamaskWallet.js","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskWallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MetamaskWallet.js","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskWallet.ts"],"names":[],"mappings":"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","sourcesContent":["import { Wallet } from '../wallet/interface';\nimport { Network, Provider } from '@massalabs/massa-web3';\nimport { WalletName } from '../wallet';\nimport { getMetamaskProvider } from './metamask';\nimport { connectSnap, isConnected } from './snap';\nimport { MetamaskAccount } from './MetamaskAccount';\nimport { MetaMaskInpageProvider } from '@metamask/providers';\nimport { getActiveAccount, setRpcUrl } from './services';\nimport { networkInfos } from './utils/network';\nimport EventEmitter from 'eventemitter3';\n\nconst METAMASK_NETWORK_CHANGED = 'METAMASK_NETWORK_CHANGED';\n\nexport class MetamaskWallet implements Wallet {\n private walletName = WalletName.Metamask;\n private metamaskProvider: MetaMaskInpageProvider;\n private eventsListener = new EventEmitter();\n private currentNetwork: Network;\n\n public name(): WalletName {\n return this.walletName;\n }\n\n public constructor(provider: MetaMaskInpageProvider) {\n this.metamaskProvider = provider;\n }\n\n static async createIfInstalled(): Promise<Wallet | null> {\n try {\n const metamask = await getMetamaskProvider();\n\n if (!metamask) return null;\n\n return new MetamaskWallet(metamask);\n } catch (error) {\n return null;\n }\n }\n\n public async accounts(): Promise<MetamaskAccount[]> {\n const res = await getActiveAccount(this.metamaskProvider);\n return [new MetamaskAccount(res.address, this.metamaskProvider)];\n }\n\n public async importAccount(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n public async deleteAccount(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos(this.metamaskProvider);\n }\n\n /**\n * Sets the RPC URL for the MetaMask provider.\n *\n * @param url - The new RPC URL.\n * @returns A promise that resolves when the RPC URL is updated.\n */\n public async setRpcUrl(url: string): Promise<void> {\n await setRpcUrl(this.metamaskProvider, { network: url });\n }\n\n public async generateNewAccount(): Promise<Provider> {\n throw new Error('Method not implemented.');\n }\n\n public listenAccountChanges(): { unsubscribe: () => void } | undefined {\n throw new Error(\n 'listenAccountChanges is not yet implemented for the current provider.',\n );\n }\n\n /**\n * Subscribes to network changes.\n *\n * @param callback - Callback function called when the network changes.\n * @returns An object with an `unsubscribe` method to stop listening.\n * @remarks Periodically checks for network changes every 500ms.\n *\n * @example\n * ```typescript\n * const observer = await provider.listenNetworkChanges((network) => {\n * console.log(network);\n * });\n * observer.unsubscribe();\n * ```\n */\n public listenNetworkChanges(\n callback: (network: Network) => void,\n ): { unsubscribe: () => void } | undefined {\n this.eventsListener.on(METAMASK_NETWORK_CHANGED, (evt) => callback(evt));\n\n const intervalId = setInterval(async () => {\n const network = await this.networkInfos();\n if (!this.currentNetwork) {\n this.currentNetwork = network;\n return;\n }\n if (this.currentNetwork.name !== network.name) {\n this.currentNetwork = network;\n this.eventsListener.emit(METAMASK_NETWORK_CHANGED, network);\n }\n }, 500);\n\n return {\n unsubscribe: () => {\n clearInterval(intervalId);\n this.eventsListener.removeListener(\n METAMASK_NETWORK_CHANGED,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {},\n );\n },\n };\n }\n\n /**\n * Connects to MetaMask and ensures it is unlocked and ready.\n *\n * @returns A promise that resolves to `true` if connected successfully, otherwise `false`.\n */\n public async connect() {\n try {\n const connected = await isConnected(this.metamaskProvider);\n\n if (!connected) {\n await connectSnap(this.metamaskProvider);\n }\n return true;\n } catch (error) {\n return false;\n }\n }\n\n public async disconnect(): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n\n public connected(): Promise<boolean> {\n return isConnected(this.metamaskProvider);\n }\n\n public enabled(): boolean {\n throw new Error('Method not implemented.');\n }\n}\n"]}
|
|
@@ -3,6 +3,6 @@ import { type GetSnapsResponse, Snap } from './types';
|
|
|
3
3
|
export declare const getInstalledSnaps: (provider: MetaMaskInpageProvider) => Promise<GetSnapsResponse>;
|
|
4
4
|
export declare const getMassaSnapInfo: (provider: MetaMaskInpageProvider, version?: string) => Promise<Snap | undefined>;
|
|
5
5
|
export declare const isConnected: (provider: MetaMaskInpageProvider) => Promise<boolean>;
|
|
6
|
-
export declare const connectSnap: (provider: MetaMaskInpageProvider, params?: Record<'version' | string, unknown>) => Promise<
|
|
7
|
-
export declare const showPrivateKey: (provider: MetaMaskInpageProvider) => Promise<
|
|
6
|
+
export declare const connectSnap: (provider: MetaMaskInpageProvider, params?: Record<'version' | string, unknown>) => Promise<import("@metamask/providers/dist/utils.cjs").Maybe<unknown>>;
|
|
7
|
+
export declare const showPrivateKey: (provider: MetaMaskInpageProvider) => Promise<import("@metamask/providers/dist/utils.cjs").Maybe<unknown>>;
|
|
8
8
|
//# sourceMappingURL=snap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../../src/metamaskSnap/snap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EAAE,KAAK,gBAAgB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEtD,eAAO,MAAM,iBAAiB,aAClB,sBAAsB,KAC/B,QAAQ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../../src/metamaskSnap/snap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EAAE,KAAK,gBAAgB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEtD,eAAO,MAAM,iBAAiB,aAClB,sBAAsB,KAC/B,QAAQ,gBAAgB,CAQ1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,aACjB,sBAAsB,YACtB,MAAM,KACf,QAAQ,IAAI,GAAG,SAAS,CAa1B,CAAC;AAEF,eAAO,MAAM,WAAW,aACZ,sBAAsB,KAC/B,QAAQ,OAAO,CAGjB,CAAC;AAEF,eAAO,MAAM,WAAW,aACZ,sBAAsB,WACxB,OAAO,SAAS,GAAG,MAAM,EAAE,OAAO,CAAC,yEAQ5C,CAAC;AAEF,eAAO,MAAM,cAAc,aAAoB,sBAAsB,yEAKpE,CAAC"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { MASSA_SNAP_ID } from './config';
|
|
2
|
-
export const getInstalledSnaps = async (provider) =>
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export const getInstalledSnaps = async (provider) => {
|
|
3
|
+
const res = await provider.request({
|
|
4
|
+
method: 'wallet_getSnaps',
|
|
5
|
+
});
|
|
6
|
+
if (!res) {
|
|
7
|
+
throw new Error('metamask wallet_getSnaps returned empty response');
|
|
8
|
+
}
|
|
9
|
+
return res;
|
|
10
|
+
};
|
|
5
11
|
export const getMassaSnapInfo = async (provider, version) => {
|
|
6
12
|
try {
|
|
7
13
|
const snaps = await getInstalledSnaps(provider);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snap.js","sourceRoot":"","sources":["../../../src/metamaskSnap/snap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,QAAgC,EACL,EAAE,
|
|
1
|
+
{"version":3,"file":"snap.js","sourceRoot":"","sources":["../../../src/metamaskSnap/snap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,QAAgC,EACL,EAAE;IAC7B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;QACjC,MAAM,EAAE,iBAAiB;KAC1B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;KACrE;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,QAAgC,EAChC,OAAgB,EACW,EAAE;IAC7B,IAAI;QACF,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAC9B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,EAAE,KAAK,aAAa,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CACtE,CAAC;KACH;IAAC,OAAO,KAAK,EAAE;QACd,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,QAAgC,EACd,EAAE;IACpB,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,QAAgC,EAChC,SAA8C,EAAE,EAChD,EAAE;IACF,OAAO,QAAQ,CAAC,OAAO,CAAC;QACtB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,CAAC,aAAa,CAAC,EAAE,MAAM;SACxB;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,QAAgC,EAAE,EAAE;IACvE,OAAO,QAAQ,CAAC,OAAO,CAAC;QACtB,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE;KACxE,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import type { MetaMaskInpageProvider } from '@metamask/providers';\n\nimport { MASSA_SNAP_ID } from './config';\nimport { type GetSnapsResponse, Snap } from './types';\n\nexport const getInstalledSnaps = async (\n provider: MetaMaskInpageProvider,\n): Promise<GetSnapsResponse> => {\n const res = await provider.request({\n method: 'wallet_getSnaps',\n });\n if (!res) {\n throw new Error('metamask wallet_getSnaps returned empty response');\n }\n return res;\n};\n\nexport const getMassaSnapInfo = async (\n provider: MetaMaskInpageProvider,\n version?: string,\n): Promise<Snap | undefined> => {\n try {\n const snaps = await getInstalledSnaps(provider);\n\n return Object.values(snaps).find(\n (snap) =>\n snap.id === MASSA_SNAP_ID && (!version || snap.version === version),\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to get installed snap', error);\n return undefined;\n }\n};\n\nexport const isConnected = async (\n provider: MetaMaskInpageProvider,\n): Promise<boolean> => {\n const snap = await getMassaSnapInfo(provider);\n return !!snap;\n};\n\nexport const connectSnap = async (\n provider: MetaMaskInpageProvider,\n params: Record<'version' | string, unknown> = {},\n) => {\n return provider.request({\n method: 'wallet_requestSnaps',\n params: {\n [MASSA_SNAP_ID]: params,\n },\n });\n};\n\nexport const showPrivateKey = async (provider: MetaMaskInpageProvider) => {\n return provider.request({\n method: 'wallet_invokeSnap',\n params: { snapId: MASSA_SNAP_ID, request: { method: 'showSecretKey' } },\n });\n};\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { JsonRPCClient, Network } from '@massalabs/massa-web3';
|
|
2
|
+
import { MetaMaskInpageProvider } from '@metamask/providers';
|
|
3
|
+
export declare function networkInfos(metaMaskProvider: MetaMaskInpageProvider): Promise<Network>;
|
|
4
|
+
export declare function getClient(metaMaskProvider: MetaMaskInpageProvider): Promise<JsonRPCClient>;
|
|
5
|
+
//# sourceMappingURL=network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../src/metamaskSnap/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,OAAO,EAGR,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAO7D,wBAAsB,YAAY,CAChC,gBAAgB,EAAE,sBAAsB,GACvC,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED,wBAAsB,SAAS,CAC7B,gBAAgB,EAAE,sBAAsB,GACvC,OAAO,CAAC,aAAa,CAAC,CAMxB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { JsonRPCClient, getNetworkNameByChainId, Mas, } from '@massalabs/massa-web3';
|
|
2
|
+
import { getNetwork } from '../services/getNetwork';
|
|
3
|
+
// Use client singleton to benefit from caching
|
|
4
|
+
let client;
|
|
5
|
+
// Use rpcUrl to check if node has changed
|
|
6
|
+
let rpcUrl;
|
|
7
|
+
export async function networkInfos(metaMaskProvider) {
|
|
8
|
+
const res = await getNetwork(metaMaskProvider);
|
|
9
|
+
const url = res.rpcUrl;
|
|
10
|
+
if (!client || rpcUrl !== url) {
|
|
11
|
+
client = new JsonRPCClient(url);
|
|
12
|
+
rpcUrl = url;
|
|
13
|
+
}
|
|
14
|
+
const networkName = getNetworkNameByChainId(BigInt(res.chainId));
|
|
15
|
+
return {
|
|
16
|
+
name: networkName ? networkName : '',
|
|
17
|
+
chainId: BigInt(res.chainId),
|
|
18
|
+
url,
|
|
19
|
+
minimalFee: Mas.fromString(res.minimalFees),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export async function getClient(metaMaskProvider) {
|
|
23
|
+
if (!client) {
|
|
24
|
+
// this initialize client
|
|
25
|
+
await networkInfos(metaMaskProvider);
|
|
26
|
+
}
|
|
27
|
+
return client;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../src/metamaskSnap/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,uBAAuB,EACvB,GAAG,GACJ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,+CAA+C;AAC/C,IAAI,MAAqB,CAAC;AAC1B,0CAA0C;AAC1C,IAAI,MAAc,CAAC;AAEnB,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,gBAAwC;IAExC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IAEvB,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG,EAAE;QAC7B,MAAM,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,CAAC;KACd;IAED,MAAM,WAAW,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QACpC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAC5B,GAAG;QACH,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,gBAAwC;IAExC,IAAI,CAAC,MAAM,EAAE;QACX,yBAAyB;QACzB,MAAM,YAAY,CAAC,gBAAgB,CAAC,CAAC;KACtC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import {\n JsonRPCClient,\n Network,\n getNetworkNameByChainId,\n Mas,\n} from '@massalabs/massa-web3';\n\nimport { getNetwork } from '../services/getNetwork';\nimport { MetaMaskInpageProvider } from '@metamask/providers';\n\n// Use client singleton to benefit from caching\nlet client: JsonRPCClient;\n// Use rpcUrl to check if node has changed\nlet rpcUrl: string;\n\nexport async function networkInfos(\n metaMaskProvider: MetaMaskInpageProvider,\n): Promise<Network> {\n const res = await getNetwork(metaMaskProvider);\n const url = res.rpcUrl;\n\n if (!client || rpcUrl !== url) {\n client = new JsonRPCClient(url);\n rpcUrl = url;\n }\n\n const networkName = getNetworkNameByChainId(BigInt(res.chainId));\n return {\n name: networkName ? networkName : '',\n chainId: BigInt(res.chainId),\n url,\n minimalFee: Mas.fromString(res.minimalFees),\n };\n}\n\nexport async function getClient(\n metaMaskProvider: MetaMaskInpageProvider,\n): Promise<JsonRPCClient> {\n if (!client) {\n // this initialize client\n await networkInfos(metaMaskProvider);\n }\n return client;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;GAIG;AACH,qBAAa,OAAO;IAClB;;;;;;OAMG;gBACS,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI;IAapD,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;GAIG;AACH,qBAAa,OAAO;IAClB;;;;;;OAMG;gBACS,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI;IAapD,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,WAAW,CAAiB;IAEpC;;;;OAIG;IACI,KAAK,IAAI,IAAI;CAMrB;AAED;;;;;GAKG;AACH,qBAAa,QAAQ;IACnB;;;;;;OAMG;gBACS,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI;IAapD,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,YAAY,CAAiB;IAErC;;;;OAIG;IACI,KAAK,IAAI,IAAI;CAMrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,cAAqB,MAAM,KAAG,QAAQ,IAAI,CAO1D,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC,CAaZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;GAIG;AACH,MAAM,OAAO,OAAO;IAClB;;;;;;OAMG;IACH,YAAY,UAAkB,EAAE,QAAoB;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,QAAQ,EAAE,CAAC;aACZ;QACH,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC;IACO,SAAS,CAAU;IACnB,QAAQ,CAAU;IAClB,WAAW,
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;GAIG;AACH,MAAM,OAAO,OAAO;IAClB;;;;;;OAMG;IACH,YAAY,UAAkB,EAAE,QAAoB;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,QAAQ,EAAE,CAAC;aACZ;QACH,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC;IACO,SAAS,CAAU;IACnB,QAAQ,CAAU;IAClB,WAAW,CAAiB;IAEpC;;;;OAIG;IACI,KAAK;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,QAAQ;IACnB;;;;;;OAMG;IACH,YAAY,UAAkB,EAAE,QAAoB;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,QAAQ,EAAE,CAAC;aACZ;QACH,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC;IACO,SAAS,CAAU;IACnB,QAAQ,CAAU;IAClB,YAAY,CAAiB;IAErC;;;;OAIG;IACI,KAAK;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,SAAiB,EAAiB,EAAE;IAC7D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE;YAC1C,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAmB,EACnB,SAAiB;IAEjB,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAC5C,UAAU,CACR,GAAG,EAAE,CACH,MAAM,CACJ,IAAI,KAAK,CACP,cAAc,SAAS,yCAAyC,CACjE,CACF,EACH,SAAS,CACV,CACF,CAAC;IACF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAe,CAAC;AACtD,CAAC","sourcesContent":["/**\n * This file defines a TypeScript module with various time-related Typescript methods.\n *\n * @remarks\n * - The classes and their methods implemented here are quite generic and might be useful in other contexts too\n * but have been particularly developed for the purposes of this library\n * - If you want to work on this repo, you will probably be interested in this object\n *\n */\n\n/**\n * This class provides an implementation of a timer calling a callback hook after it ticks.\n * @remarks\n * The timer is being resetted only after the execution of the callback method has finished\n */\nexport class Timeout {\n /**\n * Timeout constructor\n *\n * @param timeoutMil - The number of milliseconds for the timeout.\n * @param callback - a callback to execute.\n * @returns An instance of the Timeout class.\n */\n constructor(timeoutMil: number, callback: () => void) {\n this.clear = this.clear.bind(this);\n\n const that = this;\n this.isCleared = false;\n this.isCalled = false;\n this.timeoutHook = setTimeout(() => {\n if (!that.isCleared) {\n this.isCalled = true;\n callback();\n }\n }, timeoutMil);\n }\n private isCleared: boolean;\n private isCalled: boolean;\n private timeoutHook: NodeJS.Timeout;\n\n /**\n * A method to clear the timeout\n *\n * @returns void\n */\n public clear(): void {\n if (!this.isCleared) {\n clearTimeout(this.timeoutHook);\n this.isCleared = true;\n }\n }\n}\n\n/**\n * This class provides an implementation of a continuous timer calling a callback hook after every given milliseconds.\n * @remarks\n * The timer is being resetted every given milliseconds\n * irregardless whether the execution of the method is still running or not\n */\nexport class Interval {\n /**\n * Interval constructor\n *\n * @param timeoutMil - The number of milliseconds for the interval.\n * @param callback - a callback to execute.\n * @returns An instance of the Interval class.\n */\n constructor(timeoutMil: number, callback: () => void) {\n this.clear = this.clear.bind(this);\n\n const that = this;\n this.isCleared = false;\n this.isCalled = false;\n this.intervalHook = setInterval(() => {\n if (!that.isCleared) {\n this.isCalled = true;\n callback();\n }\n }, timeoutMil);\n }\n private isCleared: boolean;\n private isCalled: boolean;\n private intervalHook: NodeJS.Timeout;\n\n /**\n * A method to clear the interval\n *\n * @returns void\n */\n public clear(): void {\n if (!this.isCleared) {\n clearInterval(this.intervalHook);\n this.isCleared = true;\n }\n }\n}\n\n/**\n * A function that waits pauses the execution loop for a number of milliseconds\n *\n * @param timeMilli - The number of milliseconds to wait.\n * @returns void\n */\nexport const wait = async (timeMilli: number): Promise<void> => {\n return new Promise<void>((resolve) => {\n const timeout = new Timeout(timeMilli, () => {\n timeout.clear();\n return resolve();\n });\n });\n};\n\n/**\n * A function that awaits a promise with a timeout.\n *\n * @param promise - a promise to execute.\n * @param timeoutMs - The number of milliseconds to wait before a timeout.\n * @returns void\n *\n * @remarks\n * The promise is being polled with a timeout. Once the timeout is reached, if not fulfilled, the error is thrown.\n */\nexport async function withTimeoutRejection<T>(\n promise: Promise<T>,\n timeoutMs: number,\n): Promise<T> {\n const sleep = new Promise((resolve, reject) =>\n setTimeout(\n () =>\n reject(\n new Error(\n `Timeout of ${timeoutMs} has passed and promise did not resolve`,\n ),\n ),\n timeoutMs,\n ),\n );\n return Promise.race([promise, sleep]) as Promise<T>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletList.d.ts","sourceRoot":"","sources":["../../../src/walletsManager/walletList.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,eAAO,MAAM,gBAAgB,EAAE,gBAI9B,CAAC;AAEF,wBAAsB,UAAU,CAAC,KAAK,SAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"walletList.d.ts","sourceRoot":"","sources":["../../../src/walletsManager/walletList.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,eAAO,MAAM,gBAAgB,EAAE,gBAI9B,CAAC;AAEF,wBAAsB,UAAU,CAAC,KAAK,SAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAiB/D;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,UAAU,EAChB,KAAK,SAAM,GACV,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG7B"}
|
|
@@ -20,6 +20,7 @@ export async function getWallets(delay = 200) {
|
|
|
20
20
|
return null;
|
|
21
21
|
});
|
|
22
22
|
const resolvedWallets = await Promise.all(walletPromises);
|
|
23
|
+
// remove null values: wallets that failed to initialize
|
|
23
24
|
return resolvedWallets.filter((wallet) => !!wallet);
|
|
24
25
|
}
|
|
25
26
|
export async function getWallet(name, delay = 200) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletList.js","sourceRoot":"","sources":["../../../src/walletsManager/walletList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,YAAY;IACZ,kBAAkB;IAClB,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAK,GAAG,GAAG;IAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;IAElB,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;QAChE,IAAI;YACF,OAAO,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAC;SAC9C;QAAC,OAAO,KAAK,EAAE;YACd,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,6BAA6B,WAAW,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;SACxE;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"walletList.js","sourceRoot":"","sources":["../../../src/walletsManager/walletList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,YAAY;IACZ,kBAAkB;IAClB,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAK,GAAG,GAAG;IAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;IAElB,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;QAChE,IAAI;YACF,OAAO,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAC;SAC9C;QAAC,OAAO,KAAK,EAAE;YACd,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,6BAA6B,WAAW,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;SACxE;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE1D,wDAAwD;IACxD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAa,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAgB,EAChB,KAAK,GAAG,GAAG;IAEX,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;AAChD,CAAC","sourcesContent":["import { BearbyWallet } from '../bearbyWallet/BearbyWallet';\nimport { WalletInterfaces } from './types';\nimport { Wallet } from '../wallet/interface';\nimport { wait } from '../utils/time';\nimport { MassaStationWallet } from '../massaStation/MassaStationWallet';\nimport { WalletName } from '../wallet/types';\nimport { MetamaskWallet } from '../metamaskSnap/MetamaskWallet';\n\nexport const supportedWallets: WalletInterfaces = [\n BearbyWallet,\n MassaStationWallet,\n MetamaskWallet,\n];\n\nexport async function getWallets(delay = 200): Promise<Wallet[]> {\n await wait(delay);\n\n const walletPromises = supportedWallets.map(async (WalletClass) => {\n try {\n return await WalletClass.createIfInstalled();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Error initializing wallet ${WalletClass.name}:`, error);\n }\n return null;\n });\n\n const resolvedWallets = await Promise.all(walletPromises);\n\n // remove null values: wallets that failed to initialize\n return resolvedWallets.filter((wallet) => !!wallet) as Wallet[];\n}\n\nexport async function getWallet(\n name: WalletName,\n delay = 200,\n): Promise<Wallet | undefined> {\n const wallets = await getWallets(delay);\n return wallets.find((p) => p.name() === name);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@massalabs/wallet-provider",
|
|
3
|
-
"version": "3.1.2-dev.
|
|
3
|
+
"version": "3.1.2-dev.20250218144940",
|
|
4
4
|
"description": "massa's wallet provider",
|
|
5
5
|
"main": "dist/esm/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
"dist"
|
|
54
54
|
],
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@hicaru/bearby.js": "^0.
|
|
57
|
-
"@massalabs/massa-web3": "^5.1.
|
|
56
|
+
"@hicaru/bearby.js": "^0.6.0",
|
|
57
|
+
"@massalabs/massa-web3": "^5.1.2-dev",
|
|
58
58
|
"@metamask/providers": "^18.1.1",
|
|
59
59
|
"axios": "^0.28.0",
|
|
60
60
|
"bs58check": "^4.0.0",
|