Skip to content

[9.2] chore(axios,workflows-eng): remove axios from workflows connector utils (#267512)#267681

Merged
azasypkin merged 1 commit intoelastic:9.2from
azasypkin:backport/9.2/pr-267512
May 6, 2026
Merged

[9.2] chore(axios,workflows-eng): remove axios from workflows connector utils (#267512)#267681
azasypkin merged 1 commit intoelastic:9.2from
azasypkin:backport/9.2/pr-267512

Conversation

@azasypkin
Copy link
Copy Markdown
Contributor

Backport

This will backport the following commits from main to 9.2:

Questions ?

Please refer to the Backport tool documentation

…ls (elastic#267512)

## Summary

This PR removes the `axios` dependency for files owned by
`@elastic/workflows-eng`. Phase 2 of the axios migration tracked under
elastic#266556.

### Why

Node.js 22 ships a native `fetch` API built on undici, and every browser
Kibana targets supports `fetch` natively. Removing axios cuts one
runtime dependency and continues the per-team rollout that mirrors the
earlier node-fetch migration
([elastic#250719](elastic#250719) and siblings).

### Changes

-
`src/platform/plugins/shared/workflows_management/server/connectors/workflows/utils.ts`
previously imported `isAxiosError` from `axios` to decide whether to
extract `error.response.data.message`. The production caller
(`service.ts`) feeds errors thrown by the injected workflow services,
never AxiosError; the axios-specific branch was effectively dead
defensive code. Replaced the type-guard with duck-typed access to
`response?.data?.message` so any HTTP-client error of similar shape
still gets the upstream message extracted.
- `utils.test.ts` updated correspondingly: dropped the `AxiosError`
type-only import, renamed mocks to `httpError`, added `name: 'Error'` so
`as Error` casts type-check. All 5 existing test cases still pass.
- Removed the `workflows_management/server/connectors/workflows/**`
entry from `AXIOS_LEGACY_CONSUMERS` in `.eslintrc.js`. New axios usage
in this directory is now blocked by the existing global ban. The broader
`workflows_management/**` override that bans `*legacy*` imports still
applies.

### Behavior parity

The duck-typed access preserves the exact extraction logic: when the
error has `response.data.message`, that string is used; otherwise it
falls back to `error.message`. All five test cases (HTTP error with
`data.message`, HTTP error with empty `data`, HTTP error without
`response`, regular `Error`, error without message) pass without change
to expected output.
# Conflicts:
#	.eslintrc.js
@azasypkin azasypkin requested a review from kibanamachine as a code owner May 5, 2026 09:58
@azasypkin azasypkin added the backport This PR is a backport of another PR label May 5, 2026
@azasypkin azasypkin enabled auto-merge (squash) May 5, 2026 09:58
@kibanamachine
Copy link
Copy Markdown
Contributor

💛 Build succeeded, but was flaky

Failed CI Steps

Test Failures

  • [job] [logs] FTR Configs #55 / Ingest pipelines app Ingest Pipelines Pipelines list Pipelines tree Clicking on tree nodes open details panel for selected pipeline

Metrics [docs]

✅ unchanged

@azasypkin azasypkin merged commit 7691db5 into elastic:9.2 May 6, 2026
23 checks passed
@azasypkin azasypkin deleted the backport/9.2/pr-267512 branch May 6, 2026 08:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport This PR is a backport of another PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants