Skip to content

Commit 8d1dbb1

Browse files
authored
feat(utils): Deprecate memoBuilder, BAGGAGE_HEADER_NAME, and makeFifoCache (#14434)
1 parent 56e73ce commit 8d1dbb1

File tree

9 files changed

+25
-12
lines changed

9 files changed

+25
-12
lines changed

docs/migration/draft-v9-migration-guide.md

+3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
- Deprecated `addRequestDataToEvent`. Use `addNormalizedRequestDataToEvent` instead.
1515
- Deprecated `extractRequestData`. Instead manually extract relevant data off request.
1616
- Deprecated `arrayify`. No replacements.
17+
- Deprecated `memoBuilder`. No replacements.
18+
- Deprecated `BAGGAGE_HEADER_NAME`. No replacements.
19+
- Deprecated `makeFifoCache`. No replacements.
1720

1821
## `@sentry/core`
1922

packages/browser/src/tracing/request.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import {
2222
startInactiveSpan,
2323
} from '@sentry/core';
2424
import {
25-
BAGGAGE_HEADER_NAME,
2625
addFetchEndInstrumentationHandler,
2726
addFetchInstrumentationHandler,
2827
browserPerformanceTimeOrigin,
@@ -449,7 +448,7 @@ function setHeaderOnXhr(
449448
// We can therefore simply set a baggage header without checking what was there before
450449
// https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader
451450
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
452-
xhr.setRequestHeader!(BAGGAGE_HEADER_NAME, sentryBaggageHeader);
451+
xhr.setRequestHeader!('baggage', sentryBaggageHeader);
453452
}
454453
} catch (_) {
455454
// Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.

packages/core/src/fetch.ts

+6-10
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,7 @@ import {
99
startInactiveSpan,
1010
} from './tracing';
1111
import { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan';
12-
import {
13-
BAGGAGE_HEADER_NAME,
14-
SENTRY_BAGGAGE_KEY_PREFIX,
15-
dynamicSamplingContextToSentryBaggageHeader,
16-
} from './utils-hoist/baggage';
12+
import { SENTRY_BAGGAGE_KEY_PREFIX, dynamicSamplingContextToSentryBaggageHeader } from './utils-hoist/baggage';
1713
import { isInstanceOf } from './utils-hoist/is';
1814
import { generateSentryTraceHeader } from './utils-hoist/tracing';
1915
import { parseUrl } from './utils-hoist/url';
@@ -157,19 +153,19 @@ export function addTracingHeadersToFetchRequest(
157153
newHeaders.set('sentry-trace', sentryTraceHeader);
158154

159155
if (sentryBaggageHeader) {
160-
const prevBaggageHeader = newHeaders.get(BAGGAGE_HEADER_NAME);
156+
const prevBaggageHeader = newHeaders.get('baggage');
161157
if (prevBaggageHeader) {
162158
const prevHeaderStrippedFromSentryBaggage = stripBaggageHeaderOfSentryBaggageValues(prevBaggageHeader);
163159
newHeaders.set(
164-
BAGGAGE_HEADER_NAME,
160+
'baggage',
165161
// If there are non-sentry entries (i.e. if the stripped string is non-empty/truthy) combine the stripped header and sentry baggage header
166162
// otherwise just set the sentry baggage header
167163
prevHeaderStrippedFromSentryBaggage
168164
? `${prevHeaderStrippedFromSentryBaggage},${sentryBaggageHeader}`
169165
: sentryBaggageHeader,
170166
);
171167
} else {
172-
newHeaders.set(BAGGAGE_HEADER_NAME, sentryBaggageHeader);
168+
newHeaders.set('baggage', sentryBaggageHeader);
173169
}
174170
}
175171

@@ -183,7 +179,7 @@ export function addTracingHeadersToFetchRequest(
183179
})
184180
// Get rid of previous sentry baggage values in baggage header
185181
.map(header => {
186-
if (Array.isArray(header) && header[0] === BAGGAGE_HEADER_NAME && typeof header[1] === 'string') {
182+
if (Array.isArray(header) && header[0] === 'baggage' && typeof header[1] === 'string') {
187183
const [headerName, headerValue, ...rest] = header;
188184
return [headerName, stripBaggageHeaderOfSentryBaggageValues(headerValue), ...rest];
189185
} else {
@@ -197,7 +193,7 @@ export function addTracingHeadersToFetchRequest(
197193
if (sentryBaggageHeader) {
198194
// If there are multiple entries with the same key, the browser will merge the values into a single request header.
199195
// Its therefore safe to simply push a "baggage" entry, even though there might already be another baggage header.
200-
newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);
196+
newHeaders.push(['baggage', sentryBaggageHeader]);
201197
}
202198

203199
return newHeaders as PolymorphicRequestHeaders;

packages/core/src/utils-hoist/baggage.ts

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import { DEBUG_BUILD } from './debug-build';
44
import { isString } from './is';
55
import { logger } from './logger';
66

7+
/**
8+
* @deprecated Use a `"baggage"` string directly
9+
*/
710
export const BAGGAGE_HEADER_NAME = 'baggage';
811

912
export const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';

packages/core/src/utils-hoist/cache.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/**
22
* Creates a cache that evicts keys in fifo order
33
* @param size {Number}
4+
*
5+
* @deprecated This function is deprecated and will be removed in the next major version.
46
*/
57
export function makeFifoCache<Key extends string, Value>(
68
size: number,

packages/core/src/utils-hoist/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export {
3535
} from './is';
3636
export { isBrowser } from './isBrowser';
3737
export { CONSOLE_LEVELS, consoleSandbox, logger, originalConsoleMethods } from './logger';
38+
// eslint-disable-next-line deprecation/deprecation
3839
export { memoBuilder } from './memo';
3940
export {
4041
addContextToFrame,
@@ -147,6 +148,7 @@ export {
147148
} from './ratelimit';
148149
export type { RateLimits } from './ratelimit';
149150
export {
151+
// eslint-disable-next-line deprecation/deprecation
150152
BAGGAGE_HEADER_NAME,
151153
MAX_BAGGAGE_STRING_LENGTH,
152154
SENTRY_BAGGAGE_KEY_PREFIX,
@@ -157,6 +159,7 @@ export {
157159
} from './baggage';
158160

159161
export { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment } from './url';
162+
// eslint-disable-next-line deprecation/deprecation
160163
export { makeFifoCache } from './cache';
161164
export { eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames } from './eventbuilder';
162165
export { callFrameToStackFrame, watchdogTimer } from './anr';

packages/core/src/utils-hoist/memo.ts

+3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ export type MemoFunc = [
1010

1111
/**
1212
* Helper to decycle json objects
13+
*
14+
* @deprecated This function is deprecated and will be removed in the next major version.
1315
*/
16+
// TODO(v9): Move this function into normalize() directly
1417
export function memoBuilder(): MemoFunc {
1518
const hasWeakSet = typeof WeakSet === 'function';
1619
const inner: any = hasWeakSet ? new WeakSet() : [];

packages/core/src/utils-hoist/normalize.ts

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ function visit(
7474
value: unknown,
7575
depth: number = +Infinity,
7676
maxProperties: number = +Infinity,
77+
// eslint-disable-next-line deprecation/deprecation
7778
memo: MemoFunc = memoBuilder(),
7879
): Primitive | ObjOrArray<unknown> {
7980
const [memoize, unmemoize] = memo;

packages/utils/src/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,7 @@ export const loadModule = loadModule_imported;
613613
export const flatten = flatten_imported;
614614

615615
/** @deprecated Import from `@sentry/core` instead. */
616+
// eslint-disable-next-line deprecation/deprecation
616617
export const memoBuilder = memoBuilder_imported;
617618

618619
/** @deprecated Import from `@sentry/core` instead. */
@@ -660,6 +661,7 @@ export const _optionalChain = _optionalChain_imported;
660661
export const _optionalChainDelete = _optionalChainDelete_imported;
661662

662663
/** @deprecated Import from `@sentry/core` instead. */
664+
// eslint-disable-next-line deprecation/deprecation
663665
export const BAGGAGE_HEADER_NAME = BAGGAGE_HEADER_NAME_imported;
664666

665667
/** @deprecated Import from `@sentry/core` instead. */
@@ -675,6 +677,7 @@ export const parseUrl = parseUrl_imported;
675677
export const stripUrlQueryAndFragment = stripUrlQueryAndFragment_imported;
676678

677679
/** @deprecated Import from `@sentry/core` instead. */
680+
// eslint-disable-next-line deprecation/deprecation
678681
export const makeFifoCache = makeFifoCache_imported;
679682

680683
import type {

0 commit comments

Comments
 (0)