ci-validation
Version:
🇺🇾 Complete TypeScript/JavaScript library for validating Uruguayan CI (Cédula de Identidad) with official algorithm and government service integration
132 lines • 4.2 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.VERSION = exports.UruguayanCiValidator = exports.DependencyContainer = exports.LoteriaUyCiService = void 0;
exports.validateCI = validateCI;
exports.normalizeCI = normalizeCI;
exports.validateCIFormat = validateCIFormat;
exports.queryCIInfo = queryCIInfo;
exports.validateCIAndQuery = validateCIAndQuery;
// Main library export
var CiService_1 = require("../services/CiService");
Object.defineProperty(exports, "LoteriaUyCiService", { enumerable: true, get: function () { return CiService_1.LoteriaUyCiService; } });
var dependencyContainer_1 = require("../utils/dependencyContainer");
Object.defineProperty(exports, "DependencyContainer", { enumerable: true, get: function () { return dependencyContainer_1.DependencyContainer; } });
var CiValidator_1 = require("../validators/CiValidator");
Object.defineProperty(exports, "UruguayanCiValidator", { enumerable: true, get: function () { return CiValidator_1.UruguayanCiValidator; } });
// Main validation function for easy usage
const CiService_2 = require("../services/CiService");
const CiValidator_2 = require("../validators/CiValidator");
const validator = new CiValidator_2.UruguayanCiValidator();
const service = new CiService_2.LoteriaUyCiService();
/**
* Validates a Uruguayan CI (Cédula de Identidad)
* @param ci - The CI number to validate (7-8 digits)
* @returns true if the CI is valid according to the official algorithm
*
* @example
* ```typescript
* import { validateCI } from 'ci-validation';
*
* const isValid = validateCI('19119365');
* console.log(isValid); // true or false
* ```
*/
function validateCI(ci) {
return validator.validate(ci);
}
/**
* Normalizes a CI by adding leading zeros and removing non-numeric characters
* @param ci - The CI number to normalize
* @returns The normalized CI (8 digits)
*
* @example
* ```typescript
* import { normalizeCI } from 'ci-validation';
*
* const normalized = normalizeCI('1234567');
* console.log(normalized); // '01234567'
* ```
*/
function normalizeCI(ci) {
return validator.normalize(ci);
}
/**
* Validates the format of a CI (length and numeric characters)
* @param ci - The CI number to validate format
* @returns true if the format is valid
*
* @example
* ```typescript
* import { validateCIFormat } from 'ci-validation';
*
* const hasValidFormat = validateCIFormat('1234567');
* console.log(hasValidFormat); // true
* ```
*/
function validateCIFormat(ci) {
return validator.validateFormat(ci);
}
/**
* Queries information about a CI from the official Uruguayan service
* @param ci - The CI number to query
* @returns Promise with the query result
*
* @example
* ```typescript
* import { queryCIInfo } from 'ci-validation';
*
* const result = await queryCIInfo('19119365');
* if (result.success) {
* console.log(result.data);
* }
* ```
*/
async function queryCIInfo(ci) {
return await service.queryCiInfo(ci);
}
/**
* Complete CI validation with information query
* @param ci - The CI number to validate and query
* @returns Promise with validation result and information if available
*
* @example
* ```typescript
* import { validateCIAndQuery } from 'ci-validation';
*
* const result = await validateCIAndQuery('19119365');
* console.log(result);
* ```
*/
async function validateCIAndQuery(ci) {
const isValid = validator.validate(ci);
if (!isValid) {
return {
success: false,
error: "Invalid CI: check digit verification failed",
code: "INVALID_CI",
};
}
const normalizedCi = validator.normalize(ci);
const queryResult = await service.queryCiInfo(normalizedCi);
return {
success: true,
data: {
ci: ci,
isValid: true,
normalizedCi: normalizedCi,
info: queryResult.success ? queryResult.data : queryResult.error,
},
};
}
// Version info
exports.VERSION = "1.0.1";
// Default export
exports.default = {
validateCI,
normalizeCI,
validateCIFormat,
queryCIInfo,
validateCIAndQuery,
VERSION: exports.VERSION,
};
//# sourceMappingURL=index.js.map
;