Skip to content

Switch from axios to fetch#288

Merged
Gawor270 merged 7 commits into
mainfrom
fce-3523
Jul 13, 2026
Merged

Switch from axios to fetch#288
Gawor270 merged 7 commits into
mainfrom
fce-3523

Conversation

@Gawor270

@Gawor270 Gawor270 commented Jul 6, 2026

Copy link
Copy Markdown
Member

Description

Describe your changes.

Motivation and Context

Why is this change required? What problem does it solve? If it fixes an open
issue, please link to the issue here.

Documentation impact

  • Documentation update required
  • Documentation updated in another PR
  • No documentation update required

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to
    not work as expected)

@linear

linear Bot commented Jul 6, 2026

Copy link
Copy Markdown

FCE-3523

@Gawor270 Gawor270 changed the title Fce 3523 Switch from axios to fetch Jul 6, 2026
@Gawor270
Gawor270 requested a review from Copilot July 6, 2026 11:19

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR migrates the Fishjam JS/TS server SDK and its generated OpenAPI client from an axios-based transport to a fetch-based transport, updating client wiring, error mapping, and codegen automation accordingly.

Changes:

  • Regenerated @fishjam-cloud/fishjam-openapi using typescript-fetch (new runtime/apis/models layout) and removed the axios dependency.
  • Updated FishjamClient to use the fetch-based OpenAPI Configuration + middleware and adjusted request/response handling to the new generated API shapes.
  • Refactored exception mapping to handle ResponseError/FetchError and added/updated Vitest coverage for the new behavior.

Reviewed changes

Copilot reviewed 10 out of 75 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
yarn.lock Removes axios from workspace dependency graph entries.
release-automation/bump-version.sh Switches OpenAPI generation step to call openapi.sh with a downloaded spec file.
packages/js-server-sdk/package.json Drops axios dependency and declares Node >=18 engine requirement.
packages/js-server-sdk/src/client.ts Migrates SDK client from axios instance wiring to fetch-based OpenAPI Configuration + middleware.
packages/js-server-sdk/src/exceptions/index.ts Replaces axios-error-based exception construction with a transport-agnostic FishjamExceptionInfo.
packages/js-server-sdk/src/exceptions/mapper.ts Updates error mapping to support fetch-generated ResponseError/FetchError types.
packages/js-server-sdk/tests/config-validation.test.ts Updates mocks to use ResponseError and fetch-style return values.
packages/js-server-sdk/tests/exceptions.test.ts Adds test coverage for new fetch-based exception mapping behavior.
packages/fishjam-openapi/package.json Removes axios dependency from the OpenAPI workspace package.
packages/fishjam-openapi/openapitools.json Updates OpenAPI Generator CLI version to 7.14.0.
packages/fishjam-openapi/openapi.sh Switches generator from typescript-axios to typescript-fetch and supports local spec paths.
packages/fishjam-openapi/src/generated/.openapi-generator/VERSION Updates recorded generator version.
packages/fishjam-openapi/src/generated/.openapi-generator/FILES Updates generated file manifest for the new fetch client layout.
packages/fishjam-openapi/src/generated/index.ts Changes public exports to re-export fetch runtime, apis, and models.
packages/fishjam-openapi/src/generated/runtime.ts Adds fetch-based runtime (middleware, ResponseError/FetchError, request plumbing).
packages/fishjam-openapi/src/generated/apis/CredentialsApi.ts New fetch-based generated API.
packages/fishjam-openapi/src/generated/apis/MoQApi.ts New fetch-based generated API.
packages/fishjam-openapi/src/generated/apis/RoomsApi.ts New fetch-based generated API.
packages/fishjam-openapi/src/generated/apis/StreamersApi.ts New fetch-based generated API.
packages/fishjam-openapi/src/generated/apis/StreamsApi.ts New fetch-based generated API.
packages/fishjam-openapi/src/generated/apis/TrackForwardingsApi.ts New fetch-based generated API.
packages/fishjam-openapi/src/generated/apis/ViewersApi.ts New fetch-based generated API.
packages/fishjam-openapi/src/generated/apis/index.ts Barrel export for generated APIs.
packages/fishjam-openapi/src/generated/models/AgentOutput.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/AudioFormat.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/AudioSampleRate.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/CompositionInfo.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/ModelError.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/MoqAccess.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/MoqAccessConfig.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/Peer.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/PeerConfig.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/PeerDetailsResponse.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/PeerDetailsResponseData.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/PeerOptions.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/PeerOptionsAgent.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/PeerOptionsVapi.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/PeerOptionsWebRTC.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/PeerRefreshTokenResponse.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/PeerRefreshTokenResponseData.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/PeerStatus.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/PeerType.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/Room.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/RoomConfig.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/RoomCreateDetailsResponse.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/RoomCreateDetailsResponseData.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/RoomDetailsResponse.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/RoomType.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/RoomsListingResponse.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/Stream.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/StreamConfig.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/StreamDetailsResponse.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/Streamer.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/StreamerDetailsResponse.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/StreamerToken.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/StreamsListingResponse.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/SubscribeMode.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/SubscribeTracksRequest.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/Subscriptions.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/Track.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/TrackForwarding.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/TrackForwardingInfo.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/TrackType.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/VideoCodec.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/Viewer.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/ViewerDetailsResponse.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/ViewerToken.ts New/updated generated model types.
packages/fishjam-openapi/src/generated/models/index.ts Barrel export for generated models.
packages/fishjam-openapi/src/generated/base.ts Removes legacy axios-based generator runtime file.
packages/fishjam-openapi/src/generated/common.ts Removes legacy axios-based generator runtime file.
packages/fishjam-openapi/src/generated/configuration.ts Removes legacy axios-based generator configuration file.
packages/fishjam-openapi/src/generated/git_push.sh Removes unused generator helper script.
packages/fishjam-openapi/src/generated/.gitignore Removes legacy generated .gitignore.
packages/fishjam-openapi/src/generated/.npmignore Removes legacy generated .npmignore.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/js-server-sdk/src/exceptions/mapper.ts
Comment thread packages/fishjam-openapi/package.json
Comment thread packages/fishjam-openapi/openapi.sh Outdated
@Gawor270
Gawor270 requested review from Karolk99 and czerwiukk July 6, 2026 11:43
Comment thread packages/fishjam-openapi/src/generated/models/PeerOptions.ts Outdated
…tor to 7.23.0

Fishjam's PeerConfig is now a discriminated oneOf (fishjam-cloud/fishjam#308),
which fixes typescript-fetch mis-serializing peer options. Generator 7.14.0
emitted broken code for discriminated oneOf models (missing variant imports,
OpenAPITools/openapi-generator#21441); 7.23.0 includes the fix, so no
post-processing of generated sources is needed. Docs generation is disabled
to keep the generated tree source-only. PeerOptions is no longer generated;
the SDK keeps exporting it as an equivalent alias of the variant union.
@Gawor270

Gawor270 commented Jul 8, 2026

Copy link
Copy Markdown
Member Author

I updated also openapi client generator to newer version because previous version had a bug which caused newly generated openapi defined in https://github.com/fishjam-cloud/fishjam/pull/308 to still not work

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 12 out of 79 changed files in this pull request and generated 1 comment.

Comment thread packages/fishjam-openapi/openapi.sh
Tokens in URL query strings leak through shell history, process lists, and
CI logs, and raw.githubusercontent.com does not accept them anyway. The
remote mode now curls the spec with an Authorization header into a temp
file, so bump-version.sh can delegate instead of duplicating the download.
@Gawor270
Gawor270 requested a review from czerwiukk July 8, 2026 14:43
mktemp created an unused file next to the .yaml path the trap removed,
leaking one temp file per remote run; a temp directory removed recursively
covers both. A bad ref now prints an error instead of dying silently.
@Gawor270
Gawor270 merged commit 742dae6 into main Jul 13, 2026
2 checks passed
@Gawor270
Gawor270 deleted the fce-3523 branch July 13, 2026 09:01
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.

4 participants