@bernierllc/validators-utils
v0.1.2
Published
Shared utilities for the BernierLLC validators ecosystem - parsing, DOM, color, HTTP, and file operations
Readme
@bernierllc/validators-utils
Shared utilities for the BernierLLC validators ecosystem. This package provides parsing, DOM manipulation, color analysis, URL handling, file operations, and HTTP utilities used across all validators.
Installation
npm install @bernierllc/validators-utilsUsage
DOM Utilities
import { parseHtml } from '@bernierllc/validators-utils';
const doc = parseHtml('<div class="content">Hello World</div>');
if (doc) {
const element = doc.querySelector('.content');
const text = element?.textContent;
console.log(text); // "Hello World"
}Color Analysis
import { parseColor, getContrastRatio, meetsWCAGContrastRequirement } from '@bernierllc/validators-utils';
const foreground = parseColor('#ffffff');
const background = parseColor('#000000');
const ratio = getContrastRatio('#ffffff', '#000000');
const wcagAA = meetsWCAGContrastRequirement(ratio, 'AA', 'normal');
console.log(ratio); // 21
console.log(wcagAA); // trueURL Validation
import { isValidUrl, resolveUrl, isDangerousProtocol } from '@bernierllc/validators-utils';
console.log(isValidUrl('https://example.com')); // true
console.log(isDangerousProtocol('javascript:alert(1)')); // true
console.log(resolveUrl('https://example.com/', './page.html')); // "https://example.com/page.html"File Operations
import { matchesPattern, isImageFile, formatFileSize } from '@bernierllc/validators-utils';
console.log(matchesPattern('*.js', 'app.js')); // true
console.log(isImageFile('photo.jpg')); // true
console.log(formatFileSize(1024).readable); // "1.0 KB"HTTP Utilities
import { fetchWithTimeout, checkUrlAccessibility } from '@bernierllc/validators-utils';
const result = await checkUrlAccessibility('https://example.com');
console.log(result.ok); // true/falseAPI Reference
Color Utilities
parseColor(color: string): RGBColor | null- Parse color strings into RGB valuesgetContrastRatio(color1: string, color2: string): number- Calculate WCAG contrast ratioisLightColor(color: string): boolean- Check if color is considered lightisDarkColor(color: string): boolean- Check if color is considered darkmeetsWCAGContrastRequirement(ratio: number, level: 'AA' | 'AAA', size?: 'normal' | 'large'): boolean- Check WCAG compliancegetRelativeLuminance(rgb: RGBColor): number- Calculate relative luminancergbToHsl(rgb: RGBColor): HSLColor- Convert RGB to HSL
DOM Utilities
parseHtml(html: string): Document | null- Parse HTML string into DOM Document
HTTP Utilities
fetchWithTimeout(url: string, options?: FetchOptions): Promise<FetchResult>- Fetch with timeout and rate limitingcheckUrlAccessibility(url: string): Promise<FetchResult>- Check if URL is accessibleisSuccessStatus(status: number): boolean- Check if status is 2xxisRedirectStatus(status: number): boolean- Check if status is 3xxisClientErrorStatus(status: number): boolean- Check if status is 4xxisServerErrorStatus(status: number): boolean- Check if status is 5xxgetHttpStatusMessage(status: number): string- Get human-readable status message
URL Utilities
isValidUrl(url: string): boolean- Validate URL formatresolveUrl(base: string, relative: string): string- Resolve relative URLsisDangerousProtocol(url: string): boolean- Check for dangerous protocolsisHttpsUrl(url: string): boolean- Check if URL uses HTTPSisHttpUrl(url: string): boolean- Check if URL uses HTTPgetUrlDomain(url: string): string | null- Extract domain from URLhasTrackingParameters(url: string): boolean- Check for tracking parametersremoveTrackingParameters(url: string): string- Remove tracking parametersisEmailAddress(email: string): boolean- Validate email formatisMailtoUrl(url: string): boolean- Check if URL is mailto
File Utilities
matchesPattern(path: string, pattern: string): boolean- Check if path matches glob patternisValidFileName(fileName: string): boolean- Validate file namegetFileExtension(fileName: string): string- Get file extensionsanitizeFileName(fileName: string): string- Sanitize file name for filesystemisImageFile(fileName: string): boolean- Check if file is an imageisDocumentFile(fileName: string): boolean- Check if file is a documentnormalizeFilePath(filePath: string): string- Normalize file pathformatFileSize(bytes: number): { bytes: number; readable: string }- Format file size
CSS Utilities
parseCss(css: string): ParsedCSS- Parse CSS string into AST
Integration Status
- Logger integration: not-applicable - Utility functions with no user-facing operations requiring logging. No @bernierllc/logger dependency needed.
- Docs-Suite: ready - All functions documented with TypeScript definitions and comprehensive API reference
- NeverHub integration: not-applicable - Foundation utility package with no service discovery requirements. No @bernierllc/neverhub-adapter needed as this package provides core utilities only.
See Also
- @bernierllc/validators-core - Core types and interfaces
- @bernierllc/validators-runner - Orchestration and execution
License
Copyright (c) 2025 Bernier LLC. All rights reserved.
