@anpdgovbr/shared-types
Version:
Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)
69 lines (68 loc) • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.STATUS_INTERNO_VALUES = exports.StatusInterno = void 0;
exports.isStatusInterno = isStatusInterno;
exports.assertStatusInterno = assertStatusInterno;
exports.coerceStatusInterno = coerceStatusInterno;
/**
* Enumeração que representa os possíveis status internos de um processo ou entidade.
*
* @remarks
* Utilizado para indicar o estágio atual do processamento interno, desde a importação até a consolidação.
*
* @enum {string}
* @readonly
* @public
*/
var StatusInterno;
(function (StatusInterno) {
StatusInterno["IMPORTADO"] = "IMPORTADO";
StatusInterno["NOVO"] = "NOVO";
StatusInterno["EM_PROCESSAMENTO"] = "EM_PROCESSAMENTO";
StatusInterno["PROCESSADO"] = "PROCESSADO";
StatusInterno["CONSOLIDADO"] = "CONSOLIDADO";
})(StatusInterno || (exports.StatusInterno = StatusInterno = {}));
/**
* Lista imutável com todos os valores de {@link StatusInterno}.
*
* @public
*/
exports.STATUS_INTERNO_VALUES = [
StatusInterno.IMPORTADO,
StatusInterno.NOVO,
StatusInterno.EM_PROCESSAMENTO,
StatusInterno.PROCESSADO,
StatusInterno.CONSOLIDADO,
];
const STATUS_INTERNO_SET = new Set(exports.STATUS_INTERNO_VALUES);
/**
* Verifica se um valor é um {@link StatusInternoLiteral} válido.
*
* @public
*/
function isStatusInterno(value) {
return typeof value === "string" && STATUS_INTERNO_SET.has(value);
}
/**
* Asserção de tipo para {@link StatusInternoLiteral}.
* Lança erro se o valor for inválido.
*
* @throws Error
* @public
*/
function assertStatusInterno(value) {
if (!isStatusInterno(value)) {
throw new Error(`StatusInterno inválido: ${String(value)}`);
}
}
/**
* Coerção de valor para {@link StatusInternoLiteral} com fallback.
*
* @param value - Valor a ser convertido.
* @param fallback - Valor padrão quando `value` não é válido (default: StatusInterno.NOVO).
* @returns Valor coerente dentro do domínio de StatusInterno.
* @public
*/
function coerceStatusInterno(value, fallback = StatusInterno.NOVO) {
return isStatusInterno(value) ? value : fallback;
}