@dripfi/drip-sdk 1.3.6 → 1.3.8

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.
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const ethers_1 = require("ethers");
4
4
  class BaseDripContract {
5
+ contract;
5
6
  constructor(address, abi, signer) {
6
7
  this.contract = new ethers_1.ethers.Contract(address, abi, signer);
7
8
  }
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -20,22 +11,18 @@ class DripSwapAndRecyclerContract extends BaseDripContract_1.default {
20
11
  constructor(address, signer) {
21
12
  super(address, new ethers_1.ethers.utils.Interface(DripSwapAndRecyclerAbi_json_1.default), signer);
22
13
  }
23
- swapAndRecycle() {
24
- return __awaiter(this, arguments, void 0, function* (beneficiary = DripConfig_1.NULL_ADDRESS, path, amountInWithDecimals, minAmountOutWithDecimals, price, deadline, signature) {
25
- if (!this.contract.signer) {
26
- throw Error('No signer provided');
27
- }
28
- return yield this.contract.swapAndRecycle(beneficiary, path, amountInWithDecimals, minAmountOutWithDecimals, price, deadline, signature);
29
- });
14
+ async swapAndRecycle(beneficiary = DripConfig_1.NULL_ADDRESS, path, amountInWithDecimals, minAmountOutWithDecimals, price, deadline, signature) {
15
+ if (!this.contract.signer) {
16
+ throw Error('No signer provided');
17
+ }
18
+ return await this.contract.swapAndRecycle(beneficiary, path, amountInWithDecimals, minAmountOutWithDecimals, price, deadline, signature);
30
19
  }
31
- swapETHAndRecycle() {
32
- return __awaiter(this, arguments, void 0, function* (beneficiary = DripConfig_1.NULL_ADDRESS, path, minAmountOutWithDecimals, amountInEth, price, deadline, signature) {
33
- if (!this.contract.signer) {
34
- throw Error('No signer provided');
35
- }
36
- return yield this.contract.swapETHAndRecycle(beneficiary, path, minAmountOutWithDecimals, price, deadline, signature, {
37
- value: amountInEth
38
- });
20
+ async swapETHAndRecycle(beneficiary = DripConfig_1.NULL_ADDRESS, path, minAmountOutWithDecimals, amountInEth, price, deadline, signature) {
21
+ if (!this.contract.signer) {
22
+ throw Error('No signer provided');
23
+ }
24
+ return await this.contract.swapETHAndRecycle(beneficiary, path, minAmountOutWithDecimals, price, deadline, signature, {
25
+ value: amountInEth,
39
26
  });
40
27
  }
41
28
  }
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -19,21 +10,17 @@ class DripTokenContract extends BaseDripContract_1.default {
19
10
  constructor(address, signer) {
20
11
  super(address, new ethers_1.ethers.utils.Interface(DripTokenAbi_json_1.default), signer);
21
12
  }
22
- getAllowance(spender) {
23
- return __awaiter(this, void 0, void 0, function* () {
24
- if (!this.contract.signer) {
25
- throw Error('No signer provided');
26
- }
27
- return yield this.contract.allowance(yield this.contract.signer.getAddress(), spender);
28
- });
13
+ async getAllowance(spender) {
14
+ if (!this.contract.signer) {
15
+ throw Error('No signer provided');
16
+ }
17
+ return await this.contract.allowance(await this.contract.signer.getAddress(), spender);
29
18
  }
30
- approve(spender, amount) {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- if (!this.contract.signer) {
33
- throw Error('No signer provided');
34
- }
35
- return yield this.contract.approve(spender, amount.toString());
36
- });
19
+ async approve(spender, amount) {
20
+ if (!this.contract.signer) {
21
+ throw Error('No signer provided');
22
+ }
23
+ return await this.contract.approve(spender, amount.toString());
37
24
  }
38
25
  }
39
26
  exports.default = DripTokenContract;
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -20,13 +11,11 @@ class DripTokenRecyclerContract extends BaseDripContract_1.default {
20
11
  constructor(address, signer) {
21
12
  super(address, new ethers_1.ethers.utils.Interface(TokenRecyclerAbi_json_1.default), signer);
22
13
  }
23
- recycle(amountToRecycle_1) {
24
- return __awaiter(this, arguments, void 0, function* (amountToRecycle, beneficiary = DripConfig_1.NULL_ADDRESS, price, deadline, signature) {
25
- if (!this.contract.signer) {
26
- throw Error('No signer provided');
27
- }
28
- return yield this.contract.recycle(amountToRecycle, beneficiary, price, deadline, signature);
29
- });
14
+ async recycle(amountToRecycle, beneficiary = DripConfig_1.NULL_ADDRESS, price, deadline, signature) {
15
+ if (!this.contract.signer) {
16
+ throw Error('No signer provided');
17
+ }
18
+ return await this.contract.recycle(amountToRecycle, beneficiary, price, deadline, signature);
30
19
  }
31
20
  }
32
21
  exports.default = DripTokenRecyclerContract;
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -19,61 +10,47 @@ class PerqVestingContract extends BaseDripContract_1.default {
19
10
  constructor(address, signer) {
20
11
  super(address, new ethers_1.ethers.utils.Interface(PerqVestingAbi_json_1.default), signer);
21
12
  }
22
- start() {
23
- return __awaiter(this, void 0, void 0, function* () {
24
- if (!this.contract.signer) {
25
- throw Error('No signer provided');
26
- }
27
- return yield this.contract.start();
28
- });
29
- }
30
- end() {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- if (!this.contract.signer) {
33
- throw Error('No signer provided');
34
- }
35
- return yield this.contract.end();
36
- });
37
- }
38
- vested(beneficiary) {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- if (!this.contract.signer) {
41
- throw Error('No signer provided');
42
- }
43
- return yield this.contract.vested(beneficiary);
44
- });
45
- }
46
- releasable(beneficiary) {
47
- return __awaiter(this, void 0, void 0, function* () {
48
- if (!this.contract.signer) {
49
- throw Error('No signer provided');
50
- }
51
- return yield this.contract.releasable(beneficiary);
52
- });
53
- }
54
- releasableTotal(beneficiary) {
55
- return __awaiter(this, void 0, void 0, function* () {
56
- if (!this.contract.signer) {
57
- throw Error('No signer provided');
58
- }
59
- return yield this.contract.releasableTotal(beneficiary);
60
- });
61
- }
62
- claim(amount) {
63
- return __awaiter(this, void 0, void 0, function* () {
64
- if (!this.contract.signer) {
65
- throw Error('No signer provided');
66
- }
67
- return yield this.contract.claim(amount);
68
- });
69
- }
70
- burn(amount, price, deadline, signature) {
71
- return __awaiter(this, void 0, void 0, function* () {
72
- if (!this.contract.signer) {
73
- throw Error('No signer provided');
74
- }
75
- return yield this.contract.burn(amount, price, deadline, signature);
76
- });
13
+ async start() {
14
+ if (!this.contract.signer) {
15
+ throw Error('No signer provided');
16
+ }
17
+ return await this.contract.start();
18
+ }
19
+ async end() {
20
+ if (!this.contract.signer) {
21
+ throw Error('No signer provided');
22
+ }
23
+ return await this.contract.end();
24
+ }
25
+ async vested(beneficiary) {
26
+ if (!this.contract.signer) {
27
+ throw Error('No signer provided');
28
+ }
29
+ return await this.contract.vested(beneficiary);
30
+ }
31
+ async releasable(beneficiary) {
32
+ if (!this.contract.signer) {
33
+ throw Error('No signer provided');
34
+ }
35
+ return await this.contract.releasable(beneficiary);
36
+ }
37
+ async releasableTotal(beneficiary) {
38
+ if (!this.contract.signer) {
39
+ throw Error('No signer provided');
40
+ }
41
+ return await this.contract.releasableTotal(beneficiary);
42
+ }
43
+ async claim(amount) {
44
+ if (!this.contract.signer) {
45
+ throw Error('No signer provided');
46
+ }
47
+ return await this.contract.claim(amount);
48
+ }
49
+ async burn(amount, price, deadline, signature) {
50
+ if (!this.contract.signer) {
51
+ throw Error('No signer provided');
52
+ }
53
+ return await this.contract.burn(amount, price, deadline, signature);
77
54
  }
78
55
  }
79
56
  exports.default = PerqVestingContract;
package/dist/index.d.ts CHANGED
@@ -19,4 +19,4 @@ import WETH_TOKEN_ABI from './contracts/abi/WethTokenAbi.json';
19
19
  import DRIP_TOKEN_ABI from './contracts/abi/DripTokenAbi.json';
20
20
  import TOKEN_RECYCLER_ABI from './contracts/abi/TokenRecyclerAbi.json';
21
21
  import PERQ_VESTING_ABI from './contracts/abi/PerqVestingAbi.json';
22
- export { DRIP_SWAP_AND_RECYCLER_ABI, WETH_TOKEN_ABI, DRIP_TOKEN_ABI, TOKEN_RECYCLER_ABI, PERQ_VESTING_ABI, Vault, VaultReward, DripSdk, UserVaultBalance, UserBalance, VaultStats, NFTBoost, Strategy, StretchGoal, SwapInfo, VaultDepositToken, VaultType, MyPerqData, Chain, ELoyaltyCardTier, BeanEntry };
22
+ export { DRIP_SWAP_AND_RECYCLER_ABI, WETH_TOKEN_ABI, DRIP_TOKEN_ABI, TOKEN_RECYCLER_ABI, PERQ_VESTING_ABI, Vault, VaultReward, DripSdk, UserVaultBalance, UserBalance, VaultStats, NFTBoost, Strategy, StretchGoal, SwapInfo, VaultDepositToken, VaultType, MyPerqData, Chain, ELoyaltyCardTier, BeanEntry, };
package/dist/test.js CHANGED
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -34,12 +25,12 @@ const testConfigParams = {
34
25
  IRewardManager: '0xcE7F66BD505a80129Ef25b06207Ac49620A55522',
35
26
  IStrategyRegistry: '0xf978853Db777d00b1130Ea21d8d98E8710b0Bc56',
36
27
  ISpoolLens: '0x33Df6cf08Fbb10047e318989fE687294CD45A7B4',
37
- }
28
+ },
38
29
  },
39
30
  dripContracts: {
40
31
  DripTokenAddress: '0x707B4Cc05645713d8Ea04FBC7192A0f2c1503d6E', // Sepolia contract address
41
- DripTokenRecyclerAddress: '0xe943A1320402fcf41cDc04275e842654165dAB78' // Sepolia contract address
42
- }
32
+ DripTokenRecyclerAddress: '0xe943A1320402fcf41cDc04275e842654165dAB78', // Sepolia contract address
33
+ },
43
34
  };
44
35
  const configParams = {
45
36
  subgraphUrl: 'https://subgraph.satsuma-prod.com/49eb322da234/solidant/spool-v2-sepolia/api',
@@ -59,8 +50,8 @@ const configParams = {
59
50
  },
60
51
  dripContracts: {
61
52
  DripTokenAddress: '0x707B4Cc05645713d8Ea04FBC7192A0f2c1503d6E', // Sepolia contract address
62
- DripTokenRecyclerAddress: '0xe943A1320402fcf41cDc04275e842654165dAB78' // Sepolia contract address
63
- }
53
+ DripTokenRecyclerAddress: '0xe943A1320402fcf41cDc04275e842654165dAB78', // Sepolia contract address
54
+ },
64
55
  };
65
56
  const provider = new ethers_1.ethers.providers.StaticJsonRpcProvider('https://rpc.ankr.com/eth_sepolia', 11155111);
66
57
  exports.signer = new ethers_1.ethers.Wallet(privKey, provider);
@@ -73,20 +64,18 @@ const usdcTokenAddress = '0xa6b92fcd4ee124353c8a6acf1edb574f46f3f8df'; // USDC T
73
64
  const dripSdk = new DripSdk_1.default(DripConfig_1.Chain.SEPOLIA, exports.signer, 'https://localhost:3000');
74
65
  // 0x689Baa4821865Cb328F5E847fB6133DEB315A832
75
66
  // 0x9E9B6899Ea314dD553A99f4F49440d2CeD2b2848
76
- function main() {
77
- return __awaiter(this, void 0, void 0, function* () {
78
- try {
79
- // const res = await dripSdk.deposit(usdcTokenAddress,usdcVaultPerq, '1000');
80
- // const res = await dripSdk.withdraw(usdcVaultPerq, '1');
81
- // const res = await dripSdk.getDripTokenBalance(account2)
82
- // const res = await dripSdk.getOwnedLoyaltyCard()
83
- // const res = await dripSdk.getBeansBalance()
84
- // const res = await dripSdk.recycleTokens()
85
- // const res = await dripSdk.upgradeLoyaltyCard()
86
- }
87
- catch (error) {
88
- console.log(`Main error: ${error}`);
89
- }
90
- });
67
+ async function main() {
68
+ try {
69
+ // const res = await dripSdk.deposit(usdcTokenAddress,usdcVaultPerq, '1000');
70
+ // const res = await dripSdk.withdraw(usdcVaultPerq, '1');
71
+ // const res = await dripSdk.getDripTokenBalance(account2)
72
+ // const res = await dripSdk.getOwnedLoyaltyCard()
73
+ // const res = await dripSdk.getBeansBalance()
74
+ // const res = await dripSdk.recycleTokens()
75
+ // const res = await dripSdk.upgradeLoyaltyCard()
76
+ }
77
+ catch (error) {
78
+ console.log(`Main error: ${error}`);
79
+ }
91
80
  }
92
81
  main();
@@ -1,43 +1,15 @@
1
1
  import Asset from './Asset';
2
- import { CacheVaultRewards } from './CacheVaultRewards';
3
- import DepositToken from './DepositToken';
4
- import { NFTBoost } from './NFTBoost';
5
- import { Strategy } from './Strategy';
6
- type MyPerqData = {
7
- [key: string]: {
8
- vaultAddress: string;
9
- projectName: string;
10
- projectType: string;
11
- projectFeatured: boolean;
12
- liveUntil: string;
13
- coingeckoId?: string;
14
- depositTokenId: 'WETH' | 'USDC' | 'DAI';
15
- type: 'earn' | 'launch' | 'airdrop';
16
- rewardType: 'points' | 'token' | 'pnode shards';
17
- amountOfTokens?: number;
18
- vaultName: string;
19
- protocols: string[];
20
- apy: number;
21
- tvr: number;
22
- tokenPrice: number;
23
- change24h: number;
24
- volume24h: number;
25
- rewards: CacheVaultRewards[];
26
- strategies: Strategy[];
27
- boosters: NFTBoost[];
28
- depositToken: DepositToken;
29
- avgTvl: string;
30
- peakTvl: string;
31
- pendingDeposits: number;
32
- currentlyDeposited: number;
33
- pendingWithdraws: number;
34
- claimable: number;
35
- ethPrice: number;
36
- tokenRewards: {
37
- [token_address: string]: Asset & {
38
- amount: number;
39
- rewardsPerHour: number;
40
- };
2
+ import { Vault } from './Vault';
3
+ type MyPerqData = Vault & {
4
+ claimable: number;
5
+ pendingDeposits: number;
6
+ pendingWithdraws: number;
7
+ currentlyDeposited: number;
8
+ ethPrice: number;
9
+ tokenRewards: {
10
+ [token_address: string]: Asset & {
11
+ amount: number;
12
+ rewardsPerHour?: number;
41
13
  };
42
14
  };
43
15
  };
@@ -3,5 +3,5 @@ export type UserVaultBalance = {
3
3
  userBalance: string;
4
4
  pendingUserBalance: string;
5
5
  pendingWithdrawalBalance: string;
6
- withdrawableBalance: string;
6
+ claimableBalance: string;
7
7
  };
@@ -0,0 +1,43 @@
1
+ import globals from 'globals';
2
+ import pluginJs from '@eslint/js';
3
+ import tseslint from 'typescript-eslint';
4
+ import stylisticTs from '@stylistic/eslint-plugin-ts';
5
+
6
+ /** @type {import('eslint').Linter.Config[]} */
7
+ export default [
8
+ { files: ['**/*.{js,mjs,cjs,ts}'] },
9
+ {
10
+ languageOptions: {
11
+ globals: globals.browser,
12
+ },
13
+ },
14
+ pluginJs.configs.recommended,
15
+ ...tseslint.configs.recommended,
16
+ {
17
+ plugins: {
18
+ '@stylistic/ts': stylisticTs,
19
+ },
20
+
21
+ rules: {
22
+ '@typescript-eslint/no-explicit-any': 'off',
23
+ '@typescript-eslint/no-unused-vars': [
24
+ 'error',
25
+ {
26
+ caughtErrors: 'none',
27
+ },
28
+ ],
29
+ 'no-empty': [
30
+ 'error',
31
+ {
32
+ allowEmptyCatch: true,
33
+ },
34
+ ],
35
+ '@stylistic/ts/brace-style': 'error',
36
+ '@stylistic/ts/comma-spacing': 'error',
37
+ '@stylistic/ts/key-spacing': 'error',
38
+ '@stylistic/ts/keyword-spacing': 'error',
39
+ '@stylistic/ts/lines-around-comment': 'error',
40
+ '@stylistic/ts/semi': 'error',
41
+ },
42
+ },
43
+ ];
package/package.json CHANGED
@@ -1,25 +1,29 @@
1
1
  {
2
- "name": "@dripfi/drip-sdk",
3
- "version": "1.3.6",
4
- "description": "Drip SDK",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "prepublish": "npm run build",
9
- "build": "tsc",
10
- "publish": "npm publish --access public",
11
- "test": "echo \"Error: no test specified\" && exit 1"
12
- },
13
- "dependencies": {
14
- "@spool.fi/spool-v2-sdk": "2.0.44",
15
- "ethers": "^5.7.2"
16
- },
17
- "author": "",
18
- "license": "ISC",
19
- "devDependencies": {
20
- "@typescript-eslint/eslint-plugin": "^7.12.0",
21
- "@typescript-eslint/parser": "^7.12.0",
22
- "eslint": "^8.57.0",
23
- "typescript": "^5.4.5"
24
- }
2
+ "name": "@dripfi/drip-sdk",
3
+ "version": "1.3.8",
4
+ "description": "Drip SDK",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "prepublish": "npm run build",
9
+ "build": "tsc",
10
+ "publish": "npm publish --access public",
11
+ "test": "echo \"Error: no test specified\" && exit 1",
12
+ "lint": "eslint src/**/*.ts",
13
+ "pretty": "prettier --write \"./**/*.{js,jsx,mjs,cjs,ts,tsx,json}\""
14
+ },
15
+ "dependencies": {
16
+ "@spool.fi/spool-v2-sdk": "2.0.44",
17
+ "ethers": "^5.7.2"
18
+ },
19
+ "author": "",
20
+ "license": "ISC",
21
+ "devDependencies": {
22
+ "typescript-eslint": "^8.19.1",
23
+ "eslint": "^8.57.0",
24
+ "typescript": "^5.4.5",
25
+ "prettier-eslint": "^16.3.0",
26
+ "prettier": "^3.4.2",
27
+ "@stylistic/eslint-plugin-ts": "^2.12.1"
28
+ }
25
29
  }
package/.eslintrc.json DELETED
@@ -1,38 +0,0 @@
1
- {
2
- "env": {
3
- "browser": true,
4
- "es2021": true
5
- },
6
- "extends": [
7
- "eslint:recommended",
8
- "plugin:@typescript-eslint/recommended"
9
- ],
10
- "parser": "@typescript-eslint/parser",
11
- "parserOptions": {
12
- "ecmaVersion": "latest",
13
- "sourceType": "module"
14
- },
15
- "plugins": [
16
- "@typescript-eslint"
17
- ],
18
- "rules": {
19
- "quotes": [
20
- "error",
21
- "single"
22
- ],
23
- "semi": "off",
24
- "@typescript-eslint/semi": "error",
25
- "@typescript-eslint/no-explicit-any": "off",
26
- "curly": "error"
27
- },
28
- "overrides": [
29
- {
30
- "files": [
31
- "tests/**/*"
32
- ],
33
- "env": {
34
- "jest": true
35
- }
36
- }
37
- ]
38
- }