UNPKG

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
"use strict"; 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();