@anot/http-response-builder
Version:
A robust and type-safe library for constructing HTTP responses with optional paging and metadata. Designed for TypeScript and JavaScript, it ensures correct typing while simplifying the creation of various HTTP response types.
295 lines (294 loc) • 14.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HttpStatusMessage = exports.HttpStatusCode = exports.HttpResponseBuilder = exports.Paging = void 0;
exports.getHttpStatusMessage = getHttpStatusMessage;
var Paging = /** @class */ (function () {
function Paging(page, size, total) {
this.setPage(page);
this.setSize(size);
this.setTotal(total);
}
Paging.prototype.setPage = function (page) {
if (page !== undefined) {
if (page < 0) {
throw new TypeError('Page number cannot be negative');
}
this.page = page;
}
return this;
};
Paging.prototype.setSize = function (size) {
if (size !== undefined) {
if (size <= 0) {
throw new TypeError('Page size must be greater than 0');
}
this.size = size;
}
return this;
};
Paging.prototype.setTotal = function (total) {
if (total !== undefined) {
if (total < 0) {
throw new TypeError('Total count cannot be negative');
}
this.total = total;
}
return this;
};
Paging.prototype.getPage = function () {
return this.page;
};
Paging.prototype.getSize = function () {
return this.size;
};
Paging.prototype.getTotal = function () {
return this.total;
};
return Paging;
}());
exports.Paging = Paging;
var HttpResponseBuilder = /** @class */ (function () {
function HttpResponseBuilder(status, message) {
this.setStatus(status);
this.setMessage(message);
}
HttpResponseBuilder.customResponse = function () {
return new HttpResponseBuilder();
};
HttpResponseBuilder.continue = function () {
return new HttpResponseBuilder(HttpStatusCode.CONTINUE, HttpStatusMessage.CONTINUE);
};
HttpResponseBuilder.switchingProtocols = function () {
return new HttpResponseBuilder(HttpStatusCode.SWITCHING_PROTOCOLS, HttpStatusMessage.SWITCHING_PROTOCOLS);
};
HttpResponseBuilder.processing = function () {
return new HttpResponseBuilder(HttpStatusCode.PROCESSING, HttpStatusMessage.PROCESSING);
};
HttpResponseBuilder.ok = function () {
return new HttpResponseBuilder(HttpStatusCode.OK, HttpStatusMessage.OK);
};
HttpResponseBuilder.created = function () {
return new HttpResponseBuilder(HttpStatusCode.CREATED, HttpStatusMessage.CREATED);
};
HttpResponseBuilder.accepted = function () {
return new HttpResponseBuilder(HttpStatusCode.ACCEPTED, HttpStatusMessage.ACCEPTED);
};
HttpResponseBuilder.nonAuthoritativeInformation = function () {
return new HttpResponseBuilder(HttpStatusCode.NON_AUTHORITATIVE_INFORMATION, HttpStatusMessage.NON_AUTHORITATIVE_INFORMATION);
};
HttpResponseBuilder.noContent = function () {
return new HttpResponseBuilder(HttpStatusCode.NO_CONTENT, HttpStatusMessage.NO_CONTENT);
};
HttpResponseBuilder.resetContent = function () {
return new HttpResponseBuilder(HttpStatusCode.RESET_CONTENT, HttpStatusMessage.RESET_CONTENT);
};
HttpResponseBuilder.partialContent = function () {
return new HttpResponseBuilder(HttpStatusCode.PARTIAL_CONTENT, HttpStatusMessage.PARTIAL_CONTENT);
};
HttpResponseBuilder.multipleChoices = function () {
return new HttpResponseBuilder(HttpStatusCode.MULTIPLE_CHOICES, HttpStatusMessage.MULTIPLE_CHOICES);
};
HttpResponseBuilder.movedPermanently = function () {
return new HttpResponseBuilder(HttpStatusCode.MOVED_PERMANENTLY, HttpStatusMessage.MOVED_PERMANENTLY);
};
HttpResponseBuilder.found = function () {
return new HttpResponseBuilder(HttpStatusCode.FOUND, HttpStatusMessage.FOUND);
};
HttpResponseBuilder.seeOther = function () {
return new HttpResponseBuilder(HttpStatusCode.SEE_OTHER, HttpStatusMessage.SEE_OTHER);
};
HttpResponseBuilder.notModified = function () {
return new HttpResponseBuilder(HttpStatusCode.NOT_MODIFIED, HttpStatusMessage.NOT_MODIFIED);
};
HttpResponseBuilder.temporaryRedirect = function () {
return new HttpResponseBuilder(HttpStatusCode.TEMPORARY_REDIRECT, HttpStatusMessage.TEMPORARY_REDIRECT);
};
HttpResponseBuilder.permanentRedirect = function () {
return new HttpResponseBuilder(HttpStatusCode.PERMANENT_REDIRECT, HttpStatusMessage.PERMANENT_REDIRECT);
};
HttpResponseBuilder.badRequest = function () {
return new HttpResponseBuilder(HttpStatusCode.BAD_REQUEST, HttpStatusMessage.BAD_REQUEST);
};
HttpResponseBuilder.unauthorized = function () {
return new HttpResponseBuilder(HttpStatusCode.UNAUTHORIZED, HttpStatusMessage.UNAUTHORIZED);
};
HttpResponseBuilder.paymentRequired = function () {
return new HttpResponseBuilder(HttpStatusCode.PAYMENT_REQUIRED, HttpStatusMessage.PAYMENT_REQUIRED);
};
HttpResponseBuilder.forbidden = function () {
return new HttpResponseBuilder(HttpStatusCode.FORBIDDEN, HttpStatusMessage.FORBIDDEN);
};
HttpResponseBuilder.notFound = function () {
return new HttpResponseBuilder(HttpStatusCode.NOT_FOUND, HttpStatusMessage.NOT_FOUND);
};
HttpResponseBuilder.internalServerError = function () {
return new HttpResponseBuilder(HttpStatusCode.INTERNAL_SERVER_ERROR, HttpStatusMessage.INTERNAL_SERVER_ERROR);
};
HttpResponseBuilder.notImplemented = function () {
return new HttpResponseBuilder(HttpStatusCode.NOT_IMPLEMENTED, HttpStatusMessage.NOT_IMPLEMENTED);
};
HttpResponseBuilder.badGateway = function () {
return new HttpResponseBuilder(HttpStatusCode.BAD_GATEWAY, HttpStatusMessage.BAD_GATEWAY);
};
HttpResponseBuilder.serviceUnavailable = function () {
return new HttpResponseBuilder(HttpStatusCode.SERVICE_UNAVAILABLE, HttpStatusMessage.SERVICE_UNAVAILABLE);
};
HttpResponseBuilder.gatewayTimeout = function () {
return new HttpResponseBuilder(HttpStatusCode.GATEWAY_TIMEOUT, HttpStatusMessage.GATEWAY_TIMEOUT);
};
HttpResponseBuilder.prototype.setData = function (data) {
this.data = data;
return this;
};
HttpResponseBuilder.prototype.setMessage = function (msg) {
if (typeof msg === "undefined") {
return this;
}
if (typeof msg !== 'string') {
throw new TypeError('Message must be a string');
}
this.message = msg;
return this;
};
HttpResponseBuilder.prototype.setStatus = function (status) {
if (typeof status === "undefined") {
return this;
}
if (typeof status === 'number') {
if (status >= 100 && status <= 599) {
this.status = status;
return this;
}
else {
throw new TypeError('Invalid status: Status code must be between 100 and 599');
}
}
throw new TypeError("Status must be a number");
};
HttpResponseBuilder.prototype.setPaging = function (paging) {
if (paging !== null && paging !== undefined) {
if (!(paging instanceof Paging)) {
throw new TypeError("Invalid type: Expected instance of Paging, received ".concat(typeof paging));
}
this.paging = paging;
}
return this;
};
HttpResponseBuilder.prototype.setMetadata = function (metadata) {
if (typeof metadata !== 'object' || metadata === null || Array.isArray(metadata)) {
throw new TypeError('Invalid metadata: Metadata must be a non-null object');
}
this.metadata = metadata;
return this;
};
HttpResponseBuilder.prototype.getMetadata = function () {
return this.metadata;
};
HttpResponseBuilder.prototype.getStatus = function () {
return this.status;
};
HttpResponseBuilder.prototype.getMessage = function () {
return this.message;
};
HttpResponseBuilder.prototype.getData = function () {
return this.data;
};
HttpResponseBuilder.prototype.getPaging = function () {
return this.paging;
};
return HttpResponseBuilder;
}());
exports.HttpResponseBuilder = HttpResponseBuilder;
var HttpStatusCode;
(function (HttpStatusCode) {
HttpStatusCode[HttpStatusCode["CONTINUE"] = 100] = "CONTINUE";
HttpStatusCode[HttpStatusCode["SWITCHING_PROTOCOLS"] = 101] = "SWITCHING_PROTOCOLS";
HttpStatusCode[HttpStatusCode["PROCESSING"] = 102] = "PROCESSING";
HttpStatusCode[HttpStatusCode["OK"] = 200] = "OK";
HttpStatusCode[HttpStatusCode["CREATED"] = 201] = "CREATED";
HttpStatusCode[HttpStatusCode["ACCEPTED"] = 202] = "ACCEPTED";
HttpStatusCode[HttpStatusCode["NON_AUTHORITATIVE_INFORMATION"] = 203] = "NON_AUTHORITATIVE_INFORMATION";
HttpStatusCode[HttpStatusCode["NO_CONTENT"] = 204] = "NO_CONTENT";
HttpStatusCode[HttpStatusCode["RESET_CONTENT"] = 205] = "RESET_CONTENT";
HttpStatusCode[HttpStatusCode["PARTIAL_CONTENT"] = 206] = "PARTIAL_CONTENT";
HttpStatusCode[HttpStatusCode["MULTIPLE_CHOICES"] = 300] = "MULTIPLE_CHOICES";
HttpStatusCode[HttpStatusCode["MOVED_PERMANENTLY"] = 301] = "MOVED_PERMANENTLY";
HttpStatusCode[HttpStatusCode["FOUND"] = 302] = "FOUND";
HttpStatusCode[HttpStatusCode["SEE_OTHER"] = 303] = "SEE_OTHER";
HttpStatusCode[HttpStatusCode["NOT_MODIFIED"] = 304] = "NOT_MODIFIED";
HttpStatusCode[HttpStatusCode["TEMPORARY_REDIRECT"] = 307] = "TEMPORARY_REDIRECT";
HttpStatusCode[HttpStatusCode["PERMANENT_REDIRECT"] = 308] = "PERMANENT_REDIRECT";
HttpStatusCode[HttpStatusCode["BAD_REQUEST"] = 400] = "BAD_REQUEST";
HttpStatusCode[HttpStatusCode["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
HttpStatusCode[HttpStatusCode["PAYMENT_REQUIRED"] = 402] = "PAYMENT_REQUIRED";
HttpStatusCode[HttpStatusCode["FORBIDDEN"] = 403] = "FORBIDDEN";
HttpStatusCode[HttpStatusCode["NOT_FOUND"] = 404] = "NOT_FOUND";
HttpStatusCode[HttpStatusCode["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
HttpStatusCode[HttpStatusCode["NOT_IMPLEMENTED"] = 501] = "NOT_IMPLEMENTED";
HttpStatusCode[HttpStatusCode["BAD_GATEWAY"] = 502] = "BAD_GATEWAY";
HttpStatusCode[HttpStatusCode["SERVICE_UNAVAILABLE"] = 503] = "SERVICE_UNAVAILABLE";
HttpStatusCode[HttpStatusCode["GATEWAY_TIMEOUT"] = 504] = "GATEWAY_TIMEOUT";
})(HttpStatusCode || (exports.HttpStatusCode = HttpStatusCode = {}));
var HttpStatusMessage;
(function (HttpStatusMessage) {
HttpStatusMessage["CONTINUE"] = "Continue";
HttpStatusMessage["SWITCHING_PROTOCOLS"] = "Switching Protocols";
HttpStatusMessage["PROCESSING"] = "Processing";
HttpStatusMessage["OK"] = "OK";
HttpStatusMessage["CREATED"] = "Created";
HttpStatusMessage["ACCEPTED"] = "Accepted";
HttpStatusMessage["NON_AUTHORITATIVE_INFORMATION"] = "Non-Authoritative Information";
HttpStatusMessage["NO_CONTENT"] = "No Content";
HttpStatusMessage["RESET_CONTENT"] = "Reset Content";
HttpStatusMessage["PARTIAL_CONTENT"] = "Partial Content";
HttpStatusMessage["MULTIPLE_CHOICES"] = "Multiple Choices";
HttpStatusMessage["MOVED_PERMANENTLY"] = "Moved Permanently";
HttpStatusMessage["FOUND"] = "Found";
HttpStatusMessage["SEE_OTHER"] = "See Other";
HttpStatusMessage["NOT_MODIFIED"] = "Not Modified";
HttpStatusMessage["TEMPORARY_REDIRECT"] = "Temporary Redirect";
HttpStatusMessage["PERMANENT_REDIRECT"] = "Permanent Redirect";
HttpStatusMessage["BAD_REQUEST"] = "Bad Request";
HttpStatusMessage["UNAUTHORIZED"] = "Unauthorized";
HttpStatusMessage["PAYMENT_REQUIRED"] = "Payment Required";
HttpStatusMessage["FORBIDDEN"] = "Forbidden";
HttpStatusMessage["NOT_FOUND"] = "Not Found";
HttpStatusMessage["INTERNAL_SERVER_ERROR"] = "Internal Server Error";
HttpStatusMessage["NOT_IMPLEMENTED"] = "Not Implemented";
HttpStatusMessage["BAD_GATEWAY"] = "Bad Gateway";
HttpStatusMessage["SERVICE_UNAVAILABLE"] = "Service Unavailable";
HttpStatusMessage["GATEWAY_TIMEOUT"] = "Gateway Timeout";
})(HttpStatusMessage || (exports.HttpStatusMessage = HttpStatusMessage = {}));
function getHttpStatusMessage(code) {
var _a;
var mapping = (_a = {},
_a[HttpStatusCode.CONTINUE] = HttpStatusMessage.CONTINUE,
_a[HttpStatusCode.SWITCHING_PROTOCOLS] = HttpStatusMessage.SWITCHING_PROTOCOLS,
_a[HttpStatusCode.PROCESSING] = HttpStatusMessage.PROCESSING,
_a[HttpStatusCode.OK] = HttpStatusMessage.OK,
_a[HttpStatusCode.CREATED] = HttpStatusMessage.CREATED,
_a[HttpStatusCode.ACCEPTED] = HttpStatusMessage.ACCEPTED,
_a[HttpStatusCode.NON_AUTHORITATIVE_INFORMATION] = HttpStatusMessage.NON_AUTHORITATIVE_INFORMATION,
_a[HttpStatusCode.NO_CONTENT] = HttpStatusMessage.NO_CONTENT,
_a[HttpStatusCode.RESET_CONTENT] = HttpStatusMessage.RESET_CONTENT,
_a[HttpStatusCode.PARTIAL_CONTENT] = HttpStatusMessage.PARTIAL_CONTENT,
_a[HttpStatusCode.MULTIPLE_CHOICES] = HttpStatusMessage.MULTIPLE_CHOICES,
_a[HttpStatusCode.MOVED_PERMANENTLY] = HttpStatusMessage.MOVED_PERMANENTLY,
_a[HttpStatusCode.FOUND] = HttpStatusMessage.FOUND,
_a[HttpStatusCode.SEE_OTHER] = HttpStatusMessage.SEE_OTHER,
_a[HttpStatusCode.NOT_MODIFIED] = HttpStatusMessage.NOT_MODIFIED,
_a[HttpStatusCode.TEMPORARY_REDIRECT] = HttpStatusMessage.TEMPORARY_REDIRECT,
_a[HttpStatusCode.PERMANENT_REDIRECT] = HttpStatusMessage.PERMANENT_REDIRECT,
_a[HttpStatusCode.BAD_REQUEST] = HttpStatusMessage.BAD_REQUEST,
_a[HttpStatusCode.UNAUTHORIZED] = HttpStatusMessage.UNAUTHORIZED,
_a[HttpStatusCode.PAYMENT_REQUIRED] = HttpStatusMessage.PAYMENT_REQUIRED,
_a[HttpStatusCode.FORBIDDEN] = HttpStatusMessage.FORBIDDEN,
_a[HttpStatusCode.NOT_FOUND] = HttpStatusMessage.NOT_FOUND,
_a[HttpStatusCode.INTERNAL_SERVER_ERROR] = HttpStatusMessage.INTERNAL_SERVER_ERROR,
_a[HttpStatusCode.NOT_IMPLEMENTED] = HttpStatusMessage.NOT_IMPLEMENTED,
_a[HttpStatusCode.BAD_GATEWAY] = HttpStatusMessage.BAD_GATEWAY,
_a[HttpStatusCode.SERVICE_UNAVAILABLE] = HttpStatusMessage.SERVICE_UNAVAILABLE,
_a[HttpStatusCode.GATEWAY_TIMEOUT] = HttpStatusMessage.GATEWAY_TIMEOUT,
_a);
return mapping[code];
}