Skip to content

Commit 4a35ef6

Browse files
committed
Merge error files
1 parent e944d9f commit 4a35ef6

18 files changed

+198
-184
lines changed

.vscode/settings.json

+1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@
1010
"editor.codeActionsOnSave": {
1111
"source.organizeImports": "explicit"
1212
},
13+
"prettier.printWidth": 120
1314
}

src/errors.ts

+64
Original file line numberDiff line numberDiff line change
@@ -384,3 +384,67 @@ export class ErrSmartContractQuery extends Err {
384384
this.returnCode = returnCode;
385385
}
386386
}
387+
388+
/**
389+
* Signals a wrong mnemonic format.
390+
*/
391+
export class ErrWrongMnemonic extends Err {
392+
public constructor() {
393+
super("Wrong mnemonic format");
394+
}
395+
}
396+
397+
/**
398+
* Signals a bad mnemonic entropy.
399+
*/
400+
export class ErrBadMnemonicEntropy extends Err {
401+
public constructor(inner: Error) {
402+
super("Bad mnemonic entropy", inner);
403+
}
404+
}
405+
406+
/**
407+
* Signals a bad PEM file.
408+
*/
409+
export class ErrBadPEM extends Err {
410+
public constructor(message?: string) {
411+
super(message ? `Bad PEM: ${message}` : `Bad PEM`);
412+
}
413+
}
414+
415+
/**
416+
* Signals an error related to signing a message (a transaction).
417+
*/
418+
export class ErrSignerCannotSign extends Err {
419+
public constructor(inner: Error) {
420+
super(`Cannot sign`, inner);
421+
}
422+
}
423+
424+
/**
425+
* Signals a bad address.
426+
*/
427+
export class ErrBadAddress extends Err {
428+
public constructor(value: string, inner?: Error) {
429+
super(`Bad address: ${value}`, inner);
430+
}
431+
}
432+
433+
/**
434+
* Signals an error that happened during a request against the Network.
435+
*/
436+
export class ErrNetworkProvider extends Err {
437+
public constructor(url: string, error: string, inner?: Error) {
438+
let message = `Request error on url [${url}]: [${error}]`;
439+
super(message, inner);
440+
}
441+
}
442+
443+
/**
444+
* Signals a generic error in the context of querying Smart Contracts.
445+
*/
446+
export class ErrContractQuery extends Err {
447+
public constructor(originalError: Error) {
448+
super(originalError.message.replace("executeQuery:", ""));
449+
}
450+
}

src/networkProviders/apiNetworkProvider.ts

+22-9
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import axios from "axios";
2+
import { ErrContractQuery, ErrNetworkProvider } from "../errors";
23
import { AccountOnNetwork, GuardianData } from "./accounts";
34
import { defaultAxiosConfig, defaultPagination } from "./config";
45
import { BaseUserAgent } from "./constants";
56
import { ContractQueryRequest } from "./contractQueryRequest";
67
import { ContractQueryResponse } from "./contractQueryResponse";
7-
import { ErrContractQuery, ErrNetworkProvider } from "./errors";
88
import { IAddress, IContractQuery, INetworkProvider, IPagination, ITransaction, ITransactionNext } from "./interface";
99
import { NetworkConfig } from "./networkConfig";
1010
import { NetworkGeneralStatistics } from "./networkGeneralStatistics";
@@ -25,7 +25,7 @@ export class ApiNetworkProvider implements INetworkProvider {
2525
private url: string;
2626
private config: NetworkProviderConfig;
2727
private backingProxyNetworkProvider;
28-
private userAgentPrefix = `${BaseUserAgent}/api`
28+
private userAgentPrefix = `${BaseUserAgent}/api`;
2929

3030
constructor(url: string, config?: NetworkProviderConfig) {
3131
this.url = url;
@@ -71,37 +71,50 @@ export class ApiNetworkProvider implements INetworkProvider {
7171
return await this.backingProxyNetworkProvider.getGuardianData(address);
7272
}
7373

74-
async getFungibleTokensOfAccount(address: IAddress, pagination?: IPagination): Promise<FungibleTokenOfAccountOnNetwork[]> {
74+
async getFungibleTokensOfAccount(
75+
address: IAddress,
76+
pagination?: IPagination,
77+
): Promise<FungibleTokenOfAccountOnNetwork[]> {
7578
pagination = pagination || defaultPagination;
7679

7780
let url = `accounts/${address.bech32()}/tokens?${this.buildPaginationParams(pagination)}`;
7881
let response: any[] = await this.doGetGeneric(url);
79-
let tokens = response.map(item => FungibleTokenOfAccountOnNetwork.fromHttpResponse(item));
82+
let tokens = response.map((item) => FungibleTokenOfAccountOnNetwork.fromHttpResponse(item));
8083

8184
// TODO: Fix sorting
8285
tokens.sort((a, b) => a.identifier.localeCompare(b.identifier));
8386
return tokens;
8487
}
8588

86-
async getNonFungibleTokensOfAccount(address: IAddress, pagination?: IPagination): Promise<NonFungibleTokenOfAccountOnNetwork[]> {
89+
async getNonFungibleTokensOfAccount(
90+
address: IAddress,
91+
pagination?: IPagination,
92+
): Promise<NonFungibleTokenOfAccountOnNetwork[]> {
8793
pagination = pagination || defaultPagination;
8894

8995
let url = `accounts/${address.bech32()}/nfts?${this.buildPaginationParams(pagination)}`;
9096
let response: any[] = await this.doGetGeneric(url);
91-
let tokens = response.map(item => NonFungibleTokenOfAccountOnNetwork.fromApiHttpResponse(item));
97+
let tokens = response.map((item) => NonFungibleTokenOfAccountOnNetwork.fromApiHttpResponse(item));
9298

9399
// TODO: Fix sorting
94100
tokens.sort((a, b) => a.identifier.localeCompare(b.identifier));
95101
return tokens;
96102
}
97103

98-
async getFungibleTokenOfAccount(address: IAddress, tokenIdentifier: string): Promise<FungibleTokenOfAccountOnNetwork> {
104+
async getFungibleTokenOfAccount(
105+
address: IAddress,
106+
tokenIdentifier: string,
107+
): Promise<FungibleTokenOfAccountOnNetwork> {
99108
let response = await this.doGetGeneric(`accounts/${address.bech32()}/tokens/${tokenIdentifier}`);
100109
let tokenData = FungibleTokenOfAccountOnNetwork.fromHttpResponse(response);
101110
return tokenData;
102111
}
103112

104-
async getNonFungibleTokenOfAccount(address: IAddress, collection: string, nonce: number): Promise<NonFungibleTokenOfAccountOnNetwork> {
113+
async getNonFungibleTokenOfAccount(
114+
address: IAddress,
115+
collection: string,
116+
nonce: number,
117+
): Promise<NonFungibleTokenOfAccountOnNetwork> {
105118
let nonceAsHex = new Nonce(nonce).hex();
106119
let response = await this.doGetGeneric(`accounts/${address.bech32()}/nfts/${collection}-${nonceAsHex}`);
107120
let tokenData = NonFungibleTokenOfAccountOnNetwork.fromApiHttpResponse(response);
@@ -116,7 +129,7 @@ export class ApiNetworkProvider implements INetworkProvider {
116129

117130
let response: any[] = await this.doGetGeneric(url);
118131

119-
return response.map(item => PairOnNetwork.fromApiHttpResponse(item));
132+
return response.map((item) => PairOnNetwork.fromApiHttpResponse(item));
120133
}
121134

122135
async getTransaction(txHash: string): Promise<TransactionOnNetwork> {

src/networkProviders/errors.ts

-39
This file was deleted.

src/networkProviders/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ export { AccountOnNetwork } from "./accounts";
55
export { ContractQueryResponse } from "./contractQueryResponse";
66
export { ContractResultItem, ContractResults } from "./contractResults";
77
export {
8-
TransactionEvent as TransactionEventOnNetwork,
98
TransactionEventData,
9+
TransactionEvent as TransactionEventOnNetwork,
1010
TransactionEventTopic,
1111
} from "./transactionEvents";
1212
export { TransactionLogs as TransactionLogsOnNetwork } from "./transactionLogs";
1313
export { TransactionReceipt } from "./transactionReceipt";
14-
export { TransactionStatus } from "./transactionStatus";
1514
export { TransactionOnNetwork } from "./transactions";
15+
export { TransactionStatus } from "./transactionStatus";
1616

1717
export { DefinitionOfFungibleTokenOnNetwork, DefinitionOfTokenCollectionOnNetwork } from "./tokenDefinitions";
1818
export { FungibleTokenOfAccountOnNetwork, NonFungibleTokenOfAccountOnNetwork } from "./tokens";

src/networkProviders/proxyNetworkProvider.ts

+36-16
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
import axios from "axios";
2+
import { ErrContractQuery, ErrNetworkProvider } from "../errors";
23
import { AccountOnNetwork, GuardianData } from "./accounts";
34
import { defaultAxiosConfig } from "./config";
4-
import { EsdtContractAddress, BaseUserAgent } from "./constants";
5+
import { BaseUserAgent, EsdtContractAddress } from "./constants";
56
import { ContractQueryRequest } from "./contractQueryRequest";
67
import { ContractQueryResponse } from "./contractQueryResponse";
7-
import { ErrContractQuery, ErrNetworkProvider } from "./errors";
88
import { IAddress, IContractQuery, INetworkProvider, IPagination, ITransaction, ITransactionNext } from "./interface";
99
import { NetworkConfig } from "./networkConfig";
1010
import { NetworkGeneralStatistics } from "./networkGeneralStatistics";
11+
import { NetworkProviderConfig } from "./networkProviderConfig";
1112
import { NetworkStake } from "./networkStake";
1213
import { NetworkStatus } from "./networkStatus";
1314
import { DefinitionOfFungibleTokenOnNetwork, DefinitionOfTokenCollectionOnNetwork } from "./tokenDefinitions";
1415
import { FungibleTokenOfAccountOnNetwork, NonFungibleTokenOfAccountOnNetwork } from "./tokens";
1516
import { TransactionOnNetwork, prepareTransactionForBroadcasting } from "./transactions";
1617
import { TransactionStatus } from "./transactionStatus";
1718
import { extendUserAgent } from "./userAgent";
18-
import { NetworkProviderConfig } from "./networkProviderConfig";
1919

2020
// TODO: Find & remove duplicate code between "ProxyNetworkProvider" and "ApiNetworkProvider".
2121
export class ProxyNetworkProvider implements INetworkProvider {
2222
private url: string;
2323
private config: NetworkProviderConfig;
24-
private userAgentPrefix = `${BaseUserAgent}/proxy`
24+
private userAgentPrefix = `${BaseUserAgent}/proxy`;
2525

2626
constructor(url: string, config?: NetworkProviderConfig) {
2727
this.url = url;
@@ -65,40 +65,57 @@ export class ProxyNetworkProvider implements INetworkProvider {
6565
return accountGuardian;
6666
}
6767

68-
async getFungibleTokensOfAccount(address: IAddress, _pagination?: IPagination): Promise<FungibleTokenOfAccountOnNetwork[]> {
68+
async getFungibleTokensOfAccount(
69+
address: IAddress,
70+
_pagination?: IPagination,
71+
): Promise<FungibleTokenOfAccountOnNetwork[]> {
6972
let url = `address/${address.bech32()}/esdt`;
7073
let response = await this.doGetGeneric(url);
7174
let responseItems: any[] = Object.values(response.esdts);
7275
// Skip NFTs / SFTs.
73-
let responseItemsFiltered = responseItems.filter(item => !item.nonce);
74-
let tokens = responseItemsFiltered.map(item => FungibleTokenOfAccountOnNetwork.fromHttpResponse(item));
76+
let responseItemsFiltered = responseItems.filter((item) => !item.nonce);
77+
let tokens = responseItemsFiltered.map((item) => FungibleTokenOfAccountOnNetwork.fromHttpResponse(item));
7578

7679
// TODO: Fix sorting
7780
tokens.sort((a, b) => a.identifier.localeCompare(b.identifier));
7881
return tokens;
7982
}
8083

81-
async getNonFungibleTokensOfAccount(address: IAddress, _pagination?: IPagination): Promise<NonFungibleTokenOfAccountOnNetwork[]> {
84+
async getNonFungibleTokensOfAccount(
85+
address: IAddress,
86+
_pagination?: IPagination,
87+
): Promise<NonFungibleTokenOfAccountOnNetwork[]> {
8288
let url = `address/${address.bech32()}/esdt`;
8389
let response = await this.doGetGeneric(url);
8490
let responseItems: any[] = Object.values(response.esdts);
8591
// Skip fungible tokens.
86-
let responseItemsFiltered = responseItems.filter(item => item.nonce >= 0);
87-
let tokens = responseItemsFiltered.map(item => NonFungibleTokenOfAccountOnNetwork.fromProxyHttpResponse(item));
92+
let responseItemsFiltered = responseItems.filter((item) => item.nonce >= 0);
93+
let tokens = responseItemsFiltered.map((item) =>
94+
NonFungibleTokenOfAccountOnNetwork.fromProxyHttpResponse(item),
95+
);
8896

8997
// TODO: Fix sorting
9098
tokens.sort((a, b) => a.identifier.localeCompare(b.identifier));
9199
return tokens;
92100
}
93101

94-
async getFungibleTokenOfAccount(address: IAddress, tokenIdentifier: string): Promise<FungibleTokenOfAccountOnNetwork> {
102+
async getFungibleTokenOfAccount(
103+
address: IAddress,
104+
tokenIdentifier: string,
105+
): Promise<FungibleTokenOfAccountOnNetwork> {
95106
let response = await this.doGetGeneric(`address/${address.bech32()}/esdt/${tokenIdentifier}`);
96107
let tokenData = FungibleTokenOfAccountOnNetwork.fromHttpResponse(response.tokenData);
97108
return tokenData;
98109
}
99110

100-
async getNonFungibleTokenOfAccount(address: IAddress, collection: string, nonce: number): Promise<NonFungibleTokenOfAccountOnNetwork> {
101-
let response = await this.doGetGeneric(`address/${address.bech32()}/nft/${collection}/nonce/${nonce.valueOf()}`);
111+
async getNonFungibleTokenOfAccount(
112+
address: IAddress,
113+
collection: string,
114+
nonce: number,
115+
): Promise<NonFungibleTokenOfAccountOnNetwork> {
116+
let response = await this.doGetGeneric(
117+
`address/${address.bech32()}/nft/${collection}/nonce/${nonce.valueOf()}`,
118+
);
102119
let tokenData = NonFungibleTokenOfAccountOnNetwork.fromProxyHttpResponseByNonce(response.tokenData);
103120
return tokenData;
104121
}
@@ -133,7 +150,7 @@ export class ProxyNetworkProvider implements INetworkProvider {
133150
}
134151

135152
async sendTransactions(txs: (ITransaction | ITransactionNext)[]): Promise<string[]> {
136-
const data = (txs).map((tx) => prepareTransactionForBroadcasting(tx));
153+
const data = txs.map((tx) => prepareTransactionForBroadcasting(tx));
137154

138155
const response = await this.doPostGeneric("transaction/send-multiple", data);
139156
const hashes = Array(txs.length).fill(null);
@@ -163,7 +180,10 @@ export class ProxyNetworkProvider implements INetworkProvider {
163180

164181
async getDefinitionOfFungibleToken(tokenIdentifier: string): Promise<DefinitionOfFungibleTokenOnNetwork> {
165182
let properties = await this.getTokenProperties(tokenIdentifier);
166-
let definition = DefinitionOfFungibleTokenOnNetwork.fromResponseOfGetTokenProperties(tokenIdentifier, properties);
183+
let definition = DefinitionOfFungibleTokenOnNetwork.fromResponseOfGetTokenProperties(
184+
tokenIdentifier,
185+
properties,
186+
);
167187
return definition;
168188
}
169189

@@ -173,7 +193,7 @@ export class ProxyNetworkProvider implements INetworkProvider {
173193
let queryResponse = await this.queryContract({
174194
address: EsdtContractAddress,
175195
func: "getTokenProperties",
176-
getEncodedArguments: () => [encodedIdentifier]
196+
getEncodedArguments: () => [encodedIdentifier],
177197
});
178198

179199
let properties = queryResponse.getReturnDataParts();

src/networkProviders/transactionLogs.ts

+12-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ErrUnexpectedCondition } from "./errors";
1+
import { ErrUnexpectedCondition } from "./../errors";
22
import { IAddress } from "./interface";
33
import { Address } from "./primitives";
44
import { TransactionEvent } from "./transactionEvents";
@@ -15,11 +15,14 @@ export class TransactionLogs {
1515
let result = new TransactionLogs();
1616
result.address = new Address(logs.address);
1717
result.events = (logs.events || []).map((event: any) => TransactionEvent.fromHttpResponse(event));
18-
18+
1919
return result;
2020
}
2121

22-
findSingleOrNoneEvent(identifier: string, predicate?: (event: TransactionEvent) => boolean): TransactionEvent | undefined {
22+
findSingleOrNoneEvent(
23+
identifier: string,
24+
predicate?: (event: TransactionEvent) => boolean,
25+
): TransactionEvent | undefined {
2326
let events = this.findEvents(identifier, predicate);
2427

2528
if (events.length > 1) {
@@ -29,15 +32,18 @@ export class TransactionLogs {
2932
return events[0];
3033
}
3134

32-
findFirstOrNoneEvent(identifier: string, predicate?: (event: TransactionEvent) => boolean): TransactionEvent | undefined {
35+
findFirstOrNoneEvent(
36+
identifier: string,
37+
predicate?: (event: TransactionEvent) => boolean,
38+
): TransactionEvent | undefined {
3339
return this.findEvents(identifier, predicate)[0];
3440
}
3541

3642
findEvents(identifier: string, predicate?: (event: TransactionEvent) => boolean): TransactionEvent[] {
37-
let events = this.events.filter(event => event.identifier == identifier);
43+
let events = this.events.filter((event) => event.identifier == identifier);
3844

3945
if (predicate) {
40-
events = events.filter(event => predicate(event));
46+
events = events.filter((event) => predicate(event));
4147
}
4248

4349
return events;

src/wallet/assertions.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ErrInvariantFailed } from "./errors";
1+
import { ErrInvariantFailed } from "../errors";
22

33
export function guardLength(withLength: { length?: number }, expectedLength: number) {
44
let actualLength = withLength.length || 0;

0 commit comments

Comments
 (0)