qgenutils
Version:
A security-first Node.js utility library providing authentication, HTTP operations, URL processing, validation, datetime formatting, and template rendering. Designed as a lightweight alternative to heavy npm packages with comprehensive error handling and
85 lines (76 loc) • 3.63 kB
JavaScript
/**
* Global Constants and Environment Variables
* Single source of truth for all hardcoded values and environment variable access
*
* USAGE RULES:
* - Import entire object: const localVars = require('../config/localVars')
* - Use as: localVars.variableName (not destructured imports)
* - Never edit constants once they reside here
* - Flag unused with "REMOVE?" comment but don't delete
* - Group by category, don't move or re-categorize existing values
*/
// ========================================
// ENVIRONMENT VARIABLE TYPE DEFINITIONS
// ========================================
export const ENV_VALID_TYPES = [`string`, `number`, `boolean`];
export const ENV_TRUTHY_VALUES = [`true`, `1`, `yes`, `on`, `enabled`];
export const ENV_FALSY_VALUES = [`false`, `0`, `no`, `off`, `disabled`, ``];
// ========================================
// LOGGING CONFIGURATION
// ========================================
export const LOG_LEVELS = [`error`, `warn`, `info`, `debug`];
export const LOG_MAX_SIZE = `20m`;
export const LOG_MAX_FILES = `14d`;
export const LOG_DATE_PATTERN = `YYYY-MM-DD-HH`;
// ========================================
// VALIDATION CONSTANTS
// ========================================
export const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
export const GITHUB_URL_REGEX = /^https:\/\/github\.com\/[\w\-\.]+\/[\w\-\.]+(?:\.git)?(?:\/)?$/;
export const MIN_PASSWORD_LENGTH = 8;
export const MAX_STRING_LENGTH = 10000;
// ========================================
// SECURITY CONSTANTS
// ========================================
export const XSS_DANGEROUS_TAGS = [`script`, `style`, `iframe`, `object`, `embed`];
export const XSS_DANGEROUS_PROTOCOLS = [`javascript:`, `data:`, `vbscript:`, `blob:`, `filesystem:`];
export const XSS_EVENT_HANDLERS = /on\w+\s*=/gi;
export const RATE_LIMIT_WINDOW = 60000; // 1 minute in milliseconds
export const RATE_LIMIT_MAX_REQUESTS = 100;
// ========================================
// HTTP CONSTANTS
// ========================================
export const DEFAULT_TIMEOUT = 30000; // 30 seconds
export const MAX_REDIRECTS = 5;
export const DEFAULT_USER_AGENT = `QGenUtils/1.0`;
// ========================================
// FILE PROCESSING CONSTANTS
// ========================================
export const FILE_SIZE_UNITS = [`B`, `KB`, `MB`, `GB`, `TB`];
export const FILE_SIZE_THRESHOLD = 1024;
// ========================================
// DATETIME CONSTANTS
// ========================================
export const DEFAULT_DATETIME_FORMAT = `YYYY-MM-DD HH:mm:ss`;
export const DEFAULT_DATE_FORMAT = `MM/DD/YYYY`;
export const DURATION_UNITS = [`ms`, `s`, `m`, `h`, `d`];
// ========================================
// WORKER POOL CONSTANTS
// ========================================
export const DEFAULT_POOL_SIZE = 4;
export const WORKER_TIMEOUT = 30000;
export const MAX_QUEUE_SIZE = 1000;
// ========================================
// ENVIRONMENT VARIABLES
// ========================================
export const NODE_ENV = process.env.NODE_ENV || `development`;
export const LOG_LEVEL = process.env.LOG_LEVEL || `info`;
export const PORT = process.env.PORT || `3000`;
export const HOST = process.env.HOST || `localhost`;
export const DATABASE_URL = process.env.DATABASE_URL;
export const REDIS_URL = process.env.REDIS_URL;
export const SESSION_SECRET = process.env.SESSION_SECRET;
export const JWT_SECRET = process.env.JWT_SECRET;
export const GITHUB_CLIENT_ID = process.env.GITHUB_CLIENT_ID;
export const GITHUB_CLIENT_SECRET = process.env.GITHUB_CLIENT_SECRET;
export const RATE_LIMIT_REDIS_URL = process.env.RATE_LIMIT_REDIS_URL;