@massalabs/wallet-provider 3.1.2-dev.20250213154140 → 3.1.2-dev.20250218133842
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.map +1 -1
- package/dist/esm/bearbyWallet/BearbyAccount.js +18 -11
- 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.js +2 -2
- 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 +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BearbyAccount.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,EACd,WAAW,EAMX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,
|
|
1
|
+
{"version":3,"file":"BearbyAccount.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,EACd,WAAW,EAMX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EAIb,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAM/B,qBAAa,aAAc,YAAW,QAAQ;IAClB,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAEzC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAUY,OAAO,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBvC,SAAS,CACpB,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAerC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBpD,QAAQ,CACnB,MAAM,EAAE,MAAM,EAEd,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,SAAS,CAAC;IAUR,SAAS,CACpB,MAAM,EAAE,MAAM,EAEd,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,SAAS,CAAC;IAUR,QAAQ,CACnB,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,EAEd,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,SAAS,CAAC;YAeP,UAAU;IAKX,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IA0BhD,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IA8DjD,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAkCrE,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;IAIlB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmC1D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAsB9D,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAQxC,cAAc,CACzB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAAU,GAAG,MAAyB,EAC9C,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;IA0BX,WAAW,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAC7B,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;CAkBzB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { web3, } from '@hicaru/bearby.js';
|
|
2
2
|
import { errorHandler } from '../errors/utils/errorHandler';
|
|
3
3
|
import { operationType } from '../utils/constants';
|
|
4
|
-
import { DEPLOYER_BYTECODE, formatNodeStatusObject, JsonRPCClient, Mas, MAX_GAS_CALL, MAX_GAS_DEPLOYMENT, Operation, OperationStatus, SmartContract, StorageCost, strToBytes, } from '@massalabs/massa-web3';
|
|
4
|
+
import { DEPLOYER_BYTECODE, formatNodeStatusObject, JsonRPCClient, Mas, MAX_GAS_CALL, MAX_GAS_DEPLOYMENT, Operation, OperationStatus, SmartContract, StorageCost, strToBytes, bytesToStr, } from '@massalabs/massa-web3';
|
|
5
5
|
import { networkInfos } from './utils/network';
|
|
6
6
|
import { WalletName } from '../wallet';
|
|
7
7
|
import isEqual from 'lodash.isequal';
|
|
@@ -29,7 +29,7 @@ export class BearbyAccount {
|
|
|
29
29
|
// await this.connect();
|
|
30
30
|
try {
|
|
31
31
|
const res = await web3.massa.getAddresses(this.address);
|
|
32
|
-
if (res.error) {
|
|
32
|
+
if (res.error || !res.result) {
|
|
33
33
|
throw new Error(res.error?.message || 'Bearby getAddresses error');
|
|
34
34
|
}
|
|
35
35
|
const { final_balance, candidate_balance } = res.result[0];
|
|
@@ -42,7 +42,7 @@ export class BearbyAccount {
|
|
|
42
42
|
}
|
|
43
43
|
async balanceOf(addresses, final) {
|
|
44
44
|
const res = await web3.massa.getAddresses(...addresses);
|
|
45
|
-
if (res.error) {
|
|
45
|
+
if (res.error || !res.result) {
|
|
46
46
|
throw new Error(res.error?.message || 'Bearby getAddresses error');
|
|
47
47
|
}
|
|
48
48
|
return res.result.map((addressInfo) => {
|
|
@@ -58,12 +58,11 @@ export class BearbyAccount {
|
|
|
58
58
|
}
|
|
59
59
|
async sign(data) {
|
|
60
60
|
// await this.connect();
|
|
61
|
-
let strData;
|
|
62
61
|
if (data instanceof Uint8Array) {
|
|
63
|
-
|
|
62
|
+
data = bytesToStr(data);
|
|
64
63
|
}
|
|
65
64
|
try {
|
|
66
|
-
const signature = await web3.wallet.signMessage(
|
|
65
|
+
const signature = await web3.wallet.signMessage(data);
|
|
67
66
|
return {
|
|
68
67
|
publicKey: signature.publicKey,
|
|
69
68
|
signature: signature.signature,
|
|
@@ -136,7 +135,7 @@ export class BearbyAccount {
|
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
137
|
async readSC(params) {
|
|
139
|
-
if (params
|
|
138
|
+
if (params.maxGas && params.maxGas > MAX_GAS_CALL) {
|
|
140
139
|
throw new Error(`Gas amount ${params.maxGas} exceeds the maximum allowed ${MAX_GAS_CALL}.`);
|
|
141
140
|
}
|
|
142
141
|
const args = params.parameter ?? new Uint8Array();
|
|
@@ -188,13 +187,14 @@ export class BearbyAccount {
|
|
|
188
187
|
async deploySC(params) {
|
|
189
188
|
try {
|
|
190
189
|
const fee = Number(params.fee ?? (await this.minimalFee()));
|
|
190
|
+
const coins = params.coins ?? 0n;
|
|
191
191
|
const maxCoins = params.maxCoins ??
|
|
192
|
-
StorageCost.smartContract(params.byteCode.length) +
|
|
192
|
+
StorageCost.smartContract(params.byteCode.length) + coins;
|
|
193
193
|
const args = {
|
|
194
194
|
...params,
|
|
195
195
|
maxCoins: maxCoins,
|
|
196
196
|
maxGas: params.maxGas || MAX_GAS_DEPLOYMENT,
|
|
197
|
-
coins
|
|
197
|
+
coins,
|
|
198
198
|
fee: fee,
|
|
199
199
|
gasPrice: 10000n,
|
|
200
200
|
contractDataBase64: uint8ArrayToBase64(params.byteCode),
|
|
@@ -216,7 +216,7 @@ export class BearbyAccount {
|
|
|
216
216
|
async getOperationStatus(opId) {
|
|
217
217
|
try {
|
|
218
218
|
const res = await web3.massa.getOperations(opId);
|
|
219
|
-
if (res.error) {
|
|
219
|
+
if (res.error || !res.result) {
|
|
220
220
|
throw new Error(res.error?.message || 'Bearby getOperations error');
|
|
221
221
|
}
|
|
222
222
|
const op = res.result[0]; // cast to remove when bearby.js typings are fixed
|
|
@@ -262,10 +262,17 @@ export class BearbyAccount {
|
|
|
262
262
|
}
|
|
263
263
|
async getNodeStatus() {
|
|
264
264
|
const status = await web3.massa.getNodesStatus();
|
|
265
|
+
if (status.error || !status.result) {
|
|
266
|
+
throw new Error(status.error?.message || 'Bearby getNodeStatus error');
|
|
267
|
+
}
|
|
265
268
|
return formatNodeStatusObject(status.result);
|
|
266
269
|
}
|
|
267
270
|
async getStorageKeys(address, filter = new Uint8Array(), final = true) {
|
|
268
|
-
const
|
|
271
|
+
const res = await web3.massa.getAddresses(address);
|
|
272
|
+
if (res.error || !res.result) {
|
|
273
|
+
throw new Error(res.error?.message || 'Bearby getStorageKeys error');
|
|
274
|
+
}
|
|
275
|
+
const addressInfo = res.result[0];
|
|
269
276
|
const keys = final
|
|
270
277
|
? addressInfo.final_datastore_keys
|
|
271
278
|
: addressInfo.candidate_datastore_keys;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BearbyAccount.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EventFilterParam,\n web3,\n DatastoreEntryInputParam,\n} from '@hicaru/bearby.js';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n DEPLOYER_BYTECODE,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n JsonRPCClient,\n Mas,\n MAX_GAS_CALL,\n MAX_GAS_DEPLOYMENT,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SmartContract,\n StorageCost,\n strToBytes,\n rpcTypes,\n} from '@massalabs/massa-web3';\nimport { networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport isEqual from 'lodash.isequal';\nimport { uint8ArrayToBase64 } from '../utils/base64';\n\nexport class BearbyAccount implements Provider {\n public constructor(public address: string) {}\n\n get accountName(): string {\n return this.address;\n }\n\n get providerName(): string {\n return WalletName.Bearby;\n }\n\n // public async connect() {\n // try {\n // await web3.wallet.connect();\n // } catch (ex) {\n // console.log('Bearby connection error: ', ex);\n // }\n // }\n\n public async balance(final = false): Promise<bigint> {\n // // TODO: check if we need to connect every time\n // await this.connect();\n\n try {\n const res = await web3.massa.getAddresses(this.address);\n\n if (res.error) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n const { final_balance, candidate_balance } = res.result[0];\n\n return Mas.fromString(final ? final_balance : candidate_balance);\n } catch (error) {\n const errorMessage = `An unexpected error occurred while fetching the account balance: ${error.message}.`;\n\n throw new Error(errorMessage);\n }\n }\n\n public async balanceOf(\n addresses: string[],\n final?: boolean,\n ): Promise<{ address: string; balance: bigint }[]> {\n const res = await web3.massa.getAddresses(...addresses);\n if (res.error) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n return res.result.map((addressInfo) => {\n const { final_balance, candidate_balance } = addressInfo;\n return {\n address: addressInfo.address,\n balance: Mas.fromString(final ? final_balance : candidate_balance),\n };\n });\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async sign(data: Uint8Array | string): Promise<SignedData> {\n // await this.connect();\n\n let strData: string;\n if (data instanceof Uint8Array) {\n strData = new TextDecoder().decode(data);\n }\n try {\n const signature = await web3.wallet.signMessage(strData);\n\n return {\n publicKey: signature.publicKey,\n signature: signature.signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.buyRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.BuyRolls, error);\n }\n }\n\n public async sellRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.sellRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SellRolls, error);\n }\n }\n\n public async transfer(\n to: Address | string,\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n\n try {\n const operationId = await web3.massa.payment(\n amount.toString(),\n to.toString(),\n );\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const { minimalFee } = await this.networkInfos();\n return minimalFee;\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // await this.connect();\n\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params?.fee ?? (await this.minimalFee());\n\n try {\n const operationId = await web3.contract.call({\n // TODO: add bigint support in bearby.js\n // TODO add gas estimation here\n maxGas: Number(params.maxGas || MAX_GAS_CALL),\n coins: Number(params.coins || 0),\n fee: Number(fee),\n targetAddress: params.target,\n functionName: params.func,\n unsafeParameters,\n });\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.CallSC, error);\n }\n }\n\n public 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\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n\n try {\n // const res = await web3.contract.readSmartContract({\n // // TODO: add bigint support in bearby.js\n // maxGas: Number(params.maxGas),\n // coins: Number(params.coins),\n // fee: Number(fee),\n // targetAddress: params.target,\n // targetFunction: params.func,\n // // TODO: add unsafeParameters to bearby.js\n // // https://github.com/bearby-wallet/bearby-web3/pull/18\n // parameter: unsafeParameters as any,\n // });\n\n // console.log('bearby readSC res', res[0]);\n // const data = res[0].result[0];\n\n // return {\n // value: data.result.Ok ? Uint8Array.from(data.result.Ok): new Uint8Array(),\n // info: {\n // error: data.result.Error,\n // events: data.output_events.map((event: SCEvent) => ({\n // data: event.data,\n // context: event.context,\n // })),\n // gasCost: data.gas_cost,\n // },\n // };\n\n // Temp implementation to remove when bearby.js is fixed\n const network = await this.networkInfos();\n const client =\n network.name === 'mainnet'\n ? JsonRPCClient.mainnet()\n : JsonRPCClient.buildnet();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter: unsafeParameters,\n };\n return client.executeReadOnlyCall(readOnlyParams);\n } catch (error) {\n throw new Error(\n `An error occurred while reading the smart contract: ${error.message}`,\n );\n }\n }\n\n public async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const fee = Number(params.fee ?? (await this.minimalFee()));\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContract(params.byteCode.length) + params.coins;\n\n const args = {\n ...params,\n maxCoins: maxCoins,\n maxGas: params.maxGas || MAX_GAS_DEPLOYMENT,\n coins: params.coins,\n fee: fee,\n gasPrice: 10000n, // dummy value waiting for (https://github.com/bearby-wallet/bearby-web3/pull/25)\n contractDataBase64: uint8ArrayToBase64(params.byteCode),\n deployerBase64: uint8ArrayToBase64(DEPLOYER_BYTECODE),\n };\n\n const operationId = await web3.contract.deploy(args);\n\n const operation = new Operation(this, operationId);\n\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n console.error('Error deploying smart contract:', error);\n throw new Error(`Failed to deploy smart contract: ${error.message}`);\n }\n }\n\n executeSC(): Promise<Operation> {\n throw new Error('Method not implemented.');\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n try {\n const res = await web3.massa.getOperations(opId);\n\n if (res.error) {\n throw new Error(res.error?.message || 'Bearby getOperations error');\n }\n const op = res.result[0] as any; // cast to remove when bearby.js typings are fixed\n if (op.op_exec_status === null) {\n if (op.is_operation_final === null) {\n return OperationStatus.NotFound;\n }\n throw new Error('unexpected status');\n }\n\n if (op.in_pool) {\n return OperationStatus.PendingInclusion;\n }\n\n if (!op.is_operation_final) {\n return op.op_exec_status\n ? OperationStatus.SpeculativeSuccess\n : OperationStatus.SpeculativeError;\n }\n\n return op.op_exec_status\n ? OperationStatus.Success\n : OperationStatus.Error;\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const formattedFilter: EventFilterParam = {\n start: filter.start,\n end: filter.end,\n emitter_address: filter.smartContractAddress,\n original_caller_address: filter.callerAddress,\n original_operation_id: filter.operationId,\n is_final: filter.isFinal,\n is_error: filter.isError,\n };\n\n try {\n const res = await web3.contract.getFilteredSCOutputEvent(formattedFilter);\n\n return (res as any).result; // TODO: to remove when bearby.js typings are fixed\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const status = await web3.massa.getNodesStatus();\n return formatNodeStatusObject(status.result);\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n const addressInfo = (await web3.massa.getAddresses(address)).result[0];\n const keys = final\n ? addressInfo.final_datastore_keys\n : addressInfo.candidate_datastore_keys;\n\n const filterBytes: Uint8Array =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n\n return keys\n .filter(\n (key) =>\n !filter.length ||\n isEqual(\n Uint8Array.from(key.slice(0, filterBytes.length)),\n filterBytes,\n ),\n )\n .map((d) => Uint8Array.from(d));\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<Uint8Array[]> {\n try {\n const input: DatastoreEntryInputParam[] = keys.map((key) => ({\n key,\n address,\n }));\n const data = await web3.contract.getDatastoreEntries(...input);\n const resultArray = data[0]['result'];\n const dataArray = final\n ? resultArray.map((d) => Uint8Array.from(d.final_value))\n : resultArray.map((d) => Uint8Array.from(d.candidate_value));\n return dataArray;\n } catch (error) {\n throw new Error(\n `An error occurred while reading the storage: ${error.message}`,\n );\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BearbyAccount.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EventFilterParam,\n web3,\n DatastoreEntryInputParam,\n} from '@hicaru/bearby.js';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n DEPLOYER_BYTECODE,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n JsonRPCClient,\n Mas,\n MAX_GAS_CALL,\n MAX_GAS_DEPLOYMENT,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SmartContract,\n StorageCost,\n strToBytes,\n bytesToStr,\n rpcTypes,\n} from '@massalabs/massa-web3';\nimport { networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport isEqual from 'lodash.isequal';\nimport { uint8ArrayToBase64 } from '../utils/base64';\n\nexport class BearbyAccount implements Provider {\n public constructor(public address: string) {}\n\n get accountName(): string {\n return this.address;\n }\n\n get providerName(): string {\n return WalletName.Bearby;\n }\n\n // public async connect() {\n // try {\n // await web3.wallet.connect();\n // } catch (ex) {\n // console.log('Bearby connection error: ', ex);\n // }\n // }\n\n public async balance(final = false): Promise<bigint> {\n // // TODO: check if we need to connect every time\n // await this.connect();\n\n try {\n const res = await web3.massa.getAddresses(this.address);\n\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n const { final_balance, candidate_balance } = res.result[0];\n\n return Mas.fromString(final ? final_balance : candidate_balance);\n } catch (error) {\n const errorMessage = `An unexpected error occurred while fetching the account balance: ${error.message}.`;\n\n throw new Error(errorMessage);\n }\n }\n\n public async balanceOf(\n addresses: string[],\n final?: boolean,\n ): Promise<{ address: string; balance: bigint }[]> {\n const res = await web3.massa.getAddresses(...addresses);\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n return res.result.map((addressInfo) => {\n const { final_balance, candidate_balance } = addressInfo;\n return {\n address: addressInfo.address,\n balance: Mas.fromString(final ? final_balance : candidate_balance),\n };\n });\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async sign(data: Uint8Array | string): Promise<SignedData> {\n // await this.connect();\n\n if (data instanceof Uint8Array) {\n data = bytesToStr(data);\n }\n\n try {\n const signature = await web3.wallet.signMessage(data);\n\n return {\n publicKey: signature.publicKey,\n signature: signature.signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.buyRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.BuyRolls, error);\n }\n }\n\n public async sellRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.sellRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SellRolls, error);\n }\n }\n\n public async transfer(\n to: Address | string,\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n\n try {\n const operationId = await web3.massa.payment(\n amount.toString(),\n to.toString(),\n );\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const { minimalFee } = await this.networkInfos();\n return minimalFee;\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // await this.connect();\n\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params?.fee ?? (await this.minimalFee());\n\n try {\n const operationId = await web3.contract.call({\n // TODO: add bigint support in bearby.js\n // TODO add gas estimation here\n maxGas: Number(params.maxGas || MAX_GAS_CALL),\n coins: Number(params.coins || 0),\n fee: Number(fee),\n targetAddress: params.target,\n functionName: params.func,\n unsafeParameters,\n });\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.CallSC, error);\n }\n }\n\n public 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\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n\n try {\n // const res = await web3.contract.readSmartContract({\n // // TODO: add bigint support in bearby.js\n // maxGas: Number(params.maxGas),\n // coins: Number(params.coins),\n // fee: Number(fee),\n // targetAddress: params.target,\n // targetFunction: params.func,\n // // TODO: add unsafeParameters to bearby.js\n // // https://github.com/bearby-wallet/bearby-web3/pull/18\n // parameter: unsafeParameters as any,\n // });\n\n // console.log('bearby readSC res', res[0]);\n // const data = res[0].result[0];\n\n // return {\n // value: data.result.Ok ? Uint8Array.from(data.result.Ok): new Uint8Array(),\n // info: {\n // error: data.result.Error,\n // events: data.output_events.map((event: SCEvent) => ({\n // data: event.data,\n // context: event.context,\n // })),\n // gasCost: data.gas_cost,\n // },\n // };\n\n // Temp implementation to remove when bearby.js is fixed\n const network = await this.networkInfos();\n const client =\n network.name === 'mainnet'\n ? JsonRPCClient.mainnet()\n : JsonRPCClient.buildnet();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter: unsafeParameters,\n };\n return client.executeReadOnlyCall(readOnlyParams);\n } catch (error) {\n throw new Error(\n `An error occurred while reading the smart contract: ${error.message}`,\n );\n }\n }\n\n public async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const fee = Number(params.fee ?? (await this.minimalFee()));\n const coins = params.coins ?? 0n;\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContract(params.byteCode.length) + coins;\n\n const args = {\n ...params,\n maxCoins: maxCoins,\n maxGas: params.maxGas || MAX_GAS_DEPLOYMENT,\n coins,\n fee: fee,\n gasPrice: 10000n, // dummy value waiting for (https://github.com/bearby-wallet/bearby-web3/pull/25)\n contractDataBase64: uint8ArrayToBase64(params.byteCode),\n deployerBase64: uint8ArrayToBase64(DEPLOYER_BYTECODE),\n };\n\n const operationId = await web3.contract.deploy(args);\n\n const operation = new Operation(this, operationId);\n\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n console.error('Error deploying smart contract:', error);\n throw new Error(`Failed to deploy smart contract: ${error.message}`);\n }\n }\n\n executeSC(): Promise<Operation> {\n throw new Error('Method not implemented.');\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n try {\n const res = await web3.massa.getOperations(opId);\n\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getOperations error');\n }\n const op = res.result[0] as any; // cast to remove when bearby.js typings are fixed\n if (op.op_exec_status === null) {\n if (op.is_operation_final === null) {\n return OperationStatus.NotFound;\n }\n throw new Error('unexpected status');\n }\n\n if (op.in_pool) {\n return OperationStatus.PendingInclusion;\n }\n\n if (!op.is_operation_final) {\n return op.op_exec_status\n ? OperationStatus.SpeculativeSuccess\n : OperationStatus.SpeculativeError;\n }\n\n return op.op_exec_status\n ? OperationStatus.Success\n : OperationStatus.Error;\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const formattedFilter: EventFilterParam = {\n start: filter.start,\n end: filter.end,\n emitter_address: filter.smartContractAddress,\n original_caller_address: filter.callerAddress,\n original_operation_id: filter.operationId,\n is_final: filter.isFinal,\n is_error: filter.isError,\n };\n\n try {\n const res = await web3.contract.getFilteredSCOutputEvent(formattedFilter);\n\n return (res as any).result; // TODO: to remove when bearby.js typings are fixed\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const status = await web3.massa.getNodesStatus();\n if (status.error || !status.result) {\n throw new Error(status.error?.message || 'Bearby getNodeStatus error');\n }\n return formatNodeStatusObject(status.result);\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n const res = await web3.massa.getAddresses(address);\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getStorageKeys error');\n }\n\n const addressInfo = res.result[0];\n const keys = final\n ? addressInfo.final_datastore_keys\n : addressInfo.candidate_datastore_keys;\n\n const filterBytes: Uint8Array =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n\n return keys\n .filter(\n (key) =>\n !filter.length ||\n isEqual(\n Uint8Array.from(key.slice(0, filterBytes.length)),\n filterBytes,\n ),\n )\n .map((d) => Uint8Array.from(d));\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<Uint8Array[]> {\n try {\n const input: DatastoreEntryInputParam[] = keys.map((key) => ({\n key,\n address,\n }));\n const data = await web3.contract.getDatastoreEntries(...input);\n const resultArray = data[0]['result'];\n const dataArray = final\n ? resultArray.map((d) => Uint8Array.from(d.final_value))\n : resultArray.map((d) => Uint8Array.from(d.candidate_value));\n return dataArray;\n } catch (error) {\n throw new Error(\n `An error occurred while reading the storage: ${error.message}`,\n );\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BearbyWallet.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyWallet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,YAAa,YAAW,MAAM;IACzC,OAAO,CAAC,UAAU,CAAqB;IAEhC,IAAI,IAAI,UAAU;WAIZ,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO3C,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"BearbyWallet.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyWallet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,YAAa,YAAW,MAAM;IACzC,OAAO,CAAC,UAAU,CAAqB;IAEhC,IAAI,IAAI,UAAU;WAIZ,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO3C,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAWpC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAOhC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1B,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIpD;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,oBAAoB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG;QAChE,WAAW,EAAE,MAAM,IAAI,CAAC;KACzB;IAMD;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,oBAAoB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG;QACjE,WAAW,EAAE,MAAM,IAAI,CAAC;KACzB;IAOD;;;;;;OAMG;IACU,OAAO;IAIpB;;;;;;OAMG;IACU,UAAU;IAIvB;;;;OAIG;IACU,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1C;;;;OAIG;IACI,OAAO,IAAI,OAAO;CAG1B"}
|
|
@@ -18,7 +18,10 @@ export class BearbyWallet {
|
|
|
18
18
|
if (!web3.wallet.connected) {
|
|
19
19
|
await web3.wallet.connect();
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
if (!web3.wallet.account.base58) {
|
|
22
|
+
throw new Error('No account found on Bearby');
|
|
23
|
+
}
|
|
24
|
+
return [new BearbyAccount(web3.wallet.account.base58)];
|
|
22
25
|
}
|
|
23
26
|
async importAccount() {
|
|
24
27
|
throw new Error('Method not implemented.');
|
|
@@ -60,7 +63,7 @@ export class BearbyWallet {
|
|
|
60
63
|
* ```
|
|
61
64
|
*/
|
|
62
65
|
listenAccountChanges(callback) {
|
|
63
|
-
return web3.wallet.account.subscribe((address) => callback(address));
|
|
66
|
+
return web3.wallet.account.subscribe((address) => address && callback(address));
|
|
64
67
|
}
|
|
65
68
|
/**
|
|
66
69
|
* Subscribes to network changes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BearbyWallet.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,OAAO,YAAY;IACf,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IAEhC,IAAI;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iBAAiB;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACzB,OAAO,IAAI,YAAY,EAAE,CAAC;SAC3B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SAC7B;QACD,
|
|
1
|
+
{"version":3,"file":"BearbyWallet.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,OAAO,YAAY;IACf,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IAEhC,IAAI;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iBAAiB;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACzB,OAAO,IAAI,YAAY,EAAE,CAAC;SAC3B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SAC7B;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QACD,OAAO,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SAC7B;QACD,OAAO,YAAY,EAAE,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,oBAAoB,CAAC,QAAmC;QAG7D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAClC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,oBAAoB,CAAC,QAAoC;QAG9D,6DAA6D;QAC7D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CACpD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,OAAO;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,UAAU;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,SAAS;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,OAAO;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;CACF","sourcesContent":["import { web3 } from '@hicaru/bearby.js';\nimport { BearbyAccount } from './BearbyAccount';\nimport { Wallet } from '../wallet/interface';\nimport { Network, Provider } from '@massalabs/massa-web3';\nimport { networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\n\nexport class BearbyWallet implements Wallet {\n private walletName = WalletName.Bearby;\n\n public name(): WalletName {\n return this.walletName;\n }\n\n static async createIfInstalled(): Promise<Wallet | null> {\n if (web3.wallet.installed) {\n return new BearbyWallet();\n }\n return null;\n }\n\n public async accounts(): Promise<BearbyAccount[]> {\n // check if bearby is unlocked\n if (!web3.wallet.connected) {\n await web3.wallet.connect();\n }\n if (!web3.wallet.account.base58) {\n throw new Error('No account found on Bearby');\n }\n return [new BearbyAccount(web3.wallet.account.base58)];\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 if (!web3.wallet.connected) {\n await web3.wallet.connect();\n }\n return networkInfos();\n }\n\n public async setRpcUrl(): Promise<void> {\n throw new Error(\n 'setRpcUrl is not yet implemented for the current provider.',\n );\n }\n\n public async generateNewAccount(): Promise<Provider> {\n throw new Error('Method not implemented.');\n }\n\n /**\n * Subscribes to account changes.\n *\n * @param callback - Callback to be called when the account changes.\n *\n * @returns A promise that resolves to a function that can be called to unsubscribe.\n *\n * @remarks\n * Don't forget to unsubscribe to avoid memory leaks.\n *\n * @example\n * ```typescript\n * // Subscribe\n * const observer = await provider.listenAccountChanges((base58) => {\n * console.log(base58);\n * });\n *\n * // Unsubscribe\n * observer.unsubscribe();\n * ```\n */\n public listenAccountChanges(callback: (address: string) => void): {\n unsubscribe: () => void;\n } {\n return web3.wallet.account.subscribe(\n (address) => address && callback(address),\n );\n }\n\n /**\n * Subscribes to network changes.\n *\n * @param callback - Callback to be called when the network changes.\n *\n * @returns A promise that resolves to a function that can be called to unsubscribe.\n *\n * @remarks\n * Don't forget to unsubscribe to avoid memory leaks.\n *\n * @example\n * ```typescript\n * // Subscribe\n * const observer = await provider.listenNetworkChanges((network) => {\n * console.log(network);\n * });\n *\n * // Unsubscribe\n * observer.unsubscribe();\n * ```\n */\n public listenNetworkChanges(callback: (network: Network) => void): {\n unsubscribe: () => void;\n } {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return web3.wallet.network.subscribe((_) =>\n networkInfos().then((network) => callback(network)),\n );\n }\n\n /**\n * Connects to the wallet.\n *\n * @remarks\n * This method will attempt to establish a connection with the wallet.\n * If the connection fails, it will log the error message.\n */\n public async connect() {\n return web3.wallet.connect();\n }\n\n /**\n * Disconnects from the wallet.\n *\n * @remarks\n * This method will attempt to disconnect from the wallet.\n * If the disconnection fails, it will log the error message.\n */\n public async disconnect() {\n return web3.wallet.disconnect();\n }\n\n /**\n * Checks if the wallet is connected.\n *\n * @returns a boolean indicating whether the wallet is connected.\n */\n public async connected(): Promise<boolean> {\n return web3.wallet.connected;\n }\n\n /**\n * Checks if the wallet is enabled.\n *\n * @returns a boolean indicating whether the wallet is enabled.\n */\n public enabled(): boolean {\n return web3.wallet.enabled;\n }\n}\n"]}
|
|
@@ -8,8 +8,8 @@ export const networkInfos = async () => {
|
|
|
8
8
|
throw new Error(res.error?.message || 'Bearby getNodesStatus error');
|
|
9
9
|
}
|
|
10
10
|
return {
|
|
11
|
-
name: net,
|
|
12
|
-
chainId: res.result.chain_id,
|
|
11
|
+
name: net ?? '',
|
|
12
|
+
chainId: BigInt(res.result.chain_id),
|
|
13
13
|
minimalFee: Mas.fromString(res.result.minimal_fees),
|
|
14
14
|
};
|
|
15
15
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../src/bearbyWallet/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAW,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,IAAsB,EAAE;IACvD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1C,8BAA8B;IAC9B,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAQ,CAAC;IACvD,IAAI,GAAG,CAAC,KAAK,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,6BAA6B,CAAC,CAAC;KACtE;IACD,OAAO;QACL,IAAI,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../src/bearbyWallet/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAW,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,IAAsB,EAAE;IACvD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1C,8BAA8B;IAC9B,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAQ,CAAC;IACvD,IAAI,GAAG,CAAC,KAAK,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,6BAA6B,CAAC,CAAC;KACtE;IACD,OAAO;QACL,IAAI,EAAE,GAAG,IAAI,EAAE;QACf,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QACpC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;KACpD,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { web3 } from '@hicaru/bearby.js';\nimport { Mas, Network } from '@massalabs/massa-web3';\n\nexport const networkInfos = async (): Promise<Network> => {\n const { net } = await web3.wallet.network;\n // TODO: fix bearby.js typings\n const res = (await web3.massa.getNodesStatus()) as any;\n if (res.error) {\n throw new Error(res.error?.message || 'Bearby getNodesStatus error');\n }\n return {\n name: net ?? '',\n chainId: BigInt(res.result.chain_id),\n minimalFee: Mas.fromString(res.result.minimal_fees),\n };\n};\n"]}
|
package/dist/esm/errors/base.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/errors/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAmB3C,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,CAAW;IACvB,QAAQ,CAAU;IAClB,IAAI,CAAa;IAER,IAAI,GAAG,qBAAqB,CAAC;IACtC,YACE,YAAoB,EACpB,OAA4B,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE;QAE7D,KAAK,EAAE,CAAC;QAER,MAAM,cAAc,GAClB,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACnE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ;YAClC,CAAC,CAAC,SAAS,IAAI,CAAC,QAAQ,wBAAwB;YAChD,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtE,IAAI,CAAC,OAAO,GAAG;YACb,YAAY;YACZ,cAAc;YACd,cAAc;YACd,cAAc;SACf;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/errors/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAmB3C,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,CAAW;IACvB,QAAQ,CAAU;IAClB,IAAI,CAAa;IAER,IAAI,GAAG,qBAAqB,CAAC;IACtC,YACE,YAAoB,EACpB,OAA4B,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE;QAE7D,KAAK,EAAE,CAAC;QAER,MAAM,cAAc,GAClB,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACnE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ;YAClC,CAAC,CAAC,SAAS,IAAI,CAAC,QAAQ,wBAAwB;YAChD,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtE,IAAI,CAAC,OAAO,GAAG;YACb,YAAY;YACZ,cAAc;YACd,cAAc;YACd,cAAc;SACf;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,YAAY,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;CACF","sourcesContent":["import { ErrorCodes } from './utils/codes';\n\nexport type BaseErrorParameters = {\n code?: ErrorCodes;\n docsPath?: string;\n metaMessages?: string[];\n} & (\n | {\n cause?: never;\n details?: string;\n }\n | {\n cause: BaseError | Error;\n details?: never;\n }\n);\n\nexport type BaseErrorType = BaseError & { name: 'WalletProviderError' };\n\nexport class BaseError extends Error {\n metaMessages: string[];\n docsPath?: string;\n code: ErrorCodes;\n\n override name = 'WalletProviderError';\n constructor(\n shortMessage: string,\n args: BaseErrorParameters = { code: ErrorCodes.UnknownError },\n ) {\n super();\n\n const metaMessageStr =\n args.metaMessages?.map((msg) => `Meta: ${msg}`).join('\\n') || '';\n const docsMessageStr = args.docsPath\n ? `Docs: ${args.docsPath} for more information.`\n : '';\n\n const detailsMessage = args.details ? `Details: ${args.details}` : '';\n\n this.message = [\n shortMessage,\n metaMessageStr,\n docsMessageStr,\n detailsMessage,\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n this.metaMessages = args.metaMessages || [];\n this.docsPath = args.docsPath;\n this.code = args.code ?? ErrorCodes.UnknownError;\n this.cause = args.cause;\n }\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import { UserRejectionError } from '../userRejection';
|
|
|
2
2
|
export function isUserRejectionError(error) {
|
|
3
3
|
const bearbyUserRejectionErrorMessage = 'User rejected';
|
|
4
4
|
const massaUserRejectionErrorMessage = 'Action canceled by user';
|
|
5
|
-
return (error.message &&
|
|
5
|
+
return (!!error.message &&
|
|
6
6
|
(error.message.includes(bearbyUserRejectionErrorMessage) ||
|
|
7
7
|
error.message.includes(massaUserRejectionErrorMessage)));
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../../../src/errors/utils/errorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,UAAU,oBAAoB,CAAC,KAAY;IAC/C,MAAM,+BAA+B,GAAG,eAAe,CAAC;IACxD,MAAM,8BAA8B,GAAG,yBAAyB,CAAC;IACjE,OAAO,CACL,KAAK,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../../../src/errors/utils/errorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,UAAU,oBAAoB,CAAC,KAAY;IAC/C,MAAM,+BAA+B,GAAG,eAAe,CAAC;IACxD,MAAM,8BAA8B,GAAG,yBAAyB,CAAC;IACjE,OAAO,CACL,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACtD,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,aAAqB,EAAE,KAAY;IAC9D,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;QAC/B,OAAO,IAAI,kBAAkB,CAAC;YAC5B,aAAa,EAAE,aAAa;YAC5B,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;KACJ;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { UserRejectionError } from '../userRejection';\n\nexport function isUserRejectionError(error: Error): boolean {\n const bearbyUserRejectionErrorMessage = 'User rejected';\n const massaUserRejectionErrorMessage = 'Action canceled by user';\n return (\n !!error.message &&\n (error.message.includes(bearbyUserRejectionErrorMessage) ||\n error.message.includes(massaUserRejectionErrorMessage))\n );\n}\n\nexport function errorHandler(operationName: string, error: Error): Error {\n if (isUserRejectionError(error)) {\n return new UserRejectionError({\n operationName: operationName,\n cause: error,\n });\n }\n\n return error;\n}\n"]}
|
|
@@ -33,6 +33,6 @@ export declare class MassaStationAccount implements Provider {
|
|
|
33
33
|
getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents>;
|
|
34
34
|
getNodeStatus(): Promise<NodeStatusInfo>;
|
|
35
35
|
getStorageKeys(address: string, filter?: Uint8Array | string, final?: boolean): Promise<Uint8Array[]>;
|
|
36
|
-
readStorage(address: string, keys: Uint8Array[] | string[], final?: boolean): Promise<Uint8Array[]>;
|
|
36
|
+
readStorage(address: string, keys: Uint8Array[] | string[], final?: boolean): Promise<(Uint8Array | null)[]>;
|
|
37
37
|
}
|
|
38
38
|
//# sourceMappingURL=MassaStationAccount.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MassaStationAccount.d.ts","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,EACd,WAAW,EAIX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EAEb,QAAQ,EAGT,MAAM,uBAAuB,CAAC;AAK/B;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,QAAQ;IAIzC,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,MAAM;IAJ5B,OAAO,CAAC,aAAa,CAA0B;gBAGtC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM;IAG5B,IAAI,YAAY,IAAI,MAAM,CAEzB;IAEY,OAAO,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAU9C,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;IAsBrC,IAAI,CACf,IAAI,EAAE,UAAU,GAAG,MAAM,EACzB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC;YA2BR,UAAU;YAKV,aAAa;IAwBd,QAAQ,CACnB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAIR,SAAS,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAIf,QAAQ,CACZ,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAqBR,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"MassaStationAccount.d.ts","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,EACd,WAAW,EAIX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EAEb,QAAQ,EAGT,MAAM,uBAAuB,CAAC;AAK/B;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,QAAQ;IAIzC,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,MAAM;IAJ5B,OAAO,CAAC,aAAa,CAA0B;gBAGtC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM;IAG5B,IAAI,YAAY,IAAI,MAAM,CAEzB;IAEY,OAAO,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAU9C,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;IAsBrC,IAAI,CACf,IAAI,EAAE,UAAU,GAAG,MAAM,EACzB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC;YA2BR,UAAU;YAKV,aAAa;IAwBd,QAAQ,CACnB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAIR,SAAS,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAIf,QAAQ,CACZ,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAqBR,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAqChD,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BjD,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IA4CrE,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;IAIlB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAM1D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAM9D,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAMxC,cAAc,CACzB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAAU,GAAG,MAAyB,EAC9C,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;IAQX,WAAW,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAC7B,KAAK,UAAO,GACX,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;CASlC"}
|
|
@@ -108,11 +108,13 @@ export class MassaStationAccount {
|
|
|
108
108
|
async callSC(params) {
|
|
109
109
|
// convert parameter to base64
|
|
110
110
|
let args = '';
|
|
111
|
-
if (params.parameter
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
111
|
+
if (params.parameter) {
|
|
112
|
+
if (params.parameter instanceof Uint8Array) {
|
|
113
|
+
args = uint8ArrayToBase64(params.parameter);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
args = argsToBase64(params.parameter);
|
|
117
|
+
}
|
|
116
118
|
}
|
|
117
119
|
let fee = params?.fee ?? (await this.minimalFee());
|
|
118
120
|
const body = {
|
|
@@ -139,7 +141,7 @@ export class MassaStationAccount {
|
|
|
139
141
|
}
|
|
140
142
|
async readSC(params) {
|
|
141
143
|
// Gas amount check
|
|
142
|
-
if (params.maxGas > MAX_GAS_CALL) {
|
|
144
|
+
if (params.maxGas && params.maxGas > MAX_GAS_CALL) {
|
|
143
145
|
throw new Error(`
|
|
144
146
|
The gas submitted ${params.maxGas.toString()} exceeds the max. allowed block gas of
|
|
145
147
|
${MAX_GAS_CALL.toString()}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MassaStationAccount.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRequest, postRequest } from './RequestHandler';\nimport { walletApiUrl, MASSA_STATION_URL } from './MassaStationWallet';\nimport {\n argsToBase64,\n base64ToByteArray,\n uint8ArrayToBase64,\n} from '../utils/base64';\nimport {\n DeploySCFunctionBody,\n ExecuteFunctionBody,\n MSAccountSignPayload,\n MSAccountSignResp,\n MSBalancesResp,\n MSSendOperationResp,\n} from './types';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n DatastoreEntry,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n Mas,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SignOptions,\n SmartContract,\n strToBytes,\n rpcTypes,\n StorageCost,\n formatMas,\n} from '@massalabs/massa-web3';\nimport { getClient, networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport bs58check from 'bs58check';\n\n/**\n * This module contains the MassaStationAccount class. It is responsible for representing an account in\n * the MassaStation wallet.\n *\n * @remarks\n * This class provides methods to interact with MassaStation account's {@link balance} and to {@link sign} messages.\n *\n */\nexport class MassaStationAccount implements Provider {\n private _providerName = WalletName.MassaWallet;\n\n constructor(\n public address: string,\n public accountName: string,\n ) {}\n\n get providerName(): string {\n return this._providerName;\n }\n\n public async balance(final = false): Promise<bigint> {\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?attributes=balance&addresses=${this.address}`,\n );\n\n const balances = result.addressesAttributes[this.address].balance;\n\n return Mas.fromString(final ? balances.final : balances.pending);\n }\n\n async balanceOf(\n addresses: string[],\n final = false,\n ): Promise<{ address: string; balance: bigint }[]> {\n const queryParams = new URLSearchParams();\n\n queryParams.append('attributes', 'balance');\n addresses.forEach((address) => {\n queryParams.append('addresses', address);\n });\n\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?${queryParams.toString()}`,\n );\n\n return addresses.map((address) => {\n const balance = result.addressesAttributes[address].balance;\n\n return {\n address,\n balance: Mas.fromString(final ? balance.final : balance.pending),\n };\n });\n }\n\n public async sign(\n data: Uint8Array | string,\n opts?: SignOptions,\n ): Promise<SignedData> {\n const signData: MSAccountSignPayload = {\n description: opts?.description ?? '',\n message: typeof data === 'string' ? data : new TextDecoder().decode(data),\n DisplayData: opts?.displayData ?? true,\n };\n\n try {\n const { result } = await postRequest<MSAccountSignResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/signMessage`,\n signData,\n );\n\n // MS Wallet encodes signature in base64... so we need to decode it en re-encode it in base58\n const signature = bs58check.encode(\n await base64ToByteArray(result.signature),\n );\n\n return {\n publicKey: result.publicKey,\n signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const client = await getClient();\n return client.getMinimalFee();\n }\n\n private async rollOperation(\n type: operationType.BuyRolls | operationType.SellRolls,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n let fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n side: type === operationType.BuyRolls ? 'buy' : 'sell',\n };\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/rolls`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(type, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.BuyRolls, amount, opts);\n }\n\n public async sellRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.SellRolls, amount, opts);\n }\n\n async transfer(\n to: Address | string,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n const fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n recipientAddress: to.toString(),\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/transfer`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // convert parameter to base64\n let args = '';\n if (params.parameter instanceof Uint8Array) {\n args = uint8ArrayToBase64(params.parameter);\n } else {\n args = argsToBase64(params.parameter);\n }\n\n let fee = params?.fee ?? (await this.minimalFee());\n\n const body: ExecuteFunctionBody = {\n nickname: this.accountName,\n name: params.func,\n at: params.target,\n args,\n coins: params.coins ? Number(params.coins) : 0,\n fee: fee.toString(),\n // If maxGas is not provided, estimation will be done by MS\n maxGas: params.maxGas ? params.maxGas.toString() : '',\n async: true,\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/executeFunction`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler('callSmartContract', error);\n }\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async readSC(params: ReadSCParams): Promise<ReadSCData> {\n // Gas amount check\n if (params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `\n The gas submitted ${params.maxGas.toString()} exceeds the max. allowed block gas of \n ${MAX_GAS_CALL.toString()}\n `,\n );\n }\n\n const client = await getClient();\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n const args = params.parameter ?? new Uint8Array();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter:\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize()),\n };\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.executeReadOnlyCall(readOnlyParams);\n }\n\n public async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const args = params.parameter ?? new Uint8Array();\n const parameters = args instanceof Uint8Array ? args : args.serialize();\n const coins = params.coins ?? 0n; // If coins is undefined, some vesions of station will have a panic\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContract(params.byteCode.length) + coins;\n const fee = params.fee || (await this.minimalFee());\n\n const body: DeploySCFunctionBody = {\n nickname: this.accountName,\n smartContract: uint8ArrayToBase64(params.byteCode),\n maxCoins: maxCoins.toString(), // SmartContract deployment costs\n coins: coins.toString(),\n fee: fee.toString(),\n parameters: uint8ArrayToBase64(parameters),\n description: `${formatMas(\n coins,\n )} $MAS coins allocated to datastore + ${formatMas(\n fee,\n )} $MAS fee for operation`,\n };\n\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/deploySC`,\n body,\n );\n\n const operationId = result?.operationId;\n\n if (!operationId) throw new Error('Operation ID not found');\n\n const operation = new Operation(this, operationId);\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n throw new Error(`Error during smart contract deployment: ${error}`);\n }\n }\n\n executeSC(): Promise<Operation> {\n throw new Error('Method not implemented.');\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getOperationStatus(opId);\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getEvents(filter);\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const client = await getClient();\n const status = await client.status();\n return formatNodeStatusObject(status);\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n const client = await getClient();\n const filterBytes: Uint8Array =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n return client.getDataStoreKeys(address, filterBytes, final);\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<Uint8Array[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\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"]}
|
|
1
|
+
{"version":3,"file":"MassaStationAccount.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRequest, postRequest } from './RequestHandler';\nimport { walletApiUrl, MASSA_STATION_URL } from './MassaStationWallet';\nimport {\n argsToBase64,\n base64ToByteArray,\n uint8ArrayToBase64,\n} from '../utils/base64';\nimport {\n DeploySCFunctionBody,\n ExecuteFunctionBody,\n MSAccountSignPayload,\n MSAccountSignResp,\n MSBalancesResp,\n MSSendOperationResp,\n} from './types';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n DatastoreEntry,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n Mas,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SignOptions,\n SmartContract,\n strToBytes,\n rpcTypes,\n StorageCost,\n formatMas,\n} from '@massalabs/massa-web3';\nimport { getClient, networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport bs58check from 'bs58check';\n\n/**\n * This module contains the MassaStationAccount class. It is responsible for representing an account in\n * the MassaStation wallet.\n *\n * @remarks\n * This class provides methods to interact with MassaStation account's {@link balance} and to {@link sign} messages.\n *\n */\nexport class MassaStationAccount implements Provider {\n private _providerName = WalletName.MassaWallet;\n\n constructor(\n public address: string,\n public accountName: string,\n ) {}\n\n get providerName(): string {\n return this._providerName;\n }\n\n public async balance(final = false): Promise<bigint> {\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?attributes=balance&addresses=${this.address}`,\n );\n\n const balances = result.addressesAttributes[this.address].balance;\n\n return Mas.fromString(final ? balances.final : balances.pending);\n }\n\n async balanceOf(\n addresses: string[],\n final = false,\n ): Promise<{ address: string; balance: bigint }[]> {\n const queryParams = new URLSearchParams();\n\n queryParams.append('attributes', 'balance');\n addresses.forEach((address) => {\n queryParams.append('addresses', address);\n });\n\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?${queryParams.toString()}`,\n );\n\n return addresses.map((address) => {\n const balance = result.addressesAttributes[address].balance;\n\n return {\n address,\n balance: Mas.fromString(final ? balance.final : balance.pending),\n };\n });\n }\n\n public async sign(\n data: Uint8Array | string,\n opts?: SignOptions,\n ): Promise<SignedData> {\n const signData: MSAccountSignPayload = {\n description: opts?.description ?? '',\n message: typeof data === 'string' ? data : new TextDecoder().decode(data),\n DisplayData: opts?.displayData ?? true,\n };\n\n try {\n const { result } = await postRequest<MSAccountSignResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/signMessage`,\n signData,\n );\n\n // MS Wallet encodes signature in base64... so we need to decode it en re-encode it in base58\n const signature = bs58check.encode(\n await base64ToByteArray(result.signature),\n );\n\n return {\n publicKey: result.publicKey,\n signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const client = await getClient();\n return client.getMinimalFee();\n }\n\n private async rollOperation(\n type: operationType.BuyRolls | operationType.SellRolls,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n let fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n side: type === operationType.BuyRolls ? 'buy' : 'sell',\n };\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/rolls`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(type, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.BuyRolls, amount, opts);\n }\n\n public async sellRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.SellRolls, amount, opts);\n }\n\n async transfer(\n to: Address | string,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n const fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n recipientAddress: to.toString(),\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/transfer`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // convert parameter to base64\n let args = '';\n if (params.parameter) {\n if (params.parameter instanceof Uint8Array) {\n args = uint8ArrayToBase64(params.parameter);\n } else {\n args = argsToBase64(params.parameter);\n }\n }\n\n let fee = params?.fee ?? (await this.minimalFee());\n\n const body: ExecuteFunctionBody = {\n nickname: this.accountName,\n name: params.func,\n at: params.target,\n args,\n coins: params.coins ? Number(params.coins) : 0,\n fee: fee.toString(),\n // If maxGas is not provided, estimation will be done by MS\n maxGas: params.maxGas ? params.maxGas.toString() : '',\n async: true,\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/executeFunction`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler('callSmartContract', error);\n }\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async readSC(params: ReadSCParams): Promise<ReadSCData> {\n // Gas amount check\n if (params.maxGas && params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `\n The gas submitted ${params.maxGas.toString()} exceeds the max. allowed block gas of \n ${MAX_GAS_CALL.toString()}\n `,\n );\n }\n\n const client = await getClient();\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n const args = params.parameter ?? new Uint8Array();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter:\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize()),\n };\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.executeReadOnlyCall(readOnlyParams);\n }\n\n public async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const args = params.parameter ?? new Uint8Array();\n const parameters = args instanceof Uint8Array ? args : args.serialize();\n const coins = params.coins ?? 0n; // If coins is undefined, some vesions of station will have a panic\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContract(params.byteCode.length) + coins;\n const fee = params.fee || (await this.minimalFee());\n\n const body: DeploySCFunctionBody = {\n nickname: this.accountName,\n smartContract: uint8ArrayToBase64(params.byteCode),\n maxCoins: maxCoins.toString(), // SmartContract deployment costs\n coins: coins.toString(),\n fee: fee.toString(),\n parameters: uint8ArrayToBase64(parameters),\n description: `${formatMas(\n coins,\n )} $MAS coins allocated to datastore + ${formatMas(\n fee,\n )} $MAS fee for operation`,\n };\n\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/deploySC`,\n body,\n );\n\n const operationId = result?.operationId;\n\n if (!operationId) throw new Error('Operation ID not found');\n\n const operation = new Operation(this, operationId);\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n throw new Error(`Error during smart contract deployment: ${error}`);\n }\n }\n\n executeSC(): Promise<Operation> {\n throw new Error('Method not implemented.');\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getOperationStatus(opId);\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getEvents(filter);\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const client = await getClient();\n const status = await client.status();\n return formatNodeStatusObject(status);\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n const client = await getClient();\n const filterBytes: Uint8Array =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n return client.getDataStoreKeys(address, filterBytes, final);\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<(Uint8Array | null)[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\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"]}
|
|
@@ -23,7 +23,7 @@ export async function isMassaWalletEnabled() {
|
|
|
23
23
|
try {
|
|
24
24
|
const { result } = await fetchPluginData();
|
|
25
25
|
const walletPlugin = findWalletPlugin(result);
|
|
26
|
-
return walletPlugin && walletPlugin.status === 'Up';
|
|
26
|
+
return !!walletPlugin && walletPlugin.status === 'Up';
|
|
27
27
|
}
|
|
28
28
|
catch (_) {
|
|
29
29
|
return false;
|
|
@@ -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.20250218133842",
|
|
4
4
|
"description": "massa's wallet provider",
|
|
5
5
|
"main": "dist/esm/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
],
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@hicaru/bearby.js": "^0.5.9",
|
|
57
|
-
"@massalabs/massa-web3": "^5.1.
|
|
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",
|