Skip to content

fix(types): align cjs cancelToken types#7414

Open
mnahkies wants to merge 1 commit intoaxios:v1.xfrom
mnahkies:mn/fix/cancel-token
Open

fix(types): align cjs cancelToken types#7414
mnahkies wants to merge 1 commit intoaxios:v1.xfrom
mnahkies:mn/fix/cancel-token

Conversation

@mnahkies
Copy link

@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 CommonJS type for request config cancelToken with the ESM definition by adding “| undefined”. Fixes TypeScript errors in mixed CJS/ESM projects when exactOptionalPropertyTypes is enabled.

Description

Testing

  • Type-only change; no runtime impact; no tests added.
  • Optional: add a small dts test ensuring AxiosRequestConfig from CJS and ESM are mutually assignable with exactOptionalPropertyTypes enabled.

Written for commit fed4d6d. 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/[email protected]/node_modules/axios/index").AxiosRequestTransformer | import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/[email protected]/node_modules/axios/index").AxiosRequestTransformer[]' is not assignable to type 'import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/[email protected]/node_modules/axios/index", { with: { "resolution-mode": "import" } }).AxiosRequestTransformer | import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/[email protected]/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/[email protected]/node_modules/axios/index").AxiosRequestTransformer' is not assignable to type 'import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/node_modules/axios/index", { with: { "resolution-mode": "import" } }).AxiosRequestTransformer | import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/[email protected]/node_modules/...' is not assignable to type 'import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/[email protected]/node_modules/axios/index").AxiosRequestTransformer | import("/home/runner/work/openapi-code-generator/openapi-code-generator/node_modules/.pnpm/[email protected]/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
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.

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.

1 participant