Skip to content

Commit

Permalink
Update to TypeScript 4.1 (#370)
Browse files Browse the repository at this point in the history
TypeScript has been updated to v4.1 [1]. I'm not aware of any changes
that impact our code, but the update did highlight a few new minor
errors in our code for some reason. These have all been fixed. There
was also a breaking change that affected us: `resolve` parameters for
Promises are no longer optional. We're not required to use
`Promise<void>` for any Promises not returning a value.

[1]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-1/
  • Loading branch information
Gudahtt authored Feb 26, 2021
1 parent ec176a8 commit 18467ee
Show file tree
Hide file tree
Showing 14 changed files with 105 additions and 72 deletions.
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
"devDependencies": {
"@metamask/eslint-config": "^5.0.0",
"@types/jest": "^22.2.3",
"@types/node": "^10.1.4",
"@types/node": "^14.14.31",
"@types/sinon": "^9.0.10",
"@types/web3": "^1.0.6",
"@typescript-eslint/eslint-plugin": "^4.15.2",
Expand All @@ -78,9 +78,9 @@
"nock": "^13.0.7",
"prettier": "^2.1.1",
"sinon": "^9.2.4",
"ts-jest": "^26.3.0",
"typedoc": "^0.20.24",
"typescript": "^4.0.3"
"ts-jest": "^26.5.2",
"typedoc": "^0.20.28",
"typescript": "~4.1.5"
},
"jest": {
"moduleFileExtensions": [
Expand Down
2 changes: 1 addition & 1 deletion src/assets/AccountTrackerController.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ describe('AccountTrackerController', () => {
});

it('should call refresh every ten seconds', () => {
return new Promise((resolve) => {
return new Promise<void>((resolve) => {
const preferences = new PreferencesController();
const controller = new AccountTrackerController({ provider, interval: 100 });
stub(controller, 'refresh');
Expand Down
6 changes: 3 additions & 3 deletions src/assets/CurrencyRateController.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,10 @@ describe('CurrencyRateController', () => {
const fetchExchangeRateStub = stub();
const controller = new CurrencyRateController({ interval: 100 }, {}, fetchExchangeRateStub);

await new Promise((resolve) => setTimeout(() => resolve(), 1));
await new Promise<void>((resolve) => setTimeout(() => resolve(), 1));
expect(fetchExchangeRateStub.called).toBe(true);
expect(fetchExchangeRateStub.calledTwice).toBe(false);
await new Promise((resolve) => setTimeout(() => resolve(), 150));
await new Promise<void>((resolve) => setTimeout(() => resolve(), 150));
expect(fetchExchangeRateStub.calledTwice).toBe(true);

controller.disabled = true;
Expand All @@ -72,7 +72,7 @@ describe('CurrencyRateController', () => {
const fetchExchangeRateStub = stub();
const mock = stub(global, 'clearTimeout');
const controller = new CurrencyRateController({ interval: 1337 }, {}, fetchExchangeRateStub);
return new Promise((resolve) => {
return new Promise<void>((resolve) => {
setTimeout(() => {
controller.poll(1338);
expect(mock.called).toBe(true);
Expand Down
4 changes: 2 additions & 2 deletions src/assets/TokenBalancesController.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ describe('TokenBalancesController', () => {
});

it('should poll and update balances in the right interval', () => {
return new Promise((resolve) => {
return new Promise<void>((resolve) => {
const mock = stub(TokenBalancesController.prototype, 'updateBalances');
new TokenBalancesController({ interval: 10 });
expect(mock.called).toBe(true);
Expand All @@ -67,7 +67,7 @@ describe('TokenBalancesController', () => {
it('should clear previous interval', () => {
const mock = stub(global, 'clearTimeout');
const controller = new TokenBalancesController({ interval: 1337 });
return new Promise((resolve) => {
return new Promise<void>((resolve) => {
setTimeout(() => {
controller.poll(1338);
expect(mock.called).toBe(true);
Expand Down
4 changes: 2 additions & 2 deletions src/assets/TokenRatesController.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ describe('TokenRatesController', () => {
});

it('should poll and update rate in the right interval', () => {
return new Promise((resolve) => {
return new Promise<void>((resolve) => {
const mock = stub(TokenRatesController.prototype, 'fetchExchangeRate');
new TokenRatesController({
interval: 10,
Expand Down Expand Up @@ -79,7 +79,7 @@ describe('TokenRatesController', () => {
it('should clear previous interval', () => {
const mock = stub(global, 'clearTimeout');
const controller = new TokenRatesController({ interval: 1337 });
return new Promise((resolve) => {
return new Promise<void>((resolve) => {
setTimeout(() => {
controller.poll(1338);
expect(mock.called).toBe(true);
Expand Down
8 changes: 4 additions & 4 deletions src/message-manager/MessageManager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ describe('PersonalMessageManager', () => {
});

it('should reject a message', () => {
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new MessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
Expand All @@ -65,7 +65,7 @@ describe('PersonalMessageManager', () => {
});

it('should sign a message', () => {
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new MessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
Expand All @@ -89,7 +89,7 @@ describe('PersonalMessageManager', () => {
});

it('should throw when unapproved finishes', () => {
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new MessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
Expand Down Expand Up @@ -131,7 +131,7 @@ describe('PersonalMessageManager', () => {
it('should throw when adding invalid message', () => {
const from = 'foo';
const messageData = '0x123';
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new MessageManager();
try {
await controller.addUnapprovedMessageAsync({
Expand Down
2 changes: 1 addition & 1 deletion src/message-manager/MessageManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ export class MessageManager extends AbstractMessageManager<Message, MessageParam
this.hub.once(`${messageId}:finished`, (data: Message) => {
switch (data.status) {
case 'signed':
return resolve(data.rawSig);
return resolve(data.rawSig as string);
case 'rejected':
return reject(new Error('MetaMask Message Signature: User denied message signature.'));
default:
Expand Down
8 changes: 4 additions & 4 deletions src/message-manager/PersonalMessageManager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ describe('PersonalMessageManager', () => {
});

it('should reject a message', () => {
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new PersonalMessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
Expand All @@ -65,7 +65,7 @@ describe('PersonalMessageManager', () => {
});

it('should sign a message', () => {
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new PersonalMessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
Expand All @@ -89,7 +89,7 @@ describe('PersonalMessageManager', () => {
});

it('should throw when unapproved finishes', () => {
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new PersonalMessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
Expand Down Expand Up @@ -131,7 +131,7 @@ describe('PersonalMessageManager', () => {
it('should throw when adding invalid message', () => {
const from = 'foo';
const messageData = '0x123';
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new PersonalMessageManager();
try {
await controller.addUnapprovedMessageAsync({
Expand Down
2 changes: 1 addition & 1 deletion src/message-manager/PersonalMessageManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ export class PersonalMessageManager extends AbstractMessageManager<
this.hub.once(`${messageId}:finished`, (data: PersonalMessage) => {
switch (data.status) {
case 'signed':
return resolve(data.rawSig);
return resolve(data.rawSig as string);
case 'rejected':
return reject(new Error('MetaMask Personal Message Signature: User denied message signature.'));
default:
Expand Down
12 changes: 6 additions & 6 deletions src/message-manager/TypedMessageManager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ describe('TypedMessageManager', () => {
});

it('should reject a message', () => {
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new TypedMessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const version = 'V1';
Expand All @@ -81,7 +81,7 @@ describe('TypedMessageManager', () => {
});

it('should sign a message', () => {
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new TypedMessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const version = 'V1';
Expand Down Expand Up @@ -109,7 +109,7 @@ describe('TypedMessageManager', () => {
});

it("should set message status as 'errored'", () => {
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new TypedMessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const version = 'V1';
Expand All @@ -136,7 +136,7 @@ describe('TypedMessageManager', () => {
});

it('should throw when unapproved finishes', () => {
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new TypedMessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const version = 'V1';
Expand Down Expand Up @@ -185,7 +185,7 @@ describe('TypedMessageManager', () => {
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const messageData = '0x879';
const version = 'V1';
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new TypedMessageManager();
try {
await controller.addUnapprovedMessageAsync(
Expand All @@ -206,7 +206,7 @@ describe('TypedMessageManager', () => {
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const messageData = typedMessage;
const version = 'V3';
return new Promise(async (resolve) => {
return new Promise<void>(async (resolve) => {
const controller = new TypedMessageManager();
try {
await controller.addUnapprovedMessageAsync(
Expand Down
2 changes: 1 addition & 1 deletion src/message-manager/TypedMessageManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ export class TypedMessageManager extends AbstractMessageManager<
this.hub.once(`${messageId}:finished`, (data: TypedMessage) => {
switch (data.status) {
case 'signed':
return resolve(data.rawSig);
return resolve(data.rawSig as string);
case 'rejected':
return reject(new Error('MetaMask Typed Message Signature: User denied message signature.'));
case 'errored':
Expand Down
4 changes: 2 additions & 2 deletions src/third-party/PhishingController.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ describe('PhishingController', () => {
});

it('should poll and update rate in the right interval', () => {
return new Promise((resolve) => {
return new Promise<void>((resolve) => {
const mock = stub(PhishingController.prototype, 'updatePhishingLists');
new PhishingController({ interval: 10 });
expect(mock.called).toBe(true);
Expand All @@ -37,7 +37,7 @@ describe('PhishingController', () => {
it('should clear previous interval', () => {
const mock = stub(global, 'clearTimeout');
const controller = new PhishingController({ interval: 1337 });
return new Promise((resolve) => {
return new Promise<void>((resolve) => {
setTimeout(() => {
controller.poll(1338);
expect(mock.called).toBe(true);
Expand Down
2 changes: 1 addition & 1 deletion src/transaction/TransactionController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@ export class TransactionController extends BaseController<TransactionConfig, Tra
this.hub.once(`${transactionMeta.id}:finished`, (meta: TransactionMeta) => {
switch (meta.status) {
case 'submitted':
return resolve(meta.transactionHash);
return resolve(meta.transactionHash as string);
case 'rejected':
return reject(ethErrors.provider.userRejectedRequest('User rejected the transaction'));
case 'cancelled':
Expand Down
Loading

0 comments on commit 18467ee

Please sign in to comment.