@mifistix-cloud/shared
v2.0.10
Published
Shared utilities for Mifistix Cloud modules - Common validation, error handling, and security functions
Readme
@mifistix-cloud/shared
Shared utilities for Mifistix Cloud modules - Common validation, error handling, and security functions.
License
This module is licensed for internal use within Mifistix only. See LICENSE for details.
Overview
This module provides shared functionality used across all Mifistix Cloud modules:
- Input validation
- Error handling
- Security utilities
Installation
This module is automatically required by other modules. No direct installation needed.
Modules
Validators (validators/inputValidator.js)
Input validation utilities for security.
Functions
validateRequired(value, fieldName)
- Validates value is not null or undefined
- Throws
ValidationErrorif validation fails
validateNonEmptyString(value, fieldName)
- Validates value is a non-empty string
- Throws
ValidationErrorif validation fails
validateEmail(email)
- Validates email format
- Throws
ValidationErrorif invalid
validatePassword(password)
- Validates password strength (min 6 characters)
- Throws
ValidationErrorif invalid
validateProjectId(projectId)
- Validates project ID format (max 128 characters)
- Throws
ValidationErrorif invalid
validateApiKey(apiKey)
- Validates API key format (min 10 characters)
- Throws
ValidationErrorif invalid
validatePath(path)
- Validates file/database path
- Prevents path traversal attacks (.., ~)
- Throws
ValidationErrorif invalid
validateObject(obj, schema)
- Validates object structure against schema
- Throws
ValidationErrorif validation fails
sanitizeString(input)
- Sanitizes string input by trimming
validateAppConfig(config)
- Validates app configuration object
- Validates apiKey and projectId
Usage
const { validateRequired, validateEmail, validatePassword } = require('@mifistix-cloud/shared/validators/inputValidator');
validateRequired(value, 'fieldName');
validateEmail('[email protected]');
validatePassword('password123');Error Handler (utils/errorHandler.js)
Custom error classes and error handling utilities.
Error Classes
ValidationError
- Thrown when input validation fails
- Contains
fieldproperty for the invalid field
AuthenticationError
- Thrown for authentication/authorization failures
- HTTP status codes: 401, 403
NetworkError
- Thrown for network-related errors
PermissionError
- Thrown for permission/authorization errors
- HTTP status code: 403
MifistixError
- Base error class for all Mifistix errors
- Contains
codeanddetailsproperties
Functions
handleApiResponse(response)
- Handles API response errors
- Maps HTTP status to error types
- Throws appropriate error class
withErrorHandling(fn, options)
- Wraps async function with error handling
- Logs errors if enabled
- Re-throws as MifistixError
Usage
const { ValidationError, AuthenticationError, handleApiResponse } = require('@mifistix-cloud/shared/utils/errorHandler');
try {
await handleApiResponse(response);
} catch (error) {
if (error instanceof AuthenticationError) {
console.error('Auth failed:', error.message);
}
}Security (utils/security.js)
Security utilities for data protection.
Functions
maskSensitiveData(data, visibleChars?)
- Masks sensitive data for logging
- Default shows 4 characters
- Returns masked string (e.g., 'mfst***')
isSecureUrl(url, allowLocalhost?)
- Validates URL uses HTTPS (in production)
- Allows localhost for development
- Returns boolean
isTrustedOrigin(origin, trustedOrigins)
- Checks if request origin is trusted
- Returns boolean
RateLimiter(maxRequests, windowMs)
- Rate limiter implementation
isAllowed(key)- Check if request allowedreset(key)- Reset rate limit for key
sanitizeForLogging(obj, sensitiveFields)
- Sanitizes object for logging
- Masks sensitive fields (password, apiKey, token, secret)
- Returns sanitized object
Usage
const { maskSensitiveData, RateLimiter } = require('@mifistix-cloud/shared/utils/security');
const masked = maskSensitiveData('mfstx-secret-key-123', 4);
console.log(masked); // 'mfst***'
const limiter = new RateLimiter(100, 60000); // 100 requests per minute
if (limiter.isAllowed('user-123')) {
// Process request
}Architecture
shared/
├── validators/
│ └── inputValidator.js # Input validation utilities
├── utils/
│ ├── errorHandler.js # Error handling
│ └── security.js # Security utilitiesSecurity Features
- Input Validation: All inputs validated before processing
- Path Traversal Protection: Prevents
../attacks in paths - Data Masking: Sensitive data masked in logs
- Rate Limiting: Built-in rate limiter for API protection
- URL Security: HTTPS validation for production
License
MIT