Skip to content

Commit 8825b0e

Browse files
authored
Merge pull request #109 from anam-org/fix/connection-established-metric
fix: send metrics even with no event listeners
2 parents cb45b76 + 766e144 commit 8825b0e

File tree

2 files changed

+28
-7
lines changed

2 files changed

+28
-7
lines changed

src/lib/ClientError.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { CLIENT_METADATA } from './constants';
2+
23
export enum ErrorCode {
34
CLIENT_ERROR_CODE_USAGE_LIMIT_REACHED = 'CLIENT_ERROR_CODE_USAGE_LIMIT_REACHED',
45
CLIENT_ERROR_CODE_VALIDATION_ERROR = 'CLIENT_ERROR_CODE_VALIDATION_ERROR',
@@ -14,6 +15,12 @@ export enum ErrorCode {
1415
export const DEFAULT_ANAM_METRICS_BASE_URL = 'https://api.anam.ai';
1516
export const DEFAULT_ANAM_API_VERSION = '/v1';
1617

18+
export enum ClientMetricMeasurement {
19+
CLIENT_METRIC_MEASUREMENT_ERROR = 'client_error',
20+
CLIENT_METRIC_MEASUREMENT_CONNECTION_CLOSED = 'client_connection_closed',
21+
CLIENT_METRIC_MEASUREMENT_CONNECTION_ESTABLISHED = 'client_connection_established',
22+
}
23+
1724
let anamCurrentBaseUrl = DEFAULT_ANAM_METRICS_BASE_URL;
1825
let anamCurrentApiVersion = DEFAULT_ANAM_API_VERSION;
1926

@@ -94,9 +101,13 @@ export class ClientError extends Error {
94101
Object.setPrototypeOf(this, ClientError.prototype);
95102

96103
// Send error metric when error is created
97-
sendErrorMetric('client_error', code, {
98-
details,
99-
statusCode,
100-
});
104+
sendErrorMetric(
105+
ClientMetricMeasurement.CLIENT_METRIC_MEASUREMENT_ERROR,
106+
code,
107+
{
108+
details,
109+
statusCode,
110+
},
111+
);
101112
}
102113
}

src/modules/PublicEventEmitter.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { sendErrorMetric } from '../lib/ClientError';
1+
import { ClientMetricMeasurement, sendErrorMetric } from '../lib/ClientError';
22
import { AnamEvent, EventCallbacks } from '../types';
33

44
export class PublicEventEmitter {
@@ -32,12 +32,22 @@ export class PublicEventEmitter {
3232
event: K,
3333
...args: EventCallbacks[K] extends (...args: infer P) => any ? P : never
3434
): void {
35-
if (!this.listeners[event]) return;
35+
if (event === AnamEvent.CONNECTION_ESTABLISHED) {
36+
sendErrorMetric(
37+
ClientMetricMeasurement.CLIENT_METRIC_MEASUREMENT_CONNECTION_ESTABLISHED,
38+
'1',
39+
);
40+
}
3641

3742
if (event === AnamEvent.CONNECTION_CLOSED) {
38-
sendErrorMetric('client_connection_closed', args[0] as string);
43+
sendErrorMetric(
44+
ClientMetricMeasurement.CLIENT_METRIC_MEASUREMENT_CONNECTION_CLOSED,
45+
args[0] as string,
46+
);
3947
}
4048

49+
if (!this.listeners[event]) return;
50+
4151
(this.listeners[event] as Set<EventCallbacks[K]>).forEach((callback) => {
4252
(callback as (...args: any[]) => void)(...args);
4353
});

0 commit comments

Comments
 (0)