Fix TSLint rules
This commit is contained in:
@@ -113,9 +113,12 @@ export class LedgerSubprovider extends BaseWalletSubprovider {
|
||||
const tx = new EthereumTx(txParams);
|
||||
|
||||
// Set the EIP155 bits
|
||||
tx.raw[6] = Buffer.from([this._networkId]); // v
|
||||
tx.raw[7] = Buffer.from([]); // r
|
||||
tx.raw[8] = Buffer.from([]); // s
|
||||
const vIndex = 6;
|
||||
tx.raw[vIndex] = Buffer.from([this._networkId]); // v
|
||||
const rIndex = 7;
|
||||
tx.raw[rIndex] = Buffer.from([]); // r
|
||||
const sIndex = 8;
|
||||
tx.raw[sIndex] = Buffer.from([]); // s
|
||||
|
||||
const txHex = tx.serialize().toString('hex');
|
||||
try {
|
||||
@@ -127,7 +130,8 @@ export class LedgerSubprovider extends BaseWalletSubprovider {
|
||||
tx.v = Buffer.from(result.v, 'hex');
|
||||
|
||||
// EIP155: v should be chain_id * 2 + {35, 36}
|
||||
const signedChainId = Math.floor((tx.v[0] - 35) / 2);
|
||||
const eip55Constant = 35;
|
||||
const signedChainId = Math.floor((tx.v[0] - eip55Constant) / 2);
|
||||
if (signedChainId !== this._networkId) {
|
||||
await this._destroyLedgerClientAsync();
|
||||
const err = new Error(LedgerSubproviderErrors.TooOldLedgerFirmware);
|
||||
@@ -169,8 +173,10 @@ export class LedgerSubprovider extends BaseWalletSubprovider {
|
||||
fullDerivationPath,
|
||||
ethUtil.stripHexPrefix(data),
|
||||
);
|
||||
const v = result.v - 27;
|
||||
let vHex = v.toString(16);
|
||||
const lowestValidV = 27;
|
||||
const v = result.v - lowestValidV;
|
||||
const hexBase = 16;
|
||||
let vHex = v.toString(hexBase);
|
||||
if (vHex.length < 2) {
|
||||
vHex = `0${v}`;
|
||||
}
|
||||
|
||||
@@ -93,7 +93,8 @@ export class NonceTrackerSubprovider extends Subprovider {
|
||||
// Increment the nonce from the previous successfully submitted transaction
|
||||
let nonce = ethUtil.bufferToInt(transaction.nonce);
|
||||
nonce++;
|
||||
let nextHexNonce = nonce.toString(16);
|
||||
const hexBase = 16;
|
||||
let nextHexNonce = nonce.toString(hexBase);
|
||||
if (nextHexNonce.length % 2) {
|
||||
nextHexNonce = `0${nextHexNonce}`;
|
||||
}
|
||||
|
||||
@@ -13,10 +13,11 @@ export abstract class Subprovider {
|
||||
// Ported from: https://github.com/MetaMask/provider-engine/blob/master/util/random-id.js
|
||||
private static _getRandomId(): number {
|
||||
const extraDigits = 3;
|
||||
const baseTen = 10;
|
||||
// 13 time digits
|
||||
const datePart = new Date().getTime() * Math.pow(10, extraDigits);
|
||||
const datePart = new Date().getTime() * Math.pow(baseTen, extraDigits);
|
||||
// 3 random digits
|
||||
const extraPart = Math.floor(Math.random() * Math.pow(10, extraDigits));
|
||||
const extraPart = Math.floor(Math.random() * Math.pow(baseTen, extraDigits));
|
||||
// 16 digits
|
||||
return datePart + extraPart;
|
||||
}
|
||||
|
||||
@@ -30,10 +30,10 @@ class DerivedHDKeyInfoIterator implements IterableIterator<DerivedHDKeyInfo> {
|
||||
baseDerivationPath,
|
||||
derivationPath: fullDerivationPath,
|
||||
};
|
||||
const done = this._index === this._searchLimit;
|
||||
const isDone = this._index === this._searchLimit;
|
||||
this._index++;
|
||||
return {
|
||||
done,
|
||||
done: isDone,
|
||||
value: derivedKey,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ import { reportCallbackErrors } from '../utils/report_callback_errors';
|
||||
|
||||
chaiSetup.configure();
|
||||
const expect = chai.expect;
|
||||
const DEFAULT_NUM_ACCOUNTS = 10;
|
||||
const EXPECTED_SIGNATURE_LENGTH = 132;
|
||||
|
||||
async function ledgerEthereumNodeJsClientFactoryAsync(): Promise<LedgerEthereumClient> {
|
||||
const ledgerConnection = await TransportNodeHid.create();
|
||||
@@ -40,7 +42,7 @@ describe('LedgerSubprovider', () => {
|
||||
it('returns default number of accounts', async () => {
|
||||
const accounts = await ledgerSubprovider.getAccountsAsync();
|
||||
expect(accounts[0]).to.not.be.an('undefined');
|
||||
expect(accounts.length).to.be.equal(10);
|
||||
expect(accounts.length).to.be.equal(DEFAULT_NUM_ACCOUNTS);
|
||||
});
|
||||
it('returns the expected accounts from a ledger set up with the test mnemonic', async () => {
|
||||
const accounts = await ledgerSubprovider.getAccountsAsync();
|
||||
@@ -104,7 +106,7 @@ describe('LedgerSubprovider', () => {
|
||||
};
|
||||
const callback = reportCallbackErrors(done)((err: Error, response: JSONRPCResponsePayload) => {
|
||||
expect(err).to.be.a('null');
|
||||
expect(response.result.length).to.be.equal(10);
|
||||
expect(response.result.length).to.be.equal(DEFAULT_NUM_ACCOUNTS);
|
||||
done();
|
||||
});
|
||||
ledgerProvider.sendAsync(payload, callback);
|
||||
@@ -122,7 +124,7 @@ describe('LedgerSubprovider', () => {
|
||||
};
|
||||
const callback = reportCallbackErrors(done)((err: Error, response: JSONRPCResponsePayload) => {
|
||||
expect(err).to.be.a('null');
|
||||
expect(response.result.length).to.be.equal(132);
|
||||
expect(response.result.length).to.be.equal(EXPECTED_SIGNATURE_LENGTH);
|
||||
expect(response.result.substr(0, 2)).to.be.equal('0x');
|
||||
done();
|
||||
});
|
||||
@@ -142,7 +144,7 @@ describe('LedgerSubprovider', () => {
|
||||
};
|
||||
const callback = reportCallbackErrors(done)((err: Error, response: JSONRPCResponsePayload) => {
|
||||
expect(err).to.be.a('null');
|
||||
expect(response.result.length).to.be.equal(132);
|
||||
expect(response.result.length).to.be.equal(EXPECTED_SIGNATURE_LENGTH);
|
||||
expect(response.result.substr(0, 2)).to.be.equal('0x');
|
||||
done();
|
||||
});
|
||||
@@ -196,7 +198,8 @@ describe('LedgerSubprovider', () => {
|
||||
const callback = reportCallbackErrors(done)((err: Error, response: JSONRPCResponsePayload) => {
|
||||
expect(err).to.be.a('null');
|
||||
const result = response.result;
|
||||
expect(result.length).to.be.equal(66);
|
||||
const signedTxLength = 66;
|
||||
expect(result.length).to.be.equal(signedTxLength);
|
||||
expect(result.substr(0, 2)).to.be.equal('0x');
|
||||
done();
|
||||
});
|
||||
|
||||
@@ -20,6 +20,7 @@ import { reportCallbackErrors } from '../utils/report_callback_errors';
|
||||
chaiSetup.configure();
|
||||
const expect = chai.expect;
|
||||
const FAKE_ADDRESS = '0xb088a3bc93f71b4de97b9de773e9647645983688';
|
||||
const DEFAULT_NUM_ACCOUNTS = 10;
|
||||
|
||||
describe('LedgerSubprovider', () => {
|
||||
const networkId: number = 42;
|
||||
@@ -72,7 +73,7 @@ describe('LedgerSubprovider', () => {
|
||||
it('returns default number of accounts', async () => {
|
||||
const accounts = await ledgerSubprovider.getAccountsAsync();
|
||||
expect(accounts[0]).to.be.equal(FAKE_ADDRESS);
|
||||
expect(accounts.length).to.be.equal(10);
|
||||
expect(accounts.length).to.be.equal(DEFAULT_NUM_ACCOUNTS);
|
||||
});
|
||||
it('returns requested number of accounts', async () => {
|
||||
const numberOfAccounts = 20;
|
||||
@@ -118,7 +119,7 @@ describe('LedgerSubprovider', () => {
|
||||
};
|
||||
const callback = reportCallbackErrors(done)((err: Error, response: JSONRPCResponsePayload) => {
|
||||
expect(err).to.be.a('null');
|
||||
expect(response.result.length).to.be.equal(10);
|
||||
expect(response.result.length).to.be.equal(DEFAULT_NUM_ACCOUNTS);
|
||||
expect(response.result[0]).to.be.equal(FAKE_ADDRESS);
|
||||
done();
|
||||
});
|
||||
@@ -175,7 +176,8 @@ describe('LedgerSubprovider', () => {
|
||||
};
|
||||
const callback = reportCallbackErrors(done)((err: Error, response: JSONRPCResponsePayload) => {
|
||||
expect(err).to.be.a('null');
|
||||
expect(response.result.raw.length).to.be.equal(192);
|
||||
const rawTxLength = 192;
|
||||
expect(response.result.raw.length).to.be.equal(rawTxLength);
|
||||
expect(response.result.raw.substr(0, 2)).to.be.equal('0x');
|
||||
done();
|
||||
});
|
||||
|
||||
@@ -17,6 +17,7 @@ import { reportCallbackErrors } from '../utils/report_callback_errors';
|
||||
|
||||
chaiSetup.configure();
|
||||
const expect = chai.expect;
|
||||
const DEFAULT_NUM_ACCOUNTS = 10;
|
||||
|
||||
describe('MnemonicWalletSubprovider', () => {
|
||||
let subprovider: MnemonicWalletSubprovider;
|
||||
@@ -32,7 +33,7 @@ describe('MnemonicWalletSubprovider', () => {
|
||||
const accounts = await subprovider.getAccountsAsync();
|
||||
expect(accounts[0]).to.be.equal(fixtureData.TEST_RPC_ACCOUNT_0);
|
||||
expect(accounts[1]).to.be.equal(fixtureData.TEST_RPC_ACCOUNT_1);
|
||||
expect(accounts.length).to.be.equal(10);
|
||||
expect(accounts.length).to.be.equal(DEFAULT_NUM_ACCOUNTS);
|
||||
});
|
||||
it('signs a personal message', async () => {
|
||||
const data = ethUtils.bufferToHex(ethUtils.toBuffer(fixtureData.PERSONAL_MESSAGE_STRING));
|
||||
@@ -89,7 +90,7 @@ describe('MnemonicWalletSubprovider', () => {
|
||||
const callback = reportCallbackErrors(done)((err: Error, response: JSONRPCResponsePayload) => {
|
||||
expect(err).to.be.a('null');
|
||||
expect(response.result[0]).to.be.equal(fixtureData.TEST_RPC_ACCOUNT_0);
|
||||
expect(response.result.length).to.be.equal(10);
|
||||
expect(response.result.length).to.be.equal(DEFAULT_NUM_ACCOUNTS);
|
||||
done();
|
||||
});
|
||||
provider.sendAsync(payload, callback);
|
||||
|
||||
@@ -13,6 +13,7 @@ import { reportCallbackErrors } from '../utils/report_callback_errors';
|
||||
|
||||
const expect = chai.expect;
|
||||
chaiSetup.configure();
|
||||
const DEFAULT_NUM_ACCOUNTS = 10;
|
||||
|
||||
describe('RedundantSubprovider', () => {
|
||||
let provider: Web3ProviderEngine;
|
||||
@@ -31,7 +32,7 @@ describe('RedundantSubprovider', () => {
|
||||
};
|
||||
const callback = reportCallbackErrors(done)((err: Error, response: JSONRPCResponsePayload) => {
|
||||
expect(err).to.be.a('null');
|
||||
expect(response.result.length).to.be.equal(10);
|
||||
expect(response.result.length).to.be.equal(DEFAULT_NUM_ACCOUNTS);
|
||||
done();
|
||||
});
|
||||
provider.sendAsync(payload, callback);
|
||||
@@ -54,7 +55,7 @@ describe('RedundantSubprovider', () => {
|
||||
};
|
||||
const callback = reportCallbackErrors(done)((err: Error, response: JSONRPCResponsePayload) => {
|
||||
expect(err).to.be.a('null');
|
||||
expect(response.result.length).to.be.equal(10);
|
||||
expect(response.result.length).to.be.equal(DEFAULT_NUM_ACCOUNTS);
|
||||
done();
|
||||
});
|
||||
provider.sendAsync(payload, callback);
|
||||
|
||||
Reference in New Issue
Block a user