Skip to content

Commit 719d816

Browse files
authored
Make buckets parameter required for histogram metric (#315)
* make buckets parameter required for histogram metric * adjusted prom metric constructor parameters
1 parent 433fdf4 commit 719d816

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed

packages/metrics/lib/prometheus/PrometheusMessageMetric.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,22 @@ import type { MessageVersionGeneratingFunction, PrometheusMetricParams } from '.
99
export abstract class PrometheusMessageMetric<
1010
MessagePayload extends object,
1111
MetricType extends Metric,
12+
MetricParams extends
13+
PrometheusMetricParams<MessagePayload> = PrometheusMetricParams<MessagePayload>,
1214
> implements MessageMetricsManager<MessagePayload>
1315
{
1416
/** Fallbacks to null if metrics are disabled on app level */
1517
protected readonly metric: MetricType
1618

1719
protected readonly messageVersionGeneratingFunction: MessageVersionGeneratingFunction<MessagePayload>
1820

19-
private readonly metricParams: PrometheusMetricParams<MessagePayload>
21+
private readonly metricParams: MetricParams
2022

2123
/**
2224
* @param metricParams - metrics parameters (see PrometheusMetricParams)
2325
* @param client - use it to specify custom Prometheus client
2426
*/
25-
constructor(metricParams: PrometheusMetricParams<MessagePayload>, client?: typeof promClient) {
27+
constructor(metricParams: MetricParams, client?: typeof promClient) {
2628
this.metricParams = metricParams
2729
this.messageVersionGeneratingFunction =
2830
this.resolveMessageVersionGeneratingFunction(metricParams)
@@ -38,15 +40,12 @@ export abstract class PrometheusMessageMetric<
3840
}
3941

4042
private resolveMessageVersionGeneratingFunction(
41-
metricParams: PrometheusMetricParams<MessagePayload>,
43+
metricParams: MetricParams,
4244
): MessageVersionGeneratingFunction<MessagePayload> {
4345
const messageVersion = metricParams.messageVersion
4446
return typeof messageVersion === 'function' ? messageVersion : () => messageVersion
4547
}
4648

47-
protected abstract createMetric(
48-
client: typeof promClient,
49-
metricParams: PrometheusMetricParams<MessagePayload>,
50-
): MetricType
49+
protected abstract createMetric(client: typeof promClient, metricParams: MetricParams): MetricType
5150
abstract registerProcessedMessage(metadata: ProcessedMessageMetadata<MessagePayload>): void
5251
}

packages/metrics/lib/prometheus/metrics/message-time/PrometheusMessageTimeMetric.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type { MakeRequired } from '@lokalise/universal-ts-utils/node'
12
import type { ProcessedMessageMetadata } from '@message-queue-toolkit/core'
23
import type { Histogram } from 'prom-client'
34
import type promClient from 'prom-client'
@@ -8,11 +9,12 @@ export abstract class PrometheusMessageTimeMetric<
89
MessagePayload extends object,
910
> extends PrometheusMessageMetric<
1011
MessagePayload,
11-
Histogram<'messageType' | 'version' | 'queue' | 'result'>
12+
Histogram<'messageType' | 'version' | 'queue' | 'result'>,
13+
MakeRequired<PrometheusMetricParams<MessagePayload>, 'buckets'>
1214
> {
1315
protected createMetric(
1416
client: typeof promClient,
15-
metricParams: PrometheusMetricParams<MessagePayload>,
17+
metricParams: MakeRequired<PrometheusMetricParams<MessagePayload>, 'buckets'>,
1618
): Histogram<'messageType' | 'version' | 'queue' | 'result'> {
1719
return new client.Histogram({
1820
name: metricParams.name,

packages/metrics/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@message-queue-toolkit/metrics",
3-
"version": "4.1.0",
3+
"version": "4.1.1",
44
"private": false,
55
"license": "MIT",
66
"description": "Utilities for collecting metrics in message-queue-toolkit",
@@ -26,7 +26,8 @@
2626
"prepublishOnly": "npm run lint && npm run build"
2727
},
2828
"dependencies": {
29-
"@lokalise/node-core": "^14.0.1"
29+
"@lokalise/node-core": "^14.0.1",
30+
"@lokalise/universal-ts-utils": "^4.4.1"
3031
},
3132
"peerDependencies": {
3233
"@message-queue-toolkit/core": ">=21.0.0",

0 commit comments

Comments
 (0)