Skip to content

Commit 3934d9c

Browse files
feat: change eslint, prettier and solhint configs
1 parent 3b40898 commit 3934d9c

12 files changed

+180
-98
lines changed

.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
node_modules
22
artifacts
33
cache
4+
typechain
45
coverage

.eslintrc.js

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,14 @@
11
module.exports = {
22
env: {
3-
browser: false,
4-
es2021: true,
5-
mocha: true,
3+
es6: true,
64
node: true,
5+
mocha: true,
76
},
87
plugins: ["@typescript-eslint"],
98
extends: [
109
"standard",
10+
"plugin:@typescript-eslint/recommended",
1111
"plugin:prettier/recommended",
12-
"plugin:node/recommended",
1312
],
1413
parser: "@typescript-eslint/parser",
15-
parserOptions: {
16-
ecmaVersion: 12,
17-
},
18-
rules: {
19-
"node/no-unsupported-features/es-syntax": [
20-
"error",
21-
{ ignores: ["modules"] },
22-
],
23-
},
2414
};

.prettierignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
node_modules
22
artifacts
33
cache
4+
typechain
45
coverage*
56
gasReporterOutput.json

.solhint.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"extends": "solhint:recommended",
33
"rules": {
44
"compiler-version": ["error", "^0.8.0"],
5-
"func-visibility": ["warn", { "ignoreConstructors": true }]
5+
"func-visibility": ["warn", { "ignoreConstructors": true }],
6+
"var-name-mixedcase": "off"
67
}
78
}

hardhat.config.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,17 @@ const config: HardhatUserConfig = {
7777
etherscan: {
7878
apiKey: process.env.ETHERSCAN_API_KEY,
7979
},
80+
typechain: {
81+
outDir: "typechain",
82+
target: "ethers-v4",
83+
},
8084
};
85+
if (!config.networks) {
86+
throw new Error(`No config networks!`);
87+
}
8188

8289
if (process.env.FORK_ENABLED === "true") {
83-
config.networks!.hardhat = {
90+
config.networks.hardhat = {
8491
forking: {
8592
url: process.env.GOERLI_URL || "",
8693
blockNumber: parseInt(process.env.BLOCK_NUMBER || ""),

test/e2e/main.test.ts

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ import { ethers, network } from "hardhat";
33
import * as chainlink from "../utils/chainlink-automation";
44
import { setupPool } from "../utils/uniswap";
55
import { parseEventFromABI } from "../utils/events";
6-
import { Wallet } from "ethers";
6+
import { Wallet, Event, Contract } from "ethers";
77
import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers";
88
import { DssVestTopUp } from "../../typechain/DssVestTopUp";
99
import { NetworkPaymentAdapter } from "../../typechain/NetworkPaymentAdapter";
1010
import { SampleJob } from "../../typechain/SampleJob";
1111
import { ERC20PresetMinterPauser } from "../../typechain/ERC20PresetMinterPauser";
1212
import { LinkTokenMock } from "../../typechain/LinkTokenMock";
13-
import { KeeperRegistry20 } from "../../typechain/KeeperRegistry20";
14-
import { KeeperRegistrar20 } from "../../typechain/KeeperRegistrar20";
13+
import { KeeperRegistry2_0 as KeeperRegistry20 } from "../../typechain/KeeperRegistry2_0";
14+
import { KeeperRegistrar2_0 as KeeperRegistrar20 } from "../../typechain/KeeperRegistrar2_0";
1515

1616
const { parseEther, parseBytes32String, formatBytes32String } = ethers.utils;
1717

@@ -54,21 +54,29 @@ describe("E2E", function () {
5454

5555
before(async function () {
5656
[owner] = await ethers.getSigners();
57-
linkToken = await ethers.getContractAt("LinkTokenMock", linkTokenAddress);
57+
linkToken = (await ethers.getContractAt(
58+
"LinkTokenMock",
59+
linkTokenAddress
60+
)) as unknown as LinkTokenMock;
5861
registrySigners = chainlink.getRegistrySigners();
5962
});
6063

6164
beforeEach(async function () {
6265
// setup dai token
63-
const ERC20 = await ethers.getContractFactory("ERC20PresetMinterPauser");
66+
const ERC20 = (await ethers.getContractFactory(
67+
"ERC20PresetMinterPauser"
68+
)) as unknown as ERC20PresetMinterPauser;
6469
daiToken = await ERC20.deploy("Test DAI", "DAI");
6570
await daiToken.mint(owner.address, parseEther("100"));
6671

6772
// setup sequencer
6873
const Sequencer = await ethers.getContractFactory("Sequencer");
6974
const sequencer = await Sequencer.deploy();
7075
const SampleJob = await ethers.getContractFactory("SampleJob");
71-
job = await SampleJob.deploy(sequencer.address, 100);
76+
job = (await SampleJob.deploy(
77+
sequencer.address,
78+
100
79+
)) as unknown as SampleJob;
7280
await sequencer.addJob(job.address);
7381

7482
// setup vest
@@ -124,11 +132,11 @@ describe("E2E", function () {
124132
const vestingPlanId = 1;
125133
const bufferMax = parseEther("1");
126134
const minPayment = parseEther("1");
127-
paymentAdapter = await NetworkPaymentAdapter.deploy(
135+
paymentAdapter = (await NetworkPaymentAdapter.deploy(
128136
dssVest.address,
129137
daiJoin.address,
130138
vowAddress
131-
);
139+
)) as unknown as NetworkPaymentAdapter;
132140
await paymentAdapter["file(bytes32,uint256)"](
133141
formatBytes32String("vestId"),
134142
vestingPlanId
@@ -150,7 +158,7 @@ describe("E2E", function () {
150158
[daiToken.address, uniswapPoolFee, linkToken.address]
151159
);
152160
const DssVestTopUp = await ethers.getContractFactory("DssVestTopUp");
153-
topUp = await DssVestTopUp.deploy(
161+
topUp = (await DssVestTopUp.deploy(
154162
upkeepId,
155163
registry.address,
156164
daiToken.address,
@@ -161,7 +169,7 @@ describe("E2E", function () {
161169
swapRouterAddress,
162170
slippageToleranceBps,
163171
uniswapPath
164-
);
172+
)) as unknown as DssVestTopUp;
165173

166174
// set topup contract as treasury in payment adapter
167175
await paymentAdapter["file(bytes32,address)"](
@@ -224,9 +232,12 @@ describe("E2E", function () {
224232
beforeEach(async function () {
225233
const poolLinkTokenLiquidity = parseEther("100");
226234
const poolDaiTokenLiquidity = parseEther("100");
235+
const linkTokenContract = linkToken as unknown as Contract;
236+
const daiTokenContract = daiToken as unknown as Contract;
237+
227238
await setupPool(
228-
linkToken,
229-
daiToken,
239+
linkTokenContract,
240+
daiTokenContract,
230241
owner,
231242
poolLinkTokenLiquidity,
232243
poolDaiTokenLiquidity,
@@ -276,7 +287,7 @@ describe("E2E", function () {
276287

277288
// get total link spent by upkeep
278289
const performUpkeepLinkSpent = tx.events?.find(
279-
(e) => e.event === "UpkeepPerformed"
290+
(e: Event) => e.event === "UpkeepPerformed"
280291
)?.args?.totalPayment;
281292

282293
// check if balance is equal to initial balance + amount of link swapped - link spent for upkeep

test/unit/DssCronKeeper.test.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import { expect } from "chai";
22
import { ethers } from "hardhat";
33
import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers";
4-
import {
5-
DssCronKeeper,
6-
DssVestTopUpMock,
7-
SampleJob,
8-
Sequencer,
9-
} from "../../typechain";
4+
import { DssCronKeeper } from "../../typechain/DssCronKeeper";
5+
import { Sequencer } from "../../typechain/Sequencer";
6+
import { SampleJob } from "../../typechain/SampleJob";
7+
import { DssVestTopUpMock } from "../../typechain/DssVestTopUpMock";
108

119
const { HashZero } = ethers.constants;
1210
const { formatBytes32String } = ethers.utils;
@@ -27,24 +25,28 @@ describe("DssCronKeeper", function () {
2725

2826
beforeEach(async function () {
2927
const Sequencer = await ethers.getContractFactory("Sequencer");
30-
sequencer = await Sequencer.deploy();
28+
sequencer = (await Sequencer.deploy()) as unknown as Sequencer;
3129
await sequencer.addNetwork(formatBytes32String("test"), 1);
3230

3331
const SampleJob = await ethers.getContractFactory("SampleJob");
34-
job = await SampleJob.deploy(sequencer.address, 100);
32+
job = (await SampleJob.deploy(
33+
sequencer.address,
34+
100
35+
)) as unknown as SampleJob;
3536
await sequencer.addJob(job.address);
3637
runJobEncoded = iface.encodeFunctionData("runJob", [job.address, "0x"]);
3738

3839
const DssCronKeeper = await ethers.getContractFactory("DssCronKeeper");
39-
keeper = await DssCronKeeper.deploy(
40+
keeper = (await DssCronKeeper.deploy(
4041
sequencer.address,
4142
formatBytes32String("test")
42-
);
43+
)) as unknown as DssCronKeeper;
4344

4445
const DssVestTopUpMock = await ethers.getContractFactory(
4546
"DssVestTopUpMock"
4647
);
47-
topUpMock = await DssVestTopUpMock.deploy();
48+
topUpMock =
49+
(await DssVestTopUpMock.deploy()) as unknown as DssVestTopUpMock;
4850
await keeper.setUpkeepRefunder(topUpMock.address);
4951
});
5052

test/unit/DssVestTopUp.test.ts

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@ import { ethers } from "hardhat";
33
import { AbiCoder } from "@ethersproject/abi";
44
import { utils, Wallet } from "ethers";
55
import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers";
6-
import {
7-
DssVestTopUp,
8-
DssVestTopUp__factory as DssVestTopUpFactory,
9-
ERC20PresetMinterPauser,
10-
KeeperRegistryMock,
11-
MockV3Aggregator,
12-
MockV3Aggregator__factory as MockV3AggregatorFactory,
13-
NetworkPaymentAdapterMock,
14-
SwapRouterMock,
15-
} from "../../typechain";
6+
import { DssVestTopUp } from "../../typechain/DssVestTopUp";
7+
import { NetworkPaymentAdapterMock } from "../../typechain/NetworkPaymentAdapterMock";
8+
import { ERC20PresetMinterPauser } from "../../typechain/ERC20PresetMinterPauser";
9+
import { KeeperRegistryMock } from "../../typechain/KeeperRegistryMock";
10+
import { SwapRouterMock } from "../../typechain/SwapRouterMock";
11+
import { DssVestTopUp__factory as DssVestTopUpFactory } from "../../typechain/factories/DssVestTopUp__factory";
12+
import { MockV3Aggregator__factory as MockV3AggregatorFactory } from "../../typechain/factories/MockV3Aggregator__factory";
13+
import { MockV3Aggregator } from "../../typechain/MockV3Aggregator";
1614

1715
const { parseEther, parseUnits, toUtf8Bytes, keccak256 } = ethers.utils;
1816

@@ -40,8 +38,12 @@ describe("DssVestTopUp", function () {
4038
let owner: SignerWithAddress;
4139

4240
before(async function () {
43-
DssVestTopUp = await ethers.getContractFactory("DssVestTopUp");
44-
MockV3Aggregator = await ethers.getContractFactory("MockV3Aggregator");
41+
DssVestTopUp = (await ethers.getContractFactory(
42+
"DssVestTopUp"
43+
)) as unknown as DssVestTopUpFactory;
44+
MockV3Aggregator = (await ethers.getContractFactory(
45+
"MockV3Aggregator"
46+
)) as unknown as MockV3AggregatorFactory;
4547
});
4648

4749
beforeEach(async function () {
@@ -50,24 +52,32 @@ describe("DssVestTopUp", function () {
5052
const ERC20PresetMinterPauser = await ethers.getContractFactory(
5153
"ERC20PresetMinterPauser"
5254
);
53-
daiToken = await ERC20PresetMinterPauser.deploy("Test DAI", "DAI");
55+
daiToken = (await ERC20PresetMinterPauser.deploy(
56+
"Test DAI",
57+
"DAI"
58+
)) as unknown as ERC20PresetMinterPauser;
5459

5560
// setup link token
56-
linkToken = await ERC20PresetMinterPauser.deploy("Test Chainlink", "LINK");
61+
linkToken = (await ERC20PresetMinterPauser.deploy(
62+
"Test Chainlink",
63+
"LINK"
64+
)) as unknown as ERC20PresetMinterPauser;
5765

5866
// setup chainlink keeper registry mock
5967
const KeeperRegistryMock = await ethers.getContractFactory(
6068
"KeeperRegistryMock"
6169
);
62-
keeperRegistryMock = await KeeperRegistryMock.deploy(linkToken.address);
70+
keeperRegistryMock = (await KeeperRegistryMock.deploy(
71+
linkToken.address
72+
)) as unknown as KeeperRegistryMock;
6373
await keeperRegistryMock.setUpkeepBalance(initialUpkeepBalance);
6474

6575
// setup uniswap router mock
6676
const SwapRouterMock = await ethers.getContractFactory("SwapRouterMock");
67-
swapRouterMock = await SwapRouterMock.deploy(
77+
swapRouterMock = (await SwapRouterMock.deploy(
6878
daiToken.address,
6979
linkToken.address
70-
);
80+
)) as unknown as SwapRouterMock;
7181

7282
// setup price feed mocks
7383
daiUsdPriceFeedMock = await MockV3Aggregator.deploy(
@@ -83,13 +93,14 @@ describe("DssVestTopUp", function () {
8393
const NetworkPaymentAdapterMock = await ethers.getContractFactory(
8494
"NetworkPaymentAdapterMock"
8595
);
86-
paymentAdapterMock = await NetworkPaymentAdapterMock.deploy(
96+
paymentAdapterMock = (await NetworkPaymentAdapterMock.deploy(
8797
daiToken.address,
8898
topUpAmount
89-
);
99+
)) as unknown as NetworkPaymentAdapterMock;
90100

91101
// setup topup contract
92-
topUp = await DssVestTopUp.deploy(
102+
const DssVestTopUp = await ethers.getContractFactory("DssVestTopUp");
103+
topUp = (await DssVestTopUp.deploy(
93104
fakeUpkeepId,
94105
keeperRegistryMock.address,
95106
daiToken.address,
@@ -100,7 +111,7 @@ describe("DssVestTopUp", function () {
100111
swapRouterMock.address,
101112
slippageToleranceBps,
102113
uniswapPath
103-
);
114+
)) as unknown as DssVestTopUp;
104115

105116
// set topup contract as treasury in payment adapter
106117
paymentAdapterMock.setTreasury(topUp.address);

0 commit comments

Comments
 (0)