@tramvai/module-metrics 1.60.2 → 1.61.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.
- package/lib/request/createRequestWithMetrics.d.ts +2 -10
- package/lib/request/initRequestsMetrics.d.ts +8 -6
- package/lib/request/types.d.ts +26 -0
- package/lib/server.d.ts +2 -0
- package/lib/server.es.js +48 -19
- package/lib/server.js +48 -17
- package/lib/tokens.d.ts +2 -0
- package/package.json +8 -8
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Args, CreateRequestWithMetrics } from './types';
|
|
2
2
|
export declare const getUrlAndOptions: (args: Args) => any[];
|
|
3
|
-
export declare const createRequestWithMetrics:
|
|
4
|
-
metricsInstances: {
|
|
5
|
-
requestsTotal: any;
|
|
6
|
-
requestsErrors: any;
|
|
7
|
-
requestsDuration: any;
|
|
8
|
-
};
|
|
9
|
-
getServiceName: any;
|
|
10
|
-
}) => (originalRequest: any, ...args: Args) => any;
|
|
11
|
-
export {};
|
|
3
|
+
export declare const createRequestWithMetrics: CreateRequestWithMetrics;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
http:
|
|
5
|
-
https:
|
|
6
|
-
createRequestWithMetrics:
|
|
1
|
+
import type { MetricsModule, GetServiceName, CreateRequestWithMetrics, HttpModule, HttpsModule, ModuleConfig } from './types';
|
|
2
|
+
export declare const initRequestsMetrics: ({ metrics, getServiceName, http, https, createRequestWithMetrics, config, }: {
|
|
3
|
+
metrics: MetricsModule;
|
|
4
|
+
http: HttpModule;
|
|
5
|
+
https: HttpsModule;
|
|
6
|
+
createRequestWithMetrics: CreateRequestWithMetrics;
|
|
7
|
+
getServiceName: GetServiceName;
|
|
8
|
+
config: ModuleConfig;
|
|
7
9
|
}) => void;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { RequestOptions, IncomingMessage, ClientRequest } from 'http';
|
|
3
|
+
import type httpType from 'http';
|
|
4
|
+
import type httpsType from 'https';
|
|
5
|
+
import type { Counter, Histogram } from 'prom-client';
|
|
6
|
+
import type { METRICS_MODULE_TOKEN, METRICS_SERVICES_REGISTRY_TOKEN } from '@tramvai/tokens-metrics';
|
|
7
|
+
export declare type ModuleConfig = {
|
|
8
|
+
enableDnsResolveMetric: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare type MetricsModule = typeof METRICS_MODULE_TOKEN;
|
|
11
|
+
export declare type HttpModule = typeof httpType;
|
|
12
|
+
export declare type HttpsModule = typeof httpsType;
|
|
13
|
+
export declare type OriginalRequest = HttpModule['request'];
|
|
14
|
+
export declare type MetricsInstances = {
|
|
15
|
+
requestsTotal: Counter<'status' | 'method' | 'service'>;
|
|
16
|
+
requestsErrors: Counter<'status' | 'method' | 'service'>;
|
|
17
|
+
requestsDuration: Histogram<'status' | 'method' | 'service'>;
|
|
18
|
+
dnsResolveDuration: Histogram<'service'>;
|
|
19
|
+
};
|
|
20
|
+
export declare type GetServiceName = typeof METRICS_SERVICES_REGISTRY_TOKEN['getServiceName'];
|
|
21
|
+
export declare type Args = [RequestOptions | string | URL, (res: IncomingMessage) => void] | [string | URL, RequestOptions, (res: IncomingMessage) => void];
|
|
22
|
+
export declare type CreateRequestWithMetrics = (args: {
|
|
23
|
+
metricsInstances: MetricsInstances;
|
|
24
|
+
getServiceName: GetServiceName;
|
|
25
|
+
config: ModuleConfig;
|
|
26
|
+
}) => (originalRequest: HttpModule['request'], ...requestArgs: Args) => ClientRequest;
|
package/lib/server.d.ts
CHANGED
package/lib/server.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
|
-
import { Module, commandLineListTokens, Scope } from '@tramvai/core';
|
|
2
|
+
import { createToken, Module, commandLineListTokens, Scope, provide } from '@tramvai/core';
|
|
3
3
|
import { SERVER_MODULE_PAPI_PUBLIC_ROUTE, WEB_APP_BEFORE_INIT_TOKEN, WEB_APP_TOKEN, SPECIAL_SERVER_PATHS } from '@tramvai/tokens-server';
|
|
4
4
|
import { METRICS_MODULE_TOKEN, METRICS_SERVICES_REGISTRY_TOKEN, REGISTER_INSTANT_METRIC_TOKEN } from '@tramvai/tokens-metrics';
|
|
5
5
|
import { measure } from '@tinkoff/measure-express-requests';
|
|
@@ -68,18 +68,18 @@ const getUrlAndOptions = (args) => {
|
|
|
68
68
|
const urlWOQuery = parsedUrl.origin + parsedUrl.pathname;
|
|
69
69
|
return [urlWOQuery, options || {}];
|
|
70
70
|
};
|
|
71
|
-
const createRequestWithMetrics = ({ metricsInstances: { requestsTotal, requestsErrors, requestsDuration }, getServiceName, }) => function requestWithMetrics(originalRequest, ...args) {
|
|
72
|
-
const req = originalRequest.apply(this, args);
|
|
73
|
-
const timerDone = requestsDuration.startTimer();
|
|
71
|
+
const createRequestWithMetrics = ({ metricsInstances: { requestsTotal, requestsErrors, requestsDuration, dnsResolveDuration }, getServiceName, config, }) => function requestWithMetrics(originalRequest, ...args) {
|
|
74
72
|
const [url, options] = getUrlAndOptions(args);
|
|
75
73
|
const serviceName = getServiceName(url);
|
|
74
|
+
const req = originalRequest.apply(this, args);
|
|
75
|
+
const timerDone = requestsDuration.startTimer();
|
|
76
76
|
const labelsValues = {
|
|
77
77
|
method: options.method || 'unknown',
|
|
78
78
|
service: serviceName || new URL(url).origin || 'unknown',
|
|
79
79
|
status: 'unknown',
|
|
80
80
|
};
|
|
81
81
|
req.on('response', (res) => {
|
|
82
|
-
labelsValues.status = res.statusCode;
|
|
82
|
+
labelsValues.status = res.statusCode.toString();
|
|
83
83
|
if (res.statusCode >= 400) {
|
|
84
84
|
requestsErrors.inc(labelsValues);
|
|
85
85
|
}
|
|
@@ -94,10 +94,18 @@ const createRequestWithMetrics = ({ metricsInstances: { requestsTotal, requestsE
|
|
|
94
94
|
requestsErrors.inc(labelsValues);
|
|
95
95
|
timerDone(labelsValues);
|
|
96
96
|
});
|
|
97
|
+
if (config.enableDnsResolveMetric) {
|
|
98
|
+
req.on('socket', (socket) => {
|
|
99
|
+
const dnsTimerDone = dnsResolveDuration.startTimer();
|
|
100
|
+
socket.on('lookup', () => {
|
|
101
|
+
dnsTimerDone({ service: labelsValues.service });
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
}
|
|
97
105
|
return req;
|
|
98
106
|
};
|
|
99
107
|
|
|
100
|
-
const initRequestsMetrics = ({ metrics, getServiceName, http, https, createRequestWithMetrics, }) => {
|
|
108
|
+
const initRequestsMetrics = ({ metrics, getServiceName, http, https, createRequestWithMetrics, config, }) => {
|
|
101
109
|
const metricsInstances = {
|
|
102
110
|
requestsTotal: metrics.counter({
|
|
103
111
|
name: 'http_sent_requests_total',
|
|
@@ -114,16 +122,21 @@ const initRequestsMetrics = ({ metrics, getServiceName, http, https, createReque
|
|
|
114
122
|
help: 'Execution time of the sent requests',
|
|
115
123
|
labelNames: ['status', 'method', 'service'],
|
|
116
124
|
}),
|
|
125
|
+
dnsResolveDuration: metrics.histogram({
|
|
126
|
+
name: 'dns_resolve_duration',
|
|
127
|
+
help: 'Time for dns resolve of the outhgoing requests',
|
|
128
|
+
labelNames: ['service'],
|
|
129
|
+
}),
|
|
117
130
|
};
|
|
118
131
|
monkeypatch({
|
|
119
132
|
obj: https,
|
|
120
133
|
method: 'request',
|
|
121
|
-
handler: createRequestWithMetrics({ metricsInstances, getServiceName }),
|
|
134
|
+
handler: createRequestWithMetrics({ metricsInstances, getServiceName, config }),
|
|
122
135
|
});
|
|
123
136
|
monkeypatch({
|
|
124
137
|
obj: http,
|
|
125
138
|
method: 'request',
|
|
126
|
-
handler: createRequestWithMetrics({ metricsInstances, getServiceName }),
|
|
139
|
+
handler: createRequestWithMetrics({ metricsInstances, getServiceName, config }),
|
|
127
140
|
});
|
|
128
141
|
};
|
|
129
142
|
|
|
@@ -226,6 +239,8 @@ class MetricsServicesRegistry {
|
|
|
226
239
|
}
|
|
227
240
|
}
|
|
228
241
|
|
|
242
|
+
const METRICS_MODULE_CONFIG_TOKEN = createToken('metrics-module-config');
|
|
243
|
+
|
|
229
244
|
let RequestModule = class RequestModule {
|
|
230
245
|
};
|
|
231
246
|
RequestModule = __decorate([
|
|
@@ -234,7 +249,7 @@ RequestModule = __decorate([
|
|
|
234
249
|
{
|
|
235
250
|
provide: commandLineListTokens.init,
|
|
236
251
|
multi: true,
|
|
237
|
-
useFactory: ({ metrics, envManager, metricsServicesRegistry }) => {
|
|
252
|
+
useFactory: ({ metrics, envManager, metricsServicesRegistry, metricsModuleConfig, }) => {
|
|
238
253
|
if (!metrics) {
|
|
239
254
|
return noop;
|
|
240
255
|
}
|
|
@@ -242,7 +257,14 @@ RequestModule = __decorate([
|
|
|
242
257
|
const env = envManager.getAll();
|
|
243
258
|
metricsServicesRegistry.registerEnv(env);
|
|
244
259
|
const getServiceName = metricsServicesRegistry.getServiceName.bind(metricsServicesRegistry);
|
|
245
|
-
initRequestsMetrics({
|
|
260
|
+
initRequestsMetrics({
|
|
261
|
+
metrics,
|
|
262
|
+
getServiceName,
|
|
263
|
+
http,
|
|
264
|
+
https,
|
|
265
|
+
createRequestWithMetrics,
|
|
266
|
+
config: metricsModuleConfig,
|
|
267
|
+
});
|
|
246
268
|
};
|
|
247
269
|
},
|
|
248
270
|
deps: {
|
|
@@ -252,6 +274,7 @@ RequestModule = __decorate([
|
|
|
252
274
|
},
|
|
253
275
|
metricsServicesRegistry: METRICS_SERVICES_REGISTRY_TOKEN,
|
|
254
276
|
envManager: ENV_MANAGER_TOKEN,
|
|
277
|
+
metricsModuleConfig: METRICS_MODULE_CONFIG_TOKEN,
|
|
255
278
|
},
|
|
256
279
|
},
|
|
257
280
|
{
|
|
@@ -390,11 +413,17 @@ MetricsModule = __decorate([
|
|
|
390
413
|
Module({
|
|
391
414
|
imports: [RequestModule, InstantMetricsModule],
|
|
392
415
|
providers: [
|
|
393
|
-
{
|
|
416
|
+
provide({
|
|
417
|
+
provide: METRICS_MODULE_CONFIG_TOKEN,
|
|
418
|
+
useValue: {
|
|
419
|
+
enableDnsResolveMetric: false,
|
|
420
|
+
},
|
|
421
|
+
}),
|
|
422
|
+
provide({
|
|
394
423
|
provide: 'metricsDefaultRegistry',
|
|
395
424
|
useClass: Registry,
|
|
396
|
-
},
|
|
397
|
-
{
|
|
425
|
+
}),
|
|
426
|
+
provide({
|
|
398
427
|
provide: METRICS_MODULE_TOKEN,
|
|
399
428
|
useFactory: ({ registry }) => {
|
|
400
429
|
collectDefaultMetrics({ register: registry });
|
|
@@ -409,8 +438,8 @@ MetricsModule = __decorate([
|
|
|
409
438
|
deps: {
|
|
410
439
|
registry: 'metricsDefaultRegistry',
|
|
411
440
|
},
|
|
412
|
-
},
|
|
413
|
-
{
|
|
441
|
+
}),
|
|
442
|
+
provide({
|
|
414
443
|
provide: WEB_APP_BEFORE_INIT_TOKEN,
|
|
415
444
|
useFactory: ({ metrics, app, additionalLabelNamesList, getAdditionalLabelValuesList, httpRequestsDurationBuckets, metricsExcludePaths, registry, }) => {
|
|
416
445
|
return () => {
|
|
@@ -456,8 +485,8 @@ MetricsModule = __decorate([
|
|
|
456
485
|
registry: 'metricsDefaultRegistry',
|
|
457
486
|
},
|
|
458
487
|
multi: true,
|
|
459
|
-
},
|
|
460
|
-
{
|
|
488
|
+
}),
|
|
489
|
+
provide({
|
|
461
490
|
provide: WEB_APP_BEFORE_INIT_TOKEN,
|
|
462
491
|
useFactory: ({ metrics }) => {
|
|
463
492
|
return () => {
|
|
@@ -468,9 +497,9 @@ MetricsModule = __decorate([
|
|
|
468
497
|
metrics: METRICS_MODULE_TOKEN,
|
|
469
498
|
},
|
|
470
499
|
multi: true,
|
|
471
|
-
},
|
|
500
|
+
}),
|
|
472
501
|
],
|
|
473
502
|
})
|
|
474
503
|
], MetricsModule);
|
|
475
504
|
|
|
476
|
-
export { MetricsModule };
|
|
505
|
+
export { METRICS_MODULE_CONFIG_TOKEN, MetricsModule };
|
package/lib/server.js
CHANGED
|
@@ -82,18 +82,18 @@ const getUrlAndOptions = (args) => {
|
|
|
82
82
|
const urlWOQuery = parsedUrl.origin + parsedUrl.pathname;
|
|
83
83
|
return [urlWOQuery, options || {}];
|
|
84
84
|
};
|
|
85
|
-
const createRequestWithMetrics = ({ metricsInstances: { requestsTotal, requestsErrors, requestsDuration }, getServiceName, }) => function requestWithMetrics(originalRequest, ...args) {
|
|
86
|
-
const req = originalRequest.apply(this, args);
|
|
87
|
-
const timerDone = requestsDuration.startTimer();
|
|
85
|
+
const createRequestWithMetrics = ({ metricsInstances: { requestsTotal, requestsErrors, requestsDuration, dnsResolveDuration }, getServiceName, config, }) => function requestWithMetrics(originalRequest, ...args) {
|
|
88
86
|
const [url, options] = getUrlAndOptions(args);
|
|
89
87
|
const serviceName = getServiceName(url);
|
|
88
|
+
const req = originalRequest.apply(this, args);
|
|
89
|
+
const timerDone = requestsDuration.startTimer();
|
|
90
90
|
const labelsValues = {
|
|
91
91
|
method: options.method || 'unknown',
|
|
92
92
|
service: serviceName || new URL(url).origin || 'unknown',
|
|
93
93
|
status: 'unknown',
|
|
94
94
|
};
|
|
95
95
|
req.on('response', (res) => {
|
|
96
|
-
labelsValues.status = res.statusCode;
|
|
96
|
+
labelsValues.status = res.statusCode.toString();
|
|
97
97
|
if (res.statusCode >= 400) {
|
|
98
98
|
requestsErrors.inc(labelsValues);
|
|
99
99
|
}
|
|
@@ -108,10 +108,18 @@ const createRequestWithMetrics = ({ metricsInstances: { requestsTotal, requestsE
|
|
|
108
108
|
requestsErrors.inc(labelsValues);
|
|
109
109
|
timerDone(labelsValues);
|
|
110
110
|
});
|
|
111
|
+
if (config.enableDnsResolveMetric) {
|
|
112
|
+
req.on('socket', (socket) => {
|
|
113
|
+
const dnsTimerDone = dnsResolveDuration.startTimer();
|
|
114
|
+
socket.on('lookup', () => {
|
|
115
|
+
dnsTimerDone({ service: labelsValues.service });
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
111
119
|
return req;
|
|
112
120
|
};
|
|
113
121
|
|
|
114
|
-
const initRequestsMetrics = ({ metrics, getServiceName, http, https, createRequestWithMetrics, }) => {
|
|
122
|
+
const initRequestsMetrics = ({ metrics, getServiceName, http, https, createRequestWithMetrics, config, }) => {
|
|
115
123
|
const metricsInstances = {
|
|
116
124
|
requestsTotal: metrics.counter({
|
|
117
125
|
name: 'http_sent_requests_total',
|
|
@@ -128,16 +136,21 @@ const initRequestsMetrics = ({ metrics, getServiceName, http, https, createReque
|
|
|
128
136
|
help: 'Execution time of the sent requests',
|
|
129
137
|
labelNames: ['status', 'method', 'service'],
|
|
130
138
|
}),
|
|
139
|
+
dnsResolveDuration: metrics.histogram({
|
|
140
|
+
name: 'dns_resolve_duration',
|
|
141
|
+
help: 'Time for dns resolve of the outhgoing requests',
|
|
142
|
+
labelNames: ['service'],
|
|
143
|
+
}),
|
|
131
144
|
};
|
|
132
145
|
monkeypatch__default["default"]({
|
|
133
146
|
obj: https,
|
|
134
147
|
method: 'request',
|
|
135
|
-
handler: createRequestWithMetrics({ metricsInstances, getServiceName }),
|
|
148
|
+
handler: createRequestWithMetrics({ metricsInstances, getServiceName, config }),
|
|
136
149
|
});
|
|
137
150
|
monkeypatch__default["default"]({
|
|
138
151
|
obj: http,
|
|
139
152
|
method: 'request',
|
|
140
|
-
handler: createRequestWithMetrics({ metricsInstances, getServiceName }),
|
|
153
|
+
handler: createRequestWithMetrics({ metricsInstances, getServiceName, config }),
|
|
141
154
|
});
|
|
142
155
|
};
|
|
143
156
|
|
|
@@ -240,6 +253,8 @@ class MetricsServicesRegistry {
|
|
|
240
253
|
}
|
|
241
254
|
}
|
|
242
255
|
|
|
256
|
+
const METRICS_MODULE_CONFIG_TOKEN = core.createToken('metrics-module-config');
|
|
257
|
+
|
|
243
258
|
let RequestModule = class RequestModule {
|
|
244
259
|
};
|
|
245
260
|
RequestModule = tslib.__decorate([
|
|
@@ -248,7 +263,7 @@ RequestModule = tslib.__decorate([
|
|
|
248
263
|
{
|
|
249
264
|
provide: core.commandLineListTokens.init,
|
|
250
265
|
multi: true,
|
|
251
|
-
useFactory: ({ metrics, envManager, metricsServicesRegistry }) => {
|
|
266
|
+
useFactory: ({ metrics, envManager, metricsServicesRegistry, metricsModuleConfig, }) => {
|
|
252
267
|
if (!metrics) {
|
|
253
268
|
return noop__default["default"];
|
|
254
269
|
}
|
|
@@ -256,7 +271,14 @@ RequestModule = tslib.__decorate([
|
|
|
256
271
|
const env = envManager.getAll();
|
|
257
272
|
metricsServicesRegistry.registerEnv(env);
|
|
258
273
|
const getServiceName = metricsServicesRegistry.getServiceName.bind(metricsServicesRegistry);
|
|
259
|
-
initRequestsMetrics({
|
|
274
|
+
initRequestsMetrics({
|
|
275
|
+
metrics,
|
|
276
|
+
getServiceName,
|
|
277
|
+
http: http__default["default"],
|
|
278
|
+
https: https__default["default"],
|
|
279
|
+
createRequestWithMetrics,
|
|
280
|
+
config: metricsModuleConfig,
|
|
281
|
+
});
|
|
260
282
|
};
|
|
261
283
|
},
|
|
262
284
|
deps: {
|
|
@@ -266,6 +288,7 @@ RequestModule = tslib.__decorate([
|
|
|
266
288
|
},
|
|
267
289
|
metricsServicesRegistry: tokensMetrics.METRICS_SERVICES_REGISTRY_TOKEN,
|
|
268
290
|
envManager: moduleCommon.ENV_MANAGER_TOKEN,
|
|
291
|
+
metricsModuleConfig: METRICS_MODULE_CONFIG_TOKEN,
|
|
269
292
|
},
|
|
270
293
|
},
|
|
271
294
|
{
|
|
@@ -404,11 +427,17 @@ exports.MetricsModule = tslib.__decorate([
|
|
|
404
427
|
core.Module({
|
|
405
428
|
imports: [RequestModule, InstantMetricsModule],
|
|
406
429
|
providers: [
|
|
407
|
-
{
|
|
430
|
+
core.provide({
|
|
431
|
+
provide: METRICS_MODULE_CONFIG_TOKEN,
|
|
432
|
+
useValue: {
|
|
433
|
+
enableDnsResolveMetric: false,
|
|
434
|
+
},
|
|
435
|
+
}),
|
|
436
|
+
core.provide({
|
|
408
437
|
provide: 'metricsDefaultRegistry',
|
|
409
438
|
useClass: promClient.Registry,
|
|
410
|
-
},
|
|
411
|
-
{
|
|
439
|
+
}),
|
|
440
|
+
core.provide({
|
|
412
441
|
provide: tokensMetrics.METRICS_MODULE_TOKEN,
|
|
413
442
|
useFactory: ({ registry }) => {
|
|
414
443
|
promClient.collectDefaultMetrics({ register: registry });
|
|
@@ -423,8 +452,8 @@ exports.MetricsModule = tslib.__decorate([
|
|
|
423
452
|
deps: {
|
|
424
453
|
registry: 'metricsDefaultRegistry',
|
|
425
454
|
},
|
|
426
|
-
},
|
|
427
|
-
{
|
|
455
|
+
}),
|
|
456
|
+
core.provide({
|
|
428
457
|
provide: tokensServer.WEB_APP_BEFORE_INIT_TOKEN,
|
|
429
458
|
useFactory: ({ metrics, app, additionalLabelNamesList, getAdditionalLabelValuesList, httpRequestsDurationBuckets, metricsExcludePaths, registry, }) => {
|
|
430
459
|
return () => {
|
|
@@ -470,8 +499,8 @@ exports.MetricsModule = tslib.__decorate([
|
|
|
470
499
|
registry: 'metricsDefaultRegistry',
|
|
471
500
|
},
|
|
472
501
|
multi: true,
|
|
473
|
-
},
|
|
474
|
-
{
|
|
502
|
+
}),
|
|
503
|
+
core.provide({
|
|
475
504
|
provide: tokensServer.WEB_APP_BEFORE_INIT_TOKEN,
|
|
476
505
|
useFactory: ({ metrics }) => {
|
|
477
506
|
return () => {
|
|
@@ -482,7 +511,9 @@ exports.MetricsModule = tslib.__decorate([
|
|
|
482
511
|
metrics: tokensMetrics.METRICS_MODULE_TOKEN,
|
|
483
512
|
},
|
|
484
513
|
multi: true,
|
|
485
|
-
},
|
|
514
|
+
}),
|
|
486
515
|
],
|
|
487
516
|
})
|
|
488
517
|
], exports.MetricsModule);
|
|
518
|
+
|
|
519
|
+
exports.METRICS_MODULE_CONFIG_TOKEN = METRICS_MODULE_CONFIG_TOKEN;
|
package/lib/tokens.d.ts
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-metrics",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.61.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"browser": "lib/browser.js",
|
|
6
6
|
"main": "lib/server.js",
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
"build-for-publish": "true"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@tramvai/core": "1.
|
|
23
|
-
"@tramvai/tokens-server": "1.
|
|
24
|
-
"@tramvai/tokens-metrics": "1.
|
|
25
|
-
"@tramvai/module-common": "1.
|
|
26
|
-
"@tramvai/tokens-http-client": "1.
|
|
27
|
-
"@tramvai/state": "1.
|
|
28
|
-
"@tramvai/papi": "1.
|
|
22
|
+
"@tramvai/core": "1.61.0",
|
|
23
|
+
"@tramvai/tokens-server": "1.61.0",
|
|
24
|
+
"@tramvai/tokens-metrics": "1.61.0",
|
|
25
|
+
"@tramvai/module-common": "1.61.0",
|
|
26
|
+
"@tramvai/tokens-http-client": "1.61.0",
|
|
27
|
+
"@tramvai/state": "1.61.0",
|
|
28
|
+
"@tramvai/papi": "1.61.0",
|
|
29
29
|
"@tinkoff/measure-express-requests": "1.4.2",
|
|
30
30
|
"@tinkoff/monkeypatch": "1.3.3",
|
|
31
31
|
"@tinkoff/url": "0.7.37",
|