@sentry-internal/tracing
Advanced tools
Comparing version 7.95.0 to 7.96.0
@@ -20,5 +20,11 @@ Object.defineProperty(exports, '__esModule', { value: true }); | ||
* Returns a cleanup callback which can be called to remove the instrumentation handler. | ||
* | ||
* Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called. | ||
* This will lead to the CLS being finalized and frozen. | ||
*/ | ||
function addClsInstrumentationHandler(callback) { | ||
return addMetricObserver('cls', callback, instrumentCls, _previousCls); | ||
function addClsInstrumentationHandler( | ||
callback, | ||
stopOnCallback = false, | ||
) { | ||
return addMetricObserver('cls', callback, instrumentCls, _previousCls, stopOnCallback); | ||
} | ||
@@ -29,5 +35,11 @@ | ||
* Returns a cleanup callback which can be called to remove the instrumentation handler. | ||
* | ||
* Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called. | ||
* This will lead to the LCP being finalized and frozen. | ||
*/ | ||
function addLcpInstrumentationHandler(callback) { | ||
return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp); | ||
function addLcpInstrumentationHandler( | ||
callback, | ||
stopOnCallback = false, | ||
) { | ||
return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp, stopOnCallback); | ||
} | ||
@@ -84,3 +96,3 @@ | ||
function instrumentCls() { | ||
getCLS.onCLS(metric => { | ||
return getCLS.onCLS(metric => { | ||
triggerHandlers('cls', { | ||
@@ -94,3 +106,3 @@ metric, | ||
function instrumentFid() { | ||
getFID.onFID(metric => { | ||
return getFID.onFID(metric => { | ||
triggerHandlers('fid', { | ||
@@ -104,3 +116,3 @@ metric, | ||
function instrumentLcp() { | ||
getLCP.onLCP(metric => { | ||
return getLCP.onLCP(metric => { | ||
triggerHandlers('lcp', { | ||
@@ -118,7 +130,10 @@ metric, | ||
previousValue, | ||
stopOnCallback = false, | ||
) { | ||
addHandler(type, callback); | ||
let stopListening; | ||
if (!instrumented[type]) { | ||
instrumentFn(); | ||
stopListening = instrumentFn(); | ||
instrumented[type] = true; | ||
@@ -131,3 +146,3 @@ } | ||
return getCleanupCallback(type, callback); | ||
return getCleanupCallback(type, callback, stopOnCallback ? stopListening : undefined); | ||
} | ||
@@ -158,4 +173,12 @@ | ||
// Get a callback which can be called to remove the instrumentation handler | ||
function getCleanupCallback(type, callback) { | ||
function getCleanupCallback( | ||
type, | ||
callback, | ||
stopListening, | ||
) { | ||
return () => { | ||
if (stopListening) { | ||
stopListening(); | ||
} | ||
const typeHandlers = handlers[type]; | ||
@@ -162,0 +185,0 @@ |
@@ -33,3 +33,4 @@ Object.defineProperty(exports, '__esModule', { value: true }); | ||
/** | ||
* Start tracking web vitals | ||
* Start tracking web vitals. | ||
* The callback returned by this function can be used to stop tracking & ensure all measurements are final & captured. | ||
* | ||
@@ -124,3 +125,3 @@ * @returns A function that forces web vitals collection | ||
return instrument.addClsInstrumentationHandler(({ metric }) => { | ||
const entry = metric.entries.pop(); | ||
const entry = metric.entries[metric.entries.length - 1]; | ||
if (!entry) { | ||
@@ -133,3 +134,3 @@ return; | ||
_clsEntry = entry ; | ||
}); | ||
}, true); | ||
} | ||
@@ -140,3 +141,3 @@ | ||
return instrument.addLcpInstrumentationHandler(({ metric }) => { | ||
const entry = metric.entries.pop(); | ||
const entry = metric.entries[metric.entries.length - 1]; | ||
if (!entry) { | ||
@@ -149,3 +150,3 @@ return; | ||
_lcpEntry = entry ; | ||
}); | ||
}, true); | ||
} | ||
@@ -156,3 +157,3 @@ | ||
return instrument.addFidInstrumentationHandler(({ metric }) => { | ||
const entry = metric.entries.pop(); | ||
const entry = metric.entries[metric.entries.length - 1]; | ||
if (!entry) { | ||
@@ -159,0 +160,0 @@ return; |
@@ -212,18 +212,15 @@ Object.defineProperty(exports, '__esModule', { value: true }); | ||
const scope = core.getCurrentScope(); | ||
const parentSpan = core.getActiveSpan(); | ||
const span = | ||
shouldCreateSpanResult && parentSpan | ||
? // eslint-disable-next-line deprecation/deprecation | ||
parentSpan.startChild({ | ||
data: { | ||
type: 'xhr', | ||
'http.method': sentryXhrData.method, | ||
url: sentryXhrData.url, | ||
}, | ||
description: `${sentryXhrData.method} ${sentryXhrData.url}`, | ||
op: 'http.client', | ||
origin: 'auto.http.browser', | ||
}) | ||
: undefined; | ||
const span = shouldCreateSpanResult | ||
? core.startInactiveSpan({ | ||
attributes: { | ||
type: 'xhr', | ||
'http.method': sentryXhrData.method, | ||
url: sentryXhrData.url, | ||
}, | ||
name: `${sentryXhrData.method} ${sentryXhrData.url}`, | ||
op: 'http.client', | ||
origin: 'auto.http.browser', | ||
}) | ||
: undefined; | ||
@@ -230,0 +227,0 @@ if (span) { |
@@ -55,20 +55,17 @@ Object.defineProperty(exports, '__esModule', { value: true }); | ||
const client = core.getClient(); | ||
const parentSpan = core.getActiveSpan(); | ||
const { method, url } = handlerData.fetchData; | ||
const span = | ||
shouldCreateSpanResult && parentSpan | ||
? // eslint-disable-next-line deprecation/deprecation | ||
parentSpan.startChild({ | ||
data: { | ||
url, | ||
type: 'fetch', | ||
'http.method': method, | ||
}, | ||
description: `${method} ${url}`, | ||
op: 'http.client', | ||
origin: spanOrigin, | ||
}) | ||
: undefined; | ||
const span = shouldCreateSpanResult | ||
? core.startInactiveSpan({ | ||
attributes: { | ||
url, | ||
type: 'fetch', | ||
'http.method': method, | ||
}, | ||
name: `${method} ${url}`, | ||
op: 'http.client', | ||
origin: spanOrigin, | ||
}) | ||
: undefined; | ||
@@ -75,0 +72,0 @@ if (span) { |
@@ -18,5 +18,11 @@ import { logger, getFunctionName } from '@sentry/utils'; | ||
* Returns a cleanup callback which can be called to remove the instrumentation handler. | ||
* | ||
* Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called. | ||
* This will lead to the CLS being finalized and frozen. | ||
*/ | ||
function addClsInstrumentationHandler(callback) { | ||
return addMetricObserver('cls', callback, instrumentCls, _previousCls); | ||
function addClsInstrumentationHandler( | ||
callback, | ||
stopOnCallback = false, | ||
) { | ||
return addMetricObserver('cls', callback, instrumentCls, _previousCls, stopOnCallback); | ||
} | ||
@@ -27,5 +33,11 @@ | ||
* Returns a cleanup callback which can be called to remove the instrumentation handler. | ||
* | ||
* Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called. | ||
* This will lead to the LCP being finalized and frozen. | ||
*/ | ||
function addLcpInstrumentationHandler(callback) { | ||
return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp); | ||
function addLcpInstrumentationHandler( | ||
callback, | ||
stopOnCallback = false, | ||
) { | ||
return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp, stopOnCallback); | ||
} | ||
@@ -82,3 +94,3 @@ | ||
function instrumentCls() { | ||
onCLS(metric => { | ||
return onCLS(metric => { | ||
triggerHandlers('cls', { | ||
@@ -92,3 +104,3 @@ metric, | ||
function instrumentFid() { | ||
onFID(metric => { | ||
return onFID(metric => { | ||
triggerHandlers('fid', { | ||
@@ -102,3 +114,3 @@ metric, | ||
function instrumentLcp() { | ||
onLCP(metric => { | ||
return onLCP(metric => { | ||
triggerHandlers('lcp', { | ||
@@ -116,7 +128,10 @@ metric, | ||
previousValue, | ||
stopOnCallback = false, | ||
) { | ||
addHandler(type, callback); | ||
let stopListening; | ||
if (!instrumented[type]) { | ||
instrumentFn(); | ||
stopListening = instrumentFn(); | ||
instrumented[type] = true; | ||
@@ -129,3 +144,3 @@ } | ||
return getCleanupCallback(type, callback); | ||
return getCleanupCallback(type, callback, stopOnCallback ? stopListening : undefined); | ||
} | ||
@@ -156,4 +171,12 @@ | ||
// Get a callback which can be called to remove the instrumentation handler | ||
function getCleanupCallback(type, callback) { | ||
function getCleanupCallback( | ||
type, | ||
callback, | ||
stopListening, | ||
) { | ||
return () => { | ||
if (stopListening) { | ||
stopListening(); | ||
} | ||
const typeHandlers = handlers[type]; | ||
@@ -160,0 +183,0 @@ |
@@ -31,3 +31,4 @@ import { getActiveTransaction, spanToJSON, setMeasurement } from '@sentry/core'; | ||
/** | ||
* Start tracking web vitals | ||
* Start tracking web vitals. | ||
* The callback returned by this function can be used to stop tracking & ensure all measurements are final & captured. | ||
* | ||
@@ -122,3 +123,3 @@ * @returns A function that forces web vitals collection | ||
return addClsInstrumentationHandler(({ metric }) => { | ||
const entry = metric.entries.pop(); | ||
const entry = metric.entries[metric.entries.length - 1]; | ||
if (!entry) { | ||
@@ -131,3 +132,3 @@ return; | ||
_clsEntry = entry ; | ||
}); | ||
}, true); | ||
} | ||
@@ -138,3 +139,3 @@ | ||
return addLcpInstrumentationHandler(({ metric }) => { | ||
const entry = metric.entries.pop(); | ||
const entry = metric.entries[metric.entries.length - 1]; | ||
if (!entry) { | ||
@@ -147,3 +148,3 @@ return; | ||
_lcpEntry = entry ; | ||
}); | ||
}, true); | ||
} | ||
@@ -154,3 +155,3 @@ | ||
return addFidInstrumentationHandler(({ metric }) => { | ||
const entry = metric.entries.pop(); | ||
const entry = metric.entries[metric.entries.length - 1]; | ||
if (!entry) { | ||
@@ -157,0 +158,0 @@ return; |
@@ -1,2 +0,2 @@ | ||
import { spanToJSON, hasTracingEnabled, getCurrentScope, getActiveSpan, getRootSpan, getDynamicSamplingContextFromSpan, spanToTraceHeader, getClient, getDynamicSamplingContextFromClient } from '@sentry/core'; | ||
import { spanToJSON, hasTracingEnabled, getCurrentScope, startInactiveSpan, getRootSpan, getDynamicSamplingContextFromSpan, spanToTraceHeader, getClient, getDynamicSamplingContextFromClient } from '@sentry/core'; | ||
import { addFetchInstrumentationHandler, addXhrInstrumentationHandler, SENTRY_XHR_DATA_KEY, dynamicSamplingContextToSentryBaggageHeader, generateSentryTraceHeader, BAGGAGE_HEADER_NAME, browserPerformanceTimeOrigin, stringMatchesSomePattern } from '@sentry/utils'; | ||
@@ -210,18 +210,15 @@ import { instrumentFetchRequest } from '../common/fetch.js'; | ||
const scope = getCurrentScope(); | ||
const parentSpan = getActiveSpan(); | ||
const span = | ||
shouldCreateSpanResult && parentSpan | ||
? // eslint-disable-next-line deprecation/deprecation | ||
parentSpan.startChild({ | ||
data: { | ||
type: 'xhr', | ||
'http.method': sentryXhrData.method, | ||
url: sentryXhrData.url, | ||
}, | ||
description: `${sentryXhrData.method} ${sentryXhrData.url}`, | ||
op: 'http.client', | ||
origin: 'auto.http.browser', | ||
}) | ||
: undefined; | ||
const span = shouldCreateSpanResult | ||
? startInactiveSpan({ | ||
attributes: { | ||
type: 'xhr', | ||
'http.method': sentryXhrData.method, | ||
url: sentryXhrData.url, | ||
}, | ||
name: `${sentryXhrData.method} ${sentryXhrData.url}`, | ||
op: 'http.client', | ||
origin: 'auto.http.browser', | ||
}) | ||
: undefined; | ||
@@ -228,0 +225,0 @@ if (span) { |
@@ -1,2 +0,2 @@ | ||
import { hasTracingEnabled, getCurrentScope, getClient, getActiveSpan, getRootSpan, spanToTraceHeader, getDynamicSamplingContextFromSpan, getDynamicSamplingContextFromClient } from '@sentry/core'; | ||
import { hasTracingEnabled, getCurrentScope, getClient, startInactiveSpan, getRootSpan, spanToTraceHeader, getDynamicSamplingContextFromSpan, getDynamicSamplingContextFromClient } from '@sentry/core'; | ||
import { generateSentryTraceHeader, dynamicSamplingContextToSentryBaggageHeader, isInstanceOf, BAGGAGE_HEADER_NAME } from '@sentry/utils'; | ||
@@ -53,20 +53,17 @@ | ||
const client = getClient(); | ||
const parentSpan = getActiveSpan(); | ||
const { method, url } = handlerData.fetchData; | ||
const span = | ||
shouldCreateSpanResult && parentSpan | ||
? // eslint-disable-next-line deprecation/deprecation | ||
parentSpan.startChild({ | ||
data: { | ||
url, | ||
type: 'fetch', | ||
'http.method': method, | ||
}, | ||
description: `${method} ${url}`, | ||
op: 'http.client', | ||
origin: spanOrigin, | ||
}) | ||
: undefined; | ||
const span = shouldCreateSpanResult | ||
? startInactiveSpan({ | ||
attributes: { | ||
url, | ||
type: 'fetch', | ||
'http.method': method, | ||
}, | ||
name: `${method} ${url}`, | ||
op: 'http.client', | ||
origin: spanOrigin, | ||
}) | ||
: undefined; | ||
@@ -73,0 +70,0 @@ if (span) { |
{ | ||
"name": "@sentry-internal/tracing", | ||
"version": "7.95.0", | ||
"version": "7.96.0", | ||
"description": "Sentry Internal Tracing Package", | ||
@@ -32,5 +32,5 @@ "repository": "git://github.com/getsentry/sentry-javascript.git", | ||
"dependencies": { | ||
"@sentry/core": "7.95.0", | ||
"@sentry/types": "7.95.0", | ||
"@sentry/utils": "7.95.0" | ||
"@sentry/core": "7.96.0", | ||
"@sentry/types": "7.96.0", | ||
"@sentry/utils": "7.96.0" | ||
}, | ||
@@ -37,0 +37,0 @@ "devDependencies": { |
@@ -57,13 +57,19 @@ type InstrumentHandlerTypePerformanceObserver = 'longtask' | 'event' | 'navigation' | 'paint' | 'resource'; | ||
* Returns a cleanup callback which can be called to remove the instrumentation handler. | ||
* | ||
* Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called. | ||
* This will lead to the CLS being finalized and frozen. | ||
*/ | ||
export declare function addClsInstrumentationHandler(callback: (data: { | ||
metric: Metric; | ||
}) => void): CleanupHandlerCallback; | ||
}) => void, stopOnCallback?: boolean): CleanupHandlerCallback; | ||
/** | ||
* Add a callback that will be triggered when a LCP metric is available. | ||
* Returns a cleanup callback which can be called to remove the instrumentation handler. | ||
* | ||
* Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called. | ||
* This will lead to the LCP being finalized and frozen. | ||
*/ | ||
export declare function addLcpInstrumentationHandler(callback: (data: { | ||
metric: Metric; | ||
}) => void): CleanupHandlerCallback; | ||
}) => void, stopOnCallback?: boolean): CleanupHandlerCallback; | ||
/** | ||
@@ -70,0 +76,0 @@ * Add a callback that will be triggered when a FID metric is available. |
import { Transaction } from '@sentry/core'; | ||
import { Measurements } from '@sentry/types'; | ||
/** | ||
* Start tracking web vitals | ||
* Start tracking web vitals. | ||
* The callback returned by this function can be used to stop tracking & ensure all measurements are final & captured. | ||
* | ||
@@ -6,0 +7,0 @@ * @returns A function that forces web vitals collection |
@@ -57,13 +57,19 @@ type InstrumentHandlerTypePerformanceObserver = 'longtask' | 'event' | 'navigation' | 'paint' | 'resource'; | ||
* Returns a cleanup callback which can be called to remove the instrumentation handler. | ||
* | ||
* Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called. | ||
* This will lead to the CLS being finalized and frozen. | ||
*/ | ||
export declare function addClsInstrumentationHandler(callback: (data: { | ||
metric: Metric; | ||
}) => void): CleanupHandlerCallback; | ||
}) => void, stopOnCallback?: boolean): CleanupHandlerCallback; | ||
/** | ||
* Add a callback that will be triggered when a LCP metric is available. | ||
* Returns a cleanup callback which can be called to remove the instrumentation handler. | ||
* | ||
* Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called. | ||
* This will lead to the LCP being finalized and frozen. | ||
*/ | ||
export declare function addLcpInstrumentationHandler(callback: (data: { | ||
metric: Metric; | ||
}) => void): CleanupHandlerCallback; | ||
}) => void, stopOnCallback?: boolean): CleanupHandlerCallback; | ||
/** | ||
@@ -70,0 +76,0 @@ * Add a callback that will be triggered when a FID metric is available. |
import type { Transaction } from '@sentry/core'; | ||
import type { Measurements } from '@sentry/types'; | ||
/** | ||
* Start tracking web vitals | ||
* Start tracking web vitals. | ||
* The callback returned by this function can be used to stop tracking & ensure all measurements are final & captured. | ||
* | ||
@@ -6,0 +7,0 @@ * @returns A function that forces web vitals collection |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1106067
9272
+ Added@sentry/core@7.96.0(transitive)
+ Added@sentry/types@7.96.0(transitive)
+ Added@sentry/utils@7.96.0(transitive)
- Removed@sentry/core@7.95.0(transitive)
- Removed@sentry/types@7.95.0(transitive)
- Removed@sentry/utils@7.95.0(transitive)
Updated@sentry/core@7.96.0
Updated@sentry/types@7.96.0
Updated@sentry/utils@7.96.0