Skip to content

Commit 9328042

Browse files
committed
refactor: ♻️ pass spanContextStorage to plugin lambda
1 parent 8882a6c commit 9328042

File tree

5 files changed

+13
-16
lines changed

5 files changed

+13
-16
lines changed

packages/core/lib/core.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export interface ClientOptions<S extends CoreSchema, C extends Configuration> {
3030
resourceAttributesSource: ResourceAttributeSource<C>
3131
spanAttributesSource: SpanAttributesSource
3232
schema: S
33-
plugins: (spanFactory: SpanFactory) => Array<Plugin<C>>
33+
plugins: (spanFactory: SpanFactory, spanContextStorage: SpanContextStorage) => Array<Plugin<C>>
3434
persistence: Persistence
3535
spanContextStorage?: SpanContextStorage
3636
}
@@ -51,7 +51,7 @@ export function createClient<S extends CoreSchema, C extends Configuration> (opt
5151
options.schema.logger.defaultValue,
5252
spanContextStorage
5353
)
54-
const plugins = options.plugins(spanFactory)
54+
const plugins = options.plugins(spanFactory, spanContextStorage)
5555

5656
return {
5757
start: (config: C | string) => {

packages/core/lib/span-factory.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ export class SpanFactory {
5151
this.openSpans = new WeakSet<SpanInternal>()
5252
}
5353

54-
get firstSpanContext () {
55-
return this.spanContextStorage.first
56-
}
57-
5854
startSpan (name: string, options: SpanOptions = {}) {
5955
const safeStartTime = timeToNumber(this.clock, options ? options.startTime : undefined)
6056
const spanId = this.idGenerator.generate(64)

packages/platforms/browser/lib/auto-instrumentation/resource-load-plugin.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { type InternalConfiguration, type Plugin, type SpanFactory } from '@bugsnag/core-performance'
1+
import { type SpanContextStorage, type InternalConfiguration, type Plugin, type SpanFactory } from '@bugsnag/core-performance'
22
import { type BrowserConfiguration } from '../config'
33

44
interface ResourceTiming extends PerformanceResourceTiming {
@@ -34,6 +34,7 @@ function resourceLoadSupported (PerformanceObserverClass: typeof PerformanceObse
3434
export class ResourceLoadPlugin implements Plugin<BrowserConfiguration> {
3535
constructor (
3636
private readonly spanFactory: SpanFactory,
37+
private readonly spanContextStorage: SpanContextStorage,
3738
private readonly PerformanceObserverClass: typeof PerformanceObserver
3839
) {}
3940

@@ -48,7 +49,7 @@ export class ResourceLoadPlugin implements Plugin<BrowserConfiguration> {
4849
continue
4950
}
5051

51-
const parentContext = this.spanFactory.firstSpanContext
52+
const parentContext = this.spanContextStorage.first
5253

5354
if (parentContext) {
5455
const url = new URL(entry.name)

packages/platforms/browser/lib/browser.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const BugsnagPerformance = createClient({
3939
deliveryFactory: createBrowserDeliveryFactory(window.fetch, backgroundingListener),
4040
idGenerator,
4141
schema: createSchema(window.location.hostname, new DefaultRoutingProvider()),
42-
plugins: (spanFactory) => [
42+
plugins: (spanFactory, spanContextStorage) => [
4343
onSettle,
4444
new FullPageLoadPlugin(
4545
document,
@@ -52,7 +52,7 @@ const BugsnagPerformance = createClient({
5252
),
5353
new NetworkRequestPlugin(spanFactory, fetchRequestTracker, xhrRequestTracker),
5454
new RouteChangePlugin(spanFactory, window.location),
55-
new ResourceLoadPlugin(spanFactory, window.PerformanceObserver)
55+
new ResourceLoadPlugin(spanFactory, spanContextStorage, window.PerformanceObserver)
5656
],
5757
persistence
5858
})

packages/platforms/browser/tests/auto-instrumentation/resource-load-plugin.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ describe('ResourceLoadPlugin', () => {
1919
const client = createTestClient({
2020
idGenerator,
2121
deliveryFactory: () => delivery,
22-
plugins: (spanFactory) => [
23-
new ResourceLoadPlugin(spanFactory, Observer)
22+
plugins: (spanFactory, spanContextStorage) => [
23+
new ResourceLoadPlugin(spanFactory, spanContextStorage, Observer)
2424
]
2525
})
2626

@@ -68,8 +68,8 @@ describe('ResourceLoadPlugin', () => {
6868
const client = createTestClient({
6969
idGenerator,
7070
deliveryFactory: () => delivery,
71-
plugins: (spanFactory) => [
72-
new ResourceLoadPlugin(spanFactory, Observer)
71+
plugins: (spanFactory, spanContextStorage) => [
72+
new ResourceLoadPlugin(spanFactory, spanContextStorage, Observer)
7373
]
7474
})
7575

@@ -108,8 +108,8 @@ describe('ResourceLoadPlugin', () => {
108108
const client = createTestClient({
109109
idGenerator,
110110
deliveryFactory: () => delivery,
111-
plugins: (spanFactory) => [
112-
new ResourceLoadPlugin(spanFactory, Observer)
111+
plugins: (spanFactory, spanContextStorage) => [
112+
new ResourceLoadPlugin(spanFactory, spanContextStorage, Observer)
113113
]
114114
})
115115

0 commit comments

Comments
 (0)