guardz-axios
Version:
Type-safe HTTP client built on top of Axios with runtime validation using guardz. Part of the guardz ecosystem for comprehensive TypeScript type safety.
107 lines • 3.22 kB
JavaScript
;
/**
* Validation Utilities - Pure functions for data validation
* Following Functional Programming (FP) principles
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateData = validateData;
exports.validateDataWithTolerance = validateDataWithTolerance;
exports.createValidationContext = createValidationContext;
exports.mergeValidationConfigs = mergeValidationConfigs;
exports.validateValidationConfig = validateValidationConfig;
exports.createValidationErrorMessage = createValidationErrorMessage;
exports.formatValidationErrors = formatValidationErrors;
const guardz_1 = require("guardz");
/**
* Validates data using a type guard
* Pure function - no side effects, deterministic output
*/
function validateData(data, guard, identifier) {
const errors = [];
const config = {
identifier: identifier || "data",
callbackOnError: (error) => errors.push(error),
};
const isValid = guard(data, config);
return {
isValid,
validatedData: isValid ? data : null,
errors,
};
}
/**
* Validates data with tolerance mode
* Pure function - no side effects, deterministic output
*/
function validateDataWithTolerance(data, guard, identifier) {
const errors = [];
const config = {
identifier: identifier || "data",
callbackOnError: (error) => errors.push(error),
};
const validatedData = (0, guardz_1.guardWithTolerance)(data, guard, config);
return {
data: validatedData,
errors,
};
}
/**
* Creates validation context
* Pure function - no side effects, deterministic output
*/
function createValidationContext(type, url, method, statusCode, originalError) {
return {
type,
url,
method: method,
statusCode,
originalError,
};
}
/**
* Merges validation configurations
* Pure function - no side effects, deterministic output
*/
function mergeValidationConfigs(base, override) {
return {
...base,
...override,
};
}
/**
* Validates validation configuration
* Pure function - no side effects, deterministic output
*/
function validateValidationConfig(config) {
if (!config.guard) {
return "Guard function is required";
}
if (typeof config.guard !== "function") {
return "Guard must be a function";
}
if (config.tolerance && !config.onError) {
return "Error callback is required when tolerance mode is enabled";
}
return null;
}
/**
* Creates a validation error message
* Pure function - no side effects, deterministic output
*/
function createValidationErrorMessage(identifier, value, expectedType) {
return `Expected ${identifier} (${JSON.stringify(value)}) to be "${expectedType}"`;
}
/**
* Formats validation errors for display
* Pure function - no side effects, deterministic output
*/
function formatValidationErrors(errors) {
if (errors.length === 0) {
return "No validation errors";
}
if (errors.length === 1) {
return errors[0];
}
return `Multiple validation errors:\n${errors.map((error, index) => `${index + 1}. ${error}`).join("\n")}`;
}
//# sourceMappingURL=validation-utils.js.map