fix(js-sdk): Preserve path in baseUrl (#10222)

**What**
- Currently the `js-sdk` will discard the path in the `baseUrl` and only use the `origin`. As an example passing a `baseUrl` of `"http://localhost:9000/custom/path"`, will result in only `"http://localhost:9000"` being used.
- This PR preserves the path, so using `sdk.admin.products()` will make a request to `"http://localhost:9000/custom/path/admin/products`. For an explanation of when this might be useful see this issue: https://github.com/medusajs/medusa/issues/10190#issuecomment-2492974845

Resolves CMRC-740
This commit is contained in:
Kasper Fabricius Kristensen
2024-11-22 14:52:54 +00:00
committed by GitHub
parent 60b13c191e
commit d6ff8d7aa1
3 changed files with 52 additions and 2 deletions
+4 -2
View File
@@ -1,5 +1,5 @@
import qs from "qs"
import { events } from "fetch-event-stream"
import qs from "qs"
import {
ClientFetch,
Config,
@@ -224,7 +224,9 @@ export class Client {
let normalizedInput: RequestInfo | URL = input
if (input instanceof URL || typeof input === "string") {
normalizedInput = new URL(input, this.config.baseUrl)
const baseUrl = new URL(this.config.baseUrl)
const fullPath = `${baseUrl.pathname.replace(/\/$/, '')}/${input.toString().replace(/^\//, '')}`
normalizedInput = new URL(fullPath, baseUrl.origin)
if (init?.query) {
const params = Object.fromEntries(
normalizedInput.searchParams.entries()