@tramvai/module-http-client 1.96.0 → 1.99.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.
@@ -1,8 +1,8 @@
1
1
  import type { MakeRequest } from '@tinkoff/request-core';
2
2
  import type { APP_INFO_TOKEN } from '@tramvai/core';
3
- import type { API_CLIENT_PASS_HEADERS, HTTP_CLIENT_AGENT, HTTP_CLIENT_FACTORY, DISABLE_CIRCUIT_BREAKER } from '@tramvai/tokens-http-client';
3
+ import type { API_CLIENT_PASS_HEADERS, HttpClientFactoryOptions, HTTP_CLIENT_AGENT, HTTP_CLIENT_FACTORY, DISABLE_CIRCUIT_BREAKER } from '@tramvai/tokens-http-client';
4
4
  import type { LOGGER_TOKEN, CREATE_CACHE_TOKEN, ENV_MANAGER_TOKEN, REQUEST_MANAGER_TOKEN } from '@tramvai/tokens-common';
5
- export declare const httpClientFactory: ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker, }: {
5
+ export declare const httpClientFactory: ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker, defaultOptions, }: {
6
6
  logger: typeof LOGGER_TOKEN;
7
7
  envManager: typeof ENV_MANAGER_TOKEN;
8
8
  appInfo: typeof APP_INFO_TOKEN;
@@ -12,4 +12,5 @@ export declare const httpClientFactory: ({ logger, envManager, appInfo, requestM
12
12
  makeRequestRegistry: Map<string, MakeRequest>;
13
13
  agent?: typeof HTTP_CLIENT_AGENT;
14
14
  disableCircuitBreaker: typeof DISABLE_CIRCUIT_BREAKER;
15
+ defaultOptions?: Partial<HttpClientFactoryOptions>;
15
16
  }) => typeof HTTP_CLIENT_FACTORY;
@@ -1,6 +1,6 @@
1
1
  import { createToken } from '@tinkoff/dippy';
2
2
  import { Module, provide, Scope, APP_INFO_TOKEN } from '@tramvai/core';
3
- import { PAPI_SERVICE, HTTP_CLIENT_FACTORY, API_CLIENT_PASS_HEADERS, HTTP_CLIENT_AGENT, DISABLE_CIRCUIT_BREAKER, HTTP_CLIENT } from '@tramvai/tokens-http-client';
3
+ import { PAPI_SERVICE, HTTP_CLIENT_FACTORY, API_CLIENT_PASS_HEADERS, HTTP_CLIENT_AGENT, DISABLE_CIRCUIT_BREAKER, DEFAULT_HTTP_CLIENT_FACTORY_OPTIONS, HTTP_CLIENT } from '@tramvai/tokens-http-client';
4
4
  export * from '@tramvai/tokens-http-client';
5
5
  import { LOGGER_TOKEN, ENV_MANAGER_TOKEN, REQUEST_MANAGER_TOKEN, ENV_USED_TOKEN, CREATE_CACHE_TOKEN } from '@tramvai/tokens-common';
6
6
  import isNil from '@tinkoff/utils/is/nil';
@@ -16,23 +16,6 @@ const fillHeaders = (deps) => (params) => {
16
16
  };
17
17
  const fillHeaderIp = fillHeaders;
18
18
 
19
- const getErrorMessage = (message) => {
20
- switch (true) {
21
- case /network timeout at/i.test(message) || /request timed out/i.test(message):
22
- return 'Время истекло. Обновите страницу и повторите попытку.';
23
- default:
24
- return 'Что-то пошло не так. Мы уже решаем проблему. Попробуйте снова через несколько минут.';
25
- }
26
- };
27
- const formatError = (error) => {
28
- if (error.originalMessage) {
29
- return error;
30
- }
31
- const originalMessage = error.message;
32
- const message = getErrorMessage(originalMessage);
33
- return Object.assign(error, { message, originalMessage });
34
- };
35
-
36
19
  const createUserAgent = ({ appInfo, envManager, }) => {
37
20
  const { appName } = appInfo;
38
21
  const appVersion = envManager.get('APP_VERSION');
@@ -55,14 +38,14 @@ const environmentDependentOptions = typeof window === 'undefined'
55
38
  : {
56
39
  defaultTimeout: 30000,
57
40
  };
58
- const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker = false, }) => {
41
+ const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker = false, defaultOptions, }) => {
59
42
  return (options) => {
60
43
  if (!options.name) {
61
44
  throw Error(`You need to pass a unique field "name" for the HTTP client instance`);
62
45
  }
63
46
  const forceDisableCache = envManager.get('HTTP_CLIENT_CACHE_DISABLED');
64
47
  const forceDisabledCircuitBreaker = envManager.get('HTTP_CLIENT_CIRCUIT_BREAKER_DISABLED');
65
- const adapterOptions = mergeOptions({
48
+ const adapterOptions = mergeOptions(mergeOptions({
66
49
  logger,
67
50
  agent,
68
51
  method: 'GET',
@@ -70,13 +53,12 @@ const httpClientFactory = ({ logger, envManager, appInfo, requestManager, header
70
53
  ? (cacheOptions) => createCache('memory', cacheOptions)
71
54
  : undefined,
72
55
  modifyRequest: compose(fillHeaderIp(), fillHeaders()),
73
- modifyError: formatError,
74
56
  circuitBreakerOptions: {
75
57
  failureThreshold: 75,
76
58
  minimumFailureCount: 10,
77
59
  },
78
60
  ...environmentDependentOptions,
79
- }, options);
61
+ }, defaultOptions !== null && defaultOptions !== void 0 ? defaultOptions : {}), options);
80
62
  // по умолчанию, на сервере, библиотека https://github.com/node-fetch/node-fetch
81
63
  // отправляет заголовок "User-Agent" вида "node-fetch".
82
64
  // для улучшения логов сервисов, в которые делают запросы tramvai приложения,
@@ -176,6 +158,10 @@ const HttpClientModule = /* @__PURE__ */ Module({
176
158
  token: DISABLE_CIRCUIT_BREAKER,
177
159
  optional: true,
178
160
  },
161
+ defaultOptions: {
162
+ token: DEFAULT_HTTP_CLIENT_FACTORY_OPTIONS,
163
+ optional: true,
164
+ },
179
165
  },
180
166
  }),
181
167
  provide({
@@ -242,4 +228,4 @@ const HttpClientModule = /* @__PURE__ */ Module({
242
228
  })(class HttpClientModule {
243
229
  });
244
230
 
245
- export { HttpClientModule, PapiService, fillHeaderIp, fillHeaders, formatError, httpClientFactory };
231
+ export { HttpClientModule, PapiService, fillHeaderIp, fillHeaders, httpClientFactory };
package/lib/index.d.ts CHANGED
@@ -2,6 +2,5 @@ export { HttpClientModule } from './httpClientModule';
2
2
  export { httpClientFactory } from './httpClient/httpClientFactory';
3
3
  export { PapiService } from './papiClientModule';
4
4
  export { fillHeaderIp, fillHeaders } from './utils/fillHeaders';
5
- export { formatError } from './utils/errors';
6
5
  export * from '@tramvai/tokens-http-client';
7
6
  export * from '@tramvai/http-client';
package/lib/index.es.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createChildContainer, createToken } from '@tinkoff/dippy';
2
2
  import { Module, provide, Scope, DI_TOKEN, APP_INFO_TOKEN } from '@tramvai/core';
3
- import { PAPI_SERVICE, HTTP_CLIENT_FACTORY, API_CLIENT_PASS_HEADERS, HTTP_CLIENT_AGENT, DISABLE_CIRCUIT_BREAKER, HTTP_CLIENT } from '@tramvai/tokens-http-client';
3
+ import { PAPI_SERVICE, HTTP_CLIENT_FACTORY, API_CLIENT_PASS_HEADERS, HTTP_CLIENT_AGENT, DISABLE_CIRCUIT_BREAKER, DEFAULT_HTTP_CLIENT_FACTORY_OPTIONS, HTTP_CLIENT } from '@tramvai/tokens-http-client';
4
4
  export * from '@tramvai/tokens-http-client';
5
5
  import { LOGGER_TOKEN, ENV_MANAGER_TOKEN, REQUEST_MANAGER_TOKEN, ENV_USED_TOKEN, CREATE_CACHE_TOKEN } from '@tramvai/tokens-common';
6
6
  import isNil from '@tinkoff/utils/is/nil';
@@ -46,23 +46,6 @@ const fillHeaders = ({ requestManager, headersList, }) => {
46
46
  };
47
47
  };
48
48
 
49
- const getErrorMessage = (message) => {
50
- switch (true) {
51
- case /network timeout at/i.test(message) || /request timed out/i.test(message):
52
- return 'Время истекло. Обновите страницу и повторите попытку.';
53
- default:
54
- return 'Что-то пошло не так. Мы уже решаем проблему. Попробуйте снова через несколько минут.';
55
- }
56
- };
57
- const formatError = (error) => {
58
- if (error.originalMessage) {
59
- return error;
60
- }
61
- const originalMessage = error.message;
62
- const message = getErrorMessage(originalMessage);
63
- return Object.assign(error, { message, originalMessage });
64
- };
65
-
66
49
  const createUserAgent = ({ appInfo, envManager, }) => {
67
50
  const { appName } = appInfo;
68
51
  const appVersion = envManager.get('APP_VERSION');
@@ -85,14 +68,14 @@ const environmentDependentOptions = typeof window === 'undefined'
85
68
  : {
86
69
  defaultTimeout: 30000,
87
70
  };
88
- const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker = false, }) => {
71
+ const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker = false, defaultOptions, }) => {
89
72
  return (options) => {
90
73
  if (!options.name) {
91
74
  throw Error(`You need to pass a unique field "name" for the HTTP client instance`);
92
75
  }
93
76
  const forceDisableCache = envManager.get('HTTP_CLIENT_CACHE_DISABLED');
94
77
  const forceDisabledCircuitBreaker = envManager.get('HTTP_CLIENT_CIRCUIT_BREAKER_DISABLED');
95
- const adapterOptions = mergeOptions({
78
+ const adapterOptions = mergeOptions(mergeOptions({
96
79
  logger,
97
80
  agent,
98
81
  method: 'GET',
@@ -100,13 +83,12 @@ const httpClientFactory = ({ logger, envManager, appInfo, requestManager, header
100
83
  ? (cacheOptions) => createCache('memory', cacheOptions)
101
84
  : undefined,
102
85
  modifyRequest: compose(fillHeaderIp({ requestManager }), fillHeaders({ requestManager, headersList })),
103
- modifyError: formatError,
104
86
  circuitBreakerOptions: {
105
87
  failureThreshold: 75,
106
88
  minimumFailureCount: 10,
107
89
  },
108
90
  ...environmentDependentOptions,
109
- }, options);
91
+ }, defaultOptions !== null && defaultOptions !== void 0 ? defaultOptions : {}), options);
110
92
  // по умолчанию, на сервере, библиотека https://github.com/node-fetch/node-fetch
111
93
  // отправляет заголовок "User-Agent" вида "node-fetch".
112
94
  // для улучшения логов сервисов, в которые делают запросы tramvai приложения,
@@ -223,6 +205,10 @@ const HttpClientModule = /* @__PURE__ */ Module({
223
205
  token: DISABLE_CIRCUIT_BREAKER,
224
206
  optional: true,
225
207
  },
208
+ defaultOptions: {
209
+ token: DEFAULT_HTTP_CLIENT_FACTORY_OPTIONS,
210
+ optional: true,
211
+ },
226
212
  },
227
213
  }),
228
214
  provide({
@@ -289,4 +275,4 @@ const HttpClientModule = /* @__PURE__ */ Module({
289
275
  })(class HttpClientModule {
290
276
  });
291
277
 
292
- export { HttpClientModule, PapiService, fillHeaderIp, fillHeaders, formatError, httpClientFactory };
278
+ export { HttpClientModule, PapiService, fillHeaderIp, fillHeaders, httpClientFactory };
package/lib/index.js CHANGED
@@ -57,23 +57,6 @@ const fillHeaders = ({ requestManager, headersList, }) => {
57
57
  };
58
58
  };
59
59
 
60
- const getErrorMessage = (message) => {
61
- switch (true) {
62
- case /network timeout at/i.test(message) || /request timed out/i.test(message):
63
- return 'Время истекло. Обновите страницу и повторите попытку.';
64
- default:
65
- return 'Что-то пошло не так. Мы уже решаем проблему. Попробуйте снова через несколько минут.';
66
- }
67
- };
68
- const formatError = (error) => {
69
- if (error.originalMessage) {
70
- return error;
71
- }
72
- const originalMessage = error.message;
73
- const message = getErrorMessage(originalMessage);
74
- return Object.assign(error, { message, originalMessage });
75
- };
76
-
77
60
  const createUserAgent = ({ appInfo, envManager, }) => {
78
61
  const { appName } = appInfo;
79
62
  const appVersion = envManager.get('APP_VERSION');
@@ -96,14 +79,14 @@ const environmentDependentOptions = typeof window === 'undefined'
96
79
  : {
97
80
  defaultTimeout: 30000,
98
81
  };
99
- const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker = false, }) => {
82
+ const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker = false, defaultOptions, }) => {
100
83
  return (options) => {
101
84
  if (!options.name) {
102
85
  throw Error(`You need to pass a unique field "name" for the HTTP client instance`);
103
86
  }
104
87
  const forceDisableCache = envManager.get('HTTP_CLIENT_CACHE_DISABLED');
105
88
  const forceDisabledCircuitBreaker = envManager.get('HTTP_CLIENT_CIRCUIT_BREAKER_DISABLED');
106
- const adapterOptions = tinkoffRequestHttpClientAdapter.mergeOptions({
89
+ const adapterOptions = tinkoffRequestHttpClientAdapter.mergeOptions(tinkoffRequestHttpClientAdapter.mergeOptions({
107
90
  logger,
108
91
  agent,
109
92
  method: 'GET',
@@ -111,13 +94,12 @@ const httpClientFactory = ({ logger, envManager, appInfo, requestManager, header
111
94
  ? (cacheOptions) => createCache('memory', cacheOptions)
112
95
  : undefined,
113
96
  modifyRequest: compose__default["default"](fillHeaderIp({ requestManager }), fillHeaders({ requestManager, headersList })),
114
- modifyError: formatError,
115
97
  circuitBreakerOptions: {
116
98
  failureThreshold: 75,
117
99
  minimumFailureCount: 10,
118
100
  },
119
101
  ...environmentDependentOptions,
120
- }, options);
102
+ }, defaultOptions !== null && defaultOptions !== void 0 ? defaultOptions : {}), options);
121
103
  // по умолчанию, на сервере, библиотека https://github.com/node-fetch/node-fetch
122
104
  // отправляет заголовок "User-Agent" вида "node-fetch".
123
105
  // для улучшения логов сервисов, в которые делают запросы tramvai приложения,
@@ -234,6 +216,10 @@ const HttpClientModule = /* @__PURE__ */ core.Module({
234
216
  token: tokensHttpClient.DISABLE_CIRCUIT_BREAKER,
235
217
  optional: true,
236
218
  },
219
+ defaultOptions: {
220
+ token: tokensHttpClient.DEFAULT_HTTP_CLIENT_FACTORY_OPTIONS,
221
+ optional: true,
222
+ },
237
223
  },
238
224
  }),
239
225
  core.provide({
@@ -304,7 +290,6 @@ exports.HttpClientModule = HttpClientModule;
304
290
  exports.PapiService = PapiService;
305
291
  exports.fillHeaderIp = fillHeaderIp;
306
292
  exports.fillHeaders = fillHeaders;
307
- exports.formatError = formatError;
308
293
  exports.httpClientFactory = httpClientFactory;
309
294
  Object.keys(tokensHttpClient).forEach(function (k) {
310
295
  if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
@@ -1,2 +1 @@
1
1
  export * from './fillHeaders';
2
- export * from './errors';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/module-http-client",
3
- "version": "1.96.0",
3
+ "version": "1.99.1",
4
4
  "initialVersion": "0.58.99",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
@@ -25,21 +25,21 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@tramvai/http-client": "0.1.25",
28
- "@tramvai/tinkoff-request-http-client-adapter": "0.8.335",
29
- "@tramvai/tokens-http-client": "1.96.0",
30
- "@tramvai/tokens-common": "1.96.0",
31
- "@tramvai/tokens-server": "1.96.0"
28
+ "@tramvai/tinkoff-request-http-client-adapter": "0.8.339",
29
+ "@tramvai/tokens-http-client": "1.99.1",
30
+ "@tramvai/tokens-common": "1.99.1",
31
+ "@tramvai/tokens-server": "1.99.1"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@tinkoff/request-core": "^0.8.9"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@tinkoff/utils": "^2.1.2",
38
- "@tramvai/core": "1.96.0",
39
- "@tramvai/module-common": "1.96.0",
40
- "@tramvai/papi": "1.96.0",
41
- "@tramvai/test-helpers": "1.96.0",
42
- "@tramvai/test-mocks": "1.96.0",
38
+ "@tramvai/core": "1.99.1",
39
+ "@tramvai/module-common": "1.99.1",
40
+ "@tramvai/papi": "1.99.1",
41
+ "@tramvai/test-helpers": "1.99.1",
42
+ "@tramvai/test-mocks": "1.99.1",
43
43
  "@tinkoff/dippy": "0.7.39",
44
44
  "node-fetch": "^2.6.1",
45
45
  "tslib": "^2.0.3"
@@ -1,6 +0,0 @@
1
- export declare const getErrorMessage: (message: string) => "Время истекло. Обновите страницу и повторите попытку." | "Что-то пошло не так. Мы уже решаем проблему. Попробуйте снова через несколько минут.";
2
- export declare const formatError: (error: Error & {
3
- originalMessage?: string;
4
- }) => Error & {
5
- originalMessage?: string;
6
- };