Skip to content

Commit d0e8945

Browse files
authored
fix: axios client respects the defaultTimeout (#463)
🤦 the `axios` clients `defaultTimeout` parameter was essentially unused, possibly since the beginning. - Add `e2e` tests for `defaultTimeout`, and route level `timeout` for both `fetch` and `axios` - Apply `defaultTimeout` on `axios` clients _(fetch was already correct)_ thanks @henryhobhouse for spotting
1 parent 8481f18 commit d0e8945

21 files changed

Lines changed: 434 additions & 13 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import {
2+
createRouter,
3+
type GetTimeout,
4+
} from "../../generated/server/express/routes/timeout.ts"
5+
6+
const getTimeout: GetTimeout = async ({query}, respond) => {
7+
await new Promise((resolve) => setTimeout(resolve, query.ms))
8+
return respond.with200().body({ms: query.ms})
9+
}
10+
11+
export function createTimeoutRouter() {
12+
return createRouter({
13+
getTimeout,
14+
})
15+
}

e2e/openapi.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,28 @@ paths:
416416
application/json:
417417
schema: {}
418418

419+
/timeout:
420+
get:
421+
operationId: getTimeout
422+
tags:
423+
- timeout
424+
parameters:
425+
- name: ms
426+
in: query
427+
required: true
428+
schema:
429+
type: number
430+
responses:
431+
200:
432+
description: success
433+
content:
434+
application/json:
435+
schema:
436+
type: object
437+
properties:
438+
ms:
439+
type: number
440+
419441
components:
420442
responses:
421443
GetHeaders:

e2e/src/express.entrypoint.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {createMediaTypesRouter} from "./routes/express/media-types.ts"
55
import {createQueryParametersRouter} from "./routes/express/query-parameters.ts"
66
import {createRequestHeadersRouter} from "./routes/express/request-headers.ts"
77
import {createRouteMatchingRouter} from "./routes/express/route-matching.ts"
8+
import {createTimeoutRouter} from "./routes/express/timeout.ts"
89
import {createValidationRouter} from "./routes/express/validation.ts"
910
import {createErrorResponse} from "./shared.ts"
1011

@@ -17,13 +18,15 @@ function createRouter() {
1718
const mediaTypesRouter = createMediaTypesRouter()
1819
const queryParametersRouter = createQueryParametersRouter()
1920
const routeMatchingRouter = createRouteMatchingRouter()
21+
const timeoutRouter = createTimeoutRouter()
2022

2123
router.use(requestHeadersRouter)
2224
router.use(validationRouter)
2325
router.use(escapeHatchesRouter)
2426
router.use(mediaTypesRouter)
2527
router.use(queryParametersRouter)
2628
router.use(routeMatchingRouter)
29+
router.use(timeoutRouter)
2730

2831
return router
2932
}

e2e/src/generated/client/axios/client.ts

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/client/axios/models.ts

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/client/axios/schemas.ts

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/client/fetch/client.ts

Lines changed: 25 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/client/fetch/models.ts

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/client/fetch/schemas.ts

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/server/express/models.ts

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)