diff --git a/.babelrc.js b/.babelrc.js
index c77ebd6..1977f41 100644
--- a/.babelrc.js
+++ b/.babelrc.js
@@ -7,13 +7,13 @@ export default {
'@babel/preset-env',
{
targets: {
- ie: 11
+ ie: 11,
},
loose: true,
- modules: cjs ? 'cjs' : false
- }
+ modules: cjs ? 'cjs' : false,
+ },
],
- '@babel/preset-typescript'
+ '@babel/preset-typescript',
],
- plugins: [cjs && ['@babel/transform-modules-commonjs']].filter(Boolean)
+ plugins: [cjs && ['@babel/transform-modules-commonjs']].filter(Boolean),
}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index a09cd88..da41d4f 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -145,7 +145,7 @@ jobs:
'node-standard',
'node-esm',
'react-native',
- 'expo'
+ 'expo',
]
steps:
- name: Checkout repo
diff --git a/.prettierrc.json b/.prettierrc.json
index e7bcdcc..60cbbf2 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -2,6 +2,5 @@
"semi": false,
"singleQuote": true,
"tabWidth": 2,
- "trailingComma": "none",
"arrowParens": "avoid"
}
diff --git a/README.md b/README.md
index e3c5a3b..c09e789 100644
--- a/README.md
+++ b/README.md
@@ -23,8 +23,8 @@ import filtersReducer from './features/filters/filtersSlice'
const store = configureStore({
reducer: {
todos: todosReducer,
- filters: filtersReducer
- }
+ filters: filtersReducer,
+ },
})
// The thunk middleware was automatically added
@@ -86,9 +86,9 @@ const store = configureStore({
middleware: getDefaultMiddleware =>
getDefaultMiddleware({
thunk: {
- extraArgument: myCustomApiService
- }
- })
+ extraArgument: myCustomApiService,
+ },
+ }),
})
// later
@@ -110,10 +110,10 @@ const store = configureStore({
thunk: {
extraArgument: {
api: myCustomApiService,
- otherValue: 42
- }
- }
- })
+ otherValue: 42,
+ },
+ },
+ }),
})
// later
@@ -188,7 +188,7 @@ const INCREMENT_COUNTER = 'INCREMENT_COUNTER'
function increment() {
return {
- type: INCREMENT_COUNTER
+ type: INCREMENT_COUNTER,
}
}
@@ -264,7 +264,7 @@ function makeASandwich(forPerson, secretSauce) {
return {
type: 'MAKE_SANDWICH',
forPerson,
- secretSauce
+ secretSauce,
}
}
@@ -273,14 +273,14 @@ function apologize(fromPerson, toPerson, error) {
type: 'APOLOGIZE',
fromPerson,
toPerson,
- error
+ error,
}
}
function withdrawMoney(amount) {
return {
type: 'WITHDRAW',
- amount
+ amount,
}
}
@@ -302,7 +302,7 @@ function makeASandwichWithSecretSauce(forPerson) {
return function (dispatch) {
return fetchSecretSauce().then(
sauce => dispatch(makeASandwich(forPerson, sauce)),
- error => dispatch(apologize('The Sandwich Shop', forPerson, error))
+ error => dispatch(apologize('The Sandwich Shop', forPerson, error)),
)
}
}
@@ -339,16 +339,16 @@ function makeSandwichesForEverybody() {
.then(() =>
Promise.all([
dispatch(makeASandwichWithSecretSauce('Me')),
- dispatch(makeASandwichWithSecretSauce('My wife'))
- ])
+ dispatch(makeASandwichWithSecretSauce('My wife')),
+ ]),
)
.then(() => dispatch(makeASandwichWithSecretSauce('Our kids')))
.then(() =>
dispatch(
getState().myMoney > 42
? withdrawMoney(42)
- : apologize('Me', 'The Sandwich Shop')
- )
+ : apologize('Me', 'The Sandwich Shop'),
+ ),
)
}
}
@@ -359,7 +359,7 @@ function makeSandwichesForEverybody() {
store
.dispatch(makeSandwichesForEverybody())
.then(() =>
- response.send(ReactDOMServer.renderToString())
+ response.send(ReactDOMServer.renderToString()),
)
// I can also dispatch a thunk async action from a component
@@ -385,7 +385,7 @@ class SandwichShop extends Component {
}
export default connect(state => ({
- sandwiches: state.sandwiches
+ sandwiches: state.sandwiches,
}))(SandwichShop)
```
diff --git a/package.json b/package.json
index 519af46..23f4c0d 100644
--- a/package.json
+++ b/package.json
@@ -54,7 +54,7 @@
"cross-env": "^7.0.3",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0",
- "prettier": "^2.4.1",
+ "prettier": "^3.3.3",
"redux": "^5",
"rimraf": "^3.0.2",
"tsup": "7.0.0",
diff --git a/src/index.ts b/src/index.ts
index 63baac1..9ba74ce 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -5,7 +5,7 @@ export type {
ThunkAction,
ThunkActionDispatch,
ThunkDispatch,
- ThunkMiddleware
+ ThunkMiddleware,
} from './types'
/** A function that accepts a potential "extra argument" value to be injected later,
@@ -14,7 +14,7 @@ export type {
function createThunkMiddleware<
State = any,
BasicAction extends Action = AnyAction,
- ExtraThunkArg = undefined
+ ExtraThunkArg = undefined,
>(extraArgument?: ExtraThunkArg) {
// Standard Redux middleware definition pattern:
// See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware
diff --git a/src/types.ts b/src/types.ts
index 973e4ac..41a01c7 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -14,14 +14,14 @@ import type { Action, AnyAction, Middleware } from 'redux'
export interface ThunkDispatch<
State,
ExtraThunkArg,
- BasicAction extends Action
+ BasicAction extends Action,
> {
// When the thunk middleware is added, `store.dispatch` now has three overloads (NOTE: the order here matters for correct behavior and is very fragile - do not reorder these!):
// 1) The specific thunk function overload
/** Accepts a thunk function, runs it, and returns whatever the thunk itself returns */
(
- thunkAction: ThunkAction
+ thunkAction: ThunkAction,
): ReturnType
// 2) The base overload.
@@ -32,7 +32,7 @@ export interface ThunkDispatch<
// with TS inference ( see https://github.com/microsoft/TypeScript/issues/14107 )
/** A union of the other two overloads for TS inference purposes */
(
- action: Action | ThunkAction
+ action: Action | ThunkAction,
): Action | ReturnType
}
@@ -53,11 +53,11 @@ export type ThunkAction<
ReturnType,
State,
ExtraThunkArg,
- BasicAction extends Action
+ BasicAction extends Action,
> = (
dispatch: ThunkDispatch,
getState: () => State,
- extraArgument: ExtraThunkArg
+ extraArgument: ExtraThunkArg,
) => ReturnType
/**
@@ -69,7 +69,7 @@ export type ThunkAction<
* @template ActionCreator Thunk action creator to be wrapped
*/
export type ThunkActionDispatch<
- ActionCreator extends (...args: any[]) => ThunkAction
+ ActionCreator extends (...args: any[]) => ThunkAction,
> = (
...args: Parameters
) => ReturnType>
@@ -83,7 +83,7 @@ export type ThunkActionDispatch<
export type ThunkMiddleware<
State = any,
BasicAction extends Action = AnyAction,
- ExtraThunkArg = undefined
+ ExtraThunkArg = undefined,
> = Middleware<
ThunkDispatch,
State,
diff --git a/test/index.test.ts b/test/index.test.ts
index 15b403d..1c22a62 100644
--- a/test/index.test.ts
+++ b/test/index.test.ts
@@ -5,7 +5,7 @@ describe('thunk middleware', () => {
const doGetState = () => 42
const nextHandler = thunkMiddleware({
dispatch: doDispatch,
- getState: doGetState
+ getState: doGetState,
})
it('must return a function to handle next', () => {
@@ -90,7 +90,7 @@ describe('thunk middleware', () => {
// @ts-ignore
withExtraArgument(extraArg)({
dispatch: doDispatch,
- getState: doGetState
+ getState: doGetState,
})()((dispatch: any, getState: any, arg: any) => {
expect(dispatch).toBe(doDispatch)
expect(getState).toBe(doGetState)
diff --git a/tsup.config.ts b/tsup.config.ts
index dbdf49a..ab0cc83 100644
--- a/tsup.config.ts
+++ b/tsup.config.ts
@@ -4,10 +4,10 @@ import { defineConfig } from 'tsup'
export default defineConfig(options => {
const commonOptions: Partial = {
entry: {
- 'redux-thunk': 'src/index.ts'
+ 'redux-thunk': 'src/index.ts',
},
tsconfig: 'tsconfig.build.json',
- ...options
+ ...options,
}
return [
@@ -16,7 +16,7 @@ export default defineConfig(options => {
format: ['esm'],
outExtension: () => ({ js: '.mjs' }),
dts: true,
- clean: true
+ clean: true,
},
// Support Webpack 4 by pointing `"module"` to a file with a `.js` extension
{
@@ -25,13 +25,13 @@ export default defineConfig(options => {
target: 'es2017',
dts: false,
outExtension: () => ({ js: '.js' }),
- entry: { 'redux-thunk.legacy-esm': 'src/index.ts' }
+ entry: { 'redux-thunk.legacy-esm': 'src/index.ts' },
},
{
...commonOptions,
format: 'cjs',
outDir: './dist/cjs/',
- outExtension: () => ({ js: '.cjs' })
- }
+ outExtension: () => ({ js: '.cjs' }),
+ },
]
})
diff --git a/typescript_test/index.test-d.ts b/typescript_test/index.test-d.ts
index 5a7b112..697bc48 100644
--- a/typescript_test/index.test-d.ts
+++ b/typescript_test/index.test-d.ts
@@ -5,7 +5,7 @@ import type {
ThunkAction,
ThunkActionDispatch,
ThunkDispatch,
- ThunkMiddleware
+ ThunkMiddleware,
} from 'redux-thunk'
import { thunk, withExtraArgument } from 'redux-thunk'
@@ -19,7 +19,7 @@ describe('type tests', () => {
type ThunkResult = ThunkAction
const initialState: State = {
- foo: 'foo'
+ foo: 'foo',
}
function fakeReducer(state: State = initialState): State {
@@ -28,7 +28,7 @@ describe('type tests', () => {
const store = createStore(
fakeReducer,
- applyMiddleware(thunk as ThunkMiddleware)
+ applyMiddleware(thunk as ThunkMiddleware),
)
function anotherThunkAction(): ThunkResult {
@@ -89,7 +89,7 @@ describe('type tests', () => {
const dispatch: ThunkDispatch = undefined as any
function dispatchWrap(
- action: Action | ThunkAction
+ action: Action | ThunkAction,
) {
// Should not have an error here thanks to the extra union overload
expectTypeOf(dispatch).toBeCallableWith(action)
@@ -100,8 +100,8 @@ describe('type tests', () => {
const storeThunkArg = createStore(
fakeReducer,
applyMiddleware(
- withExtraArgument('bar') as ThunkMiddleware
- )
+ withExtraArgument('bar') as ThunkMiddleware,
+ ),
)
expectTypeOf(storeThunkArg.dispatch).toBeCallableWith({ type: 'FOO' })
@@ -123,20 +123,20 @@ describe('type tests', () => {
test('call dispatch async with any action', () => {})
const callDispatchAsync_anyAction = (
- dispatch: ThunkDispatch
+ dispatch: ThunkDispatch,
) => {
const asyncThunk = (): ThunkResult> => () =>
- ({} as Promise)
+ ({}) as Promise
expectTypeOf(dispatch).toBeCallableWith(asyncThunk())
}
test('call dispatch async with specific actions', () => {
const callDispatchAsync_specificActions = (
- dispatch: ThunkDispatch
+ dispatch: ThunkDispatch,
) => {
const asyncThunk = (): ThunkResult> => () =>
- ({} as Promise)
+ ({}) as Promise
expectTypeOf(dispatch).toBeCallableWith(asyncThunk())
}
@@ -144,9 +144,9 @@ describe('type tests', () => {
test('call dispatch any', () => {
const callDispatchAny = (
- dispatch: ThunkDispatch
+ dispatch: ThunkDispatch,
) => {
- const asyncThunk = (): any => () => ({} as Promise)
+ const asyncThunk = (): any => () => ({}) as Promise
dispatch(asyncThunk()) // result is any
.then(() => console.log('done'))
@@ -176,9 +176,9 @@ describe('type tests', () => {
{
anotherThunkAction,
promiseThunkAction,
- standardAction
+ standardAction,
},
- store.dispatch
+ store.dispatch,
)
expectTypeOf(actions.anotherThunkAction()).toBeString()
diff --git a/vitest.config.mts b/vitest.config.mts
index 43fbe0c..943f443 100644
--- a/vitest.config.mts
+++ b/vitest.config.mts
@@ -6,11 +6,11 @@ export default defineConfig({
alias: {
'redux-thunk': new URL(
process.env.TEST_DIST ? 'node_modules/redux-thunk' : 'src/index.ts',
- import.meta.url
+ import.meta.url,
).pathname,
// this mapping is disabled as we want `dist` imports in the tests only to be used for "type-only" imports which don't play a role for jest
- '@internal': new URL('src', import.meta.url).pathname
- }
- }
+ '@internal': new URL('src', import.meta.url).pathname,
+ },
+ },
})
diff --git a/yarn.lock b/yarn.lock
index 49838c8..4bd9605 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2842,12 +2842,12 @@ __metadata:
languageName: node
linkType: hard
-"prettier@npm:^2.4.1":
- version: 2.8.7
- resolution: "prettier@npm:2.8.7"
+"prettier@npm:^3.3.3":
+ version: 3.3.3
+ resolution: "prettier@npm:3.3.3"
bin:
- prettier: bin-prettier.js
- checksum: 10/5d5acc2015dcd9ae4033c0ea3189820920149137100750c897d384bc9058c79c78af94ca892f3bc7c5b6da0661a50357e8eb9eb455c4c1da156b1d0757f54a8a
+ prettier: bin/prettier.cjs
+ checksum: 10/5beac1f30b5b40162532b8e2f7c3a4eb650910a2695e9c8512a62ffdc09dae93190c29db9107fa7f26d1b6c71aad3628ecb9b5de1ecb0911191099be109434d7
languageName: node
linkType: hard
@@ -2937,7 +2937,7 @@ __metadata:
cross-env: "npm:^7.0.3"
eslint: "npm:^7.32.0"
eslint-config-prettier: "npm:^8.3.0"
- prettier: "npm:^2.4.1"
+ prettier: "npm:^3.3.3"
redux: "npm:^5"
rimraf: "npm:^3.0.2"
tsup: "npm:7.0.0"