Skip to content

Commit 7cf6eb8

Browse files
committed
🏷️ Fix request types
1 parent c87d69a commit 7cf6eb8

File tree

7 files changed

+28
-27
lines changed

7 files changed

+28
-27
lines changed
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export { create as default } from './modules/core';
2-
export type { DefaultRequestConfig } from './types';
2+
export type { RequestConfig } from './types';
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import Headers from 'fetch-headers';
22
import loglevel from 'loglevel';
33

4-
import { DefaultRequestConfig, GeneralConfig } from '../../../types';
4+
import { RequestConfig, GeneralConfig } from '../../../types';
55

6-
export const defaultRequestConfig: DefaultRequestConfig = {
6+
export const defaultRequestConfig: Required<Pick<RequestConfig, 'responseType' | 'headers'>> = {
77
responseType: 'json',
88
headers: new Headers(),
99
};
1010

11+
export type DefaultRequestConfig = RequestConfig & typeof defaultRequestConfig;
12+
1113
export const defaultGeneralConfig: GeneralConfig = {
1214
logger: loglevel,
1315
};

packages/@ackee/antonio-core/src/modules/core/models/HttpClient.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import { RequestConfig, RequestBody, GeneralConfig } from '../../../types';
2-
import { defaultRequestConfig, defaultGeneralConfig } from '../config';
2+
import { defaultRequestConfig, defaultGeneralConfig, DefaultRequestConfig } from '../config';
33
import { mergeRequestConfigs } from '../utils';
44

55
import request from '../request';
66

77
export const generalConfigs = new WeakMap();
88
class HttpClient {
9-
readonly defaults: RequestConfig;
9+
readonly defaults: DefaultRequestConfig;
1010
readonly config: GeneralConfig;
1111

1212
constructor(requestConfig?: RequestConfig, generalConfig?: Partial<GeneralConfig>) {
13-
this.defaults = Object.freeze<RequestConfig>(mergeRequestConfigs(defaultRequestConfig, requestConfig));
13+
this.defaults = Object.freeze<DefaultRequestConfig>(mergeRequestConfigs(defaultRequestConfig, requestConfig));
1414

1515
const config = Object.freeze<GeneralConfig>({
1616
...defaultGeneralConfig,

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { RequestMethod, RequestConfig, RequestResult, GeneralConfig } from '../../types';
1+
import { RequestMethod, RequestResult, GeneralConfig, RequestConfig } from 'types';
2+
import { DefaultRequestConfig } from './config';
23
import { HTTPError } from './errors';
34
import { createRequestUrl, formatRequestBody, setRequestHeaders, parseResponse, mergeRequestConfigs } from './utils';
45

@@ -7,7 +8,7 @@ export default async function request(
78
requestUrl: string,
89
body: BodyInit | undefined,
910
requestConfig: RequestConfig | undefined,
10-
defaultRequestConfig: RequestConfig,
11+
defaultRequestConfig: DefaultRequestConfig,
1112
generalConfig: GeneralConfig,
1213
): Promise<RequestResult> {
1314
const config = mergeRequestConfigs(defaultRequestConfig, requestConfig);

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

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Headers from 'fetch-headers';
2-
import { RequestConfig, RequestHeaders, RequestSearchParams } from '../../../types';
2+
import { RequestConfig, RequestHeaders, RequestSearchParams } from 'types';
3+
import { DefaultRequestConfig } from '../config';
34

45
const getSearchParamsEntries = (value?: RequestSearchParams) =>
56
value instanceof URLSearchParams ? value.entries() : Object.entries(value ?? {});
@@ -35,8 +36,8 @@ function mergeHeaders(headersA?: RequestHeaders, headersB?: RequestHeaders): Hea
3536
return result;
3637
}
3738

38-
export function mergeRequestConfigs(configA: RequestConfig = {}, configB: RequestConfig = {}): RequestConfig {
39-
const result: RequestConfig = {
39+
export function mergeRequestConfigs(configA: DefaultRequestConfig, configB: RequestConfig = {}): DefaultRequestConfig {
40+
const result: DefaultRequestConfig = {
4041
...configA,
4142
...configB,
4243
};

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export function parseResponse(responseType: ResponseType | undefined, response:
1515
switch (responseType) {
1616
case 'json': {
1717
const contentType = response.headers.get(Header.CONTENT_TYPE);
18-
const hasJsonResponseType = parseHeaderValue(contentType).includes(ResponseTypes.json);
18+
const hasJsonResponseType = parseHeaderValue(contentType).includes(ResponseTypes.JSON);
1919

2020
return hasJsonResponseType ? response.json() : null;
2121
}

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

+12-15
Original file line numberDiff line numberDiff line change
@@ -17,40 +17,37 @@ export type RequestUriParams = Params;
1717
export type RequestSearchParams = URLSearchParams | Params;
1818

1919
export enum ResponseTypes {
20-
json = 'application/json',
21-
text = 'text/*',
22-
formData = 'multipart/form-data',
23-
blob = '*/*',
20+
JSON = 'application/json',
21+
TEXT = 'text/*',
22+
FORM_DATA = 'multipart/form-data',
23+
BLOB = '*/*',
2424
}
2525

2626
export enum Header {
2727
CONTENT_TYPE = 'Content-Type',
2828
}
2929

30-
export interface RequestConfig extends Omit<RequestInit, 'body' | 'headers' | 'method'> {
30+
export interface FullRequestConfig extends Omit<RequestInit, 'body' | 'headers' | 'method'> {
3131
// `baseURL` will be prepended to `url` unless `url` is absolute.
3232
// It can be convenient to set `baseURL` for an instance of axios to pass relative URLs
3333
// to methods of that instance.
34-
baseURL?: string;
34+
baseURL: string;
3535

36-
responseType?: ResponseType;
36+
responseType: ResponseType;
3737

38-
uriParams?: RequestUriParams;
38+
uriParams: RequestUriParams;
3939

40-
headers?: RequestHeaders;
40+
headers: RequestHeaders;
4141

42-
searchParams?: RequestSearchParams;
42+
searchParams: RequestSearchParams;
4343
}
4444

45+
export type RequestConfig = Partial<FullRequestConfig>;
46+
4547
export interface GeneralConfig {
4648
logger: Logger;
4749
}
4850

49-
export interface DefaultRequestConfig extends RequestConfig {
50-
headers: RequestHeaders;
51-
responseType: ResponseType;
52-
}
53-
5451
export interface RequestResult {
5552
request: Request;
5653
response: Response;

0 commit comments

Comments
 (0)