Skip to content

Duplicate parseTimestamp() logic across commands #25

Description

@MayurK-cmd

Both SpotCommand and PerpsCommand implement similar but inconsistent parseTimestamp() methods. Spot converts to ISO format (new Date(ms).toISOString()), while Perps converts to Unix seconds. This duplication makes maintenance harder and creates risk of subtle bugs if timestamp handling needs to change.

Expected behavior:

  • Single shared implementation in src/lib/
  • Both commands use the same function
  • Consistent timestamp handling across all commands

Current behavior:

  • SpotCommand.parseTimestamp(): lines 930-938(returns ISO string)
  • PerpsCommand.parseTimestamp(): lines 906-914 (returns Unix seconds)
  • Different behavior, duplicated code

Locations:

  • src/commands/SpotCommand.ts:930-938
  • src/commands/PerpsCommand.ts:906-914

Suggested fix:
Create src/lib/DateConverter.ts:
export class DateConverter {
public static parseTimestamp(value: string): string {
if(/^\d+$/.test(value)) {
return value; // assume Unix timestamp
}
const ms = new Date(value).getTime();
if (isNaN(ms)) {
throw new Error(Invalid date: ${value});
}
return String(Math.floor(ms / 1000)); // return Unix seconds
}
}

Then replace both implementations with DateConverter.parseTimestamp().

Type: Refactor - Code Quality

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions