evaengine 1.0.14 → 2.0.0

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.
Files changed (199) hide show
  1. package/README.md +15 -1
  2. package/bin/engine +2 -31
  3. package/dist/bin.d.ts +1 -0
  4. package/dist/bin.js +40 -0
  5. package/dist/bin.js.map +1 -0
  6. package/{src/commands/index.js → dist/commands/index.d.ts} +1 -8
  7. package/dist/commands/index.js +6 -0
  8. package/dist/commands/index.js.map +1 -0
  9. package/dist/commands/interface.d.ts +18 -0
  10. package/dist/commands/interface.js +40 -0
  11. package/dist/commands/interface.js.map +1 -0
  12. package/dist/commands/make_entity.d.ts +47 -0
  13. package/dist/commands/make_entity.js +410 -0
  14. package/dist/commands/make_entity.js.map +1 -0
  15. package/dist/commands/tramp.d.ts +7 -0
  16. package/dist/commands/tramp.js +29 -0
  17. package/dist/commands/tramp.js.map +1 -0
  18. package/dist/config/index.d.ts +92 -0
  19. package/dist/config/index.js +96 -0
  20. package/dist/config/index.js.map +1 -0
  21. package/dist/di.d.ts +73 -0
  22. package/dist/di.js +76 -0
  23. package/dist/di.js.map +1 -0
  24. package/dist/engine.d.ts +85 -0
  25. package/dist/engine.js +404 -0
  26. package/dist/engine.js.map +1 -0
  27. package/dist/entities/index.d.ts +54 -0
  28. package/dist/entities/index.js +228 -0
  29. package/dist/entities/index.js.map +1 -0
  30. package/dist/exceptions/index.d.ts +153 -0
  31. package/dist/exceptions/index.js +439 -0
  32. package/dist/exceptions/index.js.map +1 -0
  33. package/dist/index.d.ts +45 -0
  34. package/dist/index.js +45 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/middlewares/auth.d.ts +5 -0
  37. package/dist/middlewares/auth.js +63 -0
  38. package/dist/middlewares/auth.js.map +1 -0
  39. package/dist/middlewares/auth_kong.d.ts +2 -0
  40. package/dist/middlewares/auth_kong.js +24 -0
  41. package/dist/middlewares/auth_kong.js.map +1 -0
  42. package/dist/middlewares/debug.d.ts +3 -0
  43. package/dist/middlewares/debug.js +50 -0
  44. package/dist/middlewares/debug.js.map +1 -0
  45. package/{src/middlewares/index.js → dist/middlewares/index.d.ts} +1 -11
  46. package/dist/middlewares/index.js +9 -0
  47. package/dist/middlewares/index.js.map +1 -0
  48. package/dist/middlewares/providers.d.ts +25 -0
  49. package/dist/middlewares/providers.js +63 -0
  50. package/dist/middlewares/providers.js.map +1 -0
  51. package/dist/middlewares/session.d.ts +6 -0
  52. package/dist/middlewares/session.js +51 -0
  53. package/dist/middlewares/session.js.map +1 -0
  54. package/dist/middlewares/trace.d.ts +52 -0
  55. package/dist/middlewares/trace.js +225 -0
  56. package/dist/middlewares/trace.js.map +1 -0
  57. package/dist/middlewares/validator.d.ts +10 -0
  58. package/dist/middlewares/validator.js +43 -0
  59. package/dist/middlewares/validator.js.map +1 -0
  60. package/dist/middlewares/view_cache.d.ts +14 -0
  61. package/dist/middlewares/view_cache.js +102 -0
  62. package/dist/middlewares/view_cache.js.map +1 -0
  63. package/dist/services/cache.d.ts +66 -0
  64. package/dist/services/cache.js +207 -0
  65. package/dist/services/cache.js.map +1 -0
  66. package/dist/services/config.d.ts +25 -0
  67. package/dist/services/config.js +88 -0
  68. package/dist/services/config.js.map +1 -0
  69. package/dist/services/env.d.ts +12 -0
  70. package/dist/services/env.js +24 -0
  71. package/dist/services/env.js.map +1 -0
  72. package/dist/services/event_manager.d.ts +29 -0
  73. package/dist/services/event_manager.js +75 -0
  74. package/dist/services/event_manager.js.map +1 -0
  75. package/dist/services/http_client.d.ts +66 -0
  76. package/dist/services/http_client.js +62 -0
  77. package/dist/services/http_client.js.map +1 -0
  78. package/{src/services/index.js → dist/services/index.d.ts} +1 -15
  79. package/dist/services/index.js +14 -0
  80. package/dist/services/index.js.map +1 -0
  81. package/{src/services/interface.js → dist/services/interface.d.ts} +1 -3
  82. package/dist/services/interface.js +6 -0
  83. package/dist/services/interface.js.map +1 -0
  84. package/{src/services/joi.js → dist/services/joi.d.ts} +2 -9
  85. package/dist/services/joi.js +11 -0
  86. package/dist/services/joi.js.map +1 -0
  87. package/dist/services/jwt_token.d.ts +24 -0
  88. package/dist/services/jwt_token.js +77 -0
  89. package/dist/services/jwt_token.js.map +1 -0
  90. package/dist/services/jwt_token_kong.d.ts +25 -0
  91. package/dist/services/jwt_token_kong.js +65 -0
  92. package/dist/services/jwt_token_kong.js.map +1 -0
  93. package/dist/services/logger.d.ts +30 -0
  94. package/dist/services/logger.js +126 -0
  95. package/dist/services/logger.js.map +1 -0
  96. package/dist/services/namespace.d.ts +55 -0
  97. package/dist/services/namespace.js +157 -0
  98. package/dist/services/namespace.js.map +1 -0
  99. package/dist/services/now.d.ts +14 -0
  100. package/dist/services/now.js +43 -0
  101. package/dist/services/now.js.map +1 -0
  102. package/dist/services/providers.d.ts +55 -0
  103. package/dist/services/providers.js +134 -0
  104. package/dist/services/providers.js.map +1 -0
  105. package/dist/services/redis.d.ts +18 -0
  106. package/dist/services/redis.js +53 -0
  107. package/dist/services/redis.js.map +1 -0
  108. package/dist/services/rest_client.d.ts +48 -0
  109. package/dist/services/rest_client.js +96 -0
  110. package/dist/services/rest_client.js.map +1 -0
  111. package/dist/swagger/index.d.ts +223 -0
  112. package/dist/swagger/index.js +564 -0
  113. package/dist/swagger/index.js.map +1 -0
  114. package/dist/types/express.d.ts +14 -0
  115. package/dist/types/vendor.d.ts +102 -0
  116. package/dist/utils/api_scaffold.d.ts +74 -0
  117. package/dist/utils/api_scaffold.js +220 -0
  118. package/dist/utils/api_scaffold.js.map +1 -0
  119. package/dist/utils/case_converter.d.ts +7 -0
  120. package/dist/utils/case_converter.js +29 -0
  121. package/dist/utils/case_converter.js.map +1 -0
  122. package/dist/utils/crc32.d.ts +2 -0
  123. package/dist/utils/crc32.js +43 -0
  124. package/dist/utils/crc32.js.map +1 -0
  125. package/dist/utils/cron.d.ts +27 -0
  126. package/dist/utils/cron.js +186 -0
  127. package/dist/utils/cron.js.map +1 -0
  128. package/dist/utils/datetime.d.ts +4 -0
  129. package/dist/utils/datetime.js +6 -0
  130. package/dist/utils/datetime.js.map +1 -0
  131. package/dist/utils/host.d.ts +18 -0
  132. package/dist/utils/host.js +33 -0
  133. package/dist/utils/host.js.map +1 -0
  134. package/{src/utils/index.js → dist/utils/index.d.ts} +2 -26
  135. package/dist/utils/index.js +12 -0
  136. package/dist/utils/index.js.map +1 -0
  137. package/dist/utils/pagination.d.ts +150 -0
  138. package/dist/utils/pagination.js +242 -0
  139. package/dist/utils/pagination.js.map +1 -0
  140. package/dist/utils/random.d.ts +3 -0
  141. package/dist/utils/random.js +18 -0
  142. package/dist/utils/random.js.map +1 -0
  143. package/dist/utils/request_client.d.ts +33 -0
  144. package/dist/utils/request_client.js +153 -0
  145. package/dist/utils/request_client.js.map +1 -0
  146. package/dist/utils/smart_query.d.ts +144 -0
  147. package/dist/utils/smart_query.js +310 -0
  148. package/dist/utils/smart_query.js.map +1 -0
  149. package/dist/utils/test.d.ts +14 -0
  150. package/dist/utils/test.js +37 -0
  151. package/dist/utils/test.js.map +1 -0
  152. package/dist/utils/wrapper.d.ts +3 -0
  153. package/dist/utils/wrapper.js +5 -0
  154. package/dist/utils/wrapper.js.map +1 -0
  155. package/package.json +24 -10
  156. package/index.js +0 -2
  157. package/src/commands/interface.js +0 -45
  158. package/src/commands/make_entity.js +0 -490
  159. package/src/commands/tramp.js +0 -34
  160. package/src/config/index.js +0 -95
  161. package/src/di.js +0 -96
  162. package/src/engine.js +0 -556
  163. package/src/entities/index.js +0 -272
  164. package/src/exceptions/index.js +0 -501
  165. package/src/index.js +0 -55
  166. package/src/middlewares/auth.js +0 -67
  167. package/src/middlewares/auth_kong.js +0 -28
  168. package/src/middlewares/debug.js +0 -88
  169. package/src/middlewares/providers.js +0 -73
  170. package/src/middlewares/session.js +0 -63
  171. package/src/middlewares/trace.js +0 -254
  172. package/src/middlewares/validator.js +0 -50
  173. package/src/middlewares/view_cache.js +0 -127
  174. package/src/services/cache.js +0 -223
  175. package/src/services/config.js +0 -115
  176. package/src/services/env.js +0 -28
  177. package/src/services/event_manager.js +0 -84
  178. package/src/services/http_client.js +0 -69
  179. package/src/services/jwt_token.js +0 -89
  180. package/src/services/jwt_token_kong.js +0 -75
  181. package/src/services/logger.js +0 -150
  182. package/src/services/namespace.js +0 -176
  183. package/src/services/now.js +0 -49
  184. package/src/services/providers.js +0 -158
  185. package/src/services/redis.js +0 -63
  186. package/src/services/rest_client.js +0 -112
  187. package/src/swagger/index.js +0 -665
  188. package/src/utils/api_scaffold.js +0 -240
  189. package/src/utils/case_converter.js +0 -33
  190. package/src/utils/crc32.js +0 -44
  191. package/src/utils/cron.js +0 -208
  192. package/src/utils/datetime.js +0 -13
  193. package/src/utils/host.js +0 -39
  194. package/src/utils/pagination.js +0 -260
  195. package/src/utils/random.js +0 -23
  196. package/src/utils/request_client.js +0 -179
  197. package/src/utils/smart_query.js +0 -352
  198. package/src/utils/test.js +0 -48
  199. package/src/utils/wrapper.js +0 -8
@@ -1,260 +0,0 @@
1
- import snakeCase from 'lodash/snakeCase.js';
2
- import transform from 'lodash/transform.js';
3
- import nodePath from 'path';
4
-
5
- const toUrl = (scheme, host, path, query = {}) => {
6
- let queryString = Object.keys(query)
7
- .map(key => `${key}=${query[key]}`)
8
- .join('&');
9
- queryString = queryString === '' ? '' : `?${queryString}`;
10
- return `${scheme}://${host}${path}${queryString}`;
11
- };
12
-
13
- const toPaginationUrl = (query, req) => {
14
- const hostInfo = req.get('host').split(':');
15
- let scheme = req.protocol;
16
- let host = hostInfo[0];
17
- let port = hostInfo[1];
18
- if (!port) {
19
- port = req.protocol === 'https' ? 443 : 80;
20
- }
21
- let requestPath = req.baseUrl;
22
- if (req.get('x-forwarded-port')) {
23
- port = req.get('x-forwarded-port');
24
- }
25
- if (req.get('x-forwarded-host')) {
26
- host = req.get('x-forwarded-host');
27
- }
28
- if (req.get('x-forwarded-proto')) {
29
- scheme = req.get('x-forwarded-proto');
30
- }
31
- if (req.get('x-forwarded-prefix')) {
32
- requestPath = nodePath.join(req.get('x-forwarded-prefix'), requestPath, req.path);
33
- }
34
- if (
35
- (scheme === 'http' && String(port) !== '80')
36
- || (scheme === 'https' && String(port) !== '443')
37
- ) {
38
- host = `${host}:${port}`;
39
- }
40
- return toUrl(
41
- scheme, host, requestPath,
42
- Object.assign({}, req.query, query)
43
- );
44
- };
45
-
46
-
47
- const toPositiveInteger = (number) => {
48
- const integer = parseInt(number, 10);
49
- return integer >= 0 ? integer : 0;
50
- };
51
-
52
- const transferProperties = (obj, useSnake = false) => {
53
- if (useSnake === true) {
54
- return transform(obj, (result, value, key) => {
55
- result[snakeCase(key)] = value;
56
- });
57
- }
58
- return obj;
59
- };
60
-
61
- //@formatter:off
62
- /**
63
- @swagger
64
- PaginationSnake:
65
- type: object
66
- properties:
67
- total:
68
- type: integer
69
- description: 总数据量
70
- offset:
71
- type: integer
72
- description: 偏移量
73
- limit:
74
- type: integer
75
- description: 单页数据量
76
- prev:
77
- type: integer
78
- description: 上页偏移量
79
- next:
80
- type: integer
81
- description: 下页偏移量
82
- prev_uri:
83
- type: string
84
- description: 上页Uri
85
- next_uri:
86
- type: string
87
- description: 下页Uri
88
- is_first:
89
- type: boolean
90
- description: 是否为首页
91
- is_last:
92
- type: boolean
93
- description: 是否为末页
94
- first_uri:
95
- type: string
96
- description: 首页Uri
97
- last_uri:
98
- type: string
99
- description: 末页Uri
100
- required:
101
- - total
102
- - offset
103
- - limit
104
- - prev
105
- - next
106
- - prev_uri
107
- - next_uri
108
- - is_first
109
- - is_last
110
- - first_uri
111
- - last_uri
112
- example:
113
- total: 100
114
- offset: 30
115
- limit: 15
116
- prev: 15
117
- next: 45
118
- prev_uri: http://localhost/v1/posts?offset=15&limit=15
119
- next_uri: http://localhost/v1/posts?offset=30&limit=15
120
- is_first: false
121
- is_last: false
122
- first_uri: http://localhost/v1/posts?offset=0&limit=15
123
- last_uri: http://localhost/v1/posts?offset=90&limit=15
124
- @swagger
125
- Pagination:
126
- type: object
127
- properties:
128
- total:
129
- type: integer
130
- description: 总数据量
131
- offset:
132
- type: integer
133
- description: 偏移量
134
- limit:
135
- type: integer
136
- description: 单页数据量
137
- prev:
138
- type: integer
139
- description: 上页偏移量
140
- next:
141
- type: integer
142
- description: 下页偏移量
143
- prevUri:
144
- type: string
145
- description: 上页Uri
146
- nextUri:
147
- type: string
148
- description: 下页Uri
149
- isFirst:
150
- type: boolean
151
- description: 是否为首页
152
- isLast:
153
- type: boolean
154
- description: 是否为末页
155
- firstUri:
156
- type: string
157
- description: 首页Uri
158
- lastUri:
159
- type: string
160
- description: 末页Uri
161
- required:
162
- - total
163
- - offset
164
- - limit
165
- - prev
166
- - next
167
- - prevUri
168
- - nextUri
169
- - isFirst
170
- - isLast
171
- - firstUri
172
- - lastUri
173
- example:
174
- total: 100
175
- offset: 30
176
- limit: 15
177
- prev: 15
178
- next: 45
179
- prevUri: http://localhost/v1/posts?offset=15&limit=15
180
- nextUri: http://localhost/v1/posts?offset=30&limit=15
181
- isFirst: false
182
- isLast: false
183
- firstUri: http://localhost/v1/posts?offset=0&limit=15
184
- lastUri: http://localhost/v1/posts?offset=90&limit=15
185
- */
186
- //@formatter:on
187
- export const pagination = ({
188
- total,
189
- limit,
190
- offset,
191
- req,
192
- snakeCase: useSnake
193
- }) => {
194
- const totalNumber = toPositiveInteger(total);
195
- let offsetNumber = parseInt(offset, 10);
196
- offsetNumber = Number.isNaN(offsetNumber) ? 0 : offsetNumber;
197
- let limitNumber = toPositiveInteger(limit);
198
- limitNumber = limitNumber < 1 ? 1 : limitNumber;
199
- const prev = offsetNumber - limitNumber;
200
- const next = offsetNumber + limitNumber;
201
- let prevUri = '';
202
- let nextUri = '';
203
- let firstUri = '';
204
- let lastUri = '';
205
-
206
- if (total < 1) {
207
- return transferProperties({
208
- total: totalNumber,
209
- offset: offsetNumber,
210
- limit: limitNumber,
211
- isFirst: true,
212
- isLast: true,
213
- prev,
214
- next,
215
- prevUri,
216
- nextUri,
217
- firstUri,
218
- lastUri
219
- }, useSnake);
220
- }
221
-
222
- const isFirst = offset <= 0;
223
- const isLast = offset + limit >= total;
224
- const lastOffset = (total - offset) % limit;
225
- const last = lastOffset === 0 ? total - limit : total - lastOffset;
226
- prevUri = isFirst ? prevUri : toPaginationUrl({ offset: prev, limit: limitNumber }, req);
227
- nextUri = isLast ? nextUri : toPaginationUrl({ offset: next, limit: limitNumber }, req);
228
- firstUri = toPaginationUrl({ offset: 0, limit: limitNumber }, req);
229
- lastUri = toPaginationUrl({ offset: last, limit: limitNumber }, req);
230
- return transferProperties({
231
- total: totalNumber,
232
- offset: offsetNumber,
233
- limit: limitNumber,
234
- prev,
235
- next,
236
- isFirst,
237
- isLast,
238
- prevUri,
239
- nextUri,
240
- firstUri,
241
- lastUri
242
- }, useSnake);
243
- };
244
-
245
- export const paginationFilter = ({ offset, limit }, defaultLimit = 15, maxLimit = 100) => {
246
- //Solve offset is negative
247
- let offsetNumber = Number.parseInt(offset, 10);
248
- offsetNumber = Number.isNaN(offsetNumber) ? 0 : offsetNumber;
249
- let limitNumber = toPositiveInteger(limit);
250
- limitNumber = limitNumber < 1 ? defaultLimit : limitNumber;
251
-
252
- if (offsetNumber < 0) {
253
- limitNumber += (offsetNumber % limitNumber);
254
- offsetNumber = 0;
255
- }
256
-
257
- limitNumber = maxLimit > 0 && limitNumber > maxLimit ? maxLimit : limitNumber;
258
-
259
- return { offset: offsetNumber, limit: limitNumber };
260
- };
@@ -1,23 +0,0 @@
1
- import random from 'lodash/random.js';
2
-
3
- const randomString = (len = 16) => {
4
- const digits = '0123456789abcdefghijklmnopqrstuvwxyz';
5
- let str = '';
6
- for (let i = 0; i < len; i += 1) {
7
- const rand = random(0, digits.length - 1);
8
- str += digits[rand];
9
- }
10
- return str;
11
- };
12
-
13
- const randomNumber = (min, max) => {
14
- if (max) {
15
- return parseInt((Math.random() * ((max - min) + 1)) + min, 10);
16
- }
17
- return parseInt((Math.random() * min) + 1, 10);
18
- };
19
-
20
- export {
21
- randomNumber,
22
- randomString
23
- };
@@ -1,179 +0,0 @@
1
- /**
2
- * A request-promise-native compatible HTTP client built on the global fetch.
3
- *
4
- * Keeps the option object and error shape used by the legacy `request`
5
- * ecosystem so callers of HttpClient/RestClient see no interface change:
6
- * - resolves with the response body (or the full response with
7
- * `resolveWithFullResponse`)
8
- * - rejects with an error carrying `.name` (`StatusCodeError`/`RequestError`),
9
- * `.statusCode`, `.response` and `.request`
10
- * - supports `url`, `method`, `headers`, `body`, `json`, `qs`, `form`,
11
- * `formData`, `simple`, `resolveWithFullResponse` and `timeout`
12
- */
13
-
14
- const MAX_BODY_LENGTH = parseInt(process.env.MAX_REQUEST_DEBUG_BODY, 10) || 3000;
15
- const TOO_LONG_BODY = '____TLDR____';
16
-
17
- let debugId = 0;
18
-
19
- const toPlainHeaders = (headers = {}) => {
20
- const result = {};
21
- Object.entries(headers).forEach(([key, value]) => {
22
- result[key] = String(value);
23
- });
24
- return result;
25
- };
26
-
27
- const buildQueryString = (qs) => {
28
- if (qs === undefined || qs === null) {
29
- return '';
30
- }
31
- if (typeof qs === 'string') {
32
- return qs.startsWith('?') ? qs : `?${qs}`;
33
- }
34
- return `?${new URLSearchParams(qs).toString()}`;
35
- };
36
-
37
- const buildBody = (params) => {
38
- if (params.formData) {
39
- const form = new FormData();
40
- Object.entries(params.formData).forEach(([key, value]) => {
41
- form.append(key, value);
42
- });
43
- return { body: form, contentType: null };
44
- }
45
- if (params.form) {
46
- return {
47
- body: new URLSearchParams(params.form).toString(),
48
- contentType: 'application/x-www-form-urlencoded'
49
- };
50
- }
51
- //The legacy `json` option also accepts a value used as the JSON body
52
- if (params.json !== undefined && params.json !== false && params.json !== true) {
53
- return { body: JSON.stringify(params.json), contentType: 'application/json' };
54
- }
55
- if (params.json === true && params.body !== undefined) {
56
- return { body: JSON.stringify(params.body), contentType: 'application/json' };
57
- }
58
- return { body: params.body, contentType: null };
59
- };
60
-
61
- const truncateBody = (body) => {
62
- if (typeof body !== 'string') {
63
- return body ? String(body) : '';
64
- }
65
- return body.length > MAX_BODY_LENGTH ? TOO_LONG_BODY : body;
66
- };
67
-
68
- /**
69
- * Create a request-promise-native compatible callable client.
70
- * @param {Logger} [logger] when given, verbose request/response logs are emitted
71
- * @returns {function}
72
- */
73
- export const createRequestClient = (logger) => {
74
- const request = (params = {}) => new Promise((resolve, reject) => {
75
- const {
76
- url,
77
- method: rawMethod = 'GET',
78
- headers = {},
79
- resolveWithFullResponse = false,
80
- simple = true,
81
- timeout = 0,
82
- qs
83
- } = params;
84
-
85
- const method = String(rawMethod).toUpperCase();
86
- const targetUrl = `${url}${buildQueryString(qs)}`;
87
- const { body, contentType } = buildBody(params);
88
-
89
- const requestHeaders = toPlainHeaders(headers);
90
- if (contentType
91
- && !Object.keys(requestHeaders).some(key => key.toLowerCase() === 'content-type')) {
92
- requestHeaders['Content-Type'] = contentType;
93
- }
94
-
95
- const abortController = new AbortController();
96
- const timer = timeout > 0
97
- ? setTimeout(() => abortController.abort(new Error('Request timed out')), timeout)
98
- : null;
99
-
100
- const requestForDump = {
101
- method,
102
- uri: {
103
- protocol: new URL(targetUrl).protocol,
104
- href: targetUrl
105
- },
106
- headers: requestHeaders,
107
- req: {},
108
- _json: params.json !== undefined && params.json !== false
109
- ? true : body !== undefined,
110
- formData: params.formData || null,
111
- body: params.formData
112
- ? new URLSearchParams(params.formData).toString()
113
- : body
114
- };
115
-
116
- const id = ++debugId;
117
- if (logger) {
118
- logger.verbose('[HTTP_REQUEST_%s] [%s %s] [REQ_HEADERS: %s] [REQ_BODY: %s]', id,
119
- method, targetUrl, JSON.stringify(requestHeaders), truncateBody(body));
120
- }
121
-
122
- fetch(targetUrl, {
123
- method,
124
- headers: requestHeaders,
125
- body,
126
- signal: abortController.signal,
127
- redirect: 'follow'
128
- }).then(async (response) => {
129
- if (timer) {
130
- clearTimeout(timer);
131
- }
132
- const rawBody = await response.text();
133
- let parsedBody = rawBody;
134
- if (params.json !== undefined && params.json !== false) {
135
- try {
136
- parsedBody = JSON.parse(rawBody);
137
- } catch {
138
- parsedBody = rawBody;
139
- }
140
- }
141
-
142
- const responseForDump = {
143
- statusCode: response.status,
144
- statusMessage: response.statusText,
145
- headers: toPlainHeaders(Object.fromEntries(response.headers.entries())),
146
- body: parsedBody,
147
- request: requestForDump
148
- };
149
-
150
- if (logger) {
151
- logger.verbose('[HTTP_RESPONSE_%s] [%s %s] [%s] [RES_HEADERS: %s] [RES_BODY: %s]', id,
152
- method, targetUrl, response.status, JSON.stringify(responseForDump.headers),
153
- truncateBody(parsedBody));
154
- }
155
-
156
- if (response.status >= 400 && simple) {
157
- const error = new Error(`Response status ${response.status}`);
158
- error.name = 'StatusCodeError';
159
- error.statusCode = response.status;
160
- error.response = responseForDump;
161
- error.request = requestForDump;
162
- reject(error);
163
- return;
164
- }
165
-
166
- resolve(resolveWithFullResponse ? responseForDump : parsedBody);
167
- }).catch((err) => {
168
- if (timer) {
169
- clearTimeout(timer);
170
- }
171
- const error = new Error(err.message);
172
- error.name = 'RequestError';
173
- error.request = requestForDump;
174
- reject(error);
175
- });
176
- });
177
-
178
- return request;
179
- };