Skip to content

Commit 36188f6

Browse files
EskiMojo14markerikson
authored andcommitted
use overloads for better type safety
1 parent fb1db6f commit 36188f6

File tree

1 file changed

+26
-12
lines changed
  • packages/rtk-codemods/transforms/createSliceReducerBuilder

1 file changed

+26
-12
lines changed

packages/rtk-codemods/transforms/createSliceReducerBuilder/index.ts

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,29 @@
11
/* eslint-disable node/no-extraneous-import */
22
/* eslint-disable node/no-unsupported-features/es-syntax */
33
import type { ExpressionKind, SpreadElementKind } from 'ast-types/gen/kinds';
4-
import type { JSCodeshift, ObjectExpression, ObjectProperty, Transform } from 'jscodeshift';
4+
import type {
5+
CallExpression,
6+
JSCodeshift,
7+
ObjectExpression,
8+
ObjectProperty,
9+
Transform,
10+
} from 'jscodeshift';
511

12+
function creatorCall(j: JSCodeshift, type: 'reducer', reducer: ExpressionKind): CallExpression;
13+
// eslint-disable-next-line no-redeclare
14+
function creatorCall(
15+
j: JSCodeshift,
16+
type: 'preparedReducer',
17+
prepare: ExpressionKind,
18+
reducer: ExpressionKind
19+
): CallExpression;
20+
// eslint-disable-next-line no-redeclare
621
function creatorCall(
722
j: JSCodeshift,
823
type: 'reducer' | 'preparedReducer',
9-
argumentsParam: Array<ExpressionKind | SpreadElementKind>
24+
...rest: Array<ExpressionKind | SpreadElementKind>
1025
) {
11-
return j.callExpression(
12-
j.memberExpression(j.identifier('create'), j.identifier(type)),
13-
argumentsParam
14-
);
26+
return j.callExpression(j.memberExpression(j.identifier('create'), j.identifier(type)), rest);
1527
}
1628

1729
export function reducerPropsToBuilderExpression(j: JSCodeshift, defNode: ObjectExpression) {
@@ -23,7 +35,7 @@ export function reducerPropsToBuilderExpression(j: JSCodeshift, defNode: ObjectE
2335
const { key, params, body } = property;
2436
finalProp = j.objectProperty(
2537
key,
26-
creatorCall(j, 'reducer', [j.arrowFunctionExpression(params, body)])
38+
creatorCall(j, 'reducer', j.arrowFunctionExpression(params, body))
2739
);
2840
break;
2941
}
@@ -76,15 +88,17 @@ export function reducerPropsToBuilderExpression(j: JSCodeshift, defNode: ObjectE
7688
if (preparedReducerParams.prepare && preparedReducerParams.reducer) {
7789
finalProp = j.objectProperty(
7890
key,
79-
creatorCall(j, 'preparedReducer', [
91+
creatorCall(
92+
j,
93+
'preparedReducer',
8094
preparedReducerParams.prepare,
81-
preparedReducerParams.reducer,
82-
])
95+
preparedReducerParams.reducer
96+
)
8397
);
8498
} else if (preparedReducerParams.reducer) {
8599
finalProp = j.objectProperty(
86100
key,
87-
creatorCall(j, 'reducer', [preparedReducerParams.reducer])
101+
creatorCall(j, 'reducer', preparedReducerParams.reducer)
88102
);
89103
}
90104
break;
@@ -95,7 +109,7 @@ export function reducerPropsToBuilderExpression(j: JSCodeshift, defNode: ObjectE
95109
case 'MemberExpression':
96110
case 'CallExpression': {
97111
const { value } = property;
98-
finalProp = j.objectProperty(key, creatorCall(j, 'reducer', [value]));
112+
finalProp = j.objectProperty(key, creatorCall(j, 'reducer', value));
99113
break;
100114
}
101115
}

0 commit comments

Comments
 (0)