polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
127 lines • 4.53 kB
JavaScript
;
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