Skip to content

feat(node): Use includeLocalVariables option to enable LocalVariables integration #6874

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const Sentry = require('@sentry/node');

Sentry.init({
dsn: 'https://[email protected]/1337',
_experiments: { includeStackLocals: true },
includeLocalVariables: true,
beforeSend: event => {
// eslint-disable-next-line no-console
console.log(JSON.stringify(event));
Expand Down
17 changes: 5 additions & 12 deletions packages/node/src/integrations/localvariables.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,9 @@
import type {
ClientOptions,
Event,
EventProcessor,
Exception,
Hub,
Integration,
StackFrame,
StackParser,
} from '@sentry/types';
import type { Event, EventProcessor, Exception, Hub, Integration, StackFrame, StackParser } from '@sentry/types';
import type { Debugger, InspectorNotification, Runtime, Session } from 'inspector';
import { LRUMap } from 'lru_map';

import type { NodeClientOptions } from '../types';

export interface DebugSession {
/** Configures and connects to the debug session */
configureAndConnect(onPause: (message: InspectorNotification<Debugger.PausedEventDataType>) => void): void;
Expand Down Expand Up @@ -198,9 +191,9 @@ export class LocalVariables implements Integration {
/** Setup in a way that's easier to call from tests */
private _setup(
addGlobalEventProcessor: (callback: EventProcessor) => void,
clientOptions: ClientOptions | undefined,
clientOptions: NodeClientOptions | undefined,
): void {
if (this._session && clientOptions?._experiments?.includeStackLocals) {
if (this._session && clientOptions?.includeLocalVariables) {
this._session.configureAndConnect(ev =>
this._handlePaused(clientOptions.stackParser, ev as InspectorNotification<PausedExceptionEvent>),
);
Expand Down
7 changes: 7 additions & 0 deletions packages/node/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@ export interface BaseNodeOptions {
/** Sets an optional server name (device name) */
serverName?: string;

/**
* Include local variables with stack traces.
*
* Requires the `LocalVariables` integration.
*/
includeLocalVariables?: boolean;

// TODO (v8): Remove this in v8
/**
* @deprecated Moved to constructor options of the `Http` integration.
Expand Down
8 changes: 3 additions & 5 deletions packages/node/test/integrations/localvariables.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ describe('LocalVariables', () => {
const localVariables = new LocalVariables({}, session);
const options = getDefaultNodeClientOptions({
stackParser: defaultStackParser,
_experiments: { includeStackLocals: true },
includeLocalVariables: true,
});

let eventProcessor: EventProcessor | undefined;
Expand Down Expand Up @@ -210,7 +210,7 @@ describe('LocalVariables', () => {
const localVariables = new LocalVariables({}, session);
const options = getDefaultNodeClientOptions({
stackParser: defaultStackParser,
_experiments: { includeStackLocals: true },
includeLocalVariables: true,
});

(localVariables as unknown as LocalVariablesPrivate)._setup(_ => {}, options);
Expand All @@ -232,7 +232,6 @@ describe('LocalVariables', () => {
const localVariables = new LocalVariables({}, session);
const options = getDefaultNodeClientOptions({
stackParser: defaultStackParser,
_experiments: { includeStackLocals: false },
});

let eventProcessor: EventProcessor | undefined;
Expand All @@ -250,7 +249,6 @@ describe('LocalVariables', () => {
const localVariables = new LocalVariables({}, undefined);
const options = getDefaultNodeClientOptions({
stackParser: defaultStackParser,
_experiments: { includeStackLocals: false },
});

let eventProcessor: EventProcessor | undefined;
Expand All @@ -272,7 +270,7 @@ describe('LocalVariables', () => {
const localVariables = new LocalVariables({}, session);
const options = getDefaultNodeClientOptions({
stackParser: defaultStackParser,
_experiments: { includeStackLocals: true },
includeLocalVariables: true,
});

(localVariables as unknown as LocalVariablesPrivate)._setup(_ => {}, options);
Expand Down