Skip to content

Commit 987a371

Browse files
committed
feat: Make browser-telemetry specific inspector type.
1 parent 68a3b87 commit 987a371

File tree

6 files changed

+22
-12
lines changed

6 files changed

+22
-12
lines changed

packages/telemetry/browser-telemetry/__tests__/singleton/singletonMethods.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { LDInspection } from '@launchdarkly/js-client-sdk';
2-
31
import { Breadcrumb, LDClientTracking } from '../../src/api';
42
import { BrowserTelemetry } from '../../src/api/BrowserTelemetry';
53
import { getTelemetryInstance } from '../../src/singleton/singletonInstance';
@@ -11,6 +9,7 @@ import {
119
inspectors,
1210
register,
1311
} from '../../src/singleton/singletonMethods';
12+
import { BrowserTelemetryInspector } from '../../src/api/client/BrowserTelemetryInspector';
1413

1514
jest.mock('../../src/singleton/singletonInstance');
1615

@@ -36,8 +35,8 @@ it('returns empty array when telemetry is not initialized for inspectors', () =>
3635
});
3736

3837
it('returns inspectors when telemetry is initialized', () => {
39-
const mockInspectors: LDInspection[] = [
40-
{ name: 'test-inspector', type: 'flag-used', method: () => {} },
38+
const mockInspectors: BrowserTelemetryInspector[] = [
39+
{ name: 'test-inspector', type: 'flag-used', synchronous: true, method: () => {} },
4140
];
4241
mockGetTelemetryInstance.mockReturnValue(mockTelemetry);
4342
mockTelemetry.inspectors.mockReturnValue(mockInspectors);

packages/telemetry/browser-telemetry/src/BrowserTelemetryImpl.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* This is only a type dependency and these types should be compatible between
44
* SDKs.
55
*/
6-
import type { LDContext, LDEvaluationDetail, LDInspection } from '@launchdarkly/js-client-sdk';
6+
import type { LDContext, LDEvaluationDetail } from '@launchdarkly/js-client-sdk';
77

88
import { BreadcrumbFilter, LDClientLogging, LDClientTracking, MinLogger } from './api';
99
import { Breadcrumb, FeatureManagementBreadcrumb } from './api/Breadcrumb';
@@ -18,6 +18,7 @@ import FetchCollector from './collectors/http/fetch';
1818
import XhrCollector from './collectors/http/xhr';
1919
import defaultUrlFilter from './filters/defaultUrlFilter';
2020
import makeInspectors from './inspectors';
21+
import { BrowserTelemetryInspector } from './api/client/BrowserTelemetryInspector';
2122
import { fallbackLogger, prefixLog } from './logging';
2223
import { ParsedOptions, ParsedStackOptions } from './options';
2324
import randomUuidV4 from './randomUuidV4';
@@ -94,7 +95,7 @@ export default class BrowserTelemetryImpl implements BrowserTelemetry {
9495

9596
private _breadcrumbs: Breadcrumb[] = [];
9697

97-
private _inspectorInstances: LDInspection[] = [];
98+
private _inspectorInstances: BrowserTelemetryInspector[] = [];
9899
private _collectors: Collector[] = [];
99100
private _sessionId: string = randomUuidV4();
100101

@@ -149,7 +150,7 @@ export default class BrowserTelemetryImpl implements BrowserTelemetry {
149150
);
150151

151152
const impl = this;
152-
const inspectors: LDInspection[] = [];
153+
const inspectors: BrowserTelemetryInspector[] = [];
153154
makeInspectors(_options, inspectors, impl);
154155
this._inspectorInstances.push(...inspectors);
155156

@@ -184,7 +185,7 @@ export default class BrowserTelemetryImpl implements BrowserTelemetry {
184185
}
185186
}
186187

187-
inspectors(): LDInspection[] {
188+
inspectors(): BrowserTelemetryInspector[] {
188189
return this._inspectorInstances;
189190
}
190191

packages/telemetry/browser-telemetry/src/api/BrowserTelemetry.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { LDInspection } from '@launchdarkly/js-client-sdk';
22

33
import { Breadcrumb } from './Breadcrumb';
44
import { LDClientTracking } from './client/LDClientTracking';
5+
import { BrowserTelemetryInspector } from './client/BrowserTelemetryInspector';
56

67
/**
78
* Interface for browser-based telemetry collection in LaunchDarkly SDKs.
@@ -17,7 +18,7 @@ export interface BrowserTelemetry {
1718
*
1819
* @returns An array of {@link LDInspection} objects.
1920
*/
20-
inspectors(): LDInspection[];
21+
inspectors(): BrowserTelemetryInspector[];
2122

2223
/**
2324
* Captures an Error object for telemetry purposes.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
export interface BrowserTelemetryInspector {
3+
type: 'flag-used' | 'flag-detail-changed';
4+
name: string;
5+
synchronous: boolean;
6+
method: (...args: any[]) => void;
7+
}

packages/telemetry/browser-telemetry/src/inspectors.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import type { LDContext, LDEvaluationDetail, LDInspection } from '@launchdarkly/js-client-sdk';
1+
import type { LDContext, LDEvaluationDetail } from '@launchdarkly/js-client-sdk';
22

33
import BrowserTelemetryImpl from './BrowserTelemetryImpl.js';
44
import { ParsedOptions } from './options.js';
5+
import { BrowserTelemetryInspector } from './api/client/BrowserTelemetryInspector.js';
56

67
/**
78
* Create inspectors to register with an LDClient instance.
@@ -12,7 +13,7 @@ import { ParsedOptions } from './options.js';
1213
*/
1314
export default function makeInspectors(
1415
options: ParsedOptions,
15-
inspectors: LDInspection[],
16+
inspectors: BrowserTelemetryInspector[],
1617
telemetry: BrowserTelemetryImpl,
1718
) {
1819
if (options.breadcrumbs.evaluations) {

packages/telemetry/browser-telemetry/src/singleton/singletonMethods.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { LDInspection } from '@launchdarkly/js-client-sdk';
33
import { LDClientTracking } from '../api';
44
import { Breadcrumb } from '../api/Breadcrumb';
55
import { getTelemetryInstance } from './singletonInstance';
6+
import { BrowserTelemetryInspector } from '../api/client/BrowserTelemetryInspector';
67

78
/**
89
* Returns an array of active SDK inspectors to use with SDK versions that do
@@ -13,7 +14,7 @@ import { getTelemetryInstance } from './singletonInstance';
1314
*
1415
* @returns An array of {@link LDInspection} objects.
1516
*/
16-
export function inspectors(): LDInspection[] {
17+
export function inspectors(): BrowserTelemetryInspector[] {
1718
return getTelemetryInstance()?.inspectors() || [];
1819
}
1920

0 commit comments

Comments
 (0)