Skip to content

fix(types): align cjs cancelToken types#7414

Merged
jasonsaayman merged 3 commits intoaxios:v1.xfrom
mnahkies:mn/fix/cancel-token
Apr 26, 2026
Merged

fix(types): align cjs cancelToken types#7414
jasonsaayman merged 3 commits intoaxios:v1.xfrom
mnahkies:mn/fix/cancel-token

Conversation

@mnahkies
Copy link
Copy Markdown
Contributor

@mnahkies mnahkies commented Feb 18, 2026

the import/esm types include undefined (ref: https://github.com/axios/axios/blob/v1.x/index.d.ts#L457)

this was added recently in #5560 - but only to index.d.ts, which can break type-checking in projects using a mixture of cjs and esm, when exactOptionalPropertyTypes is enabled, as it makes the request config types incompatible with each-other.

you can see an example of the type error / this patch resolving it on mnahkies/openapi-code-generator#427


Summary by cubic

Aligns the CJS AxiosRequestConfig.cancelToken type with ESM by adding | undefined in index.d.cts. Prevents TypeScript assignability errors in mixed CJS/ESM projects with exactOptionalPropertyTypes enabled.

Description

Testing

  • Type-only change; no tests added.
  • Consider a DTS test to ensure CJS and ESM AxiosRequestConfig are mutually assignable with exactOptionalPropertyTypes: true.

Written for commit 9f51f1b. Summary will update on new commits.

the import/esm types include `undefined` (ref:
https://github.com/axios/axios/blob/v1.x/index.d.ts#L457)

this was added recently in axios#5560 - but only to `index.d.ts`,
which can break type-checking in projects using a mixture
of cjs and esm, when `exactOptionalPropertyTypes` is enabled,
as it makes the request config types incompatible with eachother.

you can see an example of the type error / this patch resolving
it on mnahkies/openapi-code-generator#427
mnahkies added a commit to mnahkies/openapi-code-generator that referenced this pull request Feb 18, 2026
bumping axios without this patch leads to type checking errors as seen
here
https://github.com/mnahkies/openapi-code-generator/actions/runs/22118781975/job/63933672790

```
...
  The types of 'config.transformRequest' are incompatible between these types.
    Type 'import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/axios/index").AxiosRequestTransformer | import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/axios/index").AxiosRequestTransformer[]' is not assignable to type 'import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/axios/index", { with: { "resolution-mode": "import" } }).AxiosRequestTransformer | import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/...'.
      Type 'AxiosRequestTransformer' is not assignable to type 'AxiosRequestTransformer | AxiosRequestTransformer[]'.
        Type 'import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/axios/index").AxiosRequestTransformer' is not assignable to type 'import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/axios/index", { with: { "resolution-mode": "import" } }).AxiosRequestTransformer'.
          The 'this' types of each signature are incompatible.
            Type 'import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/axios/index", { with: { "resolution-mode": "import" } }).InternalAxiosRequestConfig<any>' is not assignable to type 'import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/axios/index").InternalAxiosRequestConfig<any>' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.
              Types of property 'transformRequest' are incompatible.
                Type 'import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/axios/index", { with: { "resolution-mode": "import" } }).AxiosRequestTransformer | import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/...' is not assignable to type 'import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/axios/index").AxiosRequestTransformer | import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/axios@1.13.5/node_modules/axios/index").AxiosRequestTransformer[]'.
                  Type 'AxiosRequestTransformer' is not assignable to type 'AxiosRequestTransformer | AxiosRequestTransformer[]'.
```

The message is obtuse, but ultimately it's caused by
axios/axios#5560 creating an incompatibility
between the cjs and esm typings.

Upstream fix submitted: axios/axios#7414

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 1 file

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.

@jasonsaayman jasonsaayman merged commit b072ee8 into axios:v1.x Apr 26, 2026
34 of 36 checks passed
@mnahkies mnahkies deleted the mn/fix/cancel-token branch May 2, 2026 07:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants