Skip to content

Commit 992d5a2

Browse files
Fix typescript definitions for using with Registry<OpenMetricsContentType> (#571)
1 parent 1df34ed commit 992d5a2

File tree

2 files changed

+26
-15
lines changed

2 files changed

+26
-15
lines changed

CHANGELOG.md

+2-4
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ project adheres to [Semantic Versioning](http://semver.org/).
77

88
## [Unreleased]
99

10-
### Changed
11-
12-
- Cleanup code and refactor to be more efficient
13-
1410
### Breaking
1511

1612
- drop support for Node.js versions 10, 12 and 17
@@ -23,6 +19,8 @@ project adheres to [Semantic Versioning](http://semver.org/).
2319
avoid failures from the server when using `Content-Encoding: gzip` header.
2420
- Refactor `escapeString` helper in `lib/registry.js` to improve performance and
2521
avoid an unnecessarily complex regex.
22+
- Cleanup code and refactor to be more efficient
23+
- Correct TS types for working with OpenMetrics
2624

2725
### Added
2826

index.d.ts

+24-11
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ export type PrometheusMetricsVersion = '0.0.4';
99
export type OpenMetricsMIME = 'application/openmetrics-text';
1010
export type OpenMetricsVersion = '1.0.0';
1111

12-
export type PrometheusContentType =
13-
`${OpenMetricsMIME}; version=${OpenMetricsVersion}; charset=${Charset}`;
1412
export type OpenMetricsContentType =
13+
`${OpenMetricsMIME}; version=${OpenMetricsVersion}; charset=${Charset}`;
14+
export type PrometheusContentType =
1515
`${PrometheusMIME}; version=${PrometheusMetricsVersion}; charset=${Charset}`;
1616

1717
export type RegistryContentType =
@@ -119,7 +119,9 @@ export const prometheusContentType: PrometheusContentType;
119119
*/
120120
export const openMetricsContentType: OpenMetricsContentType;
121121

122-
export class AggregatorRegistry extends Registry {
122+
export class AggregatorRegistry<
123+
T extends RegistryContentType,
124+
> extends Registry<T> {
123125
/**
124126
* Gets aggregated metrics for all workers.
125127
* @return {Promise<string>} Promise that resolves with the aggregated
@@ -136,7 +138,9 @@ export class AggregatorRegistry extends Registry {
136138
* `registry.getMetricsAsJSON()`.
137139
* @return {Registry} aggregated registry.
138140
*/
139-
static aggregate(metricsArr: Array<Object>): Registry; // TODO Promise?
141+
static aggregate<T extends RegistryContentType>(
142+
metricsArr: Array<Object>,
143+
): Registry<T>; // TODO Promise?
140144

141145
/**
142146
* Sets the registry or registries to be aggregated. Call from workers to
@@ -145,7 +149,14 @@ export class AggregatorRegistry extends Registry {
145149
* aggregated.
146150
* @return {void}
147151
*/
148-
static setRegistries(regs: Array<Registry> | Registry): void;
152+
static setRegistries(
153+
regs:
154+
| Array<
155+
Registry<PrometheusContentType> | Registry<OpenMetricsContentType>
156+
>
157+
| Registry<PrometheusContentType>
158+
| Registry<OpenMetricsContentType>,
159+
): void;
149160
}
150161

151162
/**
@@ -655,13 +666,13 @@ export namespace Summary {
655666
/**
656667
* Push metrics to a Pushgateway
657668
*/
658-
export class Pushgateway {
669+
export class Pushgateway<T extends RegistryContentType> {
659670
/**
660671
* @param url Complete url to the Pushgateway. If port is needed append url with :port
661672
* @param options Options
662673
* @param registry Registry
663674
*/
664-
constructor(url: string, options?: any, registry?: Registry);
675+
constructor(url: string, options?: any, registry?: Registry<T>);
665676

666677
/**
667678
* Add metric and overwrite old ones
@@ -729,8 +740,10 @@ export function exponentialBuckets(
729740
count: number,
730741
): number[];
731742

732-
export interface DefaultMetricsCollectorConfiguration {
733-
register?: Registry;
743+
export interface DefaultMetricsCollectorConfiguration<
744+
T extends RegistryContentType,
745+
> {
746+
register?: Registry<T>;
734747
prefix?: string;
735748
gcDurationBuckets?: number[];
736749
eventLoopMonitoringPrecision?: number;
@@ -741,8 +754,8 @@ export interface DefaultMetricsCollectorConfiguration {
741754
* Configure default metrics
742755
* @param config Configuration object for default metrics collector
743756
*/
744-
export function collectDefaultMetrics(
745-
config?: DefaultMetricsCollectorConfiguration,
757+
export function collectDefaultMetrics<T extends RegistryContentType>(
758+
config?: DefaultMetricsCollectorConfiguration<T>,
746759
): void;
747760

748761
export interface defaultMetrics {

0 commit comments

Comments
 (0)