@iamnnort/request 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +110 -76
- package/dist/index.d.mts +71 -105
- package/dist/index.d.ts +71 -105
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -13,114 +13,148 @@ yarn add @iamnnort/request
|
|
|
13
13
|
## Usage
|
|
14
14
|
|
|
15
15
|
```typescript
|
|
16
|
-
import { RequestDataSource } from '@iamnnort/request';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
16
|
+
import { HttpMethods, LoggerLevels, RequestDataSource } from '@iamnnort/request';
|
|
17
|
+
|
|
18
|
+
class TodoDataSource extends RequestDataSource {
|
|
19
|
+
constructor() {
|
|
20
|
+
super({
|
|
21
|
+
baseUrl: 'https://dummyjson.com',
|
|
22
|
+
url: '/todos',
|
|
23
|
+
logger: {
|
|
24
|
+
name: 'Todo Api',
|
|
25
|
+
level: LoggerLevels.INFO,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
search() {
|
|
31
|
+
return this.common({
|
|
32
|
+
method: HttpMethods.GET,
|
|
33
|
+
params: {
|
|
34
|
+
limit: 10,
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
get(id: number) {
|
|
40
|
+
return this.common({
|
|
41
|
+
method: HttpMethods.GET,
|
|
42
|
+
url: id,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
create(data: { todo: string; completed: boolean; userId: number }) {
|
|
47
|
+
return this.common({
|
|
48
|
+
method: HttpMethods.POST,
|
|
49
|
+
url: '/add',
|
|
50
|
+
data,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
update(id: number, data: { completed: boolean }) {
|
|
55
|
+
return this.common({
|
|
56
|
+
method: HttpMethods.PUT,
|
|
57
|
+
url: id,
|
|
58
|
+
data,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
remove(id: number) {
|
|
63
|
+
return this.common({
|
|
64
|
+
method: HttpMethods.DELETE,
|
|
65
|
+
url: id,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const dataSource = new TodoDataSource();
|
|
71
|
+
|
|
72
|
+
await dataSource.search();
|
|
73
|
+
await dataSource.get(1);
|
|
74
|
+
await dataSource.create({ todo: 'Test todo', completed: false, userId: 1 });
|
|
75
|
+
await dataSource.update(1, { completed: true });
|
|
51
76
|
await dataSource.remove(1);
|
|
52
77
|
```
|
|
53
78
|
|
|
54
79
|
## Logging
|
|
55
80
|
|
|
56
|
-
Set the `
|
|
81
|
+
Set the `logger` option to enable it.
|
|
57
82
|
|
|
58
83
|
```typescript
|
|
84
|
+
import { LoggerLevels, RequestDataSource } from '@iamnnort/request';
|
|
85
|
+
|
|
59
86
|
const dataSource = new RequestDataSource({
|
|
60
|
-
name: 'Todo Api',
|
|
61
87
|
baseUrl: 'https://dummyjson.com',
|
|
62
88
|
url: '/todos',
|
|
63
|
-
|
|
89
|
+
logger: {
|
|
90
|
+
name: 'Todo Api',
|
|
91
|
+
level: LoggerLevels.DEBUG,
|
|
92
|
+
},
|
|
64
93
|
});
|
|
65
94
|
```
|
|
66
95
|
|
|
67
96
|
Log levels: `trace`, `debug`, `info`, `warn`, `error`, `fatal`.
|
|
68
97
|
|
|
69
|
-
Logs include the HTTP method, full URL with query parameters,
|
|
98
|
+
Logs include the HTTP method, full URL with query parameters, status code, and duration. Request and response data is logged as structured objects.
|
|
70
99
|
|
|
71
100
|
When the log level is `trace` or `debug`, response body data is also included in the output.
|
|
72
101
|
|
|
102
|
+
Client errors (4xx) are logged as `warn`, server errors (5xx) as `error`.
|
|
103
|
+
|
|
73
104
|
```
|
|
74
|
-
DEBUG (Todo Api): GET https://dummyjson.com/todos?
|
|
75
|
-
INFO (Todo Api): GET https://dummyjson.com/todos?
|
|
105
|
+
DEBUG (Todo Api): GET https://dummyjson.com/todos?limit=10
|
|
106
|
+
INFO (Todo Api): GET https://dummyjson.com/todos?limit=10 200 OK (150ms)
|
|
107
|
+
WARN (Todo Api): GET https://dummyjson.com/todos/999 400 Bad Request (100ms)
|
|
108
|
+
ERROR (Todo Api): GET https://dummyjson.com/todos 500 Internal Server Error (200ms)
|
|
76
109
|
```
|
|
77
110
|
|
|
78
111
|
## Configuration
|
|
79
112
|
|
|
80
113
|
### Base Config
|
|
81
114
|
|
|
82
|
-
| Parameter
|
|
83
|
-
|
|
|
84
|
-
| `
|
|
85
|
-
| `
|
|
86
|
-
| `
|
|
87
|
-
| `
|
|
88
|
-
| `
|
|
89
|
-
| `
|
|
90
|
-
| `
|
|
91
|
-
| `
|
|
92
|
-
| `
|
|
93
|
-
| `
|
|
94
|
-
| `
|
|
95
|
-
| `
|
|
96
|
-
| `
|
|
97
|
-
| `
|
|
98
|
-
| `serializer
|
|
115
|
+
| Parameter | Type | Description |
|
|
116
|
+
| ---------------------- | ------------------------ | ------------------------------------------------------------------ |
|
|
117
|
+
| `baseUrl` | `string` | Main part of the server URL that will be used for the request |
|
|
118
|
+
| `url` | `string \| number` | Server URL that will be used for the request |
|
|
119
|
+
| `urlParts` | `(string \| number)[]` | Additional parts of URL that will be used for the request |
|
|
120
|
+
| `baseUrlName` | `string` | Key to look up the base URL from `baseUrlMap` |
|
|
121
|
+
| `baseUrlMap` | `Record<string, string>` | Map of named base URLs |
|
|
122
|
+
| `headers` | `object` | Custom headers to be sent |
|
|
123
|
+
| `auth` | `object` | HTTP Basic auth credentials |
|
|
124
|
+
| `bearerToken` | `string` | Bearer token for Authorization header |
|
|
125
|
+
| `apiKey` | `string` | API key sent via `x-api-key` header |
|
|
126
|
+
| `timeout` | `number` | Request timeout in milliseconds |
|
|
127
|
+
| `responseType` | `string` | Response type (e.g. `json`, `text`, `stream`) |
|
|
128
|
+
| `logger` | `object` | Logger configuration |
|
|
129
|
+
| `logger.name` | `string` | Name used as the logger label |
|
|
130
|
+
| `logger.level` | `string` | Log level (`trace`, `debug`, `info`, `warn`, `error`, `fatal`) |
|
|
131
|
+
| `serializer` | `object` | Config that allows you to customize serializing |
|
|
132
|
+
| `serializer.arrayFormat` | `string` | Array format (`indices`, `brackets`, `repeat`, `comma`) |
|
|
99
133
|
|
|
100
134
|
### Request Config
|
|
101
135
|
|
|
102
|
-
| Parameter
|
|
103
|
-
|
|
|
104
|
-
| `params`
|
|
105
|
-
| `data`
|
|
106
|
-
| `urlencoded`
|
|
107
|
-
| `multipart`
|
|
108
|
-
| `xml`
|
|
136
|
+
| Parameter | Type | Description |
|
|
137
|
+
| ------------ | --------- | ------------------------------------------------ |
|
|
138
|
+
| `params` | `object` | URL parameters to be sent with the request |
|
|
139
|
+
| `data` | `object` | Data to be sent as the request body |
|
|
140
|
+
| `urlencoded` | `boolean` | Send data as `application/x-www-form-urlencoded` |
|
|
141
|
+
| `multipart` | `boolean` | Send data as `multipart/form-data` |
|
|
142
|
+
| `xml` | `boolean` | Send data as `text/xml` |
|
|
109
143
|
|
|
110
144
|
## Methods
|
|
111
145
|
|
|
112
|
-
| Method | HTTP Method | Description
|
|
113
|
-
| ------------ | ----------- |
|
|
114
|
-
| `search` | `GET` | Search for entities
|
|
115
|
-
| `searchOne` | `GET` | Search for a single entity
|
|
146
|
+
| Method | HTTP Method | Description |
|
|
147
|
+
| ------------ | ----------- | ------------------------------------------ |
|
|
148
|
+
| `search` | `GET` | Search for entities |
|
|
149
|
+
| `searchOne` | `GET` | Search for a single entity |
|
|
116
150
|
| `bulkSearch` | `GET` | Paginated search returning async generator |
|
|
117
|
-
| `get` | `GET` | Get entity by id
|
|
118
|
-
| `create` | `POST` | Create entity
|
|
119
|
-
| `bulkCreate` | `POST` | Create multiple entities
|
|
120
|
-
| `update` | `PUT` | Update entity by id
|
|
121
|
-
| `bulkUpdate` | `PUT` | Update multiple entities
|
|
122
|
-
| `remove` | `DELETE` | Remove entity by id
|
|
123
|
-
| `common` | any | Execute a custom request
|
|
151
|
+
| `get` | `GET` | Get entity by id |
|
|
152
|
+
| `create` | `POST` | Create entity |
|
|
153
|
+
| `bulkCreate` | `POST` | Create multiple entities |
|
|
154
|
+
| `update` | `PUT` | Update entity by id |
|
|
155
|
+
| `bulkUpdate` | `PUT` | Update multiple entities |
|
|
156
|
+
| `remove` | `DELETE` | Remove entity by id |
|
|
157
|
+
| `common` | any | Execute a custom request |
|
|
124
158
|
|
|
125
159
|
## License
|
|
126
160
|
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,71 @@
|
|
|
1
|
+
import * as _iamnnort_config_http from '@iamnnort/config/http';
|
|
2
|
+
import { HttpStatuses, HttpMethods } from '@iamnnort/config/http';
|
|
3
|
+
export { HttpMethods, HttpStatuses } from '@iamnnort/config/http';
|
|
1
4
|
import { AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
|
|
2
5
|
|
|
6
|
+
type LoggerConfig = {
|
|
7
|
+
name: string;
|
|
8
|
+
level: LoggerLevels;
|
|
9
|
+
};
|
|
10
|
+
declare enum LoggerLevels {
|
|
11
|
+
FATAL = "fatal",
|
|
12
|
+
ERROR = "error",
|
|
13
|
+
WARN = "warn",
|
|
14
|
+
INFO = "info",
|
|
15
|
+
DEBUG = "debug",
|
|
16
|
+
TRACE = "trace"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare class Logger {
|
|
20
|
+
private logger;
|
|
21
|
+
private config;
|
|
22
|
+
constructor(config?: Partial<LoggerConfig>);
|
|
23
|
+
logRequest(request: AxiosRequestConfig): void;
|
|
24
|
+
logResponse(response: AxiosResponse, duration: number): void;
|
|
25
|
+
logError(request: AxiosRequestConfig, error: AxiosError, duration: number): void;
|
|
26
|
+
makeResponse<T>(response: AxiosResponse): {
|
|
27
|
+
success: boolean;
|
|
28
|
+
status: HttpStatuses;
|
|
29
|
+
method: _iamnnort_config_http.HttpMethods;
|
|
30
|
+
data: T;
|
|
31
|
+
};
|
|
32
|
+
makeErrorResponse<T>(error: AxiosError): {
|
|
33
|
+
success: boolean;
|
|
34
|
+
status: HttpStatuses;
|
|
35
|
+
method: _iamnnort_config_http.HttpMethods;
|
|
36
|
+
data: T;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
type PaginationDto = {
|
|
41
|
+
pagination?: boolean | null;
|
|
42
|
+
page?: number | null;
|
|
43
|
+
pageSize?: number | null;
|
|
44
|
+
bulkSize?: number | null;
|
|
45
|
+
};
|
|
46
|
+
type Pagination = {
|
|
47
|
+
total: number;
|
|
48
|
+
currentPage: number;
|
|
49
|
+
lastPage: number;
|
|
50
|
+
from: number;
|
|
51
|
+
to: number;
|
|
52
|
+
pageSize: number;
|
|
53
|
+
};
|
|
54
|
+
type PaginationResponse<T = unknown> = {
|
|
55
|
+
data: T[];
|
|
56
|
+
pagination: Pagination;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
type SerializerConfig = {
|
|
60
|
+
arrayFormat: SerializerArrayFormats;
|
|
61
|
+
};
|
|
62
|
+
declare enum SerializerArrayFormats {
|
|
63
|
+
INDICES = "indices",
|
|
64
|
+
BRACKETS = "brackets",
|
|
65
|
+
REPEAT = "repeat",
|
|
66
|
+
COMMA = "comma"
|
|
67
|
+
}
|
|
68
|
+
|
|
3
69
|
type RequestParams = Pick<AxiosRequestConfig, 'params' | 'data'>;
|
|
4
70
|
type RequestConfigParams = Pick<AxiosRequestConfig, 'params' | 'data'>;
|
|
5
71
|
type RequestConfig = Omit<AxiosRequestConfig, 'baseURL' | 'url'> & {
|
|
@@ -15,7 +81,6 @@ type RequestConfig = Omit<AxiosRequestConfig, 'baseURL' | 'url'> & {
|
|
|
15
81
|
xml?: boolean;
|
|
16
82
|
};
|
|
17
83
|
type BaseRequestConfig = Pick<AxiosRequestConfig, 'auth' | 'headers' | 'timeout' | 'responseType'> & {
|
|
18
|
-
name?: string;
|
|
19
84
|
baseUrl?: string;
|
|
20
85
|
baseUrlName?: string;
|
|
21
86
|
baseUrlMap?: Record<string, string>;
|
|
@@ -23,10 +88,8 @@ type BaseRequestConfig = Pick<AxiosRequestConfig, 'auth' | 'headers' | 'timeout'
|
|
|
23
88
|
urlParts?: (number | string)[];
|
|
24
89
|
bearerToken?: string;
|
|
25
90
|
apiKey?: string;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
array?: 'indices' | 'brackets' | 'repeat' | 'comma';
|
|
29
|
-
};
|
|
91
|
+
serializer?: Partial<SerializerConfig>;
|
|
92
|
+
logger?: Partial<LoggerConfig>;
|
|
30
93
|
};
|
|
31
94
|
type ResponseConfig = {
|
|
32
95
|
raw?: boolean;
|
|
@@ -43,108 +106,11 @@ type RawResponse<T = unknown> = {
|
|
|
43
106
|
method: HttpMethods;
|
|
44
107
|
data: T;
|
|
45
108
|
};
|
|
46
|
-
declare enum HttpMethods {
|
|
47
|
-
GET = "get",
|
|
48
|
-
POST = "post",
|
|
49
|
-
PUT = "put",
|
|
50
|
-
PATCH = "patch",
|
|
51
|
-
DELETE = "delete"
|
|
52
|
-
}
|
|
53
|
-
declare enum HttpStatuses {
|
|
54
|
-
CONTINUE = 100,
|
|
55
|
-
SWITCHING_PROTOCOLS = 101,
|
|
56
|
-
PROCESSING = 102,
|
|
57
|
-
EARLYHINTS = 103,
|
|
58
|
-
OK = 200,
|
|
59
|
-
CREATED = 201,
|
|
60
|
-
ACCEPTED = 202,
|
|
61
|
-
NON_AUTHORITATIVE_INFORMATION = 203,
|
|
62
|
-
NO_CONTENT = 204,
|
|
63
|
-
RESET_CONTENT = 205,
|
|
64
|
-
PARTIAL_CONTENT = 206,
|
|
65
|
-
AMBIGUOUS = 300,
|
|
66
|
-
MOVED_PERMANENTLY = 301,
|
|
67
|
-
FOUND = 302,
|
|
68
|
-
SEE_OTHER = 303,
|
|
69
|
-
NOT_MODIFIED = 304,
|
|
70
|
-
TEMPORARY_REDIRECT = 307,
|
|
71
|
-
PERMANENT_REDIRECT = 308,
|
|
72
|
-
BAD_REQUEST = 400,
|
|
73
|
-
UNAUTHORIZED = 401,
|
|
74
|
-
PAYMENT_REQUIRED = 402,
|
|
75
|
-
FORBIDDEN = 403,
|
|
76
|
-
NOT_FOUND = 404,
|
|
77
|
-
METHOD_NOT_ALLOWED = 405,
|
|
78
|
-
NOT_ACCEPTABLE = 406,
|
|
79
|
-
PROXY_AUTHENTICATION_REQUIRED = 407,
|
|
80
|
-
REQUEST_TIMEOUT = 408,
|
|
81
|
-
CONFLICT = 409,
|
|
82
|
-
GONE = 410,
|
|
83
|
-
LENGTH_REQUIRED = 411,
|
|
84
|
-
PRECONDITION_FAILED = 412,
|
|
85
|
-
PAYLOAD_TOO_LARGE = 413,
|
|
86
|
-
URI_TOO_LONG = 414,
|
|
87
|
-
UNSUPPORTED_MEDIA_TYPE = 415,
|
|
88
|
-
REQUESTED_RANGE_NOT_SATISFIABLE = 416,
|
|
89
|
-
EXPECTATION_FAILED = 417,
|
|
90
|
-
I_AM_A_TEAPOT = 418,
|
|
91
|
-
MISDIRECTED = 421,
|
|
92
|
-
UNPROCESSABLE_ENTITY = 422,
|
|
93
|
-
FAILED_DEPENDENCY = 424,
|
|
94
|
-
PRECONDITION_REQUIRED = 428,
|
|
95
|
-
TOO_MANY_REQUESTS = 429,
|
|
96
|
-
INTERNAL_SERVER_ERROR = 500,
|
|
97
|
-
NOT_IMPLEMENTED = 501,
|
|
98
|
-
BAD_GATEWAY = 502,
|
|
99
|
-
SERVICE_UNAVAILABLE = 503,
|
|
100
|
-
GATEWAY_TIMEOUT = 504,
|
|
101
|
-
HTTP_VERSION_NOT_SUPPORTED = 505
|
|
102
|
-
}
|
|
103
|
-
type PaginationDto = {
|
|
104
|
-
pagination?: boolean | null;
|
|
105
|
-
page?: number | null;
|
|
106
|
-
pageSize?: number | null;
|
|
107
|
-
bulkSize?: number | null;
|
|
108
|
-
};
|
|
109
|
-
type Pagination = {
|
|
110
|
-
total: number;
|
|
111
|
-
currentPage: number;
|
|
112
|
-
lastPage: number;
|
|
113
|
-
from: number;
|
|
114
|
-
to: number;
|
|
115
|
-
pageSize: number;
|
|
116
|
-
};
|
|
117
|
-
type PaginationResponse<T = unknown> = {
|
|
118
|
-
data: T[];
|
|
119
|
-
pagination: Pagination;
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
declare class Logger {
|
|
123
|
-
private config;
|
|
124
|
-
private logger;
|
|
125
|
-
private level;
|
|
126
|
-
constructor(config: BaseRequestConfig);
|
|
127
|
-
logRequest(request: AxiosRequestConfig): void;
|
|
128
|
-
logResponse(response: AxiosResponse, duration: number): void;
|
|
129
|
-
logError(error: AxiosError, duration: number): void;
|
|
130
|
-
makeResponse<T>(response: AxiosResponse): {
|
|
131
|
-
success: boolean;
|
|
132
|
-
status: HttpStatuses;
|
|
133
|
-
method: HttpMethods;
|
|
134
|
-
data: T;
|
|
135
|
-
};
|
|
136
|
-
makeErrorResponse<T>(error: AxiosError): {
|
|
137
|
-
success: boolean;
|
|
138
|
-
status: HttpStatuses;
|
|
139
|
-
method: HttpMethods;
|
|
140
|
-
data: T;
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
109
|
|
|
144
110
|
declare class RequestDataSource<Entity extends Record<string, any> = any, SearchParams extends RequestConfigParams = any, SearchResponse extends Record<string, any> = any, CreateParams extends RequestConfigParams = any, UpdateParams extends RequestConfigParams = any> {
|
|
145
|
-
|
|
111
|
+
baseRequestConfig: BaseRequestConfig;
|
|
146
112
|
logger: Logger;
|
|
147
|
-
constructor(
|
|
113
|
+
constructor(baseRequestConfig: BaseRequestConfig);
|
|
148
114
|
common<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): Promise<T>;
|
|
149
115
|
common<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig & {
|
|
150
116
|
raw: true;
|
|
@@ -172,4 +138,4 @@ declare class RequestHelper {
|
|
|
172
138
|
static sleep(seconds: number): Promise<unknown>;
|
|
173
139
|
}
|
|
174
140
|
|
|
175
|
-
export { type BaseRequestConfig,
|
|
141
|
+
export { type BaseRequestConfig, Logger, type LoggerConfig, LoggerLevels, type Pagination, type PaginationDto, type PaginationResponse, type RawResponse, type RequestConfig, type RequestConfigParams, RequestDataSource, RequestHelper, type RequestParams, type Response, type ResponseConfig, SerializerArrayFormats, type SerializerConfig };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,71 @@
|
|
|
1
|
+
import * as _iamnnort_config_http from '@iamnnort/config/http';
|
|
2
|
+
import { HttpStatuses, HttpMethods } from '@iamnnort/config/http';
|
|
3
|
+
export { HttpMethods, HttpStatuses } from '@iamnnort/config/http';
|
|
1
4
|
import { AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
|
|
2
5
|
|
|
6
|
+
type LoggerConfig = {
|
|
7
|
+
name: string;
|
|
8
|
+
level: LoggerLevels;
|
|
9
|
+
};
|
|
10
|
+
declare enum LoggerLevels {
|
|
11
|
+
FATAL = "fatal",
|
|
12
|
+
ERROR = "error",
|
|
13
|
+
WARN = "warn",
|
|
14
|
+
INFO = "info",
|
|
15
|
+
DEBUG = "debug",
|
|
16
|
+
TRACE = "trace"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare class Logger {
|
|
20
|
+
private logger;
|
|
21
|
+
private config;
|
|
22
|
+
constructor(config?: Partial<LoggerConfig>);
|
|
23
|
+
logRequest(request: AxiosRequestConfig): void;
|
|
24
|
+
logResponse(response: AxiosResponse, duration: number): void;
|
|
25
|
+
logError(request: AxiosRequestConfig, error: AxiosError, duration: number): void;
|
|
26
|
+
makeResponse<T>(response: AxiosResponse): {
|
|
27
|
+
success: boolean;
|
|
28
|
+
status: HttpStatuses;
|
|
29
|
+
method: _iamnnort_config_http.HttpMethods;
|
|
30
|
+
data: T;
|
|
31
|
+
};
|
|
32
|
+
makeErrorResponse<T>(error: AxiosError): {
|
|
33
|
+
success: boolean;
|
|
34
|
+
status: HttpStatuses;
|
|
35
|
+
method: _iamnnort_config_http.HttpMethods;
|
|
36
|
+
data: T;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
type PaginationDto = {
|
|
41
|
+
pagination?: boolean | null;
|
|
42
|
+
page?: number | null;
|
|
43
|
+
pageSize?: number | null;
|
|
44
|
+
bulkSize?: number | null;
|
|
45
|
+
};
|
|
46
|
+
type Pagination = {
|
|
47
|
+
total: number;
|
|
48
|
+
currentPage: number;
|
|
49
|
+
lastPage: number;
|
|
50
|
+
from: number;
|
|
51
|
+
to: number;
|
|
52
|
+
pageSize: number;
|
|
53
|
+
};
|
|
54
|
+
type PaginationResponse<T = unknown> = {
|
|
55
|
+
data: T[];
|
|
56
|
+
pagination: Pagination;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
type SerializerConfig = {
|
|
60
|
+
arrayFormat: SerializerArrayFormats;
|
|
61
|
+
};
|
|
62
|
+
declare enum SerializerArrayFormats {
|
|
63
|
+
INDICES = "indices",
|
|
64
|
+
BRACKETS = "brackets",
|
|
65
|
+
REPEAT = "repeat",
|
|
66
|
+
COMMA = "comma"
|
|
67
|
+
}
|
|
68
|
+
|
|
3
69
|
type RequestParams = Pick<AxiosRequestConfig, 'params' | 'data'>;
|
|
4
70
|
type RequestConfigParams = Pick<AxiosRequestConfig, 'params' | 'data'>;
|
|
5
71
|
type RequestConfig = Omit<AxiosRequestConfig, 'baseURL' | 'url'> & {
|
|
@@ -15,7 +81,6 @@ type RequestConfig = Omit<AxiosRequestConfig, 'baseURL' | 'url'> & {
|
|
|
15
81
|
xml?: boolean;
|
|
16
82
|
};
|
|
17
83
|
type BaseRequestConfig = Pick<AxiosRequestConfig, 'auth' | 'headers' | 'timeout' | 'responseType'> & {
|
|
18
|
-
name?: string;
|
|
19
84
|
baseUrl?: string;
|
|
20
85
|
baseUrlName?: string;
|
|
21
86
|
baseUrlMap?: Record<string, string>;
|
|
@@ -23,10 +88,8 @@ type BaseRequestConfig = Pick<AxiosRequestConfig, 'auth' | 'headers' | 'timeout'
|
|
|
23
88
|
urlParts?: (number | string)[];
|
|
24
89
|
bearerToken?: string;
|
|
25
90
|
apiKey?: string;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
array?: 'indices' | 'brackets' | 'repeat' | 'comma';
|
|
29
|
-
};
|
|
91
|
+
serializer?: Partial<SerializerConfig>;
|
|
92
|
+
logger?: Partial<LoggerConfig>;
|
|
30
93
|
};
|
|
31
94
|
type ResponseConfig = {
|
|
32
95
|
raw?: boolean;
|
|
@@ -43,108 +106,11 @@ type RawResponse<T = unknown> = {
|
|
|
43
106
|
method: HttpMethods;
|
|
44
107
|
data: T;
|
|
45
108
|
};
|
|
46
|
-
declare enum HttpMethods {
|
|
47
|
-
GET = "get",
|
|
48
|
-
POST = "post",
|
|
49
|
-
PUT = "put",
|
|
50
|
-
PATCH = "patch",
|
|
51
|
-
DELETE = "delete"
|
|
52
|
-
}
|
|
53
|
-
declare enum HttpStatuses {
|
|
54
|
-
CONTINUE = 100,
|
|
55
|
-
SWITCHING_PROTOCOLS = 101,
|
|
56
|
-
PROCESSING = 102,
|
|
57
|
-
EARLYHINTS = 103,
|
|
58
|
-
OK = 200,
|
|
59
|
-
CREATED = 201,
|
|
60
|
-
ACCEPTED = 202,
|
|
61
|
-
NON_AUTHORITATIVE_INFORMATION = 203,
|
|
62
|
-
NO_CONTENT = 204,
|
|
63
|
-
RESET_CONTENT = 205,
|
|
64
|
-
PARTIAL_CONTENT = 206,
|
|
65
|
-
AMBIGUOUS = 300,
|
|
66
|
-
MOVED_PERMANENTLY = 301,
|
|
67
|
-
FOUND = 302,
|
|
68
|
-
SEE_OTHER = 303,
|
|
69
|
-
NOT_MODIFIED = 304,
|
|
70
|
-
TEMPORARY_REDIRECT = 307,
|
|
71
|
-
PERMANENT_REDIRECT = 308,
|
|
72
|
-
BAD_REQUEST = 400,
|
|
73
|
-
UNAUTHORIZED = 401,
|
|
74
|
-
PAYMENT_REQUIRED = 402,
|
|
75
|
-
FORBIDDEN = 403,
|
|
76
|
-
NOT_FOUND = 404,
|
|
77
|
-
METHOD_NOT_ALLOWED = 405,
|
|
78
|
-
NOT_ACCEPTABLE = 406,
|
|
79
|
-
PROXY_AUTHENTICATION_REQUIRED = 407,
|
|
80
|
-
REQUEST_TIMEOUT = 408,
|
|
81
|
-
CONFLICT = 409,
|
|
82
|
-
GONE = 410,
|
|
83
|
-
LENGTH_REQUIRED = 411,
|
|
84
|
-
PRECONDITION_FAILED = 412,
|
|
85
|
-
PAYLOAD_TOO_LARGE = 413,
|
|
86
|
-
URI_TOO_LONG = 414,
|
|
87
|
-
UNSUPPORTED_MEDIA_TYPE = 415,
|
|
88
|
-
REQUESTED_RANGE_NOT_SATISFIABLE = 416,
|
|
89
|
-
EXPECTATION_FAILED = 417,
|
|
90
|
-
I_AM_A_TEAPOT = 418,
|
|
91
|
-
MISDIRECTED = 421,
|
|
92
|
-
UNPROCESSABLE_ENTITY = 422,
|
|
93
|
-
FAILED_DEPENDENCY = 424,
|
|
94
|
-
PRECONDITION_REQUIRED = 428,
|
|
95
|
-
TOO_MANY_REQUESTS = 429,
|
|
96
|
-
INTERNAL_SERVER_ERROR = 500,
|
|
97
|
-
NOT_IMPLEMENTED = 501,
|
|
98
|
-
BAD_GATEWAY = 502,
|
|
99
|
-
SERVICE_UNAVAILABLE = 503,
|
|
100
|
-
GATEWAY_TIMEOUT = 504,
|
|
101
|
-
HTTP_VERSION_NOT_SUPPORTED = 505
|
|
102
|
-
}
|
|
103
|
-
type PaginationDto = {
|
|
104
|
-
pagination?: boolean | null;
|
|
105
|
-
page?: number | null;
|
|
106
|
-
pageSize?: number | null;
|
|
107
|
-
bulkSize?: number | null;
|
|
108
|
-
};
|
|
109
|
-
type Pagination = {
|
|
110
|
-
total: number;
|
|
111
|
-
currentPage: number;
|
|
112
|
-
lastPage: number;
|
|
113
|
-
from: number;
|
|
114
|
-
to: number;
|
|
115
|
-
pageSize: number;
|
|
116
|
-
};
|
|
117
|
-
type PaginationResponse<T = unknown> = {
|
|
118
|
-
data: T[];
|
|
119
|
-
pagination: Pagination;
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
declare class Logger {
|
|
123
|
-
private config;
|
|
124
|
-
private logger;
|
|
125
|
-
private level;
|
|
126
|
-
constructor(config: BaseRequestConfig);
|
|
127
|
-
logRequest(request: AxiosRequestConfig): void;
|
|
128
|
-
logResponse(response: AxiosResponse, duration: number): void;
|
|
129
|
-
logError(error: AxiosError, duration: number): void;
|
|
130
|
-
makeResponse<T>(response: AxiosResponse): {
|
|
131
|
-
success: boolean;
|
|
132
|
-
status: HttpStatuses;
|
|
133
|
-
method: HttpMethods;
|
|
134
|
-
data: T;
|
|
135
|
-
};
|
|
136
|
-
makeErrorResponse<T>(error: AxiosError): {
|
|
137
|
-
success: boolean;
|
|
138
|
-
status: HttpStatuses;
|
|
139
|
-
method: HttpMethods;
|
|
140
|
-
data: T;
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
109
|
|
|
144
110
|
declare class RequestDataSource<Entity extends Record<string, any> = any, SearchParams extends RequestConfigParams = any, SearchResponse extends Record<string, any> = any, CreateParams extends RequestConfigParams = any, UpdateParams extends RequestConfigParams = any> {
|
|
145
|
-
|
|
111
|
+
baseRequestConfig: BaseRequestConfig;
|
|
146
112
|
logger: Logger;
|
|
147
|
-
constructor(
|
|
113
|
+
constructor(baseRequestConfig: BaseRequestConfig);
|
|
148
114
|
common<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): Promise<T>;
|
|
149
115
|
common<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig & {
|
|
150
116
|
raw: true;
|
|
@@ -172,4 +138,4 @@ declare class RequestHelper {
|
|
|
172
138
|
static sleep(seconds: number): Promise<unknown>;
|
|
173
139
|
}
|
|
174
140
|
|
|
175
|
-
export { type BaseRequestConfig,
|
|
141
|
+
export { type BaseRequestConfig, Logger, type LoggerConfig, LoggerLevels, type Pagination, type PaginationDto, type PaginationResponse, type RawResponse, type RequestConfig, type RequestConfigParams, RequestDataSource, RequestHelper, type RequestParams, type Response, type ResponseConfig, SerializerArrayFormats, type SerializerConfig };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var d=Object.defineProperty;var a=(e,r)=>d(e,"name",{value:r,configurable:!0});var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var _qs = require('qs');var n=(function(e){return e.GET="get",e.POST="post",e.PUT="put",e.PATCH="patch",e.DELETE="delete",e})({}),u= exports.HttpStatuses =(function(e){return e[e.CONTINUE=100]="CONTINUE",e[e.SWITCHING_PROTOCOLS=101]="SWITCHING_PROTOCOLS",e[e.PROCESSING=102]="PROCESSING",e[e.EARLYHINTS=103]="EARLYHINTS",e[e.OK=200]="OK",e[e.CREATED=201]="CREATED",e[e.ACCEPTED=202]="ACCEPTED",e[e.NON_AUTHORITATIVE_INFORMATION=203]="NON_AUTHORITATIVE_INFORMATION",e[e.NO_CONTENT=204]="NO_CONTENT",e[e.RESET_CONTENT=205]="RESET_CONTENT",e[e.PARTIAL_CONTENT=206]="PARTIAL_CONTENT",e[e.AMBIGUOUS=300]="AMBIGUOUS",e[e.MOVED_PERMANENTLY=301]="MOVED_PERMANENTLY",e[e.FOUND=302]="FOUND",e[e.SEE_OTHER=303]="SEE_OTHER",e[e.NOT_MODIFIED=304]="NOT_MODIFIED",e[e.TEMPORARY_REDIRECT=307]="TEMPORARY_REDIRECT",e[e.PERMANENT_REDIRECT=308]="PERMANENT_REDIRECT",e[e.BAD_REQUEST=400]="BAD_REQUEST",e[e.UNAUTHORIZED=401]="UNAUTHORIZED",e[e.PAYMENT_REQUIRED=402]="PAYMENT_REQUIRED",e[e.FORBIDDEN=403]="FORBIDDEN",e[e.NOT_FOUND=404]="NOT_FOUND",e[e.METHOD_NOT_ALLOWED=405]="METHOD_NOT_ALLOWED",e[e.NOT_ACCEPTABLE=406]="NOT_ACCEPTABLE",e[e.PROXY_AUTHENTICATION_REQUIRED=407]="PROXY_AUTHENTICATION_REQUIRED",e[e.REQUEST_TIMEOUT=408]="REQUEST_TIMEOUT",e[e.CONFLICT=409]="CONFLICT",e[e.GONE=410]="GONE",e[e.LENGTH_REQUIRED=411]="LENGTH_REQUIRED",e[e.PRECONDITION_FAILED=412]="PRECONDITION_FAILED",e[e.PAYLOAD_TOO_LARGE=413]="PAYLOAD_TOO_LARGE",e[e.URI_TOO_LONG=414]="URI_TOO_LONG",e[e.UNSUPPORTED_MEDIA_TYPE=415]="UNSUPPORTED_MEDIA_TYPE",e[e.REQUESTED_RANGE_NOT_SATISFIABLE=416]="REQUESTED_RANGE_NOT_SATISFIABLE",e[e.EXPECTATION_FAILED=417]="EXPECTATION_FAILED",e[e.I_AM_A_TEAPOT=418]="I_AM_A_TEAPOT",e[e.MISDIRECTED=421]="MISDIRECTED",e[e.UNPROCESSABLE_ENTITY=422]="UNPROCESSABLE_ENTITY",e[e.FAILED_DEPENDENCY=424]="FAILED_DEPENDENCY",e[e.PRECONDITION_REQUIRED=428]="PRECONDITION_REQUIRED",e[e.TOO_MANY_REQUESTS=429]="TOO_MANY_REQUESTS",e[e.INTERNAL_SERVER_ERROR=500]="INTERNAL_SERVER_ERROR",e[e.NOT_IMPLEMENTED=501]="NOT_IMPLEMENTED",e[e.BAD_GATEWAY=502]="BAD_GATEWAY",e[e.SERVICE_UNAVAILABLE=503]="SERVICE_UNAVAILABLE",e[e.GATEWAY_TIMEOUT=504]="GATEWAY_TIMEOUT",e[e.HTTP_VERSION_NOT_SUPPORTED=505]="HTTP_VERSION_NOT_SUPPORTED",e})({});var l=class{static{a(this,"RequestBuilder")}constructor(r){this.baseConfig=r.baseConfig,this.requestConfig=r.requestConfig,this.config={timeout:r.requestConfig.timeout||r.baseConfig.timeout,responseType:r.requestConfig.responseType||r.baseConfig.responseType,headers:{Accept:"application/json","Content-Type":"application/json",...r.baseConfig.headers,...r.requestConfig.headers}}}makeContentType(){return this.requestConfig.multipart?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"multipart/form-data"}},this):this.requestConfig.urlencoded?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"application/x-www-form-urlencoded"}},this):this.requestConfig.xml?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"text/xml"}},this):this}makeAuth(){let r=this.requestConfig.auth||this.baseConfig.auth;if(r)return this.config={...this.config,auth:r},this;let i=this.requestConfig.bearerToken||this.baseConfig.bearerToken;if(i)return this.config={...this.config,headers:{...this.config.headers,Authorization:`Bearer ${i}`}},this;let o=this.requestConfig.apiKey||this.baseConfig.apiKey;return o?(this.config={...this.config,headers:{...this.config.headers,"x-api-key":o}},this):this}makeUrl(){let r=this.requestConfig.baseUrlMap||this.baseConfig.baseUrlMap,i=this.requestConfig.baseUrlName||this.baseConfig.baseUrlName,o=[r&&i?r[i]:this.baseConfig.baseUrl,this.baseConfig.url,...this.baseConfig.urlParts||[],this.requestConfig.baseUrl,this.requestConfig.url,...this.requestConfig.urlParts||[]].map(t=>_optionalChain([t, 'optionalAccess', _2 => _2.toString, 'call', _3 => _3()])),T=o.some(t=>_optionalChain([t, 'optionalAccess', _4 => _4.includes, 'call', _5 => _5("https")]))?"https":"http",s=o.filter(t=>t).map(t=>_optionalChain([t, 'optionalAccess', _6 => _6.replace, 'call', _7 => _7(/^(https?:\/\/|\/)?(.*?)(\/?)$/,"$2")])),g=`${T}://${s.join("/")}`;return this.config={...this.config,url:g},this}makeMethod(){return this.config={...this.config,method:this.requestConfig.method},this}makeData(){return this.requestConfig.method===n.GET?this:this.requestConfig.urlencoded?(this.config={...this.config,data:_qs.stringify.call(void 0, this.requestConfig.data)},this):(this.config={...this.config,data:this.requestConfig.data},this)}makeParams(){return this.config={...this.config,params:this.requestConfig.params},this}makeSerializer(){return this.config={...this.config,paramsSerializer:a(r=>_qs.stringify.call(void 0, r,{arrayFormat:_optionalChain([this, 'access', _8 => _8.baseConfig, 'access', _9 => _9.serializer, 'optionalAccess', _10 => _10.array])||"brackets",skipNulls:!0}),"paramsSerializer")},this}build(){return this.config}};var _pino = require('pino'); var _pino2 = _interopRequireDefault(_pino);var E=class{static{a(this,"MessageBuilder")}constructor(r,i){this.printQueue=[],this.config=r,this.request=i.request,this.response=i.response,this.error=i.error,this.duration=i.duration}makeUrl(){let r=_optionalChain([this, 'access', _11 => _11.request, 'optionalAccess', _12 => _12.url])||_optionalChain([this, 'access', _13 => _13.response, 'optionalAccess', _14 => _14.config, 'optionalAccess', _15 => _15.url])||_optionalChain([this, 'access', _16 => _16.error, 'optionalAccess', _17 => _17.response, 'optionalAccess', _18 => _18.config, 'access', _19 => _19.url]),i=_optionalChain([this, 'access', _20 => _20.request, 'optionalAccess', _21 => _21.params])||_optionalChain([this, 'access', _22 => _22.response, 'optionalAccess', _23 => _23.config, 'optionalAccess', _24 => _24.params])||_optionalChain([this, 'access', _25 => _25.error, 'optionalAccess', _26 => _26.response, 'optionalAccess', _27 => _27.config, 'access', _28 => _28.params]);return r&&(i?(delete i[0],this.printQueue.push([r,_qs.stringify.call(void 0, i,{arrayFormat:_optionalChain([this, 'access', _29 => _29.config, 'access', _30 => _30.serializer, 'optionalAccess', _31 => _31.array])||"brackets",skipNulls:!0})].filter(o=>o).join("?"))):this.printQueue.push(r)),this}makeMethodText(){let r=_optionalChain([this, 'access', _32 => _32.request, 'optionalAccess', _33 => _33.method])||_optionalChain([this, 'access', _34 => _34.response, 'optionalAccess', _35 => _35.config, 'optionalAccess', _36 => _36.method])||_optionalChain([this, 'access', _37 => _37.error, 'optionalAccess', _38 => _38.response, 'optionalAccess', _39 => _39.config, 'access', _40 => _40.method]);return r&&this.printQueue.push(r.toUpperCase()),this}makeRequestData(){let r=_optionalChain([this, 'access', _41 => _41.request, 'optionalAccess', _42 => _42.data])||_optionalChain([this, 'access', _43 => _43.response, 'optionalAccess', _44 => _44.config, 'optionalAccess', _45 => _45.data])||_optionalChain([this, 'access', _46 => _46.error, 'optionalAccess', _47 => _47.response, 'optionalAccess', _48 => _48.config, 'access', _49 => _49.data]);if(r){if(typeof r=="string")return this.printQueue.push(r),this;if(Object.keys(r).length)return this.printQueue.push(JSON.stringify(r)),this}return this}makeResponseDataText(){let r=_optionalChain([this, 'access', _50 => _50.response, 'optionalAccess', _51 => _51.data])||_optionalChain([this, 'access', _52 => _52.error, 'optionalAccess', _53 => _53.response, 'optionalAccess', _54 => _54.data]);if(r){if(typeof r=="string")return this.printQueue.push(r),this;if(Object.keys(r).length)return this.printQueue.push(JSON.stringify(r)),this}return this}makeStatusText(){let r=_optionalChain([this, 'access', _55 => _55.response, 'optionalAccess', _56 => _56.status])||_optionalChain([this, 'access', _57 => _57.error, 'optionalAccess', _58 => _58.response, 'optionalAccess', _59 => _59.status]);if(r){this.printQueue.push(`${r}`);let i=_optionalChain([this, 'access', _60 => _60.response, 'optionalAccess', _61 => _61.statusText])||_optionalChain([this, 'access', _62 => _62.error, 'optionalAccess', _63 => _63.response, 'optionalAccess', _64 => _64.statusText]);i&&this.printQueue.push(i)}return this}makeDuration(){return this.duration&&this.printQueue.push(`(${this.duration}ms)`),this}build(){return this.printQueue.join(" ")}makeMethod(){let r=_optionalChain([this, 'access', _65 => _65.request, 'optionalAccess', _66 => _66.method])||_optionalChain([this, 'access', _67 => _67.response, 'optionalAccess', _68 => _68.config, 'optionalAccess', _69 => _69.method])||_optionalChain([this, 'access', _70 => _70.error, 'optionalAccess', _71 => _71.response, 'optionalAccess', _72 => _72.config, 'access', _73 => _73.method]);return r?r.toLowerCase():n.GET}makeResponseData(){let r=_optionalChain([this, 'access', _74 => _74.response, 'optionalAccess', _75 => _75.data])||_optionalChain([this, 'access', _76 => _76.error, 'optionalAccess', _77 => _77.response, 'optionalAccess', _78 => _78.data]);return r?typeof r=="string"?r:JSON.stringify(r):""}makeStatus(){let r=_optionalChain([this, 'access', _79 => _79.response, 'optionalAccess', _80 => _80.status])||_optionalChain([this, 'access', _81 => _81.error, 'optionalAccess', _82 => _82.response, 'optionalAccess', _83 => _83.status]);return r||u.INTERNAL_SERVER_ERROR}makeResponse(){return{success:this.error===void 0,status:this.makeStatus(),method:this.makeMethod(),data:this.makeResponseData()}}};var f=class{static{a(this,"Logger")}constructor(r){this.config=r,this.level=r.logLevel||"info",this.logger=_pino2.default.call(void 0, {name:r.name,level:this.level,transport:{target:"pino-pretty",options:{colorize:!1,ignore:"time,pid,hostname"}}})}logRequest(r){let o=new E(this.config,{request:r}).makeMethodText().makeUrl().makeRequestData().build();this.logger.debug(o)}logResponse(r,i){let o=new E(this.config,{response:r,duration:i});o.makeMethodText().makeUrl().makeRequestData().makeStatusText(),["trace","debug"].includes(this.level)&&o.makeResponseDataText();let h=o.makeDuration().build();this.logger.info(h)}logError(r,i){let o=new E(this.config,{error:r,duration:i});o.makeMethodText().makeUrl().makeRequestData().makeStatusText(),["trace","debug"].includes(this.level)&&o.makeResponseDataText();let h=o.makeDuration().build();this.logger.error(h)}makeResponse(r){return new E(this.config,{response:r}).makeResponse()}makeErrorResponse(r){return new E(this.config,{error:r}).makeResponse()}};var R=class{static{a(this,"RequestDataSource")}constructor(r){this.config=r,this.logger=new f(r)}common(r,i={}){let h=new l({baseConfig:this.config,requestConfig:r}).makeContentType().makeAuth().makeUrl().makeMethod().makeParams().makeData().makeSerializer().build();this.logger.logRequest(h);let T=Date.now();return _axios2.default.request(h).then(s=>(this.logger.logResponse(s,Date.now()-T),i.raw?this.logger.makeResponse(s):s.data)).catch(s=>{if(this.logger.logError(s,Date.now()-T),i.raw)return this.logger.makeErrorResponse(s);throw _optionalChain([s, 'access', _84 => _84.response, 'optionalAccess', _85 => _85.data])||s.response||new Error(s.message)})}async*bulkCommon(r,i={}){let{page:o,pageSize:h,bulkSize:T,...s}=r.params||{},g={page:o||1,pageSize:h||30},t=T?g.page-1+T:null,m={total:0,currentPage:0,lastPage:0,from:0,to:0,pageSize:0};do{let c=await this.common({...r,params:{...g,...s}});if(m=c.pagination,!_optionalChain([c, 'access', _86 => _86.data, 'optionalAccess', _87 => _87.length]))return;i.raw?yield c:yield c.data,g.page+=1}while(m.currentPage!==m.lastPage&&m.currentPage!==t);m.currentPage!==m.lastPage&&i.bulkCallback&&await i.bulkCallback(g.page)}search(r={}){return this.common({...r,method:n.GET})}bulkSearch(r={}){return this.bulkCommon({...r,method:n.GET})}async searchOne(r={}){return((await this.common({...r,method:n.GET,params:{pageSize:1,extended:!0,strict:!0,...r.params}})).data||[])[0]}get(r,i={}){return this.common({...i,method:n.GET,url:r})}create(r){return this.common({...r,method:n.POST})}bulkCreate(r){return this.common({...r,method:n.POST,url:"/bulk",data:{bulk:r.data}})}update(r,i){return this.common({...i,method:n.PUT,url:r})}bulkUpdate(r){return this.common({...r,method:n.PUT,url:"/bulk",data:{bulk:r.data}})}remove(r,i={}){return this.common({...i,method:n.DELETE,url:r})}};var N=class{static{a(this,"RequestHelper")}static sleep(r){return new Promise(i=>{setTimeout(i,r*1e3)})}};exports.HttpMethods = n; exports.HttpStatuses = u; exports.RequestDataSource = R; exports.RequestHelper = N;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var R=Object.defineProperty;var g=(r,e)=>R(r,"name",{value:e,configurable:!0});var _pino = require('pino'); var _pino2 = _interopRequireDefault(_pino);var _http = require('@iamnnort/config/http');var c=(function(r){return r.FATAL="fatal",r.ERROR="error",r.WARN="warn",r.INFO="info",r.DEBUG="debug",r.TRACE="trace",r})({});var p=class{static{g(this,"Logger")}constructor(e={}){this.config={name:"",level:c.INFO,...e},this.logger=_pino2.default.call(void 0, {name:this.config.name,level:this.config.level,transport:{target:"pino-pretty",options:{colorize:!1,ignore:"time,pid,hostname"}}})}logRequest(e){let t=new (0, _http.HttpMessageBuilder)({request:e}),s=t.makeMethodText().makeUrlText().build(),o={},a=t.makeRequestDataObj();Object.keys(a).length>0&&(o.request=a),this.logger.debug(o,s)}logResponse(e,t){let s=new (0, _http.HttpMessageBuilder)({response:e,duration:t});s.makeMethodText().makeUrlText().makeStatusText();let o={},a=s.makeRequestDataObj();if(Object.keys(a).length>0&&(o.request=a),[c.TRACE,c.DEBUG].includes(this.config.level)){let n=s.makeResponseDataObj();Object.keys(n).length>0&&(o.response=n)}let i=s.makeDurationText().build();this.logger.info(o,i)}logError(e,t,s){let o=new (0, _http.HttpMessageBuilder)({request:e,error:t,duration:s});o.makeMethodText().makeUrlText().makeStatusText();let a={},i=o.makeRequestDataObj();if(Object.keys(i).length>0&&(a.request=i),[c.TRACE,c.DEBUG].includes(this.config.level)){let h=o.makeResponseDataObj();Object.keys(h).length>0&&(a.response=h)}let n=o.makeDurationText().build();o.makeStatus()>=_http.HttpStatuses.INTERNAL_SERVER_ERROR?this.logger.error(a,n):this.logger.warn(a,n)}makeResponse(e){return new (0, _http.HttpMessageBuilder)({response:e}).makeResponse()}makeErrorResponse(e){return new (0, _http.HttpMessageBuilder)({error:e}).makeResponse()}};var b=(function(r){return r.INDICES="indices",r.BRACKETS="brackets",r.REPEAT="repeat",r.COMMA="comma",r})({});var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var _qs = require('qs');var d=class{static{g(this,"RequestBuilder")}constructor(e){this.baseRequestConfig=e.baseRequestConfig,this.requestConfig=e.requestConfig,this.config={timeout:e.requestConfig.timeout||e.baseRequestConfig.timeout,responseType:e.requestConfig.responseType||e.baseRequestConfig.responseType,headers:{Accept:"application/json","Content-Type":"application/json",...e.baseRequestConfig.headers,...e.requestConfig.headers}}}makeContentType(){return this.requestConfig.multipart?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"multipart/form-data"}},this):this.requestConfig.urlencoded?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"application/x-www-form-urlencoded"}},this):this.requestConfig.xml?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"text/xml"}},this):this}makeAuth(){let e=this.requestConfig.auth||this.baseRequestConfig.auth;if(e)return this.config={...this.config,auth:e},this;let t=this.requestConfig.bearerToken||this.baseRequestConfig.bearerToken;if(t)return this.config={...this.config,headers:{...this.config.headers,Authorization:`Bearer ${t}`}},this;let s=this.requestConfig.apiKey||this.baseRequestConfig.apiKey;return s?(this.config={...this.config,headers:{...this.config.headers,"x-api-key":s}},this):this}makeUrl(){let e=this.requestConfig.baseUrlMap||this.baseRequestConfig.baseUrlMap,t=this.requestConfig.baseUrlName||this.baseRequestConfig.baseUrlName,s=[e&&t?e[t]:this.baseRequestConfig.baseUrl,this.baseRequestConfig.url,...this.baseRequestConfig.urlParts||[],this.requestConfig.baseUrl,this.requestConfig.url,...this.requestConfig.urlParts||[]].map(u=>_optionalChain([u, 'optionalAccess', _ => _.toString, 'call', _2 => _2()])),a=s.some(u=>_optionalChain([u, 'optionalAccess', _3 => _3.includes, 'call', _4 => _4("https")]))?"https":"http",i=s.filter(u=>u).map(u=>_optionalChain([u, 'optionalAccess', _5 => _5.replace, 'call', _6 => _6(/^(https?:\/\/|\/)?(.*?)(\/?)$/,"$2")])),n=`${a}://${i.join("/")}`;return this.config={...this.config,url:n},this}makeMethod(){return this.config={...this.config,method:this.requestConfig.method},this}makeData(){return this.requestConfig.method===_http.HttpMethods.GET?this:this.requestConfig.urlencoded?(this.config={...this.config,data:_qs.stringify.call(void 0, this.requestConfig.data)},this):(this.config={...this.config,data:this.requestConfig.data},this)}makeParams(){return this.config={...this.config,params:this.requestConfig.params},this}makeSerializer(){return this.config={...this.config,paramsSerializer:{serialize:g(e=>_qs.stringify.call(void 0, e,{arrayFormat:_optionalChain([this, 'access', _7 => _7.baseRequestConfig, 'access', _8 => _8.serializer, 'optionalAccess', _9 => _9.arrayFormat])||b.BRACKETS,skipNulls:!0}),"serialize")}},this}build(){return this.config}};var C=class{static{g(this,"RequestDataSource")}constructor(e){this.baseRequestConfig=e,this.logger=new p(this.baseRequestConfig.logger)}common(e,t={}){let o=new d({baseRequestConfig:this.baseRequestConfig,requestConfig:e}).makeContentType().makeAuth().makeUrl().makeMethod().makeParams().makeData().makeSerializer().build();this.logger.logRequest(o);let a=Date.now();return _axios2.default.request(o).then(i=>(this.logger.logResponse(i,Date.now()-a),t.raw?this.logger.makeResponse(i):i.data)).catch(i=>{if(this.logger.logError(o,i,Date.now()-a),t.raw)return this.logger.makeErrorResponse(i);throw _optionalChain([i, 'access', _10 => _10.response, 'optionalAccess', _11 => _11.data])||i.response||new Error(i.message)})}async*bulkCommon(e,t={}){let{page:s,pageSize:o,bulkSize:a,...i}=e.params||{},n={page:s||1,pageSize:o||30},u=a?n.page-1+a:null,h={total:0,currentPage:0,lastPage:0,from:0,to:0,pageSize:0};do{let f=await this.common({...e,params:{...n,...i}});if(h=f.pagination,!_optionalChain([f, 'access', _12 => _12.data, 'optionalAccess', _13 => _13.length]))return;t.raw?yield f:yield f.data,n.page+=1}while(h.currentPage!==h.lastPage&&h.currentPage!==u);h.currentPage!==h.lastPage&&t.bulkCallback&&await t.bulkCallback(n.page)}search(e={}){return this.common({...e,method:_http.HttpMethods.GET})}bulkSearch(e={}){return this.bulkCommon({...e,method:_http.HttpMethods.GET})}async searchOne(e={}){return((await this.common({...e,method:_http.HttpMethods.GET,params:{pageSize:1,extended:!0,strict:!0,...e.params}})).data||[])[0]}get(e,t={}){return this.common({...t,method:_http.HttpMethods.GET,url:e})}create(e){return this.common({...e,method:_http.HttpMethods.POST})}bulkCreate(e){return this.common({...e,method:_http.HttpMethods.POST,url:"/bulk",data:{bulk:e.data}})}update(e,t){return this.common({...t,method:_http.HttpMethods.PUT,url:e})}bulkUpdate(e){return this.common({...e,method:_http.HttpMethods.PUT,url:"/bulk",data:{bulk:e.data}})}remove(e,t={}){return this.common({...t,method:_http.HttpMethods.DELETE,url:e})}};var q=class{static{g(this,"RequestHelper")}static sleep(e){return new Promise(t=>{setTimeout(t,e*1e3)})}};exports.HttpMethods = _http.HttpMethods; exports.HttpStatuses = _http.HttpStatuses; exports.Logger = p; exports.LoggerLevels = c; exports.RequestDataSource = C; exports.RequestHelper = q; exports.SerializerArrayFormats = b;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/request/request/dist/index.js","../src/data-source.ts","../src/builder.ts","../src/types.ts"],"names":["HttpMethods","HttpStatuses","RequestBuilder","baseConfig","params","requestConfig","config","timeout","responseType","headers","Accept","makeContentType","multipart","urlencoded","xml","makeAuth","auth","bearerToken","Authorization"],"mappings":"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","file":"/home/runner/work/request/request/dist/index.js","sourcesContent":[null,"import axios, { AxiosError, AxiosResponse } from 'axios';\nimport { RequestBuilder } from './builder';\nimport { Logger } from './logger';\nimport {\n BaseRequestConfig,\n HttpMethods,\n RequestConfig,\n RequestConfigParams,\n ResponseConfig,\n RawResponse,\n PaginationResponse,\n} from './types';\n\nexport class RequestDataSource<\n Entity extends Record<string, any> = any,\n SearchParams extends RequestConfigParams = any,\n SearchResponse extends Record<string, any> = any,\n CreateParams extends RequestConfigParams = any,\n UpdateParams extends RequestConfigParams = any,\n> {\n config: BaseRequestConfig;\n\n logger: Logger;\n\n constructor(config: BaseRequestConfig) {\n this.config = config;\n\n this.logger = new Logger(config);\n }\n\n common<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): Promise<T>;\n\n common<T>(\n requestConfig: RequestConfig,\n responseConfig: ResponseConfig & {\n raw: true;\n },\n ): Promise<RawResponse<T>>;\n\n common<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig = {}) {\n const requestBuilder = new RequestBuilder({\n baseConfig: this.config,\n requestConfig,\n });\n\n const request = requestBuilder\n .makeContentType()\n .makeAuth()\n .makeUrl()\n .makeMethod()\n .makeParams()\n .makeData()\n .makeSerializer()\n .build();\n\n this.logger.logRequest(request);\n\n const startTime = Date.now();\n\n return axios\n .request(request)\n .then((response: AxiosResponse<T>) => {\n this.logger.logResponse(response, Date.now() - startTime);\n\n if (responseConfig.raw) {\n return this.logger.makeResponse<T>(response);\n }\n\n return response.data;\n })\n .catch((error: AxiosError) => {\n this.logger.logError(error, Date.now() - startTime);\n\n if (responseConfig.raw) {\n return this.logger.makeErrorResponse<T>(error);\n }\n\n throw error.response?.data || error.response || new Error(error.message);\n });\n }\n\n bulkCommon<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): AsyncGenerator<T[]>;\n\n bulkCommon<T>(\n requestConfig: RequestConfig,\n responseConfig: ResponseConfig & {\n raw: true;\n },\n ): AsyncGenerator<PaginationResponse<T>>;\n\n async *bulkCommon<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig = {}) {\n const { page, pageSize, bulkSize, ...searchDto } = requestConfig.params || {};\n\n const paginationDto = {\n page: page || 1,\n pageSize: pageSize || 30,\n };\n\n const maxPage = bulkSize ? paginationDto.page - 1 + bulkSize : null;\n\n let pagination = {\n total: 0,\n currentPage: 0,\n lastPage: 0,\n from: 0,\n to: 0,\n pageSize: 0,\n };\n\n do {\n const response = await this.common<PaginationResponse<T>>({\n ...requestConfig,\n params: {\n ...paginationDto,\n ...searchDto,\n },\n });\n\n pagination = response.pagination;\n\n if (!response.data?.length) {\n return;\n }\n\n if (responseConfig.raw) {\n yield response;\n } else {\n yield response.data;\n }\n\n paginationDto.page += 1;\n } while (pagination.currentPage !== pagination.lastPage && pagination.currentPage !== maxPage);\n\n if (pagination.currentPage !== pagination.lastPage) {\n if (responseConfig.bulkCallback) {\n await responseConfig.bulkCallback(paginationDto.page);\n }\n }\n }\n\n search(config: SearchParams = {} as SearchParams) {\n return this.common<SearchResponse>({\n ...config,\n method: HttpMethods.GET,\n });\n }\n\n bulkSearch(config: SearchParams = {} as SearchParams) {\n return this.bulkCommon<Entity>({\n ...config,\n method: HttpMethods.GET,\n });\n }\n\n async searchOne(config: SearchParams = {} as SearchParams) {\n const response = await this.common<SearchResponse>({\n ...config,\n method: HttpMethods.GET,\n params: {\n pageSize: 1,\n extended: true,\n strict: true,\n ...config.params,\n },\n });\n\n const data = response.data || [];\n\n return data[0] as Entity;\n }\n\n get(id: number | string, config: SearchParams = {} as SearchParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.GET,\n url: id,\n });\n }\n\n create(config: CreateParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.POST,\n });\n }\n\n bulkCreate(config: Omit<CreateParams, 'data'> & { data: CreateParams['data'][] }) {\n return this.common<Entity[]>({\n ...config,\n method: HttpMethods.POST,\n url: '/bulk',\n data: {\n bulk: config.data,\n },\n });\n }\n\n update(id: number | string, config: UpdateParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.PUT,\n url: id,\n });\n }\n\n bulkUpdate(config: Omit<UpdateParams, 'data'> & { data: UpdateParams['data'][] }) {\n return this.common<Entity[]>({\n ...config,\n method: HttpMethods.PUT,\n url: '/bulk',\n data: {\n bulk: config.data,\n },\n });\n }\n\n remove(id: number | string, config: SearchParams = {} as SearchParams) {\n return this.common<void>({\n ...config,\n method: HttpMethods.DELETE,\n url: id,\n });\n }\n}\n","import { AxiosRequestConfig } from 'axios';\nimport { stringify } from 'qs';\n\nimport { BaseRequestConfig, HttpMethods, RequestConfig } from './types';\n\nexport class RequestBuilder {\n baseConfig: BaseRequestConfig;\n requestConfig: RequestConfig;\n config: AxiosRequestConfig;\n\n constructor(params: { baseConfig: BaseRequestConfig; requestConfig: RequestConfig }) {\n this.baseConfig = params.baseConfig;\n this.requestConfig = params.requestConfig;\n this.config = {\n timeout: params.requestConfig.timeout || params.baseConfig.timeout,\n responseType: params.requestConfig.responseType || params.baseConfig.responseType,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...params.baseConfig.headers,\n ...params.requestConfig.headers,\n },\n };\n }\n\n makeContentType() {\n if (this.requestConfig.multipart) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'multipart/form-data',\n },\n };\n\n return this;\n }\n\n if (this.requestConfig.urlencoded) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n\n return this;\n }\n\n if (this.requestConfig.xml) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'text/xml',\n },\n };\n\n return this;\n }\n\n return this;\n }\n\n makeAuth() {\n const auth = this.requestConfig.auth || this.baseConfig.auth;\n\n if (auth) {\n this.config = {\n ...this.config,\n auth,\n };\n\n return this;\n }\n\n const bearerToken = this.requestConfig.bearerToken || this.baseConfig.bearerToken;\n\n if (bearerToken) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n Authorization: `Bearer ${bearerToken}`,\n },\n };\n\n return this;\n }\n\n const apiKey = this.requestConfig.apiKey || this.baseConfig.apiKey;\n\n if (apiKey) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'x-api-key': apiKey,\n },\n };\n\n return this;\n }\n\n return this;\n }\n\n makeUrl() {\n const baseUrlMap = this.requestConfig.baseUrlMap || this.baseConfig.baseUrlMap;\n const baseUrlName = this.requestConfig.baseUrlName || this.baseConfig.baseUrlName;\n\n const urlParts = [\n baseUrlMap && baseUrlName ? baseUrlMap[baseUrlName] : this.baseConfig.baseUrl,\n this.baseConfig.url,\n ...(this.baseConfig.urlParts || []),\n this.requestConfig.baseUrl,\n this.requestConfig.url,\n ...(this.requestConfig.urlParts || []),\n ].map((urlPart) => urlPart?.toString());\n\n const isSecureProtocol = urlParts.some((urlPart) => urlPart?.includes('https'));\n const protocol = isSecureProtocol ? 'https' : 'http';\n\n const actualUrlParts = urlParts\n .filter((urlPart) => urlPart)\n .map((urlPart) => {\n return urlPart?.replace(/^(https?:\\/\\/|\\/)?(.*?)(\\/?)$/, '$2');\n });\n\n const url = `${protocol}://${actualUrlParts.join('/')}`;\n\n this.config = {\n ...this.config,\n url,\n };\n\n return this;\n }\n\n makeMethod() {\n this.config = {\n ...this.config,\n method: this.requestConfig.method,\n };\n\n return this;\n }\n\n makeData() {\n if (this.requestConfig.method === HttpMethods.GET) {\n return this;\n }\n\n if (this.requestConfig.urlencoded) {\n this.config = {\n ...this.config,\n data: stringify(this.requestConfig.data),\n };\n\n return this;\n }\n\n this.config = {\n ...this.config,\n data: this.requestConfig.data,\n };\n\n return this;\n }\n\n makeParams() {\n this.config = {\n ...this.config,\n params: this.requestConfig.params,\n };\n\n return this;\n }\n\n makeSerializer() {\n this.config = {\n ...this.config,\n paramsSerializer: (params: any) => {\n return stringify(params, {\n arrayFormat: this.baseConfig.serializer?.array || 'brackets',\n skipNulls: true,\n });\n },\n };\n\n return this;\n }\n\n build() {\n return this.config;\n }\n}\n","import { AxiosRequestConfig } from 'axios';\n\nexport type RequestParams = Pick<AxiosRequestConfig, 'params' | 'data'>;\n\nexport type RequestConfigParams = Pick<AxiosRequestConfig, 'params' | 'data'>;\n\nexport type RequestConfig = Omit<AxiosRequestConfig, 'baseURL' | 'url'> & {\n baseUrl?: string;\n baseUrlName?: string;\n baseUrlMap?: Record<string, string>;\n url?: number | string;\n urlParts?: (number | string)[];\n bearerToken?: string;\n apiKey?: string;\n urlencoded?: boolean;\n multipart?: boolean;\n xml?: boolean;\n};\n\nexport type BaseRequestConfig = Pick<AxiosRequestConfig, 'auth' | 'headers' | 'timeout' | 'responseType'> & {\n name?: string;\n baseUrl?: string;\n baseUrlName?: string;\n baseUrlMap?: Record<string, string>;\n url?: number | string;\n urlParts?: (number | string)[];\n bearerToken?: string;\n apiKey?: string;\n logLevel?: 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace';\n serializer?: {\n array?: 'indices' | 'brackets' | 'repeat' | 'comma';\n };\n};\n\nexport type ResponseConfig = {\n raw?: boolean;\n bulkCallback?: (page: number) => Promise<void>;\n};\n\nexport type Response<T = unknown> = {\n success: boolean;\n data?: T;\n errorCode?: string;\n};\n\nexport type RawResponse<T = unknown> = {\n success: boolean;\n status: HttpStatuses;\n method: HttpMethods;\n data: T;\n};\n\nexport enum HttpMethods {\n GET = 'get',\n POST = 'post',\n PUT = 'put',\n PATCH = 'patch',\n DELETE = 'delete',\n}\n\nexport enum HttpStatuses {\n CONTINUE = 100,\n SWITCHING_PROTOCOLS = 101,\n PROCESSING = 102,\n EARLYHINTS = 103,\n OK = 200,\n CREATED = 201,\n ACCEPTED = 202,\n NON_AUTHORITATIVE_INFORMATION = 203,\n NO_CONTENT = 204,\n RESET_CONTENT = 205,\n PARTIAL_CONTENT = 206,\n AMBIGUOUS = 300,\n MOVED_PERMANENTLY = 301,\n FOUND = 302,\n SEE_OTHER = 303,\n NOT_MODIFIED = 304,\n TEMPORARY_REDIRECT = 307,\n PERMANENT_REDIRECT = 308,\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n PAYMENT_REQUIRED = 402,\n FORBIDDEN = 403,\n NOT_FOUND = 404,\n METHOD_NOT_ALLOWED = 405,\n NOT_ACCEPTABLE = 406,\n PROXY_AUTHENTICATION_REQUIRED = 407,\n REQUEST_TIMEOUT = 408,\n CONFLICT = 409,\n GONE = 410,\n LENGTH_REQUIRED = 411,\n PRECONDITION_FAILED = 412,\n PAYLOAD_TOO_LARGE = 413,\n URI_TOO_LONG = 414,\n UNSUPPORTED_MEDIA_TYPE = 415,\n REQUESTED_RANGE_NOT_SATISFIABLE = 416,\n EXPECTATION_FAILED = 417,\n I_AM_A_TEAPOT = 418,\n MISDIRECTED = 421,\n UNPROCESSABLE_ENTITY = 422,\n FAILED_DEPENDENCY = 424,\n PRECONDITION_REQUIRED = 428,\n TOO_MANY_REQUESTS = 429,\n INTERNAL_SERVER_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n BAD_GATEWAY = 502,\n SERVICE_UNAVAILABLE = 503,\n GATEWAY_TIMEOUT = 504,\n HTTP_VERSION_NOT_SUPPORTED = 505,\n}\n\nexport type PaginationDto = {\n pagination?: boolean | null;\n page?: number | null;\n pageSize?: number | null;\n bulkSize?: number | null;\n};\n\nexport type Pagination = {\n total: number;\n currentPage: number;\n lastPage: number;\n from: number;\n to: number;\n pageSize: number;\n};\n\nexport type PaginationResponse<T = unknown> = {\n data: T[];\n pagination: Pagination;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/request/request/dist/index.js","../src/logger/logger.ts","../src/logger/logger.types.ts","../src/serializer/serializer.types.ts","../src/data-source.ts","../src/builder.ts"],"names":["LoggerLevels","Logger","logger","config","name","level","INFO","pino","transport","target","options","colorize","ignore","logRequest","request","messageBuilder","HttpMessageBuilder","message","makeMethodText","makeUrlText","build","data","requestData","makeRequestDataObj","Object","keys","length","debug","logResponse","response","duration","makeStatusText","TRACE","DEBUG","includes","responseData","makeResponseDataObj","makeDurationText","info","logError","error","makeStatus","HttpStatuses","INTERNAL_SERVER_ERROR","warn","makeResponse","makeErrorResponse","SerializerArrayFormats","RequestBuilder","baseRequestConfig","requestConfig","timeout","responseType","headers","Accept","makeContentType","multipart","urlencoded","xml","makeAuth","auth","bearerToken","Authorization"],"mappings":"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","file":"/home/runner/work/request/request/dist/index.js","sourcesContent":[null,"import pino from 'pino';\nimport { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { HttpMessageBuilder, HttpStatuses } from '@iamnnort/config/http';\nimport { LoggerConfig, LoggerLevels } from './logger.types';\n\nexport class Logger {\n private logger: pino.Logger;\n\n private config: Required<LoggerConfig>;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = {\n name: '',\n level: LoggerLevels.INFO,\n ...config,\n };\n\n this.logger = pino({\n name: this.config.name,\n level: this.config.level,\n transport: {\n target: 'pino-pretty',\n options: {\n colorize: false,\n ignore: 'time,pid,hostname',\n },\n },\n });\n }\n\n logRequest(request: AxiosRequestConfig) {\n const messageBuilder = new HttpMessageBuilder({\n request,\n });\n\n const message = messageBuilder.makeMethodText().makeUrlText().build();\n\n const data = {};\n\n const requestData = messageBuilder.makeRequestDataObj();\n\n if (Object.keys(requestData).length > 0) {\n data['request'] = requestData;\n }\n\n this.logger.debug(data, message);\n }\n\n logResponse(response: AxiosResponse, duration: number) {\n const messageBuilder = new HttpMessageBuilder({\n response,\n duration,\n });\n\n messageBuilder.makeMethodText().makeUrlText().makeStatusText();\n\n const data = {};\n\n const requestData = messageBuilder.makeRequestDataObj();\n\n if (Object.keys(requestData).length > 0) {\n data['request'] = requestData;\n }\n\n if ([LoggerLevels.TRACE, LoggerLevels.DEBUG].includes(this.config.level)) {\n const responseData = messageBuilder.makeResponseDataObj();\n\n if (Object.keys(responseData).length > 0) {\n data['response'] = responseData;\n }\n }\n\n const message = messageBuilder.makeDurationText().build();\n\n this.logger.info(data, message);\n }\n\n logError(request: AxiosRequestConfig, error: AxiosError, duration: number) {\n const messageBuilder = new HttpMessageBuilder({\n request,\n error,\n duration,\n });\n\n messageBuilder.makeMethodText().makeUrlText().makeStatusText();\n\n const data = {};\n\n const requestData = messageBuilder.makeRequestDataObj();\n\n if (Object.keys(requestData).length > 0) {\n data['request'] = requestData;\n }\n\n if ([LoggerLevels.TRACE, LoggerLevels.DEBUG].includes(this.config.level)) {\n const responseData = messageBuilder.makeResponseDataObj();\n\n if (Object.keys(responseData).length > 0) {\n data['response'] = responseData;\n }\n }\n\n const message = messageBuilder.makeDurationText().build();\n\n const status = messageBuilder.makeStatus();\n\n if (status >= HttpStatuses.INTERNAL_SERVER_ERROR) {\n this.logger.error(data, message);\n } else {\n this.logger.warn(data, message);\n }\n }\n\n makeResponse<T>(response: AxiosResponse) {\n const loggerMessageBuilder = new HttpMessageBuilder({\n response,\n });\n\n const responseData = loggerMessageBuilder.makeResponse<T>();\n\n return responseData;\n }\n\n makeErrorResponse<T>(error: AxiosError) {\n const loggerMessageBuilder = new HttpMessageBuilder({\n error,\n });\n\n const errorResponseData = loggerMessageBuilder.makeResponse<T>();\n\n return errorResponseData;\n }\n}\n","export { HttpMethods, HttpStatuses } from '@iamnnort/config/http';\n\nexport type LoggerConfig = {\n name: string;\n level: LoggerLevels;\n};\n\nexport enum LoggerLevels {\n FATAL = 'fatal',\n ERROR = 'error',\n WARN = 'warn',\n INFO = 'info',\n DEBUG = 'debug',\n TRACE = 'trace',\n}\n","export type SerializerConfig = {\n arrayFormat: SerializerArrayFormats;\n};\n\nexport enum SerializerArrayFormats {\n INDICES = 'indices',\n BRACKETS = 'brackets',\n REPEAT = 'repeat',\n COMMA = 'comma',\n}\n","import axios, { AxiosError, AxiosResponse } from 'axios';\nimport { HttpMethods } from '@iamnnort/config/http';\nimport { RequestBuilder } from './builder';\nimport { Logger } from './logger/logger';\nimport { BaseRequestConfig, RequestConfig, RequestConfigParams, ResponseConfig, RawResponse } from './types';\nimport { PaginationResponse } from './pagination';\n\nexport class RequestDataSource<\n Entity extends Record<string, any> = any,\n SearchParams extends RequestConfigParams = any,\n SearchResponse extends Record<string, any> = any,\n CreateParams extends RequestConfigParams = any,\n UpdateParams extends RequestConfigParams = any,\n> {\n baseRequestConfig: BaseRequestConfig;\n\n logger: Logger;\n\n constructor(baseRequestConfig: BaseRequestConfig) {\n this.baseRequestConfig = baseRequestConfig;\n\n this.logger = new Logger(this.baseRequestConfig.logger);\n }\n\n common<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): Promise<T>;\n\n common<T>(\n requestConfig: RequestConfig,\n responseConfig: ResponseConfig & {\n raw: true;\n },\n ): Promise<RawResponse<T>>;\n\n common<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig = {}) {\n const requestBuilder = new RequestBuilder({\n baseRequestConfig: this.baseRequestConfig,\n requestConfig,\n });\n\n const request = requestBuilder\n .makeContentType()\n .makeAuth()\n .makeUrl()\n .makeMethod()\n .makeParams()\n .makeData()\n .makeSerializer()\n .build();\n\n this.logger.logRequest(request);\n\n const startTime = Date.now();\n\n return axios\n .request(request)\n .then((response: AxiosResponse<T>) => {\n this.logger.logResponse(response, Date.now() - startTime);\n\n if (responseConfig.raw) {\n return this.logger.makeResponse<T>(response);\n }\n\n return response.data;\n })\n .catch((error: AxiosError) => {\n this.logger.logError(request, error, Date.now() - startTime);\n\n if (responseConfig.raw) {\n return this.logger.makeErrorResponse<T>(error);\n }\n\n throw error.response?.data || error.response || new Error(error.message);\n });\n }\n\n bulkCommon<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): AsyncGenerator<T[]>;\n\n bulkCommon<T>(\n requestConfig: RequestConfig,\n responseConfig: ResponseConfig & {\n raw: true;\n },\n ): AsyncGenerator<PaginationResponse<T>>;\n\n async *bulkCommon<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig = {}) {\n const { page, pageSize, bulkSize, ...searchDto } = requestConfig.params || {};\n\n const paginationDto = {\n page: page || 1,\n pageSize: pageSize || 30,\n };\n\n const maxPage = bulkSize ? paginationDto.page - 1 + bulkSize : null;\n\n let pagination = {\n total: 0,\n currentPage: 0,\n lastPage: 0,\n from: 0,\n to: 0,\n pageSize: 0,\n };\n\n do {\n const response = await this.common<PaginationResponse<T>>({\n ...requestConfig,\n params: {\n ...paginationDto,\n ...searchDto,\n },\n });\n\n pagination = response.pagination;\n\n if (!response.data?.length) {\n return;\n }\n\n if (responseConfig.raw) {\n yield response;\n } else {\n yield response.data;\n }\n\n paginationDto.page += 1;\n } while (pagination.currentPage !== pagination.lastPage && pagination.currentPage !== maxPage);\n\n if (pagination.currentPage !== pagination.lastPage) {\n if (responseConfig.bulkCallback) {\n await responseConfig.bulkCallback(paginationDto.page);\n }\n }\n }\n\n search(config: SearchParams = {} as SearchParams) {\n return this.common<SearchResponse>({\n ...config,\n method: HttpMethods.GET,\n });\n }\n\n bulkSearch(config: SearchParams = {} as SearchParams) {\n return this.bulkCommon<Entity>({\n ...config,\n method: HttpMethods.GET,\n });\n }\n\n async searchOne(config: SearchParams = {} as SearchParams) {\n const response = await this.common<SearchResponse>({\n ...config,\n method: HttpMethods.GET,\n params: {\n pageSize: 1,\n extended: true,\n strict: true,\n ...config.params,\n },\n });\n\n const data = response.data || [];\n\n return data[0] as Entity;\n }\n\n get(id: number | string, config: SearchParams = {} as SearchParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.GET,\n url: id,\n });\n }\n\n create(config: CreateParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.POST,\n });\n }\n\n bulkCreate(config: Omit<CreateParams, 'data'> & { data: CreateParams['data'][] }) {\n return this.common<Entity[]>({\n ...config,\n method: HttpMethods.POST,\n url: '/bulk',\n data: {\n bulk: config.data,\n },\n });\n }\n\n update(id: number | string, config: UpdateParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.PUT,\n url: id,\n });\n }\n\n bulkUpdate(config: Omit<UpdateParams, 'data'> & { data: UpdateParams['data'][] }) {\n return this.common<Entity[]>({\n ...config,\n method: HttpMethods.PUT,\n url: '/bulk',\n data: {\n bulk: config.data,\n },\n });\n }\n\n remove(id: number | string, config: SearchParams = {} as SearchParams) {\n return this.common<void>({\n ...config,\n method: HttpMethods.DELETE,\n url: id,\n });\n }\n}\n","import { AxiosRequestConfig } from 'axios';\nimport { stringify } from 'qs';\nimport { HttpMethods } from '@iamnnort/config/http';\nimport { BaseRequestConfig, RequestConfig } from './types';\nimport { SerializerArrayFormats } from './serializer';\n\nexport class RequestBuilder {\n baseRequestConfig: BaseRequestConfig;\n requestConfig: RequestConfig;\n\n config: AxiosRequestConfig;\n\n constructor(options: { baseRequestConfig: BaseRequestConfig; requestConfig: RequestConfig }) {\n this.baseRequestConfig = options.baseRequestConfig;\n this.requestConfig = options.requestConfig;\n\n this.config = {\n timeout: options.requestConfig.timeout || options.baseRequestConfig.timeout,\n responseType: options.requestConfig.responseType || options.baseRequestConfig.responseType,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...options.baseRequestConfig.headers,\n ...options.requestConfig.headers,\n },\n };\n }\n\n makeContentType() {\n if (this.requestConfig.multipart) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'multipart/form-data',\n },\n };\n\n return this;\n }\n\n if (this.requestConfig.urlencoded) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n\n return this;\n }\n\n if (this.requestConfig.xml) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'text/xml',\n },\n };\n\n return this;\n }\n\n return this;\n }\n\n makeAuth() {\n const auth = this.requestConfig.auth || this.baseRequestConfig.auth;\n\n if (auth) {\n this.config = {\n ...this.config,\n auth,\n };\n\n return this;\n }\n\n const bearerToken = this.requestConfig.bearerToken || this.baseRequestConfig.bearerToken;\n\n if (bearerToken) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n Authorization: `Bearer ${bearerToken}`,\n },\n };\n\n return this;\n }\n\n const apiKey = this.requestConfig.apiKey || this.baseRequestConfig.apiKey;\n\n if (apiKey) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'x-api-key': apiKey,\n },\n };\n\n return this;\n }\n\n return this;\n }\n\n makeUrl() {\n const baseUrlMap = this.requestConfig.baseUrlMap || this.baseRequestConfig.baseUrlMap;\n const baseUrlName = this.requestConfig.baseUrlName || this.baseRequestConfig.baseUrlName;\n\n const urlParts = [\n baseUrlMap && baseUrlName ? baseUrlMap[baseUrlName] : this.baseRequestConfig.baseUrl,\n this.baseRequestConfig.url,\n ...(this.baseRequestConfig.urlParts || []),\n this.requestConfig.baseUrl,\n this.requestConfig.url,\n ...(this.requestConfig.urlParts || []),\n ].map((urlPart) => urlPart?.toString());\n\n const isSecureProtocol = urlParts.some((urlPart) => urlPart?.includes('https'));\n const protocol = isSecureProtocol ? 'https' : 'http';\n\n const actualUrlParts = urlParts\n .filter((urlPart) => urlPart)\n .map((urlPart) => {\n return urlPart?.replace(/^(https?:\\/\\/|\\/)?(.*?)(\\/?)$/, '$2');\n });\n\n const url = `${protocol}://${actualUrlParts.join('/')}`;\n\n this.config = {\n ...this.config,\n url,\n };\n\n return this;\n }\n\n makeMethod() {\n this.config = {\n ...this.config,\n method: this.requestConfig.method,\n };\n\n return this;\n }\n\n makeData() {\n if (this.requestConfig.method === HttpMethods.GET) {\n return this;\n }\n\n if (this.requestConfig.urlencoded) {\n this.config = {\n ...this.config,\n data: stringify(this.requestConfig.data),\n };\n\n return this;\n }\n\n this.config = {\n ...this.config,\n data: this.requestConfig.data,\n };\n\n return this;\n }\n\n makeParams() {\n this.config = {\n ...this.config,\n params: this.requestConfig.params,\n };\n\n return this;\n }\n\n makeSerializer() {\n this.config = {\n ...this.config,\n paramsSerializer: {\n serialize: (params: any) => {\n return stringify(params, {\n arrayFormat: this.baseRequestConfig.serializer?.arrayFormat || SerializerArrayFormats.BRACKETS,\n skipNulls: true,\n });\n },\n },\n };\n\n return this;\n }\n\n build() {\n return this.config;\n }\n}\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var R=Object.defineProperty;var g=(r,e)=>R(r,"name",{value:e,configurable:!0});import T from"pino";import{HttpMessageBuilder as l,HttpStatuses as x}from"@iamnnort/config/http";import{HttpMethods as S,HttpStatuses as U}from"@iamnnort/config/http";var c=(function(r){return r.FATAL="fatal",r.ERROR="error",r.WARN="warn",r.INFO="info",r.DEBUG="debug",r.TRACE="trace",r})({});var p=class{static{g(this,"Logger")}logger;config;constructor(e={}){this.config={name:"",level:c.INFO,...e},this.logger=T({name:this.config.name,level:this.config.level,transport:{target:"pino-pretty",options:{colorize:!1,ignore:"time,pid,hostname"}}})}logRequest(e){let t=new l({request:e}),s=t.makeMethodText().makeUrlText().build(),o={},a=t.makeRequestDataObj();Object.keys(a).length>0&&(o.request=a),this.logger.debug(o,s)}logResponse(e,t){let s=new l({response:e,duration:t});s.makeMethodText().makeUrlText().makeStatusText();let o={},a=s.makeRequestDataObj();if(Object.keys(a).length>0&&(o.request=a),[c.TRACE,c.DEBUG].includes(this.config.level)){let n=s.makeResponseDataObj();Object.keys(n).length>0&&(o.response=n)}let i=s.makeDurationText().build();this.logger.info(o,i)}logError(e,t,s){let o=new l({request:e,error:t,duration:s});o.makeMethodText().makeUrlText().makeStatusText();let a={},i=o.makeRequestDataObj();if(Object.keys(i).length>0&&(a.request=i),[c.TRACE,c.DEBUG].includes(this.config.level)){let h=o.makeResponseDataObj();Object.keys(h).length>0&&(a.response=h)}let n=o.makeDurationText().build();o.makeStatus()>=x.INTERNAL_SERVER_ERROR?this.logger.error(a,n):this.logger.warn(a,n)}makeResponse(e){return new l({response:e}).makeResponse()}makeErrorResponse(e){return new l({error:e}).makeResponse()}};var b=(function(r){return r.INDICES="indices",r.BRACKETS="brackets",r.REPEAT="repeat",r.COMMA="comma",r})({});import D from"axios";import{HttpMethods as m}from"@iamnnort/config/http";import{stringify as k}from"qs";import{HttpMethods as E}from"@iamnnort/config/http";var d=class{static{g(this,"RequestBuilder")}baseRequestConfig;requestConfig;config;constructor(e){this.baseRequestConfig=e.baseRequestConfig,this.requestConfig=e.requestConfig,this.config={timeout:e.requestConfig.timeout||e.baseRequestConfig.timeout,responseType:e.requestConfig.responseType||e.baseRequestConfig.responseType,headers:{Accept:"application/json","Content-Type":"application/json",...e.baseRequestConfig.headers,...e.requestConfig.headers}}}makeContentType(){return this.requestConfig.multipart?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"multipart/form-data"}},this):this.requestConfig.urlencoded?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"application/x-www-form-urlencoded"}},this):this.requestConfig.xml?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"text/xml"}},this):this}makeAuth(){let e=this.requestConfig.auth||this.baseRequestConfig.auth;if(e)return this.config={...this.config,auth:e},this;let t=this.requestConfig.bearerToken||this.baseRequestConfig.bearerToken;if(t)return this.config={...this.config,headers:{...this.config.headers,Authorization:`Bearer ${t}`}},this;let s=this.requestConfig.apiKey||this.baseRequestConfig.apiKey;return s?(this.config={...this.config,headers:{...this.config.headers,"x-api-key":s}},this):this}makeUrl(){let e=this.requestConfig.baseUrlMap||this.baseRequestConfig.baseUrlMap,t=this.requestConfig.baseUrlName||this.baseRequestConfig.baseUrlName,s=[e&&t?e[t]:this.baseRequestConfig.baseUrl,this.baseRequestConfig.url,...this.baseRequestConfig.urlParts||[],this.requestConfig.baseUrl,this.requestConfig.url,...this.requestConfig.urlParts||[]].map(u=>u?.toString()),a=s.some(u=>u?.includes("https"))?"https":"http",i=s.filter(u=>u).map(u=>u?.replace(/^(https?:\/\/|\/)?(.*?)(\/?)$/,"$2")),n=`${a}://${i.join("/")}`;return this.config={...this.config,url:n},this}makeMethod(){return this.config={...this.config,method:this.requestConfig.method},this}makeData(){return this.requestConfig.method===E.GET?this:this.requestConfig.urlencoded?(this.config={...this.config,data:k(this.requestConfig.data)},this):(this.config={...this.config,data:this.requestConfig.data},this)}makeParams(){return this.config={...this.config,params:this.requestConfig.params},this}makeSerializer(){return this.config={...this.config,paramsSerializer:{serialize:g(e=>k(e,{arrayFormat:this.baseRequestConfig.serializer?.arrayFormat||b.BRACKETS,skipNulls:!0}),"serialize")}},this}build(){return this.config}};var C=class{static{g(this,"RequestDataSource")}baseRequestConfig;logger;constructor(e){this.baseRequestConfig=e,this.logger=new p(this.baseRequestConfig.logger)}common(e,t={}){let o=new d({baseRequestConfig:this.baseRequestConfig,requestConfig:e}).makeContentType().makeAuth().makeUrl().makeMethod().makeParams().makeData().makeSerializer().build();this.logger.logRequest(o);let a=Date.now();return D.request(o).then(i=>(this.logger.logResponse(i,Date.now()-a),t.raw?this.logger.makeResponse(i):i.data)).catch(i=>{if(this.logger.logError(o,i,Date.now()-a),t.raw)return this.logger.makeErrorResponse(i);throw i.response?.data||i.response||new Error(i.message)})}async*bulkCommon(e,t={}){let{page:s,pageSize:o,bulkSize:a,...i}=e.params||{},n={page:s||1,pageSize:o||30},u=a?n.page-1+a:null,h={total:0,currentPage:0,lastPage:0,from:0,to:0,pageSize:0};do{let f=await this.common({...e,params:{...n,...i}});if(h=f.pagination,!f.data?.length)return;t.raw?yield f:yield f.data,n.page+=1}while(h.currentPage!==h.lastPage&&h.currentPage!==u);h.currentPage!==h.lastPage&&t.bulkCallback&&await t.bulkCallback(n.page)}search(e={}){return this.common({...e,method:m.GET})}bulkSearch(e={}){return this.bulkCommon({...e,method:m.GET})}async searchOne(e={}){return((await this.common({...e,method:m.GET,params:{pageSize:1,extended:!0,strict:!0,...e.params}})).data||[])[0]}get(e,t={}){return this.common({...t,method:m.GET,url:e})}create(e){return this.common({...e,method:m.POST})}bulkCreate(e){return this.common({...e,method:m.POST,url:"/bulk",data:{bulk:e.data}})}update(e,t){return this.common({...t,method:m.PUT,url:e})}bulkUpdate(e){return this.common({...e,method:m.PUT,url:"/bulk",data:{bulk:e.data}})}remove(e,t={}){return this.common({...t,method:m.DELETE,url:e})}};var q=class{static{g(this,"RequestHelper")}static sleep(e){return new Promise(t=>{setTimeout(t,e*1e3)})}};export{S as HttpMethods,U as HttpStatuses,p as Logger,c as LoggerLevels,C as RequestDataSource,q as RequestHelper,b as SerializerArrayFormats};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data-source.ts","../src/builder.ts","../src/types.ts","../src/logger.ts","../src/message-builder.ts","../src/helper.ts"],"sourcesContent":["import axios, { AxiosError, AxiosResponse } from 'axios';\nimport { RequestBuilder } from './builder';\nimport { Logger } from './logger';\nimport {\n BaseRequestConfig,\n HttpMethods,\n RequestConfig,\n RequestConfigParams,\n ResponseConfig,\n RawResponse,\n PaginationResponse,\n} from './types';\n\nexport class RequestDataSource<\n Entity extends Record<string, any> = any,\n SearchParams extends RequestConfigParams = any,\n SearchResponse extends Record<string, any> = any,\n CreateParams extends RequestConfigParams = any,\n UpdateParams extends RequestConfigParams = any,\n> {\n config: BaseRequestConfig;\n\n logger: Logger;\n\n constructor(config: BaseRequestConfig) {\n this.config = config;\n\n this.logger = new Logger(config);\n }\n\n common<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): Promise<T>;\n\n common<T>(\n requestConfig: RequestConfig,\n responseConfig: ResponseConfig & {\n raw: true;\n },\n ): Promise<RawResponse<T>>;\n\n common<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig = {}) {\n const requestBuilder = new RequestBuilder({\n baseConfig: this.config,\n requestConfig,\n });\n\n const request = requestBuilder\n .makeContentType()\n .makeAuth()\n .makeUrl()\n .makeMethod()\n .makeParams()\n .makeData()\n .makeSerializer()\n .build();\n\n this.logger.logRequest(request);\n\n const startTime = Date.now();\n\n return axios\n .request(request)\n .then((response: AxiosResponse<T>) => {\n this.logger.logResponse(response, Date.now() - startTime);\n\n if (responseConfig.raw) {\n return this.logger.makeResponse<T>(response);\n }\n\n return response.data;\n })\n .catch((error: AxiosError) => {\n this.logger.logError(error, Date.now() - startTime);\n\n if (responseConfig.raw) {\n return this.logger.makeErrorResponse<T>(error);\n }\n\n throw error.response?.data || error.response || new Error(error.message);\n });\n }\n\n bulkCommon<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): AsyncGenerator<T[]>;\n\n bulkCommon<T>(\n requestConfig: RequestConfig,\n responseConfig: ResponseConfig & {\n raw: true;\n },\n ): AsyncGenerator<PaginationResponse<T>>;\n\n async *bulkCommon<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig = {}) {\n const { page, pageSize, bulkSize, ...searchDto } = requestConfig.params || {};\n\n const paginationDto = {\n page: page || 1,\n pageSize: pageSize || 30,\n };\n\n const maxPage = bulkSize ? paginationDto.page - 1 + bulkSize : null;\n\n let pagination = {\n total: 0,\n currentPage: 0,\n lastPage: 0,\n from: 0,\n to: 0,\n pageSize: 0,\n };\n\n do {\n const response = await this.common<PaginationResponse<T>>({\n ...requestConfig,\n params: {\n ...paginationDto,\n ...searchDto,\n },\n });\n\n pagination = response.pagination;\n\n if (!response.data?.length) {\n return;\n }\n\n if (responseConfig.raw) {\n yield response;\n } else {\n yield response.data;\n }\n\n paginationDto.page += 1;\n } while (pagination.currentPage !== pagination.lastPage && pagination.currentPage !== maxPage);\n\n if (pagination.currentPage !== pagination.lastPage) {\n if (responseConfig.bulkCallback) {\n await responseConfig.bulkCallback(paginationDto.page);\n }\n }\n }\n\n search(config: SearchParams = {} as SearchParams) {\n return this.common<SearchResponse>({\n ...config,\n method: HttpMethods.GET,\n });\n }\n\n bulkSearch(config: SearchParams = {} as SearchParams) {\n return this.bulkCommon<Entity>({\n ...config,\n method: HttpMethods.GET,\n });\n }\n\n async searchOne(config: SearchParams = {} as SearchParams) {\n const response = await this.common<SearchResponse>({\n ...config,\n method: HttpMethods.GET,\n params: {\n pageSize: 1,\n extended: true,\n strict: true,\n ...config.params,\n },\n });\n\n const data = response.data || [];\n\n return data[0] as Entity;\n }\n\n get(id: number | string, config: SearchParams = {} as SearchParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.GET,\n url: id,\n });\n }\n\n create(config: CreateParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.POST,\n });\n }\n\n bulkCreate(config: Omit<CreateParams, 'data'> & { data: CreateParams['data'][] }) {\n return this.common<Entity[]>({\n ...config,\n method: HttpMethods.POST,\n url: '/bulk',\n data: {\n bulk: config.data,\n },\n });\n }\n\n update(id: number | string, config: UpdateParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.PUT,\n url: id,\n });\n }\n\n bulkUpdate(config: Omit<UpdateParams, 'data'> & { data: UpdateParams['data'][] }) {\n return this.common<Entity[]>({\n ...config,\n method: HttpMethods.PUT,\n url: '/bulk',\n data: {\n bulk: config.data,\n },\n });\n }\n\n remove(id: number | string, config: SearchParams = {} as SearchParams) {\n return this.common<void>({\n ...config,\n method: HttpMethods.DELETE,\n url: id,\n });\n }\n}\n","import { AxiosRequestConfig } from 'axios';\nimport { stringify } from 'qs';\n\nimport { BaseRequestConfig, HttpMethods, RequestConfig } from './types';\n\nexport class RequestBuilder {\n baseConfig: BaseRequestConfig;\n requestConfig: RequestConfig;\n config: AxiosRequestConfig;\n\n constructor(params: { baseConfig: BaseRequestConfig; requestConfig: RequestConfig }) {\n this.baseConfig = params.baseConfig;\n this.requestConfig = params.requestConfig;\n this.config = {\n timeout: params.requestConfig.timeout || params.baseConfig.timeout,\n responseType: params.requestConfig.responseType || params.baseConfig.responseType,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...params.baseConfig.headers,\n ...params.requestConfig.headers,\n },\n };\n }\n\n makeContentType() {\n if (this.requestConfig.multipart) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'multipart/form-data',\n },\n };\n\n return this;\n }\n\n if (this.requestConfig.urlencoded) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n\n return this;\n }\n\n if (this.requestConfig.xml) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'text/xml',\n },\n };\n\n return this;\n }\n\n return this;\n }\n\n makeAuth() {\n const auth = this.requestConfig.auth || this.baseConfig.auth;\n\n if (auth) {\n this.config = {\n ...this.config,\n auth,\n };\n\n return this;\n }\n\n const bearerToken = this.requestConfig.bearerToken || this.baseConfig.bearerToken;\n\n if (bearerToken) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n Authorization: `Bearer ${bearerToken}`,\n },\n };\n\n return this;\n }\n\n const apiKey = this.requestConfig.apiKey || this.baseConfig.apiKey;\n\n if (apiKey) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'x-api-key': apiKey,\n },\n };\n\n return this;\n }\n\n return this;\n }\n\n makeUrl() {\n const baseUrlMap = this.requestConfig.baseUrlMap || this.baseConfig.baseUrlMap;\n const baseUrlName = this.requestConfig.baseUrlName || this.baseConfig.baseUrlName;\n\n const urlParts = [\n baseUrlMap && baseUrlName ? baseUrlMap[baseUrlName] : this.baseConfig.baseUrl,\n this.baseConfig.url,\n ...(this.baseConfig.urlParts || []),\n this.requestConfig.baseUrl,\n this.requestConfig.url,\n ...(this.requestConfig.urlParts || []),\n ].map((urlPart) => urlPart?.toString());\n\n const isSecureProtocol = urlParts.some((urlPart) => urlPart?.includes('https'));\n const protocol = isSecureProtocol ? 'https' : 'http';\n\n const actualUrlParts = urlParts\n .filter((urlPart) => urlPart)\n .map((urlPart) => {\n return urlPart?.replace(/^(https?:\\/\\/|\\/)?(.*?)(\\/?)$/, '$2');\n });\n\n const url = `${protocol}://${actualUrlParts.join('/')}`;\n\n this.config = {\n ...this.config,\n url,\n };\n\n return this;\n }\n\n makeMethod() {\n this.config = {\n ...this.config,\n method: this.requestConfig.method,\n };\n\n return this;\n }\n\n makeData() {\n if (this.requestConfig.method === HttpMethods.GET) {\n return this;\n }\n\n if (this.requestConfig.urlencoded) {\n this.config = {\n ...this.config,\n data: stringify(this.requestConfig.data),\n };\n\n return this;\n }\n\n this.config = {\n ...this.config,\n data: this.requestConfig.data,\n };\n\n return this;\n }\n\n makeParams() {\n this.config = {\n ...this.config,\n params: this.requestConfig.params,\n };\n\n return this;\n }\n\n makeSerializer() {\n this.config = {\n ...this.config,\n paramsSerializer: (params: any) => {\n return stringify(params, {\n arrayFormat: this.baseConfig.serializer?.array || 'brackets',\n skipNulls: true,\n });\n },\n };\n\n return this;\n }\n\n build() {\n return this.config;\n }\n}\n","import { AxiosRequestConfig } from 'axios';\n\nexport type RequestParams = Pick<AxiosRequestConfig, 'params' | 'data'>;\n\nexport type RequestConfigParams = Pick<AxiosRequestConfig, 'params' | 'data'>;\n\nexport type RequestConfig = Omit<AxiosRequestConfig, 'baseURL' | 'url'> & {\n baseUrl?: string;\n baseUrlName?: string;\n baseUrlMap?: Record<string, string>;\n url?: number | string;\n urlParts?: (number | string)[];\n bearerToken?: string;\n apiKey?: string;\n urlencoded?: boolean;\n multipart?: boolean;\n xml?: boolean;\n};\n\nexport type BaseRequestConfig = Pick<AxiosRequestConfig, 'auth' | 'headers' | 'timeout' | 'responseType'> & {\n name?: string;\n baseUrl?: string;\n baseUrlName?: string;\n baseUrlMap?: Record<string, string>;\n url?: number | string;\n urlParts?: (number | string)[];\n bearerToken?: string;\n apiKey?: string;\n logLevel?: 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace';\n serializer?: {\n array?: 'indices' | 'brackets' | 'repeat' | 'comma';\n };\n};\n\nexport type ResponseConfig = {\n raw?: boolean;\n bulkCallback?: (page: number) => Promise<void>;\n};\n\nexport type Response<T = unknown> = {\n success: boolean;\n data?: T;\n errorCode?: string;\n};\n\nexport type RawResponse<T = unknown> = {\n success: boolean;\n status: HttpStatuses;\n method: HttpMethods;\n data: T;\n};\n\nexport enum HttpMethods {\n GET = 'get',\n POST = 'post',\n PUT = 'put',\n PATCH = 'patch',\n DELETE = 'delete',\n}\n\nexport enum HttpStatuses {\n CONTINUE = 100,\n SWITCHING_PROTOCOLS = 101,\n PROCESSING = 102,\n EARLYHINTS = 103,\n OK = 200,\n CREATED = 201,\n ACCEPTED = 202,\n NON_AUTHORITATIVE_INFORMATION = 203,\n NO_CONTENT = 204,\n RESET_CONTENT = 205,\n PARTIAL_CONTENT = 206,\n AMBIGUOUS = 300,\n MOVED_PERMANENTLY = 301,\n FOUND = 302,\n SEE_OTHER = 303,\n NOT_MODIFIED = 304,\n TEMPORARY_REDIRECT = 307,\n PERMANENT_REDIRECT = 308,\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n PAYMENT_REQUIRED = 402,\n FORBIDDEN = 403,\n NOT_FOUND = 404,\n METHOD_NOT_ALLOWED = 405,\n NOT_ACCEPTABLE = 406,\n PROXY_AUTHENTICATION_REQUIRED = 407,\n REQUEST_TIMEOUT = 408,\n CONFLICT = 409,\n GONE = 410,\n LENGTH_REQUIRED = 411,\n PRECONDITION_FAILED = 412,\n PAYLOAD_TOO_LARGE = 413,\n URI_TOO_LONG = 414,\n UNSUPPORTED_MEDIA_TYPE = 415,\n REQUESTED_RANGE_NOT_SATISFIABLE = 416,\n EXPECTATION_FAILED = 417,\n I_AM_A_TEAPOT = 418,\n MISDIRECTED = 421,\n UNPROCESSABLE_ENTITY = 422,\n FAILED_DEPENDENCY = 424,\n PRECONDITION_REQUIRED = 428,\n TOO_MANY_REQUESTS = 429,\n INTERNAL_SERVER_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n BAD_GATEWAY = 502,\n SERVICE_UNAVAILABLE = 503,\n GATEWAY_TIMEOUT = 504,\n HTTP_VERSION_NOT_SUPPORTED = 505,\n}\n\nexport type PaginationDto = {\n pagination?: boolean | null;\n page?: number | null;\n pageSize?: number | null;\n bulkSize?: number | null;\n};\n\nexport type Pagination = {\n total: number;\n currentPage: number;\n lastPage: number;\n from: number;\n to: number;\n pageSize: number;\n};\n\nexport type PaginationResponse<T = unknown> = {\n data: T[];\n pagination: Pagination;\n};\n","import pino from 'pino';\nimport { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { BaseRequestConfig } from './types';\nimport { MessageBuilder } from './message-builder';\n\nexport class Logger {\n private config: BaseRequestConfig;\n\n private logger: pino.Logger;\n\n private level: string;\n\n constructor(config: BaseRequestConfig) {\n this.config = config;\n\n this.level = config.logLevel || 'info';\n\n this.logger = pino({\n name: config.name,\n level: this.level,\n transport: {\n target: 'pino-pretty',\n options: {\n colorize: false,\n ignore: 'time,pid,hostname',\n },\n },\n });\n }\n\n logRequest(request: AxiosRequestConfig) {\n const messageBuilder = new MessageBuilder(this.config, {\n request,\n });\n\n const message = messageBuilder.makeMethodText().makeUrl().makeRequestData().build();\n\n this.logger.debug(message);\n }\n\n logResponse(response: AxiosResponse, duration: number) {\n const messageBuilder = new MessageBuilder(this.config, {\n response,\n duration,\n });\n\n messageBuilder.makeMethodText().makeUrl().makeRequestData().makeStatusText();\n\n if (['trace', 'debug'].includes(this.level)) {\n messageBuilder.makeResponseDataText();\n }\n\n const message = messageBuilder.makeDuration().build();\n\n this.logger.info(message);\n }\n\n logError(error: AxiosError, duration: number) {\n const messageBuilder = new MessageBuilder(this.config, {\n error,\n duration,\n });\n\n messageBuilder.makeMethodText().makeUrl().makeRequestData().makeStatusText();\n\n if (['trace', 'debug'].includes(this.level)) {\n messageBuilder.makeResponseDataText();\n }\n\n const message = messageBuilder.makeDuration().build();\n\n this.logger.error(message);\n }\n\n makeResponse<T>(response: AxiosResponse) {\n const loggerMessageBuilder = new MessageBuilder(this.config, {\n response,\n });\n\n const responseData = loggerMessageBuilder.makeResponse<T>();\n\n return responseData;\n }\n\n makeErrorResponse<T>(error: AxiosError) {\n const loggerMessageBuilder = new MessageBuilder(this.config, {\n error,\n });\n\n const errorResponseData = loggerMessageBuilder.makeResponse<T>();\n\n return errorResponseData;\n }\n}\n","import { AxiosError, AxiosResponse, AxiosRequestConfig } from 'axios';\nimport { stringify } from 'qs';\nimport { BaseRequestConfig, HttpMethods, HttpStatuses } from './types';\n\nexport class MessageBuilder {\n private config: BaseRequestConfig;\n\n private printQueue: string[];\n\n private request?: AxiosRequestConfig;\n private response?: AxiosResponse;\n private error?: AxiosError;\n\n private duration?: number;\n\n constructor(\n config: BaseRequestConfig,\n options: {\n request?: AxiosRequestConfig;\n response?: AxiosResponse;\n error?: AxiosError;\n duration?: number;\n },\n ) {\n this.printQueue = [];\n this.config = config;\n this.request = options.request;\n this.response = options.response;\n this.error = options.error;\n this.duration = options.duration;\n }\n\n makeUrl() {\n const url = this.request?.url || this.response?.config?.url || this.error?.response?.config.url;\n\n const params = this.request?.params || this.response?.config?.params || this.error?.response?.config.params;\n\n if (url) {\n if (params) {\n delete params['0'];\n this.printQueue.push(\n [\n url,\n stringify(params, {\n arrayFormat: this.config.serializer?.array || 'brackets',\n skipNulls: true,\n }),\n ]\n .filter((_) => _)\n .join('?'),\n );\n } else {\n this.printQueue.push(url);\n }\n }\n\n return this;\n }\n\n makeMethodText() {\n const method = this.request?.method || this.response?.config?.method || this.error?.response?.config.method;\n\n if (method) {\n this.printQueue.push(method.toUpperCase());\n }\n\n return this;\n }\n\n makeRequestData() {\n const data = this.request?.data || this.response?.config?.data || this.error?.response?.config.data;\n\n if (data) {\n if (typeof data === 'string') {\n this.printQueue.push(data);\n\n return this;\n }\n\n if (Object.keys(data).length) {\n this.printQueue.push(JSON.stringify(data));\n\n return this;\n }\n }\n\n return this;\n }\n\n makeResponseDataText() {\n const data = this.response?.data || this.error?.response?.data;\n\n if (data) {\n if (typeof data === 'string') {\n this.printQueue.push(data);\n\n return this;\n }\n\n if (Object.keys(data).length) {\n this.printQueue.push(JSON.stringify(data));\n\n return this;\n }\n }\n\n return this;\n }\n\n makeStatusText() {\n const status = this.response?.status || this.error?.response?.status;\n\n if (status) {\n this.printQueue.push(`${status}`);\n\n const statusText = this.response?.statusText || this.error?.response?.statusText;\n\n if (statusText) {\n this.printQueue.push(statusText);\n }\n }\n\n return this;\n }\n\n makeDuration() {\n if (this.duration) {\n this.printQueue.push(`(${this.duration}ms)`);\n }\n\n return this;\n }\n\n build() {\n return this.printQueue.join(' ');\n }\n\n makeMethod() {\n const method = this.request?.method || this.response?.config?.method || this.error?.response?.config.method;\n\n if (!method) {\n return HttpMethods.GET;\n }\n\n return method.toLowerCase() as HttpMethods;\n }\n\n makeResponseData() {\n const data = this.response?.data || this.error?.response?.data;\n\n if (!data) {\n return '';\n }\n\n if (typeof data === 'string') {\n return data;\n }\n\n return JSON.stringify(data);\n }\n\n makeStatus() {\n const status = this.response?.status || this.error?.response?.status;\n\n if (!status) {\n return HttpStatuses.INTERNAL_SERVER_ERROR;\n }\n\n return status as HttpStatuses;\n }\n\n makeResponse<T>() {\n return {\n success: this.error === undefined,\n status: this.makeStatus(),\n method: this.makeMethod(),\n data: this.makeResponseData() as T,\n };\n }\n}\n","export class RequestHelper {\n static sleep(seconds: number) {\n return new Promise((resolve) => {\n setTimeout(resolve, seconds * 1000);\n });\n }\n}\n"],"mappings":"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","names":["axios","stringify","HttpMethods","HttpStatuses","RequestBuilder","baseConfig","requestConfig","config","params","timeout","responseType","headers","Accept","makeContentType","multipart","urlencoded","xml","makeAuth","auth","bearerToken","Authorization","apiKey","makeUrl","baseUrlMap","baseUrlName","urlParts","baseUrl","url","map","urlPart","toString","protocol","some","includes","actualUrlParts","filter","replace","join","makeMethod","method","makeData","HttpMethods","GET","data","stringify","makeParams","makeSerializer","paramsSerializer","__name","arrayFormat","serializer","array","skipNulls","build","pino","stringify","MessageBuilder","config","printQueue","request","response","error","duration","options","makeUrl","url","params","push","stringify","arrayFormat","serializer","array","skipNulls","filter","_","join","makeMethodText","method","toUpperCase","makeRequestData","data","Object","keys","length","JSON","makeResponseDataText","makeStatusText","status","statusText","makeDuration","build","makeMethod","toLowerCase","HttpMethods","GET","makeResponseData","makeStatus","HttpStatuses","INTERNAL_SERVER_ERROR","makeResponse","success","undefined","Logger","config","logger","level","logLevel","pino","name","transport","target","options","colorize","ignore","logRequest","request","message","MessageBuilder","makeMethodText","makeUrl","makeRequestData","build","debug","logResponse","response","duration","messageBuilder","makeStatusText","includes","makeResponseDataText","makeDuration","info","logError","error","makeResponse","makeErrorResponse","RequestDataSource","config","logger","Logger","common","requestConfig","responseConfig","request","RequestBuilder","baseConfig","makeContentType","makeAuth","makeUrl","makeMethod","makeParams","makeData","makeSerializer","build","logRequest","startTime","Date","now","axios","then","response","logResponse","raw","makeResponse","data","catch","error","logError","makeErrorResponse","Error","message","bulkCommon","page","pageSize","bulkSize","searchDto","params","paginationDto","maxPage","pagination","total","currentPage","lastPage","from","to","length","bulkCallback","search","method","HttpMethods","GET","bulkSearch","searchOne","extended","strict","get","id","url","create","POST","bulkCreate","bulk","update","PUT","bulkUpdate","remove","DELETE","RequestHelper","sleep","seconds","Promise","resolve","setTimeout"]}
|
|
1
|
+
{"version":3,"sources":["../src/logger/logger.ts","../src/logger/logger.types.ts","../src/serializer/serializer.types.ts","../src/data-source.ts","../src/builder.ts","../src/helper.ts"],"sourcesContent":["import pino from 'pino';\nimport { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { HttpMessageBuilder, HttpStatuses } from '@iamnnort/config/http';\nimport { LoggerConfig, LoggerLevels } from './logger.types';\n\nexport class Logger {\n private logger: pino.Logger;\n\n private config: Required<LoggerConfig>;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = {\n name: '',\n level: LoggerLevels.INFO,\n ...config,\n };\n\n this.logger = pino({\n name: this.config.name,\n level: this.config.level,\n transport: {\n target: 'pino-pretty',\n options: {\n colorize: false,\n ignore: 'time,pid,hostname',\n },\n },\n });\n }\n\n logRequest(request: AxiosRequestConfig) {\n const messageBuilder = new HttpMessageBuilder({\n request,\n });\n\n const message = messageBuilder.makeMethodText().makeUrlText().build();\n\n const data = {};\n\n const requestData = messageBuilder.makeRequestDataObj();\n\n if (Object.keys(requestData).length > 0) {\n data['request'] = requestData;\n }\n\n this.logger.debug(data, message);\n }\n\n logResponse(response: AxiosResponse, duration: number) {\n const messageBuilder = new HttpMessageBuilder({\n response,\n duration,\n });\n\n messageBuilder.makeMethodText().makeUrlText().makeStatusText();\n\n const data = {};\n\n const requestData = messageBuilder.makeRequestDataObj();\n\n if (Object.keys(requestData).length > 0) {\n data['request'] = requestData;\n }\n\n if ([LoggerLevels.TRACE, LoggerLevels.DEBUG].includes(this.config.level)) {\n const responseData = messageBuilder.makeResponseDataObj();\n\n if (Object.keys(responseData).length > 0) {\n data['response'] = responseData;\n }\n }\n\n const message = messageBuilder.makeDurationText().build();\n\n this.logger.info(data, message);\n }\n\n logError(request: AxiosRequestConfig, error: AxiosError, duration: number) {\n const messageBuilder = new HttpMessageBuilder({\n request,\n error,\n duration,\n });\n\n messageBuilder.makeMethodText().makeUrlText().makeStatusText();\n\n const data = {};\n\n const requestData = messageBuilder.makeRequestDataObj();\n\n if (Object.keys(requestData).length > 0) {\n data['request'] = requestData;\n }\n\n if ([LoggerLevels.TRACE, LoggerLevels.DEBUG].includes(this.config.level)) {\n const responseData = messageBuilder.makeResponseDataObj();\n\n if (Object.keys(responseData).length > 0) {\n data['response'] = responseData;\n }\n }\n\n const message = messageBuilder.makeDurationText().build();\n\n const status = messageBuilder.makeStatus();\n\n if (status >= HttpStatuses.INTERNAL_SERVER_ERROR) {\n this.logger.error(data, message);\n } else {\n this.logger.warn(data, message);\n }\n }\n\n makeResponse<T>(response: AxiosResponse) {\n const loggerMessageBuilder = new HttpMessageBuilder({\n response,\n });\n\n const responseData = loggerMessageBuilder.makeResponse<T>();\n\n return responseData;\n }\n\n makeErrorResponse<T>(error: AxiosError) {\n const loggerMessageBuilder = new HttpMessageBuilder({\n error,\n });\n\n const errorResponseData = loggerMessageBuilder.makeResponse<T>();\n\n return errorResponseData;\n }\n}\n","export { HttpMethods, HttpStatuses } from '@iamnnort/config/http';\n\nexport type LoggerConfig = {\n name: string;\n level: LoggerLevels;\n};\n\nexport enum LoggerLevels {\n FATAL = 'fatal',\n ERROR = 'error',\n WARN = 'warn',\n INFO = 'info',\n DEBUG = 'debug',\n TRACE = 'trace',\n}\n","export type SerializerConfig = {\n arrayFormat: SerializerArrayFormats;\n};\n\nexport enum SerializerArrayFormats {\n INDICES = 'indices',\n BRACKETS = 'brackets',\n REPEAT = 'repeat',\n COMMA = 'comma',\n}\n","import axios, { AxiosError, AxiosResponse } from 'axios';\nimport { HttpMethods } from '@iamnnort/config/http';\nimport { RequestBuilder } from './builder';\nimport { Logger } from './logger/logger';\nimport { BaseRequestConfig, RequestConfig, RequestConfigParams, ResponseConfig, RawResponse } from './types';\nimport { PaginationResponse } from './pagination';\n\nexport class RequestDataSource<\n Entity extends Record<string, any> = any,\n SearchParams extends RequestConfigParams = any,\n SearchResponse extends Record<string, any> = any,\n CreateParams extends RequestConfigParams = any,\n UpdateParams extends RequestConfigParams = any,\n> {\n baseRequestConfig: BaseRequestConfig;\n\n logger: Logger;\n\n constructor(baseRequestConfig: BaseRequestConfig) {\n this.baseRequestConfig = baseRequestConfig;\n\n this.logger = new Logger(this.baseRequestConfig.logger);\n }\n\n common<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): Promise<T>;\n\n common<T>(\n requestConfig: RequestConfig,\n responseConfig: ResponseConfig & {\n raw: true;\n },\n ): Promise<RawResponse<T>>;\n\n common<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig = {}) {\n const requestBuilder = new RequestBuilder({\n baseRequestConfig: this.baseRequestConfig,\n requestConfig,\n });\n\n const request = requestBuilder\n .makeContentType()\n .makeAuth()\n .makeUrl()\n .makeMethod()\n .makeParams()\n .makeData()\n .makeSerializer()\n .build();\n\n this.logger.logRequest(request);\n\n const startTime = Date.now();\n\n return axios\n .request(request)\n .then((response: AxiosResponse<T>) => {\n this.logger.logResponse(response, Date.now() - startTime);\n\n if (responseConfig.raw) {\n return this.logger.makeResponse<T>(response);\n }\n\n return response.data;\n })\n .catch((error: AxiosError) => {\n this.logger.logError(request, error, Date.now() - startTime);\n\n if (responseConfig.raw) {\n return this.logger.makeErrorResponse<T>(error);\n }\n\n throw error.response?.data || error.response || new Error(error.message);\n });\n }\n\n bulkCommon<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): AsyncGenerator<T[]>;\n\n bulkCommon<T>(\n requestConfig: RequestConfig,\n responseConfig: ResponseConfig & {\n raw: true;\n },\n ): AsyncGenerator<PaginationResponse<T>>;\n\n async *bulkCommon<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig = {}) {\n const { page, pageSize, bulkSize, ...searchDto } = requestConfig.params || {};\n\n const paginationDto = {\n page: page || 1,\n pageSize: pageSize || 30,\n };\n\n const maxPage = bulkSize ? paginationDto.page - 1 + bulkSize : null;\n\n let pagination = {\n total: 0,\n currentPage: 0,\n lastPage: 0,\n from: 0,\n to: 0,\n pageSize: 0,\n };\n\n do {\n const response = await this.common<PaginationResponse<T>>({\n ...requestConfig,\n params: {\n ...paginationDto,\n ...searchDto,\n },\n });\n\n pagination = response.pagination;\n\n if (!response.data?.length) {\n return;\n }\n\n if (responseConfig.raw) {\n yield response;\n } else {\n yield response.data;\n }\n\n paginationDto.page += 1;\n } while (pagination.currentPage !== pagination.lastPage && pagination.currentPage !== maxPage);\n\n if (pagination.currentPage !== pagination.lastPage) {\n if (responseConfig.bulkCallback) {\n await responseConfig.bulkCallback(paginationDto.page);\n }\n }\n }\n\n search(config: SearchParams = {} as SearchParams) {\n return this.common<SearchResponse>({\n ...config,\n method: HttpMethods.GET,\n });\n }\n\n bulkSearch(config: SearchParams = {} as SearchParams) {\n return this.bulkCommon<Entity>({\n ...config,\n method: HttpMethods.GET,\n });\n }\n\n async searchOne(config: SearchParams = {} as SearchParams) {\n const response = await this.common<SearchResponse>({\n ...config,\n method: HttpMethods.GET,\n params: {\n pageSize: 1,\n extended: true,\n strict: true,\n ...config.params,\n },\n });\n\n const data = response.data || [];\n\n return data[0] as Entity;\n }\n\n get(id: number | string, config: SearchParams = {} as SearchParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.GET,\n url: id,\n });\n }\n\n create(config: CreateParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.POST,\n });\n }\n\n bulkCreate(config: Omit<CreateParams, 'data'> & { data: CreateParams['data'][] }) {\n return this.common<Entity[]>({\n ...config,\n method: HttpMethods.POST,\n url: '/bulk',\n data: {\n bulk: config.data,\n },\n });\n }\n\n update(id: number | string, config: UpdateParams) {\n return this.common<Entity>({\n ...config,\n method: HttpMethods.PUT,\n url: id,\n });\n }\n\n bulkUpdate(config: Omit<UpdateParams, 'data'> & { data: UpdateParams['data'][] }) {\n return this.common<Entity[]>({\n ...config,\n method: HttpMethods.PUT,\n url: '/bulk',\n data: {\n bulk: config.data,\n },\n });\n }\n\n remove(id: number | string, config: SearchParams = {} as SearchParams) {\n return this.common<void>({\n ...config,\n method: HttpMethods.DELETE,\n url: id,\n });\n }\n}\n","import { AxiosRequestConfig } from 'axios';\nimport { stringify } from 'qs';\nimport { HttpMethods } from '@iamnnort/config/http';\nimport { BaseRequestConfig, RequestConfig } from './types';\nimport { SerializerArrayFormats } from './serializer';\n\nexport class RequestBuilder {\n baseRequestConfig: BaseRequestConfig;\n requestConfig: RequestConfig;\n\n config: AxiosRequestConfig;\n\n constructor(options: { baseRequestConfig: BaseRequestConfig; requestConfig: RequestConfig }) {\n this.baseRequestConfig = options.baseRequestConfig;\n this.requestConfig = options.requestConfig;\n\n this.config = {\n timeout: options.requestConfig.timeout || options.baseRequestConfig.timeout,\n responseType: options.requestConfig.responseType || options.baseRequestConfig.responseType,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...options.baseRequestConfig.headers,\n ...options.requestConfig.headers,\n },\n };\n }\n\n makeContentType() {\n if (this.requestConfig.multipart) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'multipart/form-data',\n },\n };\n\n return this;\n }\n\n if (this.requestConfig.urlencoded) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n\n return this;\n }\n\n if (this.requestConfig.xml) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'Content-Type': 'text/xml',\n },\n };\n\n return this;\n }\n\n return this;\n }\n\n makeAuth() {\n const auth = this.requestConfig.auth || this.baseRequestConfig.auth;\n\n if (auth) {\n this.config = {\n ...this.config,\n auth,\n };\n\n return this;\n }\n\n const bearerToken = this.requestConfig.bearerToken || this.baseRequestConfig.bearerToken;\n\n if (bearerToken) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n Authorization: `Bearer ${bearerToken}`,\n },\n };\n\n return this;\n }\n\n const apiKey = this.requestConfig.apiKey || this.baseRequestConfig.apiKey;\n\n if (apiKey) {\n this.config = {\n ...this.config,\n headers: {\n ...this.config.headers,\n 'x-api-key': apiKey,\n },\n };\n\n return this;\n }\n\n return this;\n }\n\n makeUrl() {\n const baseUrlMap = this.requestConfig.baseUrlMap || this.baseRequestConfig.baseUrlMap;\n const baseUrlName = this.requestConfig.baseUrlName || this.baseRequestConfig.baseUrlName;\n\n const urlParts = [\n baseUrlMap && baseUrlName ? baseUrlMap[baseUrlName] : this.baseRequestConfig.baseUrl,\n this.baseRequestConfig.url,\n ...(this.baseRequestConfig.urlParts || []),\n this.requestConfig.baseUrl,\n this.requestConfig.url,\n ...(this.requestConfig.urlParts || []),\n ].map((urlPart) => urlPart?.toString());\n\n const isSecureProtocol = urlParts.some((urlPart) => urlPart?.includes('https'));\n const protocol = isSecureProtocol ? 'https' : 'http';\n\n const actualUrlParts = urlParts\n .filter((urlPart) => urlPart)\n .map((urlPart) => {\n return urlPart?.replace(/^(https?:\\/\\/|\\/)?(.*?)(\\/?)$/, '$2');\n });\n\n const url = `${protocol}://${actualUrlParts.join('/')}`;\n\n this.config = {\n ...this.config,\n url,\n };\n\n return this;\n }\n\n makeMethod() {\n this.config = {\n ...this.config,\n method: this.requestConfig.method,\n };\n\n return this;\n }\n\n makeData() {\n if (this.requestConfig.method === HttpMethods.GET) {\n return this;\n }\n\n if (this.requestConfig.urlencoded) {\n this.config = {\n ...this.config,\n data: stringify(this.requestConfig.data),\n };\n\n return this;\n }\n\n this.config = {\n ...this.config,\n data: this.requestConfig.data,\n };\n\n return this;\n }\n\n makeParams() {\n this.config = {\n ...this.config,\n params: this.requestConfig.params,\n };\n\n return this;\n }\n\n makeSerializer() {\n this.config = {\n ...this.config,\n paramsSerializer: {\n serialize: (params: any) => {\n return stringify(params, {\n arrayFormat: this.baseRequestConfig.serializer?.arrayFormat || SerializerArrayFormats.BRACKETS,\n skipNulls: true,\n });\n },\n },\n };\n\n return this;\n }\n\n build() {\n return this.config;\n }\n}\n","export class RequestHelper {\n static sleep(seconds: number) {\n return new Promise((resolve) => {\n setTimeout(resolve, seconds * 1000);\n });\n }\n}\n"],"mappings":"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","names":["pino","HttpMessageBuilder","HttpStatuses","HttpMethods","HttpStatuses","LoggerLevels","Logger","logger","config","name","level","LoggerLevels","INFO","pino","transport","target","options","colorize","ignore","logRequest","request","messageBuilder","HttpMessageBuilder","message","makeMethodText","makeUrlText","build","data","requestData","makeRequestDataObj","Object","keys","length","debug","logResponse","response","duration","makeStatusText","TRACE","DEBUG","includes","responseData","makeResponseDataObj","makeDurationText","info","logError","error","makeStatus","HttpStatuses","INTERNAL_SERVER_ERROR","warn","makeResponse","makeErrorResponse","SerializerArrayFormats","axios","HttpMethods","stringify","HttpMethods","RequestBuilder","baseRequestConfig","requestConfig","config","options","timeout","responseType","headers","Accept","makeContentType","multipart","urlencoded","xml","makeAuth","auth","bearerToken","Authorization","apiKey","makeUrl","baseUrlMap","baseUrlName","urlParts","baseUrl","url","map","urlPart","toString","protocol","some","includes","actualUrlParts","filter","replace","join","makeMethod","method","makeData","HttpMethods","GET","data","stringify","makeParams","params","makeSerializer","paramsSerializer","serialize","__name","arrayFormat","serializer","SerializerArrayFormats","BRACKETS","skipNulls","build","RequestDataSource","baseRequestConfig","logger","Logger","common","requestConfig","responseConfig","request","RequestBuilder","makeContentType","makeAuth","makeUrl","makeMethod","makeParams","makeData","makeSerializer","build","logRequest","startTime","Date","now","axios","then","response","logResponse","raw","makeResponse","data","catch","error","logError","makeErrorResponse","Error","message","bulkCommon","page","pageSize","bulkSize","searchDto","params","paginationDto","maxPage","pagination","total","currentPage","lastPage","from","to","length","bulkCallback","search","config","method","HttpMethods","GET","bulkSearch","searchOne","extended","strict","get","id","url","create","POST","bulkCreate","bulk","update","PUT","bulkUpdate","remove","DELETE","RequestHelper","sleep","seconds","Promise","resolve","setTimeout"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iamnnort/request",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "Request handler for Node.js - Fast - Interactive - Simple",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
"prepare": "husky"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"
|
|
38
|
+
"@iamnnort/config": "^1.1.8",
|
|
39
|
+
"axios": "^1.13.5",
|
|
39
40
|
"pino": "^9.6.0",
|
|
40
41
|
"pino-pretty": "^13.1.3",
|
|
41
42
|
"qs": "^6.13.0"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
|
-
"@iamnnort/config": "^1.0.0",
|
|
45
45
|
"@swc/core": "^1.15.11",
|
|
46
46
|
"@types/node": "^25.2.3",
|
|
47
47
|
"@types/qs": "^6.9.16",
|