@iamnnort/request 2.0.0 → 2.0.1

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 CHANGED
@@ -13,12 +13,15 @@ yarn add @iamnnort/request
13
13
  ## Usage
14
14
 
15
15
  ```typescript
16
- import { RequestDataSource } from '@iamnnort/request';
16
+ import { LoggerLevels, RequestDataSource } from '@iamnnort/request';
17
17
 
18
18
  const dataSource = new RequestDataSource({
19
- name: 'Todo Api',
20
19
  baseUrl: 'https://dummyjson.com',
21
20
  url: '/todos',
21
+ logger: {
22
+ name: 'Todo Api',
23
+ level: LoggerLevels.DEBUG,
24
+ },
22
25
  });
23
26
 
24
27
  // Search
@@ -53,14 +56,18 @@ await dataSource.remove(1);
53
56
 
54
57
  ## Logging
55
58
 
56
- Set the `logLevel` option to enable it.
59
+ Set the `logger` option to enable it.
57
60
 
58
61
  ```typescript
62
+ import { LoggerLevels, RequestDataSource } from '@iamnnort/request';
63
+
59
64
  const dataSource = new RequestDataSource({
60
- name: 'Todo Api',
61
65
  baseUrl: 'https://dummyjson.com',
62
66
  url: '/todos',
63
- logLevel: 'debug',
67
+ logger: {
68
+ name: 'Todo Api',
69
+ level: LoggerLevels.DEBUG,
70
+ },
64
71
  });
65
72
  ```
66
73
 
@@ -79,48 +86,49 @@ INFO (Todo Api): GET https://dummyjson.com/todos?page=1 200 OK (150ms)
79
86
 
80
87
  ### Base Config
81
88
 
82
- | Parameter | Type | Description |
83
- | ------------------ | -------- | -------------------------------------------------------------------------- |
84
- | `name` | `string` | Name used as the logger label |
85
- | `baseUrl` | `string` | Main part of the server URL that will be used for the request |
86
- | `url` | `string \| number` | Server URL that will be used for the request |
87
- | `urlParts` | `(string \| number)[]` | Additional parts of URL that will be used for the request |
88
- | `baseUrlName` | `string` | Key to look up the base URL from `baseUrlMap` |
89
- | `baseUrlMap` | `Record<string, string>` | Map of named base URLs |
90
- | `headers` | `object` | Custom headers to be sent |
91
- | `auth` | `object` | HTTP Basic auth credentials |
92
- | `bearerToken` | `string` | Bearer token for Authorization header |
93
- | `apiKey` | `string` | API key sent via `x-api-key` header |
94
- | `timeout` | `number` | Request timeout in milliseconds |
95
- | `responseType` | `string` | Response type (e.g. `json`, `text`, `stream`) |
96
- | `logLevel` | `string` | Log level (`trace`, `debug`, `info`, `warn`, `error`, `fatal`) |
97
- | `serializer` | `object` | Config that allows you to customize serializing |
98
- | `serializer.array` | `string` | Array element separator (`indices`, `brackets`, `repeat`, `comma`) |
89
+ | Parameter | Type | Description |
90
+ | ---------------------- | ------------------------ | ------------------------------------------------------------------ |
91
+ | `baseUrl` | `string` | Main part of the server URL that will be used for the request |
92
+ | `url` | `string \| number` | Server URL that will be used for the request |
93
+ | `urlParts` | `(string \| number)[]` | Additional parts of URL that will be used for the request |
94
+ | `baseUrlName` | `string` | Key to look up the base URL from `baseUrlMap` |
95
+ | `baseUrlMap` | `Record<string, string>` | Map of named base URLs |
96
+ | `headers` | `object` | Custom headers to be sent |
97
+ | `auth` | `object` | HTTP Basic auth credentials |
98
+ | `bearerToken` | `string` | Bearer token for Authorization header |
99
+ | `apiKey` | `string` | API key sent via `x-api-key` header |
100
+ | `timeout` | `number` | Request timeout in milliseconds |
101
+ | `responseType` | `string` | Response type (e.g. `json`, `text`, `stream`) |
102
+ | `logger` | `object` | Logger configuration |
103
+ | `logger.name` | `string` | Name used as the logger label |
104
+ | `logger.level` | `string` | Log level (`trace`, `debug`, `info`, `warn`, `error`, `fatal`) |
105
+ | `serializer` | `object` | Config that allows you to customize serializing |
106
+ | `serializer.arrayFormat` | `string` | Array format (`indices`, `brackets`, `repeat`, `comma`) |
99
107
 
100
108
  ### Request Config
101
109
 
102
- | Parameter | Type | Description |
103
- | ------------- | --------- | ------------------------------------------------- |
104
- | `params` | `object` | URL parameters to be sent with the request |
105
- | `data` | `object` | Data to be sent as the request body |
106
- | `urlencoded` | `boolean` | Send data as `application/x-www-form-urlencoded` |
107
- | `multipart` | `boolean` | Send data as `multipart/form-data` |
108
- | `xml` | `boolean` | Send data as `text/xml` |
110
+ | Parameter | Type | Description |
111
+ | ------------ | --------- | ------------------------------------------------ |
112
+ | `params` | `object` | URL parameters to be sent with the request |
113
+ | `data` | `object` | Data to be sent as the request body |
114
+ | `urlencoded` | `boolean` | Send data as `application/x-www-form-urlencoded` |
115
+ | `multipart` | `boolean` | Send data as `multipart/form-data` |
116
+ | `xml` | `boolean` | Send data as `text/xml` |
109
117
 
110
118
  ## Methods
111
119
 
112
- | Method | HTTP Method | Description |
113
- | ------------ | ----------- | ---------------------------------------- |
114
- | `search` | `GET` | Search for entities |
115
- | `searchOne` | `GET` | Search for a single entity |
120
+ | Method | HTTP Method | Description |
121
+ | ------------ | ----------- | ------------------------------------------ |
122
+ | `search` | `GET` | Search for entities |
123
+ | `searchOne` | `GET` | Search for a single entity |
116
124
  | `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 |
125
+ | `get` | `GET` | Get entity by id |
126
+ | `create` | `POST` | Create entity |
127
+ | `bulkCreate` | `POST` | Create multiple entities |
128
+ | `update` | `PUT` | Update entity by id |
129
+ | `bulkUpdate` | `PUT` | Update multiple entities |
130
+ | `remove` | `DELETE` | Remove entity by id |
131
+ | `common` | any | Execute a custom request |
124
132
 
125
133
  ## License
126
134
 
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: _iamnnort_config_http.HttpStatuses;
29
+ method: _iamnnort_config_http.HttpMethods;
30
+ data: T;
31
+ };
32
+ makeErrorResponse<T>(error: AxiosError): {
33
+ success: boolean;
34
+ status: _iamnnort_config_http.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
- logLevel?: 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace';
27
- serializer?: {
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
- config: BaseRequestConfig;
111
+ baseRequestConfig: BaseRequestConfig;
146
112
  logger: Logger;
147
- constructor(config: BaseRequestConfig);
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, HttpMethods, HttpStatuses, type Pagination, type PaginationDto, type PaginationResponse, type RawResponse, type RequestConfig, type RequestConfigParams, RequestDataSource, RequestHelper, type RequestParams, type Response, type ResponseConfig };
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: _iamnnort_config_http.HttpStatuses;
29
+ method: _iamnnort_config_http.HttpMethods;
30
+ data: T;
31
+ };
32
+ makeErrorResponse<T>(error: AxiosError): {
33
+ success: boolean;
34
+ status: _iamnnort_config_http.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
- logLevel?: 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace';
27
- serializer?: {
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
- config: BaseRequestConfig;
111
+ baseRequestConfig: BaseRequestConfig;
146
112
  logger: Logger;
147
- constructor(config: BaseRequestConfig);
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, HttpMethods, HttpStatuses, type Pagination, type PaginationDto, type PaginationResponse, type RawResponse, type RequestConfig, type RequestConfigParams, RequestDataSource, RequestHelper, type RequestParams, type Response, type ResponseConfig };
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 T=Object.defineProperty;var u=(s,e)=>T(s,"name",{value:e,configurable:!0});var _pino = require('pino'); var _pino2 = _interopRequireDefault(_pino);var _http = require('@iamnnort/config/http');var l=(function(s){return s.FATAL="fatal",s.ERROR="error",s.WARN="warn",s.INFO="info",s.DEBUG="debug",s.TRACE="trace",s})({});var p=class{static{u(this,"Logger")}constructor(e={}){this.config={name:"",level:l.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 r=new (0, _http.HttpMessageBuilder)({request:e}).makeMethodText().makeUrlText().makeRequestDataText().build();this.logger.debug(r)}logResponse(e,t){let r=new (0, _http.HttpMessageBuilder)({response:e,duration:t});r.makeMethodText().makeUrlText().makeRequestDataText().makeStatusText(),[l.TRACE,l.DEBUG].includes(this.config.level)&&r.makeResponseDataText();let i=r.makeDurationText().build();this.logger.info(i)}logError(e,t,r){let i=new (0, _http.HttpMessageBuilder)({request:e,error:t,duration:r});i.makeMethodText().makeUrlText().makeRequestDataText().makeStatusText(),[l.TRACE,l.DEBUG].includes(this.config.level)&&i.makeResponseDataText();let a=i.makeDurationText().build();this.logger.error(a)}makeResponse(e){return new (0, _http.HttpMessageBuilder)({response:e}).makeResponse()}makeErrorResponse(e){return new (0, _http.HttpMessageBuilder)({error:e}).makeResponse()}};var C=(function(s){return s.INDICES="indices",s.BRACKETS="brackets",s.REPEAT="repeat",s.COMMA="comma",s})({});var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var _qs = require('qs');var d=class{static{u(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 r=this.requestConfig.apiKey||this.baseRequestConfig.apiKey;return r?(this.config={...this.config,headers:{...this.config.headers,"x-api-key":r}},this):this}makeUrl(){let e=this.requestConfig.baseUrlMap||this.baseRequestConfig.baseUrlMap,t=this.requestConfig.baseUrlName||this.baseRequestConfig.baseUrlName,r=[e&&t?e[t]:this.baseRequestConfig.baseUrl,this.baseRequestConfig.url,...this.baseRequestConfig.urlParts||[],this.requestConfig.baseUrl,this.requestConfig.url,...this.requestConfig.urlParts||[]].map(n=>_optionalChain([n, 'optionalAccess', _ => _.toString, 'call', _2 => _2()])),a=r.some(n=>_optionalChain([n, 'optionalAccess', _3 => _3.includes, 'call', _4 => _4("https")]))?"https":"http",o=r.filter(n=>n).map(n=>_optionalChain([n, 'optionalAccess', _5 => _5.replace, 'call', _6 => _6(/^(https?:\/\/|\/)?(.*?)(\/?)$/,"$2")])),g=`${a}://${o.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===_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:u(e=>_qs.stringify.call(void 0, e,{arrayFormat:_optionalChain([this, 'access', _7 => _7.baseRequestConfig, 'access', _8 => _8.serializer, 'optionalAccess', _9 => _9.arrayFormat])||C.BRACKETS,skipNulls:!0}),"serialize")}},this}build(){return this.config}};var b=class{static{u(this,"RequestDataSource")}constructor(e){this.baseRequestConfig=e,this.logger=new p(this.baseRequestConfig.logger)}common(e,t={}){let i=new d({baseRequestConfig:this.baseRequestConfig,requestConfig:e}).makeContentType().makeAuth().makeUrl().makeMethod().makeParams().makeData().makeSerializer().build();this.logger.logRequest(i);let a=Date.now();return _axios2.default.request(i).then(o=>(this.logger.logResponse(o,Date.now()-a),t.raw?this.logger.makeResponse(o):o.data)).catch(o=>{if(this.logger.logError(i,o,Date.now()-a),t.raw)return this.logger.makeErrorResponse(o);throw _optionalChain([o, 'access', _10 => _10.response, 'optionalAccess', _11 => _11.data])||o.response||new Error(o.message)})}async*bulkCommon(e,t={}){let{page:r,pageSize:i,bulkSize:a,...o}=e.params||{},g={page:r||1,pageSize:i||30},n=a?g.page-1+a:null,m={total:0,currentPage:0,lastPage:0,from:0,to:0,pageSize:0};do{let f=await this.common({...e,params:{...g,...o}});if(m=f.pagination,!_optionalChain([f, 'access', _12 => _12.data, 'optionalAccess', _13 => _13.length]))return;t.raw?yield f:yield f.data,g.page+=1}while(m.currentPage!==m.lastPage&&m.currentPage!==n);m.currentPage!==m.lastPage&&t.bulkCallback&&await t.bulkCallback(g.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{u(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 = l; exports.RequestDataSource = b; exports.RequestHelper = q; exports.SerializerArrayFormats = C;
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","message","HttpMessageBuilder","makeMethodText","makeUrlText","makeRequestDataText","build","debug","logResponse","response","duration","messageBuilder","makeStatusText","TRACE","DEBUG","includes","makeResponseDataText","makeDurationText","info","logError","error","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 } 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().makeRequestDataText().build();\n\n this.logger.debug(message);\n }\n\n logResponse(response: AxiosResponse, duration: number) {\n const messageBuilder = new HttpMessageBuilder({\n response,\n duration,\n });\n\n messageBuilder.makeMethodText().makeUrlText().makeRequestDataText().makeStatusText();\n\n if ([LoggerLevels.TRACE, LoggerLevels.DEBUG].includes(this.config.level)) {\n messageBuilder.makeResponseDataText();\n }\n\n const message = messageBuilder.makeDurationText().build();\n\n this.logger.info(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().makeRequestDataText().makeStatusText();\n\n if ([LoggerLevels.TRACE, LoggerLevels.DEBUG].includes(this.config.level)) {\n messageBuilder.makeResponseDataText();\n }\n\n const message = messageBuilder.makeDurationText().build();\n\n this.logger.error(message);\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 d=Object.defineProperty;var a=(e,r)=>d(e,"name",{value:r,configurable:!0});import A from"axios";import{stringify as O}from"qs";var n=(function(e){return e.GET="get",e.POST="post",e.PUT="put",e.PATCH="patch",e.DELETE="delete",e})({}),u=(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")}baseConfig;requestConfig;config;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=>t?.toString()),T=o.some(t=>t?.includes("https"))?"https":"http",s=o.filter(t=>t).map(t=>t?.replace(/^(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:O(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=>O(r,{arrayFormat:this.baseConfig.serializer?.array||"brackets",skipNulls:!0}),"paramsSerializer")},this}build(){return this.config}};import C from"pino";import{stringify as _}from"qs";var E=class{static{a(this,"MessageBuilder")}config;printQueue;request;response;error;duration;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=this.request?.url||this.response?.config?.url||this.error?.response?.config.url,i=this.request?.params||this.response?.config?.params||this.error?.response?.config.params;return r&&(i?(delete i[0],this.printQueue.push([r,_(i,{arrayFormat:this.config.serializer?.array||"brackets",skipNulls:!0})].filter(o=>o).join("?"))):this.printQueue.push(r)),this}makeMethodText(){let r=this.request?.method||this.response?.config?.method||this.error?.response?.config.method;return r&&this.printQueue.push(r.toUpperCase()),this}makeRequestData(){let r=this.request?.data||this.response?.config?.data||this.error?.response?.config.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=this.response?.data||this.error?.response?.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=this.response?.status||this.error?.response?.status;if(r){this.printQueue.push(`${r}`);let i=this.response?.statusText||this.error?.response?.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=this.request?.method||this.response?.config?.method||this.error?.response?.config.method;return r?r.toLowerCase():n.GET}makeResponseData(){let r=this.response?.data||this.error?.response?.data;return r?typeof r=="string"?r:JSON.stringify(r):""}makeStatus(){let r=this.response?.status||this.error?.response?.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")}config;logger;level;constructor(r){this.config=r,this.level=r.logLevel||"info",this.logger=C({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")}config;logger;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 A.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 s.response?.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,!c.data?.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)})}};export{n as HttpMethods,u as HttpStatuses,R as RequestDataSource,N as RequestHelper};
1
+ var T=Object.defineProperty;var u=(s,e)=>T(s,"name",{value:e,configurable:!0});import R from"pino";import{HttpMessageBuilder as c}from"@iamnnort/config/http";import{HttpMethods as U,HttpStatuses as y}from"@iamnnort/config/http";var l=(function(s){return s.FATAL="fatal",s.ERROR="error",s.WARN="warn",s.INFO="info",s.DEBUG="debug",s.TRACE="trace",s})({});var p=class{static{u(this,"Logger")}logger;config;constructor(e={}){this.config={name:"",level:l.INFO,...e},this.logger=R({name:this.config.name,level:this.config.level,transport:{target:"pino-pretty",options:{colorize:!1,ignore:"time,pid,hostname"}}})}logRequest(e){let r=new c({request:e}).makeMethodText().makeUrlText().makeRequestDataText().build();this.logger.debug(r)}logResponse(e,t){let r=new c({response:e,duration:t});r.makeMethodText().makeUrlText().makeRequestDataText().makeStatusText(),[l.TRACE,l.DEBUG].includes(this.config.level)&&r.makeResponseDataText();let i=r.makeDurationText().build();this.logger.info(i)}logError(e,t,r){let i=new c({request:e,error:t,duration:r});i.makeMethodText().makeUrlText().makeRequestDataText().makeStatusText(),[l.TRACE,l.DEBUG].includes(this.config.level)&&i.makeResponseDataText();let a=i.makeDurationText().build();this.logger.error(a)}makeResponse(e){return new c({response:e}).makeResponse()}makeErrorResponse(e){return new c({error:e}).makeResponse()}};var C=(function(s){return s.INDICES="indices",s.BRACKETS="brackets",s.REPEAT="repeat",s.COMMA="comma",s})({});import E from"axios";import{HttpMethods as h}from"@iamnnort/config/http";import{stringify as k}from"qs";import{HttpMethods as x}from"@iamnnort/config/http";var d=class{static{u(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 r=this.requestConfig.apiKey||this.baseRequestConfig.apiKey;return r?(this.config={...this.config,headers:{...this.config.headers,"x-api-key":r}},this):this}makeUrl(){let e=this.requestConfig.baseUrlMap||this.baseRequestConfig.baseUrlMap,t=this.requestConfig.baseUrlName||this.baseRequestConfig.baseUrlName,r=[e&&t?e[t]:this.baseRequestConfig.baseUrl,this.baseRequestConfig.url,...this.baseRequestConfig.urlParts||[],this.requestConfig.baseUrl,this.requestConfig.url,...this.requestConfig.urlParts||[]].map(n=>n?.toString()),a=r.some(n=>n?.includes("https"))?"https":"http",o=r.filter(n=>n).map(n=>n?.replace(/^(https?:\/\/|\/)?(.*?)(\/?)$/,"$2")),g=`${a}://${o.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===x.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:u(e=>k(e,{arrayFormat:this.baseRequestConfig.serializer?.arrayFormat||C.BRACKETS,skipNulls:!0}),"serialize")}},this}build(){return this.config}};var b=class{static{u(this,"RequestDataSource")}baseRequestConfig;logger;constructor(e){this.baseRequestConfig=e,this.logger=new p(this.baseRequestConfig.logger)}common(e,t={}){let i=new d({baseRequestConfig:this.baseRequestConfig,requestConfig:e}).makeContentType().makeAuth().makeUrl().makeMethod().makeParams().makeData().makeSerializer().build();this.logger.logRequest(i);let a=Date.now();return E.request(i).then(o=>(this.logger.logResponse(o,Date.now()-a),t.raw?this.logger.makeResponse(o):o.data)).catch(o=>{if(this.logger.logError(i,o,Date.now()-a),t.raw)return this.logger.makeErrorResponse(o);throw o.response?.data||o.response||new Error(o.message)})}async*bulkCommon(e,t={}){let{page:r,pageSize:i,bulkSize:a,...o}=e.params||{},g={page:r||1,pageSize:i||30},n=a?g.page-1+a:null,m={total:0,currentPage:0,lastPage:0,from:0,to:0,pageSize:0};do{let f=await this.common({...e,params:{...g,...o}});if(m=f.pagination,!f.data?.length)return;t.raw?yield f:yield f.data,g.page+=1}while(m.currentPage!==m.lastPage&&m.currentPage!==n);m.currentPage!==m.lastPage&&t.bulkCallback&&await t.bulkCallback(g.page)}search(e={}){return this.common({...e,method:h.GET})}bulkSearch(e={}){return this.bulkCommon({...e,method:h.GET})}async searchOne(e={}){return((await this.common({...e,method:h.GET,params:{pageSize:1,extended:!0,strict:!0,...e.params}})).data||[])[0]}get(e,t={}){return this.common({...t,method:h.GET,url:e})}create(e){return this.common({...e,method:h.POST})}bulkCreate(e){return this.common({...e,method:h.POST,url:"/bulk",data:{bulk:e.data}})}update(e,t){return this.common({...t,method:h.PUT,url:e})}bulkUpdate(e){return this.common({...e,method:h.PUT,url:"/bulk",data:{bulk:e.data}})}remove(e,t={}){return this.common({...t,method:h.DELETE,url:e})}};var q=class{static{u(this,"RequestHelper")}static sleep(e){return new Promise(t=>{setTimeout(t,e*1e3)})}};export{U as HttpMethods,y as HttpStatuses,p as Logger,l as LoggerLevels,b as RequestDataSource,q as RequestHelper,C as SerializerArrayFormats};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -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 } 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().makeRequestDataText().build();\n\n this.logger.debug(message);\n }\n\n logResponse(response: AxiosResponse, duration: number) {\n const messageBuilder = new HttpMessageBuilder({\n response,\n duration,\n });\n\n messageBuilder.makeMethodText().makeUrlText().makeRequestDataText().makeStatusText();\n\n if ([LoggerLevels.TRACE, LoggerLevels.DEBUG].includes(this.config.level)) {\n messageBuilder.makeResponseDataText();\n }\n\n const message = messageBuilder.makeDurationText().build();\n\n this.logger.info(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().makeRequestDataText().makeStatusText();\n\n if ([LoggerLevels.TRACE, LoggerLevels.DEBUG].includes(this.config.level)) {\n messageBuilder.makeResponseDataText();\n }\n\n const message = messageBuilder.makeDurationText().build();\n\n this.logger.error(message);\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","HttpMethods","HttpStatuses","LoggerLevels","Logger","logger","config","name","level","LoggerLevels","INFO","pino","transport","target","options","colorize","ignore","logRequest","request","message","HttpMessageBuilder","makeMethodText","makeUrlText","makeRequestDataText","build","debug","logResponse","response","duration","messageBuilder","makeStatusText","TRACE","DEBUG","includes","makeResponseDataText","makeDurationText","info","logError","error","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.0",
3
+ "version": "2.0.1",
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
- "axios": "^1.7.7",
38
+ "@iamnnort/config": "^1.1.4",
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",