stoop
Version:
CSS-in-JS library with type inference, theme creation, and variants support.
103 lines (102 loc) • 3.4 kB
TypeScript
/**
* String utility functions.
* Provides hashing for class name generation, camelCase to kebab-case conversion,
* and CSS sanitization utilities for security.
*/
/**
* Generates a hash string from an input string.
*
* @param str - String to hash
* @returns Hashed string
*/
export declare function hash(str: string): string;
/**
* Generates a hash string from an object by stringifying it.
*
* @param obj - Object to hash
* @returns Hashed string
*/
export declare function hashObject(obj: unknown): string;
/**
* Converts a camelCase string to kebab-case.
*
* @param str - String to convert
* @returns Kebab-case string
*/
export declare function toKebabCase(str: string): string;
/**
* Escapes CSS property values to prevent injection attacks.
* Escapes quotes, semicolons, and other special characters.
*
* @param value - Value to escape
* @returns Escaped value string
*/
export declare function escapeCSSValue(value: string | number): string;
/**
* Validates and sanitizes CSS selectors to prevent injection attacks.
* Only allows safe selector characters. Returns empty string for invalid selectors.
*
* @param selector - Selector to sanitize
* @returns Sanitized selector string or empty string if invalid
*/
export declare function sanitizeCSSSelector(selector: string): string;
/**
* Validates and sanitizes CSS variable names to prevent injection attacks.
* CSS custom properties must start with -- and contain only valid characters.
*
* @param name - Variable name to sanitize
* @returns Sanitized variable name
*/
export declare function sanitizeCSSVariableName(name: string): string;
/**
* Escapes CSS variable values to prevent injection attacks.
*
* @param value - Value to escape
* @returns Escaped value string
*/
export declare function escapeCSSVariableValue(value: string | number): string;
/**
* Sanitizes prefix for use in CSS selectors and class names.
* Only allows alphanumeric characters, hyphens, and underscores.
*
* @param prefix - Prefix to sanitize
* @returns Sanitized prefix string
*/
export declare function sanitizePrefix(prefix: string): string;
/**
* Escapes prefix for use in CSS attribute selectors.
*
* @param prefix - Prefix to escape
* @returns Escaped prefix string
*/
export declare function escapePrefixForSelector(prefix: string): string;
/**
* Sanitizes media query strings to prevent injection attacks.
* Only allows safe characters for media queries.
*
* @param mediaQuery - Media query string to sanitize
* @returns Sanitized media query string or empty string if invalid
*/
export declare function sanitizeMediaQuery(mediaQuery: string): string;
/**
* Sanitizes CSS class names to prevent injection attacks.
* Only allows valid CSS class name characters.
*
* @param className - Class name(s) to sanitize
* @returns Sanitized class name string
*/
export declare function sanitizeClassName(className: string): string;
/**
* Sanitizes CSS property names to prevent injection attacks.
*
* @param propertyName - Property name to sanitize
* @returns Sanitized property name
*/
export declare function sanitizeCSSPropertyName(propertyName: string): string;
/**
* Validates keyframe percentage keys (e.g., "0%", "50%", "from", "to").
*
* @param key - Keyframe key to validate
* @returns True if key is valid
*/
export declare function validateKeyframeKey(key: string): boolean;