webssh2-server
Version:
A Websocket to SSH2 gateway using xterm.js, socket.io, ssh2
97 lines (96 loc) • 4.23 kB
JavaScript
// server
// app/utils/index.ts
/**
* Central barrel export for utility functions.
*
* Organized by category:
* - Result type utilities (functional error handling)
* - Cryptography utilities
* - Object manipulation utilities
* - Data masking utilities
* - HTML transformation utilities
* - Credential building utilities
* - Config building utilities
* - Config validation utilities
* - Safe property access utilities
* - Helper functions
*
* Note: Validation functions are exported from app/validation/index.ts
*/
// ============================================================================
// Result Type Utilities
// ============================================================================
/**
* Functional error handling with Result<T, E> type.
* Only exports production-used functions.
*/
export { ok, err, isErr } from './result.js';
// ============================================================================
// Cryptography Utilities
// ============================================================================
/**
* Generate cryptographically secure random secrets.
*/
export { generateSecureSecret } from './crypto.js';
// ============================================================================
// Object Manipulation Utilities
// ============================================================================
/**
* Deep merge objects without mutation (pure function).
*/
export { deepMergePure as deepMerge } from './object-merger.js';
// ============================================================================
// Data Masking Utilities
// ============================================================================
/**
* Mask sensitive data in objects for logging.
*/
export { maskSensitive, createMaskingOptions, DEFAULT_MASK_PROPERTIES } from './data-masker.js';
// ============================================================================
// HTML Transformation Utilities
// ============================================================================
/**
* Transform HTML content and inject configuration.
*/
export { transformHtml, transformAssetPaths, injectConfig } from './html-transformer.js';
// ============================================================================
// Credential Building Utilities
// ============================================================================
/**
* Extract and validate SSH credentials from various sources.
*/
export { extractAuthCredentials, extractOptionalTerminalSettings, validateRequiredFields, convertToAuthCredentials, CredentialError } from './credential-extractor.js';
// ============================================================================
// Config Validation Utilities
// ============================================================================
/**
* Schema validation using Zod.
*/
export { validateConfigSchema, validatePartialConfigSchema } from './schema-validator.js';
/**
* Business rules and domain validation.
*/
export { validateBusinessRules, validateConfig } from './domain-validator.js';
/**
* Legacy exports for backward compatibility.
* @deprecated Use validateConfigSchema and validateBusinessRules instead
*/
export { validateConfigSchema as validateConfigPure } from './schema-validator.js';
export { validateBusinessRules as enhanceConfig } from './domain-validator.js';
// ============================================================================
// Safe Property Access Utilities
// ============================================================================
/**
* Type-safe property access utilities using branded types.
*/
export { createSafeKey, validateKey, safeGet, safeSet, safeGetNested, safeSetNested, safeEntries, safeKeys, isRecord, safePathToKeys } from './safe-property-access.js';
// ============================================================================
// Helper Functions
// ============================================================================
/**
* Pick first non-empty field, treating empty string as missing.
* Falls back to second value if first is null, undefined, or empty string.
*/
export function pickField(primary, fallback) {
return primary != null && primary !== '' ? primary : (fallback ?? undefined);
}