export class AppError extends Error {
  statusCode: number;

  code: string;

  details?: unknown;

  constructor(statusCode: number, code: string, message: string, details?: unknown) {
    super(message);
    this.statusCode = statusCode;
    this.code = code;
    this.details = details;
  }
}

export function assert(condition: unknown, statusCode: number, code: string, message: string): asserts condition {
  if (!condition) {
    throw new AppError(statusCode, code, message);
  }
}
