Skip to content

Commit ad14bec

Browse files
author
devgioele
authored
Merge pull request #8 from aboutbits/improve-eslint
Improve tsconfig and eslint
2 parents a607663 + 23c4f62 commit ad14bec

11 files changed

Lines changed: 168 additions & 95 deletions

.eslintignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules
2+
dist

.eslintrc.json

Lines changed: 50 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,54 @@
11
{
2-
"parser": "@typescript-eslint/parser",
3-
"env": {
4-
"browser": true,
5-
"node": true
6-
},
7-
"plugins": [
8-
"prettier",
9-
"@typescript-eslint",
10-
"jest",
11-
"import"
2+
"parser": "@typescript-eslint/parser",
3+
"env": {
4+
"browser": true,
5+
"node": true
6+
},
7+
"plugins": ["@typescript-eslint", "react", "react-hooks", "jest"],
8+
"extends": [
9+
"plugin:@typescript-eslint/recommended",
10+
"plugin:import/recommended",
11+
"plugin:import/typescript",
12+
"plugin:jest/recommended",
13+
"plugin:prettier/recommended"
14+
],
15+
"parserOptions": {
16+
"sourceType": "module",
17+
"ecmaVersion": 2018
18+
},
19+
"rules": {
20+
"react-hooks/rules-of-hooks": "error",
21+
"react-hooks/exhaustive-deps": "error",
22+
"@typescript-eslint/no-unused-vars": [
23+
"error",
24+
{
25+
"ignoreRestSiblings": true,
26+
"varsIgnorePattern": "^[iI]gnored",
27+
"argsIgnorePattern": "^_",
28+
"caughtErrorsIgnorePattern": "^ignore"
29+
}
1230
],
13-
"extends": [
14-
"prettier",
15-
"plugin:prettier/recommended",
16-
"plugin:@typescript-eslint/recommended",
17-
"plugin:import/typescript",
18-
"plugin:jest/recommended"
31+
"@typescript-eslint/member-delimiter-style": "off",
32+
"@typescript-eslint/explicit-function-return-type": "off",
33+
"@next/next/no-img-element": "off",
34+
"import/order": [
35+
"error",
36+
{
37+
"groups": [
38+
"builtin",
39+
"external",
40+
"unknown",
41+
"parent",
42+
"sibling",
43+
"index"
44+
]
45+
}
1946
],
20-
"parserOptions": {
21-
"sourceType": "module",
22-
"ecmaVersion": 2018
23-
},
24-
"rules": {
25-
"import/namespace": "off",
26-
"import/order": [
27-
"error"
28-
],
29-
"no-unused-vars": "off",
30-
"@typescript-eslint/no-unused-vars": "error",
31-
"@typescript-eslint/member-delimiter-style": "off",
32-
"@typescript-eslint/no-var-requires": "off",
33-
"@typescript-eslint/no-extra-semi": "off",
34-
"@typescript-eslint/no-explicit-any": "off"
35-
}
47+
"no-console": [
48+
"error",
49+
{
50+
"allow": ["warn", "error", "assert"]
51+
}
52+
]
53+
}
3654
}

package.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
"node": "^16"
99
},
1010
"scripts": {
11-
"build": "npm run build:node && npm run build:esm",
12-
"build:node": "tsc",
13-
"build:esm": "tsc --project tsconfig.esnext.json",
11+
"build": "rimraf dist && npm run build:types && npm run build:esm && npm run build:cjs",
12+
"build:esm": "tsc -p tsconfig.esm.json",
13+
"build:cjs": "tsc -p tsconfig.cjs.json",
14+
"build:types": "tsc -p tsconfig.types.json",
1415
"lint": "eslint --ext js,ts,tsx src",
1516
"lint:fix": "npm run lint -- --fix",
1617
"typecheck": "tsc --noEmit",
@@ -57,6 +58,8 @@
5758
"eslint-plugin-import": "^2.26.0",
5859
"eslint-plugin-jest": "^26.5.3",
5960
"eslint-plugin-prettier": "^4.1.0",
61+
"eslint-plugin-react": "^7.32.2",
62+
"eslint-plugin-react-hooks": "^4.6.0",
6063
"jest": "^28.1.1",
6164
"jest-environment-jsdom": "^28.1.1",
6265
"next": "^13.1.3",
@@ -65,8 +68,9 @@
6568
"react": "^18.0.0",
6669
"react-dom": "^18.0.0",
6770
"react-router-dom": "^6.7.0",
71+
"rimraf": "^5.0.1",
6872
"ts-jest": "^28.0.5",
69-
"typescript": "^4.7.4"
73+
"typescript": "^5.1.6"
7074
},
7175
"peerDependencies": {
7276
"next": "^12.0.0 || ^13.0.0",

src/inMemoryPagination.tsx

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,36 +10,39 @@ export const useQueryAndPagination: IUseQueryAndPagination = function (config) {
1010
size: pageSize,
1111
queryParameters: config?.defaultQueryParameters || {},
1212
}),
13-
[]
13+
[firstPage, pageSize, config?.defaultQueryParameters]
1414
)
1515

1616
const [state, setState] = useState(initialState)
1717

18-
const updateQuery = useCallback((queryParameters: QueryParameters) => {
19-
setState((currentState) => {
20-
const updatedQueryParameters = {
21-
...currentState.queryParameters,
22-
...queryParameters,
23-
}
18+
const updateQuery = useCallback(
19+
(queryParameters: QueryParameters) => {
20+
setState((currentState) => {
21+
const updatedQueryParameters = {
22+
...currentState.queryParameters,
23+
...queryParameters,
24+
}
2425

25-
for (const parameter in queryParameters) {
26-
if (
27-
!!config?.defaultQueryParameters &&
28-
(config.defaultQueryParameters[parameter] === undefined ||
29-
config.defaultQueryParameters[parameter] ===
30-
queryParameters[parameter])
31-
) {
32-
delete updatedQueryParameters[parameter]
26+
for (const parameter in queryParameters) {
27+
if (
28+
!!config?.defaultQueryParameters &&
29+
(config.defaultQueryParameters[parameter] === undefined ||
30+
config.defaultQueryParameters[parameter] ===
31+
queryParameters[parameter])
32+
) {
33+
delete updatedQueryParameters[parameter]
34+
}
3335
}
34-
}
3536

36-
return {
37-
...currentState,
38-
page: 0,
39-
queryParameters: updatedQueryParameters,
40-
}
41-
})
42-
}, [])
37+
return {
38+
...currentState,
39+
page: 0,
40+
queryParameters: updatedQueryParameters,
41+
}
42+
})
43+
},
44+
[config?.defaultQueryParameters]
45+
)
4346

4447
const clear = useCallback(() => {
4548
setState(() => {

src/nextRouterPagination.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { ParsedUrlQuery } from 'querystring'
22
import { useRouter } from 'next/router'
33
import { useCallback } from 'react'
4-
54
import { IndexType, IUseQueryAndPagination, QueryParameters } from './types'
65
import { convert } from './utils'
76

@@ -64,7 +63,7 @@ export const useQueryAndPagination: IUseQueryAndPagination = function (config) {
6463
) {
6564
delete params[parameter]
6665
} else {
67-
params[parameter] = queryParameters[parameter].toString()
66+
params[parameter] = queryParameters[parameter]?.toString()
6867
}
6968
}
7069

@@ -75,7 +74,7 @@ export const useQueryAndPagination: IUseQueryAndPagination = function (config) {
7574
query: params,
7675
})
7776
},
78-
[router]
77+
[router, config?.defaultQueryParameters]
7978
)
8079

8180
const clear = useCallback(() => {
@@ -93,7 +92,7 @@ export const useQueryAndPagination: IUseQueryAndPagination = function (config) {
9392
router.push({
9493
query: params,
9594
})
96-
}, [router])
95+
}, [router, config?.defaultQueryParameters])
9796

9897
return {
9998
queryParameters: extractCurrentQueryParameters(

src/reactRouterPagination.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export const useQueryAndPagination: IUseQueryAndPagination = function (config) {
4242
) {
4343
params.delete(parameter)
4444
} else {
45-
params.set(parameter, queryParameters[parameter].toString())
45+
params.set(parameter, queryParameters[parameter] as string)
4646
}
4747
}
4848

@@ -54,7 +54,7 @@ export const useQueryAndPagination: IUseQueryAndPagination = function (config) {
5454
search: params.toString(),
5555
})
5656
},
57-
[navigate, params]
57+
[navigate, params, config?.defaultQueryParameters, routerUrl]
5858
)
5959

6060
const clear = useCallback(() => {
@@ -69,7 +69,7 @@ export const useQueryAndPagination: IUseQueryAndPagination = function (config) {
6969
pathname: routerUrl,
7070
search: params.toString(),
7171
})
72-
}, [navigate, params])
72+
}, [navigate, params, config?.defaultQueryParameters, routerUrl])
7373

7474
const setPage = useCallback(
7575
(page: number) => {
@@ -79,7 +79,7 @@ export const useQueryAndPagination: IUseQueryAndPagination = function (config) {
7979
search: params.toString(),
8080
})
8181
},
82-
[navigate, params]
82+
[navigate, params, routerUrl]
8383
)
8484

8585
return {

tsconfig.cjs.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"extends": "./tsconfig.json",
3+
"compilerOptions": {
4+
"module": "commonjs",
5+
"outDir": "./dist/cjs",
6+
"declaration": false,
7+
"declarationMap": false,
8+
"sourceMap": false,
9+
"removeComments": true
10+
},
11+
"exclude": ["node_modules", "**/__test__/*", "**/__tests__/*"],
12+
"include": ["src"]
13+
}

tsconfig.esm.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"extends": "./tsconfig.json",
3+
"compilerOptions": {
4+
"module": "es2020",
5+
"outDir": "./dist/esm",
6+
"declaration": false,
7+
"declarationMap": false,
8+
"sourceMap": false,
9+
"removeComments": true
10+
},
11+
"exclude": ["node_modules", "**/__test__/*", "**/__tests__/*"],
12+
"include": ["src"]
13+
}

tsconfig.esnext.json

Lines changed: 0 additions & 16 deletions
This file was deleted.

tsconfig.json

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,31 @@
11
{
2-
"compilerOptions": {
3-
"target": "es5",
4-
"jsx": "react",
5-
"esModuleInterop": true,
6-
"outDir": "./dist",
7-
"declaration": true,
8-
"strict": true,
9-
"sourceMap": true,
10-
"skipLibCheck": true
11-
},
12-
"include": ["src"],
13-
"exclude": ["node_modules", "**/__test__/*", "**/__tests__/*"]
2+
"compilerOptions": {
3+
"target": "es2020",
4+
"moduleResolution": "node",
5+
"esModuleInterop": true,
6+
"resolveJsonModule": true,
7+
"strict": true,
8+
"noImplicitReturns": true,
9+
"noImplicitOverride": true,
10+
"noFallthroughCasesInSwitch": true,
11+
"noUncheckedIndexedAccess": true,
12+
"forceConsistentCasingInFileNames": true,
13+
"allowUnreachableCode": false,
14+
"downlevelIteration": true,
15+
"isolatedModules": true,
16+
"jsx": "react-jsx",
17+
"importHelpers": true,
18+
"outDir": "./dist",
19+
"declaration": true,
20+
"sourceMap": true,
21+
"skipLibCheck": true
22+
},
23+
"include": [
24+
"src"
25+
],
26+
"exclude": [
27+
"node_modules",
28+
"**/__test__/*",
29+
"**/__tests__/*"
30+
]
1431
}

0 commit comments

Comments
 (0)