kist
Version:
Lightweight Package Pipeline Processor with Plugin Architecture
56 lines • 1.93 kB
JavaScript
import { AbstractProcess } from "../abstract/AbstractProcess.js";
export class AbstractValidator extends AbstractProcess {
constructor() {
super();
}
validate(target) {
if (!target || typeof target !== "object") {
throw new Error("Target must be a valid object.");
}
for (const key in target) {
if (Object.prototype.hasOwnProperty.call(target, key)) {
this.validateProperty(key, target[key]);
}
}
this.logInfo("Validation completed successfully.");
}
validateNumber(key, value) {
if (typeof value !== "number" || value < 0) {
this.throwValidationError(key, value, "Must be a non-negative number.");
}
}
validateBoolean(key, value) {
if (typeof value !== "boolean") {
this.throwValidationError(key, value, "Must be a boolean.");
}
}
validateString(key, value) {
if (typeof value !== "string" || value.trim() === "") {
this.throwValidationError(key, value, "Must be a non-empty string.");
}
}
validateObject(key, value) {
if (typeof value !== "object" ||
value === null ||
Array.isArray(value)) {
this.throwValidationError(key, value, "Must be a valid object.");
}
}
logValidationSuccess(key, value) {
const message = `
Validation successful for property "${String(key)}"
with value: ${JSON.stringify(value)}
`;
this.logSuccess(message);
}
throwValidationError(key, value, message) {
const errorMessage = `
Validation failed for "${String(key)}"
with value "${JSON.stringify(value)}".
${message}
`;
this.logError(errorMessage);
throw new Error(errorMessage);
}
}
//# sourceMappingURL=AbstractValidator.js.map