Skip to content

Commit ac68039

Browse files
committed
fix: remove top level params for callTracer
Signed-off-by: Simeon Nakov <[email protected]>
1 parent 3e442bd commit ac68039

File tree

5 files changed

+18
-53
lines changed

5 files changed

+18
-53
lines changed

packages/relay/src/lib/debug.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,13 @@ export class DebugImpl implements Debug {
126126
// Extract tracer config from either nested tracerConfig or top-level properties
127127
let tracerConfig = tracerObject?.tracerConfig ?? {};
128128

129-
// If no nested tracerConfig is provided, check for top-level tracer config properties
129+
// If no nested tracerConfig is provided, check for top-level opcodeLogger config properties
130130
if (!tracerObject?.tracerConfig && tracerObject) {
131131
const { tracer: _, tracerConfig: __, ...topLevelConfig } = tracerObject;
132-
// Only include valid tracer config properties
133-
const validConfigKeys = ['onlyTopCall', 'enableMemory', 'disableStack', 'disableStorage'];
132+
// Only include valid opcodeLogger config properties (callTracer properties are never at top level)
133+
const validOpcodeLoggerKeys = ['enableMemory', 'disableStack', 'disableStorage'];
134134
const filteredConfig = Object.keys(topLevelConfig)
135-
.filter((key) => validConfigKeys.includes(key))
135+
.filter((key) => validOpcodeLoggerKeys.includes(key))
136136
.reduce((obj, key) => {
137137
obj[key] = topLevelConfig[key];
138138
return obj;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// SPDX-License-Identifier: Apache-2.0
22

33
import { TracerType } from '../constants';
4-
import { ICallTracerConfig, IOpcodeLoggerConfig, ITracerConfig } from './ITracerConfig';
4+
import { IOpcodeLoggerConfig, ITracerConfig } from './ITracerConfig';
55

6-
export interface ITracerConfigWrapper extends Partial<ICallTracerConfig>, Partial<IOpcodeLoggerConfig> {
6+
export interface ITracerConfigWrapper extends Partial<IOpcodeLoggerConfig> {
77
tracer?: TracerType;
88
tracerConfig?: ITracerConfig;
99
}

packages/relay/src/lib/validators/objectTypes.ts

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,6 @@ export const OBJECTS_VALIDATIONS: { [key: string]: IObjectSchema } = {
123123
nullable: false,
124124
required: false,
125125
},
126-
// CallTracer config properties at top level
127-
onlyTopCall: {
128-
type: 'boolean',
129-
nullable: false,
130-
required: false,
131-
},
132126
// OpcodeLogger config properties at top level
133127
enableMemory: {
134128
type: 'boolean',
@@ -261,9 +255,8 @@ export function validateTracerConfigWrapper(param: any): boolean {
261255
const callTracerKeys = Object.keys(OBJECTS_VALIDATIONS.callTracerConfig.properties);
262256
const opcodeLoggerKeys = Object.keys(OBJECTS_VALIDATIONS.opcodeLoggerConfig.properties);
263257

264-
// Check for tracer config properties at the top level
258+
// Check for opcodeLogger config properties at the top level
265259
const topLevelKeys = Object.keys(param);
266-
const hasTopLevelCallTracerKeys = topLevelKeys.some((k) => callTracerKeys.includes(k));
267260
const hasTopLevelOpcodeLoggerKeys = topLevelKeys.some((k) => opcodeLoggerKeys.includes(k));
268261

269262
// Check for tracer config properties in nested tracerConfig
@@ -276,7 +269,7 @@ export function validateTracerConfigWrapper(param: any): boolean {
276269
}
277270

278271
// Don't allow both top-level and nested config properties at the same time
279-
if ((hasTopLevelCallTracerKeys || hasTopLevelOpcodeLoggerKeys) && tracerConfig) {
272+
if (hasTopLevelOpcodeLoggerKeys && tracerConfig) {
280273
throw predefined.INVALID_PARAMETER(
281274
1,
282275
`Cannot specify tracer config properties both at top level and in 'tracerConfig' for ${schema.name}`,
@@ -286,18 +279,23 @@ export function validateTracerConfigWrapper(param: any): boolean {
286279
// Determine which tracer type should be used
287280
const effectiveTracer = tracer ?? TracerType.OpcodeLogger; // Default to opcodeLogger if no tracer specified
288281

289-
// Validate that the right config properties are used with the right tracer
290-
const hasCallTracerKeys = hasTopLevelCallTracerKeys || hasNestedCallTracerKeys;
291-
const hasOpcodeLoggerKeys = hasTopLevelOpcodeLoggerKeys || hasNestedOpcodeLoggerKeys;
282+
// Validate that opcodeLogger config properties are only used with opcodeLogger tracer
283+
if (hasTopLevelOpcodeLoggerKeys && effectiveTracer !== TracerType.OpcodeLogger) {
284+
throw predefined.INVALID_PARAMETER(
285+
1,
286+
`opcodeLogger config properties for ${schema.name} are only valid when tracer=${TracerType.OpcodeLogger}`,
287+
);
288+
}
292289

293-
if (hasCallTracerKeys && effectiveTracer === TracerType.OpcodeLogger) {
290+
// Validate nested config properties with tracer types (existing logic)
291+
if (hasNestedCallTracerKeys && effectiveTracer === TracerType.OpcodeLogger) {
294292
throw predefined.INVALID_PARAMETER(
295293
1,
296294
`callTracer config properties for ${schema.name} are only valid when tracer=${TracerType.CallTracer}`,
297295
);
298296
}
299297

300-
if (hasOpcodeLoggerKeys && effectiveTracer !== TracerType.OpcodeLogger) {
298+
if (hasNestedOpcodeLoggerKeys && effectiveTracer !== TracerType.OpcodeLogger) {
301299
throw predefined.INVALID_PARAMETER(
302300
1,
303301
`opcodeLogger config properties for ${schema.name} are only valid when tracer=${TracerType.OpcodeLogger}`,

packages/relay/tests/lib/validators/validators.spec.ts

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -672,8 +672,6 @@ describe('Validator', async () => {
672672
{ tracer: Constants.TracerType.CallTracer, tracerConfig: {} },
673673
{ tracer: Constants.TracerType.CallTracer },
674674
{ tracerConfig: { onlyTopCall: true } },
675-
// CallTracer config at top level
676-
{ tracer: Constants.TracerType.CallTracer, onlyTopCall: true },
677675
// OpcodeLoggerConfig
678676
{
679677
tracer: Constants.TracerType.OpcodeLogger,
@@ -707,21 +705,6 @@ describe('Validator', async () => {
707705
input: { tracer: 'invalid', tracerConfig: {} },
708706
error: expectInvalidParam("'tracer' for TracerConfigWrapper", TYPES.tracerType.error, 'invalid'),
709707
},
710-
// CallTracer config properties with wrong tracer type
711-
{
712-
input: { tracer: Constants.TracerType.OpcodeLogger, onlyTopCall: true },
713-
error: expectInvalidParam(
714-
1,
715-
'callTracer config properties for TracerConfigWrapper are only valid when tracer=callTracer',
716-
),
717-
},
718-
{
719-
input: { onlyTopCall: true }, // defaults to opcodeLogger
720-
error: expectInvalidParam(
721-
1,
722-
'callTracer config properties for TracerConfigWrapper are only valid when tracer=callTracer',
723-
),
724-
},
725708
// OpcodeLogger config properties with wrong tracer type
726709
{
727710
input: { tracer: Constants.TracerType.CallTracer, enableMemory: true },

packages/server/tests/acceptance/debug.spec.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -674,22 +674,6 @@ describe('@debug API Acceptance Tests', function () {
674674
);
675675
});
676676

677-
it('should reject top-level callTracer config with wrong tracer type', async function () {
678-
const invalidFormat = {
679-
tracer: TracerType.OpcodeLogger,
680-
onlyTopCall: true, // callTracer property with opcodeLogger tracer
681-
};
682-
683-
await relay.callFailing(
684-
DEBUG_TRACE_TRANSACTION,
685-
[createChildTx.hash, invalidFormat],
686-
predefined.INVALID_PARAMETER(
687-
1,
688-
'callTracer config properties for TracerConfigWrapper are only valid when tracer=callTracer',
689-
),
690-
);
691-
});
692-
693677
it('should reject top-level opcodeLogger config with wrong tracer type', async function () {
694678
const invalidFormat = {
695679
tracer: TracerType.CallTracer,

0 commit comments

Comments
 (0)