UNPKG

@clipwhisperer/common

Version:

ClipWhisperer Common - Shared library providing core utilities, database schemas, authentication, bucket management, and common functionality across all ClipWhisperer microservices

73 lines (72 loc) 2.06 kB
"use strict"; /** * Metadata Utilities * Centralized metadata handling and sanitization functions */ Object.defineProperty(exports, "__esModule", { value: true }); exports.sanitizeMetadataValue = sanitizeMetadataValue; exports.createMetadata = createMetadata; exports.mergeMetadata = mergeMetadata; exports.extractCommonMetadata = extractCommonMetadata; exports.createRequestMetadata = createRequestMetadata; /** * Sanitize metadata value for safe storage */ function sanitizeMetadataValue(value) { if (!value) return ""; // Remove potentially problematic characters return value .replace(/[\r\n\t]/g, " ") // Replace newlines and tabs with spaces .replace(/[^\x20-\x7E]/g, "") // Remove non-printable characters .trim() .substring(0, 1000); // Limit length to prevent storage issues } /** * Create standardized metadata object */ function createMetadata(data) { const metadata = {}; for (const [key, value] of Object.entries(data)) { if (value !== undefined && value !== null) { metadata[key] = sanitizeMetadataValue(String(value)); } } return metadata; } /** * Merge metadata objects safely */ function mergeMetadata(...metadataObjects) { const result = {}; for (const metadata of metadataObjects) { if (metadata) { Object.assign(result, metadata); } } return result; } /** * Extract common metadata fields */ function extractCommonMetadata(source) { return createMetadata({ id: source.id, title: source.title, description: source.description, createdAt: source.createdAt || new Date().toISOString(), updatedAt: source.updatedAt || new Date().toISOString(), duration: source.duration, fileSize: source.fileSize, }); } /** * Create request metadata */ function createRequestMetadata(requestId, additionalData) { return createMetadata({ requestId, timestamp: new Date().toISOString(), ...additionalData, }); }