Skip to content

Commit ce8329b

Browse files
authored
Merge pull request #42 from AckeeCZ/feat/antonio-core
Feat/antonio core
2 parents 2fe8c59 + 8d5a5b7 commit ce8329b

File tree

4 files changed

+54
-11
lines changed

4 files changed

+54
-11
lines changed

packages/@ackee/antonio-core/package.json

+7-7
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,18 @@
2828
"scripts": {
2929
"size": "package-size es --no-cache"
3030
},
31+
"dependencies": {
32+
"fetch-headers": "^2.0.0"
33+
},
34+
"devDependencies": {
35+
"@types/fetch-headers": "^2.0.0"
36+
},
3137
"bugs": {
3238
"url": "https://github.com/AckeeCZ/antonio/issues"
3339
},
3440
"engines": {
3541
"node": ">=12"
3642
},
3743
"author": "Jiří Čermák <[email protected]>",
38-
"license": "MIT",
39-
"dependencies": {
40-
"fetch-headers": "^2.0.0"
41-
},
42-
"devDependencies": {
43-
"@types/fetch-headers": "^2.0.0"
44-
}
44+
"license": "MIT"
4545
}

packages/@ackee/antonio-core/src/modules/core/request.ts

+19-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { RequestMethod, RequestConfig, GeneralConfig } from 'types';
1+
import { RequestMethod, RequestConfig, GeneralConfig, RequestResult } from 'types';
22

33
import { interceptors } from './models/InterceptorManager';
44
import type { RequestInterceptorsEntries, ResponseInterceptorsEntries } from './models/InterceptorManager';
@@ -106,7 +106,23 @@ export default function* request(
106106
const request = yield applyRequestInteceptors(requestInterceptors, url, requestInit);
107107

108108
const responseInterceptors: ResponseInterceptorsEntries = interceptors.get(antonio.interceptors.response);
109-
const { response, data } = yield applyResponseInterceptors(responseInterceptors, request, config);
109+
const {
110+
response,
111+
data,
112+
}: {
113+
response: Response;
114+
data: BodyInit | null;
115+
} = yield applyResponseInterceptors(responseInterceptors, request, config);
110116

111-
return { request, response, data };
117+
const result: RequestResult = {
118+
request,
119+
response,
120+
data,
121+
status: response.status,
122+
statusText: response.statusText,
123+
config,
124+
headers: Object.fromEntries(response.headers.entries()),
125+
};
126+
127+
return result;
112128
}

packages/@ackee/antonio-core/src/modules/core/utils/request.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,20 @@ function setUriParams(templateUrl: string, uriParams: RequestUriParams): string
4949
return templateUrl.split('/').map(templateToValue).join('/');
5050
}
5151

52+
const removeSlashAsLastChar = (chunk: string) => chunk.replace(/\/$/, '');
53+
54+
function joinUrlChunks(baseUrl?: string, ...path: string[]) {
55+
const joinedUrl = [baseUrl, ...path].filter(Boolean).map(removeSlashAsLastChar).join('/');
56+
return new URL(joinedUrl);
57+
}
58+
5259
function createRequestUrl(requestUrl: string, requestConfig: RequestConfig, generalConfig: GeneralConfig): string {
5360
try {
5461
if (requestConfig.uriParams) {
5562
requestUrl = setUriParams(requestUrl, requestConfig.uriParams);
5663
}
5764

58-
const url = new URL(requestUrl, requestConfig.baseURL);
65+
const url = joinUrlChunks(requestConfig.baseURL, requestUrl);
5966

6067
url.search = mergeUrlSearchParams(
6168
new URLSearchParams(url.search),

packages/@ackee/antonio-core/src/types.ts

+20
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,24 @@ export interface RequestResult {
5252
request: Request;
5353
response: Response;
5454
data: BodyInit | null;
55+
56+
/**
57+
* @deprecated This prop is going to be removed in next major relase. Use `response.status` instead.
58+
*/
59+
status: number;
60+
61+
/**
62+
* @deprecated This prop is going to be removed in next major relase. Use `response.statusText` instead.
63+
*/
64+
statusText: string;
65+
66+
/**
67+
* @deprecated This prop is going to be removed in next major relase. Use `response.headers` instead.
68+
*/
69+
headers: {};
70+
71+
/**
72+
* @deprecated This prop is going to be removed in next major relase. Depend on properties in the `request`.
73+
*/
74+
config: {};
5575
}

0 commit comments

Comments
 (0)