A11yWatch/a11ywatch-core

View on GitHub
src/core/models/response/response.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { HttpMessage, StatusCode } from "../../../web/messages/message";
import { ResponseParamsModel, ResponseModel } from "./types";

// response model for HTTP request [todo: remove]
const responseModel = (params?: ResponseParamsModel): ResponseModel => {
  let {
    success = true,
    message,
    code = StatusCode.Ok,
    ...extra
  } = params ?? {};

  // determine success on code
  if (code >= StatusCode.BadRequest) {
    success = false;
  }

  const { data = null, ...n } = extra ?? {};

  // TODO: remove for actually messages being used
  if (typeof message === "number") {
    message = HttpMessage[message];
  }

  // proper shape
  return {
    ...n,
    data,
    success,
    code,
    message,
  };
};

export { responseModel };