Skip to content

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

Merged
kibanamachine merged 1 commit intoelastic:9.4from
kibanamachine:backport/9.4/pr-267512
May 5, 2026
Merged

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

Conversation

@kibanamachine
Copy link
Copy Markdown
Contributor

Backport

This will backport the following commits from main to 9.4:

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.

(cherry picked from commit 5f51f6c)
@kibanamachine kibanamachine added the backport This PR is a backport of another PR label May 5, 2026
@kibanamachine kibanamachine enabled auto-merge (squash) May 5, 2026 08:15
@botelastic botelastic Bot added the Team:One Workflow Team label for One Workflow (Workflow automation) label May 5, 2026
@kibanamachine
Copy link
Copy Markdown
Contributor Author

💚 Build Succeeded

Metrics [docs]

✅ unchanged

cc @azasypkin

@kibanamachine kibanamachine merged commit de5f2b8 into elastic:9.4 May 5, 2026
37 checks passed
azasypkin added a commit that referenced this pull request May 6, 2026
…or utils (#267512) (#267681)

# Backport

This will backport the following commits from `main` to `9.2`:
- [chore(axios,workflows-eng): remove axios from workflows connector
utils (#267512)](#267512)

<!--- Backport version: 11.0.2 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Aleh
Zasypkin","email":"aleh.zasypkin@elastic.co"},"sourceCommit":{"committedDate":"2026-05-05T08:05:42Z","message":"chore(axios,workflows-eng):
remove axios from workflows connector utils (#267512)\n\n##
Summary\n\nThis PR removes the `axios` dependency for files owned
by\n`@elastic/workflows-eng`. Phase 2 of the axios migration tracked
under\n#266556.\n\n### Why\n\nNode.js 22 ships a native `fetch` API
built on undici, and every browser\nKibana targets supports `fetch`
natively. Removing axios cuts one\nruntime dependency and continues the
per-team rollout that mirrors the\nearlier node-fetch
migration\n([#250719](#250719) and
siblings).\n\n###
Changes\n\n-\n`src/platform/plugins/shared/workflows_management/server/connectors/workflows/utils.ts`\npreviously
imported `isAxiosError` from `axios` to decide whether to\nextract
`error.response.data.message`. The production caller\n(`service.ts`)
feeds errors thrown by the injected workflow services,\nnever
AxiosError; the axios-specific branch was effectively dead\ndefensive
code. Replaced the type-guard with duck-typed access
to\n`response?.data?.message` so any HTTP-client error of similar
shape\nstill gets the upstream message extracted.\n- `utils.test.ts`
updated correspondingly: dropped the `AxiosError`\ntype-only import,
renamed mocks to `httpError`, added `name: 'Error'` so\n`as Error` casts
type-check. All 5 existing test cases still pass.\n- Removed the
`workflows_management/server/connectors/workflows/**`\nentry from
`AXIOS_LEGACY_CONSUMERS` in `.eslintrc.js`. New axios usage\nin this
directory is now blocked by the existing global ban. The
broader\n`workflows_management/**` override that bans `*legacy*` imports
still\napplies.\n\n### Behavior parity\n\nThe duck-typed access
preserves the exact extraction logic: when the\nerror has
`response.data.message`, that string is used; otherwise it\nfalls back
to `error.message`. All five test cases (HTTP error
with\n`data.message`, HTTP error with empty `data`, HTTP error
without\n`response`, regular `Error`, error without message) pass
without change\nto expected
output.","sha":"5f51f6c8463974089a6d781c56dcdb928557c52b","branchLabelMapping":{"^v9.5.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["chore","release_note:skip","dependencies","backport:all-open","Team:One
Workflow","v9.4.0","v9.5.0"],"title":"chore(axios,workflows-eng): remove
axios from workflows connector
utils","number":267512,"url":"https://github.com/elastic/kibana/pull/267512","mergeCommit":{"message":"chore(axios,workflows-eng):
remove axios from workflows connector utils (#267512)\n\n##
Summary\n\nThis PR removes the `axios` dependency for files owned
by\n`@elastic/workflows-eng`. Phase 2 of the axios migration tracked
under\n#266556.\n\n### Why\n\nNode.js 22 ships a native `fetch` API
built on undici, and every browser\nKibana targets supports `fetch`
natively. Removing axios cuts one\nruntime dependency and continues the
per-team rollout that mirrors the\nearlier node-fetch
migration\n([#250719](#250719) and
siblings).\n\n###
Changes\n\n-\n`src/platform/plugins/shared/workflows_management/server/connectors/workflows/utils.ts`\npreviously
imported `isAxiosError` from `axios` to decide whether to\nextract
`error.response.data.message`. The production caller\n(`service.ts`)
feeds errors thrown by the injected workflow services,\nnever
AxiosError; the axios-specific branch was effectively dead\ndefensive
code. Replaced the type-guard with duck-typed access
to\n`response?.data?.message` so any HTTP-client error of similar
shape\nstill gets the upstream message extracted.\n- `utils.test.ts`
updated correspondingly: dropped the `AxiosError`\ntype-only import,
renamed mocks to `httpError`, added `name: 'Error'` so\n`as Error` casts
type-check. All 5 existing test cases still pass.\n- Removed the
`workflows_management/server/connectors/workflows/**`\nentry from
`AXIOS_LEGACY_CONSUMERS` in `.eslintrc.js`. New axios usage\nin this
directory is now blocked by the existing global ban. The
broader\n`workflows_management/**` override that bans `*legacy*` imports
still\napplies.\n\n### Behavior parity\n\nThe duck-typed access
preserves the exact extraction logic: when the\nerror has
`response.data.message`, that string is used; otherwise it\nfalls back
to `error.message`. All five test cases (HTTP error
with\n`data.message`, HTTP error with empty `data`, HTTP error
without\n`response`, regular `Error`, error without message) pass
without change\nto expected
output.","sha":"5f51f6c8463974089a6d781c56dcdb928557c52b"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"9.4","label":"v9.4.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"url":"https://github.com/elastic/kibana/pull/267665","number":267665,"state":"MERGED","mergeCommit":{"sha":"de5f2b8ecdfd4db23cafcabe81d376f0b54f251f","message":"[9.4]
chore(axios,workflows-eng): remove axios from workflows connector utils
(#267512) (#267665)\n\n# Backport\n\nThis will backport the following
commits from `main` to `9.4`:\n- [chore(axios,workflows-eng): remove
axios from workflows connector\nutils
(#267512)](https://github.com/elastic/kibana/pull/267512)\n\n\n\n###
Questions ?\nPlease refer to the [Backport
tool\ndocumentation](https://github.com/sorenlouv/backport)\n\n\n\nCo-authored-by:
Aleh Zasypkin
<aleh.zasypkin@elastic.co>"}},{"branch":"main","label":"v9.5.0","branchLabelMappingKey":"^v9.5.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/267512","number":267512,"mergeCommit":{"message":"chore(axios,workflows-eng):
remove axios from workflows connector utils (#267512)\n\n##
Summary\n\nThis PR removes the `axios` dependency for files owned
by\n`@elastic/workflows-eng`. Phase 2 of the axios migration tracked
under\n#266556.\n\n### Why\n\nNode.js 22 ships a native `fetch` API
built on undici, and every browser\nKibana targets supports `fetch`
natively. Removing axios cuts one\nruntime dependency and continues the
per-team rollout that mirrors the\nearlier node-fetch
migration\n([#250719](#250719) and
siblings).\n\n###
Changes\n\n-\n`src/platform/plugins/shared/workflows_management/server/connectors/workflows/utils.ts`\npreviously
imported `isAxiosError` from `axios` to decide whether to\nextract
`error.response.data.message`. The production caller\n(`service.ts`)
feeds errors thrown by the injected workflow services,\nnever
AxiosError; the axios-specific branch was effectively dead\ndefensive
code. Replaced the type-guard with duck-typed access
to\n`response?.data?.message` so any HTTP-client error of similar
shape\nstill gets the upstream message extracted.\n- `utils.test.ts`
updated correspondingly: dropped the `AxiosError`\ntype-only import,
renamed mocks to `httpError`, added `name: 'Error'` so\n`as Error` casts
type-check. All 5 existing test cases still pass.\n- Removed the
`workflows_management/server/connectors/workflows/**`\nentry from
`AXIOS_LEGACY_CONSUMERS` in `.eslintrc.js`. New axios usage\nin this
directory is now blocked by the existing global ban. The
broader\n`workflows_management/**` override that bans `*legacy*` imports
still\napplies.\n\n### Behavior parity\n\nThe duck-typed access
preserves the exact extraction logic: when the\nerror has
`response.data.message`, that string is used; otherwise it\nfalls back
to `error.message`. All five test cases (HTTP error
with\n`data.message`, HTTP error with empty `data`, HTTP error
without\n`response`, regular `Error`, error without message) pass
without change\nto expected
output.","sha":"5f51f6c8463974089a6d781c56dcdb928557c52b"}}]}]
BACKPORT-->
azasypkin added a commit that referenced this pull request May 6, 2026
…or utils (#267512) (#267679)

# Backport

This will backport the following commits from `main` to `9.3`:
- [chore(axios,workflows-eng): remove axios from workflows connector
utils (#267512)](#267512)

<!--- Backport version: 11.0.2 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Aleh
Zasypkin","email":"aleh.zasypkin@elastic.co"},"sourceCommit":{"committedDate":"2026-05-05T08:05:42Z","message":"chore(axios,workflows-eng):
remove axios from workflows connector utils (#267512)\n\n##
Summary\n\nThis PR removes the `axios` dependency for files owned
by\n`@elastic/workflows-eng`. Phase 2 of the axios migration tracked
under\n#266556.\n\n### Why\n\nNode.js 22 ships a native `fetch` API
built on undici, and every browser\nKibana targets supports `fetch`
natively. Removing axios cuts one\nruntime dependency and continues the
per-team rollout that mirrors the\nearlier node-fetch
migration\n([#250719](#250719) and
siblings).\n\n###
Changes\n\n-\n`src/platform/plugins/shared/workflows_management/server/connectors/workflows/utils.ts`\npreviously
imported `isAxiosError` from `axios` to decide whether to\nextract
`error.response.data.message`. The production caller\n(`service.ts`)
feeds errors thrown by the injected workflow services,\nnever
AxiosError; the axios-specific branch was effectively dead\ndefensive
code. Replaced the type-guard with duck-typed access
to\n`response?.data?.message` so any HTTP-client error of similar
shape\nstill gets the upstream message extracted.\n- `utils.test.ts`
updated correspondingly: dropped the `AxiosError`\ntype-only import,
renamed mocks to `httpError`, added `name: 'Error'` so\n`as Error` casts
type-check. All 5 existing test cases still pass.\n- Removed the
`workflows_management/server/connectors/workflows/**`\nentry from
`AXIOS_LEGACY_CONSUMERS` in `.eslintrc.js`. New axios usage\nin this
directory is now blocked by the existing global ban. The
broader\n`workflows_management/**` override that bans `*legacy*` imports
still\napplies.\n\n### Behavior parity\n\nThe duck-typed access
preserves the exact extraction logic: when the\nerror has
`response.data.message`, that string is used; otherwise it\nfalls back
to `error.message`. All five test cases (HTTP error
with\n`data.message`, HTTP error with empty `data`, HTTP error
without\n`response`, regular `Error`, error without message) pass
without change\nto expected
output.","sha":"5f51f6c8463974089a6d781c56dcdb928557c52b","branchLabelMapping":{"^v9.5.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["chore","release_note:skip","dependencies","backport:all-open","Team:One
Workflow","v9.4.0","v9.5.0"],"title":"chore(axios,workflows-eng): remove
axios from workflows connector
utils","number":267512,"url":"https://github.com/elastic/kibana/pull/267512","mergeCommit":{"message":"chore(axios,workflows-eng):
remove axios from workflows connector utils (#267512)\n\n##
Summary\n\nThis PR removes the `axios` dependency for files owned
by\n`@elastic/workflows-eng`. Phase 2 of the axios migration tracked
under\n#266556.\n\n### Why\n\nNode.js 22 ships a native `fetch` API
built on undici, and every browser\nKibana targets supports `fetch`
natively. Removing axios cuts one\nruntime dependency and continues the
per-team rollout that mirrors the\nearlier node-fetch
migration\n([#250719](#250719) and
siblings).\n\n###
Changes\n\n-\n`src/platform/plugins/shared/workflows_management/server/connectors/workflows/utils.ts`\npreviously
imported `isAxiosError` from `axios` to decide whether to\nextract
`error.response.data.message`. The production caller\n(`service.ts`)
feeds errors thrown by the injected workflow services,\nnever
AxiosError; the axios-specific branch was effectively dead\ndefensive
code. Replaced the type-guard with duck-typed access
to\n`response?.data?.message` so any HTTP-client error of similar
shape\nstill gets the upstream message extracted.\n- `utils.test.ts`
updated correspondingly: dropped the `AxiosError`\ntype-only import,
renamed mocks to `httpError`, added `name: 'Error'` so\n`as Error` casts
type-check. All 5 existing test cases still pass.\n- Removed the
`workflows_management/server/connectors/workflows/**`\nentry from
`AXIOS_LEGACY_CONSUMERS` in `.eslintrc.js`. New axios usage\nin this
directory is now blocked by the existing global ban. The
broader\n`workflows_management/**` override that bans `*legacy*` imports
still\napplies.\n\n### Behavior parity\n\nThe duck-typed access
preserves the exact extraction logic: when the\nerror has
`response.data.message`, that string is used; otherwise it\nfalls back
to `error.message`. All five test cases (HTTP error
with\n`data.message`, HTTP error with empty `data`, HTTP error
without\n`response`, regular `Error`, error without message) pass
without change\nto expected
output.","sha":"5f51f6c8463974089a6d781c56dcdb928557c52b"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"9.4","label":"v9.4.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"url":"https://github.com/elastic/kibana/pull/267665","number":267665,"state":"MERGED","mergeCommit":{"sha":"de5f2b8ecdfd4db23cafcabe81d376f0b54f251f","message":"[9.4]
chore(axios,workflows-eng): remove axios from workflows connector utils
(#267512) (#267665)\n\n# Backport\n\nThis will backport the following
commits from `main` to `9.4`:\n- [chore(axios,workflows-eng): remove
axios from workflows connector\nutils
(#267512)](https://github.com/elastic/kibana/pull/267512)\n\n\n\n###
Questions ?\nPlease refer to the [Backport
tool\ndocumentation](https://github.com/sorenlouv/backport)\n\n\n\nCo-authored-by:
Aleh Zasypkin
<aleh.zasypkin@elastic.co>"}},{"branch":"main","label":"v9.5.0","branchLabelMappingKey":"^v9.5.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/267512","number":267512,"mergeCommit":{"message":"chore(axios,workflows-eng):
remove axios from workflows connector utils (#267512)\n\n##
Summary\n\nThis PR removes the `axios` dependency for files owned
by\n`@elastic/workflows-eng`. Phase 2 of the axios migration tracked
under\n#266556.\n\n### Why\n\nNode.js 22 ships a native `fetch` API
built on undici, and every browser\nKibana targets supports `fetch`
natively. Removing axios cuts one\nruntime dependency and continues the
per-team rollout that mirrors the\nearlier node-fetch
migration\n([#250719](#250719) and
siblings).\n\n###
Changes\n\n-\n`src/platform/plugins/shared/workflows_management/server/connectors/workflows/utils.ts`\npreviously
imported `isAxiosError` from `axios` to decide whether to\nextract
`error.response.data.message`. The production caller\n(`service.ts`)
feeds errors thrown by the injected workflow services,\nnever
AxiosError; the axios-specific branch was effectively dead\ndefensive
code. Replaced the type-guard with duck-typed access
to\n`response?.data?.message` so any HTTP-client error of similar
shape\nstill gets the upstream message extracted.\n- `utils.test.ts`
updated correspondingly: dropped the `AxiosError`\ntype-only import,
renamed mocks to `httpError`, added `name: 'Error'` so\n`as Error` casts
type-check. All 5 existing test cases still pass.\n- Removed the
`workflows_management/server/connectors/workflows/**`\nentry from
`AXIOS_LEGACY_CONSUMERS` in `.eslintrc.js`. New axios usage\nin this
directory is now blocked by the existing global ban. The
broader\n`workflows_management/**` override that bans `*legacy*` imports
still\napplies.\n\n### Behavior parity\n\nThe duck-typed access
preserves the exact extraction logic: when the\nerror has
`response.data.message`, that string is used; otherwise it\nfalls back
to `error.message`. All five test cases (HTTP error
with\n`data.message`, HTTP error with empty `data`, HTTP error
without\n`response`, regular `Error`, error without message) pass
without change\nto expected
output.","sha":"5f51f6c8463974089a6d781c56dcdb928557c52b"}}]}]
BACKPORT-->
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 Team:One Workflow Team label for One Workflow (Workflow automation)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants