diff --git a/src/helpers/__tests__/getUri.test.ts b/src/helpers/__tests__/getUri.test.ts index 65189c7..6ce3d3b 100644 --- a/src/helpers/__tests__/getUri.test.ts +++ b/src/helpers/__tests__/getUri.test.ts @@ -12,6 +12,15 @@ describe('getUri specs', () => { }) ) ).toBe('https://api.com/api/v1/posts') + + expect( + getUri( + toAny({ + baseURL: 'https://requete.com', + url: '//api.com/api/v1/posts', + }) + ) + ).toBe('//api.com/api/v1/posts') }) it('should not join when baseURL is falsy', () => { @@ -44,20 +53,11 @@ describe('getUri specs', () => { ) ).toBe('https://requete.com/api/v1/posts') - expect( - getUri( - toAny({ - baseURL: 'https://requete.com/', - url: '//api/v1/posts/', - }) - ) - ).toBe('https://requete.com/api/v1/posts/') - expect( getUri( toAny({ baseURL: 'https://requete.com//', - url: '//api/v1/posts/', + url: '/api/v1/posts/', }) ) ).toBe('https://requete.com/api/v1/posts/') diff --git a/src/helpers/getUri.ts b/src/helpers/getUri.ts index 73ada9c..7605707 100644 --- a/src/helpers/getUri.ts +++ b/src/helpers/getUri.ts @@ -16,10 +16,14 @@ function stringifyUrl(target: string, query: NonNullable) { return url + '?' + searchParams.toString() } +function isAbsolute(url: string) { + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url) +} + export function getUri(config: IRequest) { let url = config.url - if (!url.includes('://') && config.baseURL) { + if (!isAbsolute(url) && config.baseURL) { url = config.baseURL.replace(/\/+$/, '') + '/' + url.replace(/^\/+/, '') }