Skip to content

Commit 833f4ce

Browse files
authored
fix: Fix breadcrumb filter option parsing. (#742)
There was a mistake in checking the filters option for breadcrumbs. This fixes the issue and ensures the all options parsing doesn't have any warnings logged.
1 parent 14ecdb3 commit 833f4ce

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

packages/telemetry/browser-telemetry/__tests__/options.test.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Breadcrumb } from '../src/api/Breadcrumb';
12
import ErrorCollector from '../src/collectors/error';
23
import parse, { defaultOptions } from '../src/options';
34

@@ -15,14 +16,15 @@ it('handles an empty configuration', () => {
1516
});
1617

1718
it('can set all options at once', () => {
19+
const filter = (breadcrumb: Breadcrumb) => breadcrumb;
1820
const outOptions = parse({
1921
maxPendingEvents: 1,
2022
breadcrumbs: {
2123
maxBreadcrumbs: 1,
2224
click: false,
2325
evaluations: false,
2426
flagChange: false,
25-
filters: [(breadcrumb) => breadcrumb],
27+
filters: [filter],
2628
},
2729
collectors: [new ErrorCollector(), new ErrorCollector()],
2830
});
@@ -39,7 +41,7 @@ it('can set all options at once', () => {
3941
instrumentFetch: true,
4042
instrumentXhr: true,
4143
},
42-
filters: expect.any(Array),
44+
filters: expect.arrayContaining([filter]),
4345
},
4446
stack: {
4547
source: {
@@ -50,6 +52,7 @@ it('can set all options at once', () => {
5052
},
5153
collectors: [new ErrorCollector(), new ErrorCollector()],
5254
});
55+
expect(mockLogger.warn).not.toHaveBeenCalled();
5356
});
5457

5558
it('warns when maxPendingEvents is not a number', () => {
@@ -435,6 +438,6 @@ it('warns when filters is not an array', () => {
435438
);
436439
expect(outOptions.breadcrumbs.filters).toEqual([]);
437440
expect(mockLogger.warn).toHaveBeenCalledWith(
438-
'LaunchDarkly - Browser Telemetry: Config option "breadcrumbs.filters" should be of type array, got string, using default value',
441+
'LaunchDarkly - Browser Telemetry: Config option "breadcrumbs.filters" should be of type BreadcrumbFilter[], got string, using default value',
439442
);
440443
});

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -187,11 +187,13 @@ export default function parse(options: Options, logger?: MinLogger): ParsedOptio
187187
checkBasic('boolean', 'breadcrumbs.keyboardInput', logger),
188188
),
189189
http: parseHttp(options.breadcrumbs?.http, defaults.breadcrumbs.http, logger),
190-
filters: itemOrDefault(
191-
options.breadcrumbs?.filters,
192-
defaults.breadcrumbs.filters,
193-
checkBasic('array', 'breadcrumbs.filters', logger),
194-
),
190+
filters: itemOrDefault(options.breadcrumbs?.filters, defaults.breadcrumbs.filters, (item) => {
191+
if (Array.isArray(item)) {
192+
return true;
193+
}
194+
logger?.warn(wrongOptionType('breadcrumbs.filters', 'BreadcrumbFilter[]', typeof item));
195+
return false;
196+
}),
195197
},
196198
stack: parseStack(options.stack, defaults.stack),
197199
maxPendingEvents: itemOrDefault(

0 commit comments

Comments
 (0)