diff --git a/docs/migration/v8-to-v9.md b/docs/migration/v8-to-v9.md index c18131900393..58cdf67bc542 100644 --- a/docs/migration/v8-to-v9.md +++ b/docs/migration/v8-to-v9.md @@ -132,6 +132,7 @@ Sentry.init({ - The `urlEncode` method has been removed. There is no replacement. - The `getDomElement` method has been removed. There is no replacement. - The `Request` type has been removed. Use `RequestEventData` type instead. +- The `memoBuilder` method has been removed. There is no replacement. ### `@sentry/browser` diff --git a/packages/core/src/utils-hoist/index.ts b/packages/core/src/utils-hoist/index.ts index 904dc1920629..ad79a303548b 100644 --- a/packages/core/src/utils-hoist/index.ts +++ b/packages/core/src/utils-hoist/index.ts @@ -38,8 +38,6 @@ export { } from './is'; export { isBrowser } from './isBrowser'; export { CONSOLE_LEVELS, consoleSandbox, logger, originalConsoleMethods } from './logger'; -// eslint-disable-next-line deprecation/deprecation -export { memoBuilder } from './memo'; export { addContextToFrame, addExceptionMechanism, diff --git a/packages/core/src/utils-hoist/memo.ts b/packages/core/src/utils-hoist/memo.ts deleted file mode 100644 index f7303bd44ece..000000000000 --- a/packages/core/src/utils-hoist/memo.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-explicit-any */ - -export type MemoFunc = [ - // memoize - (obj: any) => boolean, - // unmemoize - (obj: any) => void, -]; - -/** - * Helper to decycle json objects - * - * @deprecated This function is deprecated and will be removed in the next major version. - */ -// TODO(v9): Move this function into normalize() directly -export function memoBuilder(): MemoFunc { - const hasWeakSet = typeof WeakSet === 'function'; - const inner: any = hasWeakSet ? new WeakSet() : []; - function memoize(obj: any): boolean { - if (hasWeakSet) { - if (inner.has(obj)) { - return true; - } - inner.add(obj); - return false; - } - // eslint-disable-next-line @typescript-eslint/prefer-for-of - for (let i = 0; i < inner.length; i++) { - const value = inner[i]; - if (value === obj) { - return true; - } - } - inner.push(obj); - return false; - } - - function unmemoize(obj: any): void { - if (hasWeakSet) { - inner.delete(obj); - } else { - for (let i = 0; i < inner.length; i++) { - if (inner[i] === obj) { - inner.splice(i, 1); - break; - } - } - } - } - return [memoize, unmemoize]; -} diff --git a/packages/core/src/utils-hoist/normalize.ts b/packages/core/src/utils-hoist/normalize.ts index c1e8e2c630ad..254aae87c97b 100644 --- a/packages/core/src/utils-hoist/normalize.ts +++ b/packages/core/src/utils-hoist/normalize.ts @@ -1,8 +1,6 @@ import type { Primitive } from '../types-hoist'; import { isSyntheticEvent, isVueViewModel } from './is'; -import type { MemoFunc } from './memo'; -import { memoBuilder } from './memo'; import { convertToPlainObject } from './object'; import { getFunctionName } from './stacktrace'; @@ -13,6 +11,13 @@ type Prototype = { constructor: (...args: unknown[]) => unknown }; // might be arrays. type ObjOrArray = { [key: string]: T }; +type MemoFunc = [ + // memoize + (obj: object) => boolean, + // unmemoize + (obj: object) => void, +]; + /** * Recursively normalizes the given object. * @@ -74,8 +79,7 @@ function visit( value: unknown, depth: number = +Infinity, maxProperties: number = +Infinity, - // eslint-disable-next-line deprecation/deprecation - memo: MemoFunc = memoBuilder(), + memo = memoBuilder(), ): Primitive | ObjOrArray { const [memoize, unmemoize] = memo; @@ -304,3 +308,22 @@ export function normalizeUrlToBase(url: string, basePath: string): string { .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///') ); } + +/** + * Helper to decycle json objects + */ +function memoBuilder(): MemoFunc { + const inner = new WeakSet(); + function memoize(obj: object): boolean { + if (inner.has(obj)) { + return true; + } + inner.add(obj); + return false; + } + + function unmemoize(obj: object): void { + inner.delete(obj); + } + return [memoize, unmemoize]; +}