nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
74 lines (73 loc) • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.httpStatus = exports.HttpStatus = void 0;
const constants_1 = require("./constants");
class HttpStatus {
#codesByNumber;
#codesByName;
static Groups = {
informational: [],
success: [],
redirection: [],
clientError: [],
serverError: [],
};
constructor() {
this.#codesByNumber = new Map();
this.#codesByName = new Map();
for (const entry of constants_1.HTTP_STATUS_DATA) {
this.#storeEntry(entry);
HttpStatus.Groups[entry.category].push(entry.code);
}
}
getByCode(code) {
return this.#codesByNumber.get(code);
}
getByName(name) {
return this.#codesByName.get(name);
}
setMessage(code, newMessage) {
const entry = this.#codesByNumber.get(code);
if (!entry) {
return false;
}
else {
entry.message = newMessage;
return true;
}
}
addCode(...entries) {
let added = false;
for (const entry of entries) {
if (!this.#codesByNumber.has(entry.code)) {
this.#storeEntry(entry);
HttpStatus.Groups[entry.category].push(entry.code);
added = true;
}
}
return added;
}
addOrOverrideCode(...entries) {
for (const entry of entries) {
this.#storeEntry(entry);
HttpStatus.Groups[entry.category].push(entry.code);
}
return this;
}
list(category) {
const entries = [...this.#codesByNumber.values()];
if (!category) {
return entries;
}
else {
return entries.filter((entry) => entry.category === category);
}
}
#storeEntry(entry) {
this.#codesByNumber.set(entry.code, { ...entry });
this.#codesByName.set(entry.name, { ...entry });
this.#codesByName.set(entry.readableName, { ...entry });
}
}
exports.HttpStatus = HttpStatus;
exports.httpStatus = new HttpStatus();