@tramvai/module-http-client 1.94.2 → 1.95.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/lib/httpClient/httpClientFactory.d.ts +2 -2
- package/lib/index.browser.js +8 -8
- package/lib/index.es.js +8 -8
- package/lib/index.js +8 -8
- package/package.json +10 -10
|
@@ -2,14 +2,14 @@ import type { MakeRequest } from '@tinkoff/request-core';
|
|
|
2
2
|
import type { APP_INFO_TOKEN } from '@tramvai/core';
|
|
3
3
|
import type { API_CLIENT_PASS_HEADERS, 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,
|
|
5
|
+
export declare const httpClientFactory: ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker, }: {
|
|
6
6
|
logger: typeof LOGGER_TOKEN;
|
|
7
7
|
envManager: typeof ENV_MANAGER_TOKEN;
|
|
8
8
|
appInfo: typeof APP_INFO_TOKEN;
|
|
9
9
|
requestManager?: typeof REQUEST_MANAGER_TOKEN;
|
|
10
10
|
headersList?: typeof API_CLIENT_PASS_HEADERS;
|
|
11
11
|
createCache?: typeof CREATE_CACHE_TOKEN;
|
|
12
|
-
|
|
12
|
+
makeRequestRegistry: Map<string, MakeRequest>;
|
|
13
13
|
agent?: typeof HTTP_CLIENT_AGENT;
|
|
14
14
|
disableCircuitBreaker: typeof DISABLE_CIRCUIT_BREAKER;
|
|
15
15
|
}) => typeof HTTP_CLIENT_FACTORY;
|
package/lib/index.browser.js
CHANGED
|
@@ -55,7 +55,7 @@ const environmentDependentOptions = typeof window === 'undefined'
|
|
|
55
55
|
: {
|
|
56
56
|
defaultTimeout: 30000,
|
|
57
57
|
};
|
|
58
|
-
const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache,
|
|
58
|
+
const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker = false, }) => {
|
|
59
59
|
return (options) => {
|
|
60
60
|
if (!options.name) {
|
|
61
61
|
throw Error(`Необходимо передать уникальное поле "name" для экземпляра HTTP клиента!`);
|
|
@@ -98,13 +98,13 @@ const httpClientFactory = ({ logger, envManager, appInfo, requestManager, header
|
|
|
98
98
|
adapterOptions.enableCircuitBreaker = !forceDisabledCircuitBreaker;
|
|
99
99
|
}
|
|
100
100
|
// кэшируем инстанс @tinkoff/request
|
|
101
|
-
if (!
|
|
102
|
-
|
|
101
|
+
if (!makeRequestRegistry.has(adapterOptions.name)) {
|
|
102
|
+
makeRequestRegistry.set(adapterOptions.name, createTinkoffRequest(adapterOptions));
|
|
103
103
|
}
|
|
104
|
-
const
|
|
104
|
+
const makeRequest = makeRequestRegistry.get(adapterOptions.name);
|
|
105
105
|
const httpClientAdapter = new HttpClientAdapter({
|
|
106
106
|
options: adapterOptions,
|
|
107
|
-
|
|
107
|
+
makeRequest,
|
|
108
108
|
});
|
|
109
109
|
return httpClientAdapter;
|
|
110
110
|
};
|
|
@@ -159,7 +159,7 @@ const HttpClientModule = /* @__PURE__ */ Module({
|
|
|
159
159
|
envManager: ENV_MANAGER_TOKEN,
|
|
160
160
|
appInfo: APP_INFO_TOKEN,
|
|
161
161
|
createCache: createCacheToken,
|
|
162
|
-
|
|
162
|
+
makeRequestRegistry: 'makeRequestRegistry',
|
|
163
163
|
requestManager: {
|
|
164
164
|
token: REQUEST_MANAGER_TOKEN,
|
|
165
165
|
optional: true,
|
|
@@ -207,7 +207,7 @@ const HttpClientModule = /* @__PURE__ */ Module({
|
|
|
207
207
|
* если создавать новые экземпляры на Scope.REQUEST
|
|
208
208
|
*/
|
|
209
209
|
provide({
|
|
210
|
-
provide: '
|
|
210
|
+
provide: 'makeRequestRegistry',
|
|
211
211
|
scope: Scope.SINGLETON,
|
|
212
212
|
useFactory: () => new Map(),
|
|
213
213
|
}),
|
|
@@ -219,7 +219,7 @@ const HttpClientModule = /* @__PURE__ */ Module({
|
|
|
219
219
|
* инстансов кэши было бы неограниченное количество.
|
|
220
220
|
*
|
|
221
221
|
* HTTP клиенты создаются со Scope.REQUEST, но инстансы @tinkoff/request
|
|
222
|
-
* (и соответственно кэшей) создаются только один раз, благодаря `
|
|
222
|
+
* (и соответственно кэшей) создаются только один раз, благодаря `makeRequestRegistry`.
|
|
223
223
|
* это гарантирует отсутствие утечек памяти, поэтому мы обходим проверку
|
|
224
224
|
* на Scope.SINGLETON c помощью обертки `createCacheToken`
|
|
225
225
|
*/
|
package/lib/index.es.js
CHANGED
|
@@ -85,7 +85,7 @@ const environmentDependentOptions = typeof window === 'undefined'
|
|
|
85
85
|
: {
|
|
86
86
|
defaultTimeout: 30000,
|
|
87
87
|
};
|
|
88
|
-
const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache,
|
|
88
|
+
const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker = false, }) => {
|
|
89
89
|
return (options) => {
|
|
90
90
|
if (!options.name) {
|
|
91
91
|
throw Error(`Необходимо передать уникальное поле "name" для экземпляра HTTP клиента!`);
|
|
@@ -128,13 +128,13 @@ const httpClientFactory = ({ logger, envManager, appInfo, requestManager, header
|
|
|
128
128
|
adapterOptions.enableCircuitBreaker = !forceDisabledCircuitBreaker;
|
|
129
129
|
}
|
|
130
130
|
// кэшируем инстанс @tinkoff/request
|
|
131
|
-
if (!
|
|
132
|
-
|
|
131
|
+
if (!makeRequestRegistry.has(adapterOptions.name)) {
|
|
132
|
+
makeRequestRegistry.set(adapterOptions.name, createTinkoffRequest(adapterOptions));
|
|
133
133
|
}
|
|
134
|
-
const
|
|
134
|
+
const makeRequest = makeRequestRegistry.get(adapterOptions.name);
|
|
135
135
|
const httpClientAdapter = new HttpClientAdapter({
|
|
136
136
|
options: adapterOptions,
|
|
137
|
-
|
|
137
|
+
makeRequest,
|
|
138
138
|
});
|
|
139
139
|
return httpClientAdapter;
|
|
140
140
|
};
|
|
@@ -206,7 +206,7 @@ const HttpClientModule = /* @__PURE__ */ Module({
|
|
|
206
206
|
envManager: ENV_MANAGER_TOKEN,
|
|
207
207
|
appInfo: APP_INFO_TOKEN,
|
|
208
208
|
createCache: createCacheToken,
|
|
209
|
-
|
|
209
|
+
makeRequestRegistry: 'makeRequestRegistry',
|
|
210
210
|
requestManager: {
|
|
211
211
|
token: REQUEST_MANAGER_TOKEN,
|
|
212
212
|
optional: true,
|
|
@@ -254,7 +254,7 @@ const HttpClientModule = /* @__PURE__ */ Module({
|
|
|
254
254
|
* если создавать новые экземпляры на Scope.REQUEST
|
|
255
255
|
*/
|
|
256
256
|
provide({
|
|
257
|
-
provide: '
|
|
257
|
+
provide: 'makeRequestRegistry',
|
|
258
258
|
scope: Scope.SINGLETON,
|
|
259
259
|
useFactory: () => new Map(),
|
|
260
260
|
}),
|
|
@@ -266,7 +266,7 @@ const HttpClientModule = /* @__PURE__ */ Module({
|
|
|
266
266
|
* инстансов кэши было бы неограниченное количество.
|
|
267
267
|
*
|
|
268
268
|
* HTTP клиенты создаются со Scope.REQUEST, но инстансы @tinkoff/request
|
|
269
|
-
* (и соответственно кэшей) создаются только один раз, благодаря `
|
|
269
|
+
* (и соответственно кэшей) создаются только один раз, благодаря `makeRequestRegistry`.
|
|
270
270
|
* это гарантирует отсутствие утечек памяти, поэтому мы обходим проверку
|
|
271
271
|
* на Scope.SINGLETON c помощью обертки `createCacheToken`
|
|
272
272
|
*/
|
package/lib/index.js
CHANGED
|
@@ -96,7 +96,7 @@ const environmentDependentOptions = typeof window === 'undefined'
|
|
|
96
96
|
: {
|
|
97
97
|
defaultTimeout: 30000,
|
|
98
98
|
};
|
|
99
|
-
const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache,
|
|
99
|
+
const httpClientFactory = ({ logger, envManager, appInfo, requestManager, headersList, createCache, makeRequestRegistry, agent, disableCircuitBreaker = false, }) => {
|
|
100
100
|
return (options) => {
|
|
101
101
|
if (!options.name) {
|
|
102
102
|
throw Error(`Необходимо передать уникальное поле "name" для экземпляра HTTP клиента!`);
|
|
@@ -139,13 +139,13 @@ const httpClientFactory = ({ logger, envManager, appInfo, requestManager, header
|
|
|
139
139
|
adapterOptions.enableCircuitBreaker = !forceDisabledCircuitBreaker;
|
|
140
140
|
}
|
|
141
141
|
// кэшируем инстанс @tinkoff/request
|
|
142
|
-
if (!
|
|
143
|
-
|
|
142
|
+
if (!makeRequestRegistry.has(adapterOptions.name)) {
|
|
143
|
+
makeRequestRegistry.set(adapterOptions.name, tinkoffRequestHttpClientAdapter.createTinkoffRequest(adapterOptions));
|
|
144
144
|
}
|
|
145
|
-
const
|
|
145
|
+
const makeRequest = makeRequestRegistry.get(adapterOptions.name);
|
|
146
146
|
const httpClientAdapter = new tinkoffRequestHttpClientAdapter.HttpClientAdapter({
|
|
147
147
|
options: adapterOptions,
|
|
148
|
-
|
|
148
|
+
makeRequest,
|
|
149
149
|
});
|
|
150
150
|
return httpClientAdapter;
|
|
151
151
|
};
|
|
@@ -217,7 +217,7 @@ const HttpClientModule = /* @__PURE__ */ core.Module({
|
|
|
217
217
|
envManager: tokensCommon.ENV_MANAGER_TOKEN,
|
|
218
218
|
appInfo: core.APP_INFO_TOKEN,
|
|
219
219
|
createCache: createCacheToken,
|
|
220
|
-
|
|
220
|
+
makeRequestRegistry: 'makeRequestRegistry',
|
|
221
221
|
requestManager: {
|
|
222
222
|
token: tokensCommon.REQUEST_MANAGER_TOKEN,
|
|
223
223
|
optional: true,
|
|
@@ -265,7 +265,7 @@ const HttpClientModule = /* @__PURE__ */ core.Module({
|
|
|
265
265
|
* если создавать новые экземпляры на Scope.REQUEST
|
|
266
266
|
*/
|
|
267
267
|
core.provide({
|
|
268
|
-
provide: '
|
|
268
|
+
provide: 'makeRequestRegistry',
|
|
269
269
|
scope: core.Scope.SINGLETON,
|
|
270
270
|
useFactory: () => new Map(),
|
|
271
271
|
}),
|
|
@@ -277,7 +277,7 @@ const HttpClientModule = /* @__PURE__ */ core.Module({
|
|
|
277
277
|
* инстансов кэши было бы неограниченное количество.
|
|
278
278
|
*
|
|
279
279
|
* HTTP клиенты создаются со Scope.REQUEST, но инстансы @tinkoff/request
|
|
280
|
-
* (и соответственно кэшей) создаются только один раз, благодаря `
|
|
280
|
+
* (и соответственно кэшей) создаются только один раз, благодаря `makeRequestRegistry`.
|
|
281
281
|
* это гарантирует отсутствие утечек памяти, поэтому мы обходим проверку
|
|
282
282
|
* на Scope.SINGLETON c помощью обертки `createCacheToken`
|
|
283
283
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-http-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.95.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.
|
|
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.333",
|
|
29
|
+
"@tramvai/tokens-http-client": "1.95.1",
|
|
30
|
+
"@tramvai/tokens-common": "1.95.1",
|
|
31
|
+
"@tramvai/tokens-server": "1.95.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.
|
|
39
|
-
"@tramvai/module-common": "1.
|
|
40
|
-
"@tramvai/papi": "1.
|
|
41
|
-
"@tramvai/test-helpers": "1.
|
|
42
|
-
"@tramvai/test-mocks": "1.
|
|
38
|
+
"@tramvai/core": "1.95.1",
|
|
39
|
+
"@tramvai/module-common": "1.95.1",
|
|
40
|
+
"@tramvai/papi": "1.95.1",
|
|
41
|
+
"@tramvai/test-helpers": "1.95.1",
|
|
42
|
+
"@tramvai/test-mocks": "1.95.1",
|
|
43
43
|
"@tinkoff/dippy": "0.7.39",
|
|
44
44
|
"node-fetch": "^2.6.1",
|
|
45
45
|
"tslib": "^2.0.3"
|