UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

127 lines 4.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getEnvFilePaths = getEnvFilePaths; exports.loadEnvFile = loadEnvFile; exports.loadEnvFiles = loadEnvFiles; exports.loadEnvironmentConfig = loadEnvironmentConfig; exports.extractRawConfig = extractRawConfig; exports.validateEnvironment = validateEnvironment; exports.parseBoolean = parseBoolean; exports.parseInteger = parseInteger; exports.parseUrl = parseUrl; exports.findConfigFile = findConfigFile; const dotenv_1 = require("dotenv"); const fs_1 = require("fs"); const path_1 = require("path"); const config_1 = require("../types/config"); function getEnvFilePaths(environment, options = {}) { const baseDir = options.baseDir || process.cwd(); const files = []; if (options.override && options.additionalFiles) { return options.additionalFiles.map(file => (0, path_1.resolve)(baseDir, file)); } files.push((0, path_1.resolve)(baseDir, config_1.ENV_FILE_PATTERNS.base)); files.push((0, path_1.resolve)(baseDir, config_1.ENV_FILE_PATTERNS.environment(environment))); files.push((0, path_1.resolve)(baseDir, config_1.ENV_FILE_PATTERNS.local)); files.push((0, path_1.resolve)(baseDir, config_1.ENV_FILE_PATTERNS.environmentLocal(environment))); if (options.additionalFiles) { files.push(...options.additionalFiles.map(file => (0, path_1.resolve)(baseDir, file))); } return files; } function loadEnvFile(filePath, override = false) { const result = { path: filePath, loaded: false, }; try { if (!(0, fs_1.existsSync)(filePath)) { return result; } const dotenvResult = (0, dotenv_1.config)({ path: filePath, override }); if (dotenvResult.error) { result.error = dotenvResult.error.message; return result; } result.loaded = true; return result; } catch (error) { result.error = error instanceof Error ? error.message : 'Unknown error occurred'; return result; } } function loadEnvFiles(filePaths, override = false) { return filePaths.map(path => loadEnvFile(path, override)); } function loadEnvironmentConfig(environment, options = {}, override = false) { const filePaths = getEnvFilePaths(environment, options); return loadEnvFiles(filePaths, override); } function extractRawConfig() { return { POLYV_ENVIRONMENT: process.env['POLYV_ENVIRONMENT'], POLYV_DEBUG: process.env['POLYV_DEBUG'], POLYV_TIMEOUT: process.env['POLYV_TIMEOUT'], POLYV_BASE_URL: process.env['POLYV_BASE_URL'], POLYV_MAX_RETRIES: process.env['POLYV_MAX_RETRIES'], POLYV_CONFIG_PATH: process.env['POLYV_CONFIG_PATH'], POLYV_APP_ID: process.env['POLYV_APP_ID'], POLYV_APP_SECRET: process.env['POLYV_APP_SECRET'], POLYV_USER_ID: process.env['POLYV_USER_ID'], }; } function validateEnvironment(env) { if (!env) return undefined; const normalizedEnv = env.toLowerCase().trim(); if (normalizedEnv === 'development' || normalizedEnv === 'dev') { return 'development'; } if (normalizedEnv === 'production' || normalizedEnv === 'prod') { return 'production'; } if (normalizedEnv === 'test') { return 'test'; } return undefined; } function parseBoolean(value, defaultValue = false) { if (!value) return defaultValue; const normalized = value.toLowerCase().trim(); return normalized === 'true' || normalized === '1' || normalized === 'yes' || normalized === 'on'; } function parseInteger(value, defaultValue, min, max) { if (!value) return defaultValue; const parsed = parseInt(value.trim(), 10); if (isNaN(parsed)) return defaultValue; if (min !== undefined && parsed < min) return defaultValue; if (max !== undefined && parsed > max) return defaultValue; return parsed; } function parseUrl(value, defaultValue) { if (!value) return defaultValue; const trimmed = value.trim(); if (!trimmed) return defaultValue; try { new URL(trimmed); return trimmed; } catch { return defaultValue; } } function findConfigFile(configPath, baseDir = process.cwd()) { if (!configPath) return undefined; const resolvedPath = (0, path_1.resolve)(baseDir, configPath); return (0, fs_1.existsSync)(resolvedPath) ? resolvedPath : undefined; } //# sourceMappingURL=loader.js.map