UNPKG

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
"use strict"; /** * 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