@tramvai/module-http-client 1.97.0 → 1.101.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/httpClient/httpClientFactory.d.ts +3 -2
- package/lib/index.browser.js +10 -24
- package/lib/index.d.ts +0 -1
- package/lib/index.es.js +9 -23
- package/lib/index.js +7 -22
- package/lib/utils/index.d.ts +0 -1
- package/package.json +10 -10
- package/lib/utils/errors.d.ts +0 -6
|
@@ -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;
|
package/lib/index.browser.js
CHANGED
|
@@ -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,28 +38,27 @@ 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',
|
|
69
52
|
createCache: createCache
|
|
70
53
|
? (cacheOptions) => createCache('memory', cacheOptions)
|
|
71
54
|
: undefined,
|
|
72
|
-
modifyRequest: compose(fillHeaderIp(), fillHeaders()),
|
|
73
|
-
modifyError: formatError,
|
|
55
|
+
modifyRequest: compose(fillHeaderIp({ requestManager }), fillHeaders({ requestManager, headersList })),
|
|
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,
|
|
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,
|
|
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, {
|
package/lib/utils/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-http-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.101.2",
|
|
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.
|
|
29
|
-
"@tramvai/tokens-http-client": "1.
|
|
30
|
-
"@tramvai/tokens-common": "1.
|
|
31
|
-
"@tramvai/tokens-server": "1.
|
|
28
|
+
"@tramvai/tinkoff-request-http-client-adapter": "0.8.343",
|
|
29
|
+
"@tramvai/tokens-http-client": "1.101.2",
|
|
30
|
+
"@tramvai/tokens-common": "1.101.2",
|
|
31
|
+
"@tramvai/tokens-server": "1.101.2"
|
|
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.
|
|
39
|
-
"@tramvai/module-common": "1.
|
|
40
|
-
"@tramvai/papi": "1.
|
|
41
|
-
"@tramvai/test-helpers": "1.
|
|
42
|
-
"@tramvai/test-mocks": "1.
|
|
38
|
+
"@tramvai/core": "1.101.2",
|
|
39
|
+
"@tramvai/module-common": "1.101.2",
|
|
40
|
+
"@tramvai/papi": "1.101.2",
|
|
41
|
+
"@tramvai/test-helpers": "1.101.2",
|
|
42
|
+
"@tramvai/test-mocks": "1.101.2",
|
|
43
43
|
"@tinkoff/dippy": "0.7.39",
|
|
44
44
|
"node-fetch": "^2.6.1",
|
|
45
45
|
"tslib": "^2.0.3"
|
package/lib/utils/errors.d.ts
DELETED
|
@@ -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
|
-
};
|