Skip to content

Commit c7be31f

Browse files
authored
Merge pull request #4095 from aryaemami59/fix-type-tests-setup
Revamp type tests setup
2 parents f5b07fe + 6b80fdd commit c7be31f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+1219
-1069
lines changed

packages/toolkit/package.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,20 +89,21 @@
8989
"tslib": "^1.10.0",
9090
"tsup": "^7.2.0",
9191
"tsx": "^3.12.2",
92-
"typescript": "5.2",
92+
"typescript": "^5.3.3",
9393
"vitest": "^1.1.3",
9494
"yargs": "^15.3.1"
9595
},
9696
"scripts": {
97+
"clean": "rimraf dist",
9798
"run-build": "tsup",
98-
"build": "yarn rimraf dist && echo Compiling TS... && yarn tsc && yarn run-build",
99-
"build-only": "yarn rimraf dist && yarn run-build",
99+
"build": "yarn clean && echo Compiling TS... && yarn tsc -p tsconfig.build.json && yarn run-build",
100+
"build-only": "yarn clean && yarn run-build",
100101
"format": "prettier --write \"(src|examples)/**/*.{ts,tsx}\" \"**/*.md\"",
101102
"format:check": "prettier --list-different \"(src|examples)/**/*.{ts,tsx}\" \"docs/*/**.md\"",
102103
"lint": "eslint src examples",
103-
"test": "vitest --run",
104+
"test": "vitest --run --typecheck",
104105
"test:watch": "vitest --watch",
105-
"type-tests": "yarn tsc -p src/tests/tsconfig.typetests.json && yarn tsc -p src/query/tests/tsconfig.typetests.json",
106+
"type-tests": "yarn tsc -p tsconfig.test.json --noEmit",
106107
"prepack": "yarn build"
107108
},
108109
"files": [

packages/toolkit/src/dynamicMiddleware/tests/index.typetest.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { Action, UnknownAction, Middleware } from 'redux'
33
import type { ThunkDispatch } from 'redux-thunk'
44
import { createDynamicMiddleware } from '../index'
55
import { configureStore } from '../../configureStore'
6-
import { expectExactType, expectType } from '../../tests/helpers'
6+
import { expectExactType, expectType } from '../../tests/utils/typeTestHelpers'
77

88
const untypedInstance = createDynamicMiddleware()
99

packages/toolkit/src/dynamicMiddleware/tests/react.typetest.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { ReactReduxContextValue } from 'react-redux'
44
import type { Action, UnknownAction, Middleware } from 'redux'
55
import type { ThunkDispatch } from 'redux-thunk'
66
import { createDynamicMiddleware } from '../react'
7-
import { expectExactType, expectType } from '../../tests/helpers'
7+
import { expectExactType, expectType } from '../../tests/utils/typeTestHelpers'
88
/* eslint-disable no-lone-blocks */
99

1010
interface AppDispatch extends ThunkDispatch<number, undefined, UnknownAction> {

packages/toolkit/src/query/react/buildHooks.ts

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,56 @@
11
import type {
2-
UnknownAction,
32
Selector,
43
ThunkAction,
54
ThunkDispatch,
5+
UnknownAction,
66
} from '@reduxjs/toolkit'
7-
import type { DependencyList } from 'react'
8-
import {
9-
useCallback,
10-
useDebugValue,
11-
useEffect,
12-
useLayoutEffect,
13-
useMemo,
14-
useRef,
15-
useState,
16-
} from 'react'
17-
import { QueryStatus, skipToken } from '@reduxjs/toolkit/query'
18-
import type {
19-
QuerySubState,
20-
SubscriptionOptions,
21-
QueryKeys,
22-
RootState,
23-
} from '@reduxjs/toolkit/query'
247
import type {
8+
Api,
9+
ApiContext,
10+
ApiEndpointMutation,
11+
ApiEndpointQuery,
12+
CoreModule,
2513
EndpointDefinitions,
14+
MutationActionCreatorResult,
2615
MutationDefinition,
27-
QueryDefinition,
28-
QueryArgFrom,
29-
ResultTypeFrom,
30-
QueryResultSelectorResult,
3116
MutationResultSelectorResult,
32-
SkipToken,
17+
PrefetchOptions,
3318
QueryActionCreatorResult,
34-
MutationActionCreatorResult,
19+
QueryArgFrom,
20+
QueryDefinition,
21+
QueryKeys,
22+
QueryResultSelectorResult,
23+
QuerySubState,
24+
ResultTypeFrom,
25+
RootState,
3526
SerializeQueryArgs,
36-
Api,
37-
ApiContext,
27+
SkipToken,
28+
SubscriptionOptions,
3829
TSHelpersId,
3930
TSHelpersNoInfer,
4031
TSHelpersOverride,
41-
ApiEndpointMutation,
42-
ApiEndpointQuery,
43-
CoreModule,
44-
PrefetchOptions,
4532
} from '@reduxjs/toolkit/query'
33+
import { QueryStatus, skipToken } from '@reduxjs/toolkit/query'
34+
import type { DependencyList } from 'react'
35+
import {
36+
useCallback,
37+
useDebugValue,
38+
useEffect,
39+
useLayoutEffect,
40+
useMemo,
41+
useRef,
42+
useState,
43+
} from 'react'
4644

4745
import { shallowEqual } from 'react-redux'
48-
import type { ReactHooksModuleOptions } from './module'
49-
import { useStableQueryArgs } from './useSerializedStableValue'
46+
import type { BaseQueryFn } from '../baseQueryTypes'
47+
import type { SubscriptionSelectors } from '../core/buildMiddleware/types'
48+
import { defaultSerializeQueryArgs } from '../defaultSerializeQueryArgs'
5049
import type { UninitializedValue } from './constants'
5150
import { UNINITIALIZED_VALUE } from './constants'
51+
import type { ReactHooksModuleOptions } from './module'
52+
import { useStableQueryArgs } from './useSerializedStableValue'
5253
import { useShallowStableValue } from './useShallowStableValue'
53-
import type { BaseQueryFn } from '../baseQueryTypes'
54-
import { defaultSerializeQueryArgs } from '../defaultSerializeQueryArgs'
55-
import type { SubscriptionSelectors } from '../core/buildMiddleware/types'
5654

5755
// Copy-pasted from React-Redux
5856
export const useIsomorphicLayoutEffect =
@@ -1026,7 +1024,7 @@ export function buildHooks<Definitions extends EndpointDefinitions>({
10261024
[fixedCacheKey, promise, select]
10271025
)
10281026
const mutationSelector = useMemo(
1029-
() =>
1027+
(): Selector<RootState<Definitions, any, any>, any> =>
10301028
selectFromResult
10311029
? createSelector([selectDefaultResult], selectFromResult)
10321030
: selectDefaultResult,

packages/toolkit/src/query/react/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// does not have to import this into each source file it rewrites.
33
import { formatProdErrorMessage } from '@reduxjs/toolkit'
44

5-
import { coreModule, buildCreateApi } from '@reduxjs/toolkit/query'
5+
import { buildCreateApi, coreModule } from '@reduxjs/toolkit/query'
66
import { reactHooksModule, reactHooksModuleName } from './module'
77

88
export * from '@reduxjs/toolkit/query'
@@ -14,9 +14,9 @@ const createApi = /* @__PURE__ */ buildCreateApi(
1414
)
1515

1616
export type {
17+
TypedUseMutationResult,
1718
TypedUseQueryHookResult,
1819
TypedUseQueryStateResult,
1920
TypedUseQuerySubscriptionResult,
20-
TypedUseMutationResult,
2121
} from './buildHooks'
2222
export { createApi, reactHooksModule, reactHooksModuleName }

packages/toolkit/src/query/react/module.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
1-
import type { MutationHooks, QueryHooks } from './buildHooks'
2-
import { buildHooks } from './buildHooks'
3-
import { isQueryDefinition, isMutationDefinition } from '../endpointDefinitions'
41
import type {
2+
Api,
3+
BaseQueryFn,
54
EndpointDefinitions,
6-
QueryDefinition,
5+
Module,
76
MutationDefinition,
87
QueryArgFrom,
8+
QueryDefinition,
99
} from '@reduxjs/toolkit/query'
10-
import type { Api, Module } from '../apiTypes'
11-
import { capitalize } from '../utils'
10+
import { isMutationDefinition, isQueryDefinition } from '../endpointDefinitions'
1211
import { safeAssign } from '../tsHelpers'
13-
import type { BaseQueryFn } from '@reduxjs/toolkit/query'
12+
import { capitalize } from '../utils'
13+
import type { MutationHooks, QueryHooks } from './buildHooks'
14+
import { buildHooks } from './buildHooks'
1415

1516
import type { HooksWithUniqueNames } from './namedHooks'
1617

1718
import {
19+
batch as rrBatch,
1820
useDispatch as rrUseDispatch,
1921
useSelector as rrUseSelector,
2022
useStore as rrUseStore,
21-
batch as rrBatch,
2223
} from 'react-redux'
24+
import { createSelector as _createSelector } from 'reselect'
2325
import type { QueryKeys } from '../core/apiState'
2426
import type { PrefetchOptions } from '../core/module'
2527
import { countObjectKeys } from '../utils/countObjectKeys'
26-
import { createSelector as _createSelector } from 'reselect'
2728

2829
export const reactHooksModuleName = /* @__PURE__ */ Symbol()
2930
export type ReactHooksModule = typeof reactHooksModuleName
@@ -187,8 +188,8 @@ export const reactHooksModule = ({
187188
const anyApi = api as any as Api<
188189
any,
189190
Record<string, any>,
190-
string,
191-
string,
191+
any,
192+
any,
192193
ReactHooksModule
193194
>
194195
const { buildQueryHooks, buildMutationHook, usePrefetch } = buildHooks({

packages/toolkit/src/query/tests/buildCreateApi.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
createSelectorHook,
1515
createStoreHook,
1616
} from 'react-redux'
17-
import { setupApiStore, useRenderCounter } from './helpers'
17+
import { setupApiStore, useRenderCounter } from '../../tests/utils/helpers'
1818

1919
const MyContext = React.createContext<ReactReduxContextValue>(null as any)
2020

0 commit comments

Comments
 (0)