UNPKG

@envkit/nextjs

Version:

Environment variable management for Next.js applications

65 lines 2.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createEnvSchema = createEnvSchema; exports.validateEnv = validateEnv; exports.getMissingEnvVars = getMissingEnvVars; const valibot_1 = require("valibot"); /** * Creates a validation schema for environment variables * @param requiredVars Array of required environment variable names * @param optionalVars Array of optional environment variable names * @returns A Valibot schema for validating environment variables */ function createEnvSchema(requiredVars, optionalVars = []) { // Create schema properties for required variables const requiredProps = requiredVars.reduce((acc, key) => { acc[key] = (0, valibot_1.string)(); return acc; }, {}); // Create schema properties for optional variables const optionalProps = optionalVars.reduce((acc, key) => { acc[key] = (0, valibot_1.optional)((0, valibot_1.string)()); return acc; }, {}); // Combine them into a single schema return (0, valibot_1.object)({ ...requiredProps, ...optionalProps, }); } /** * Validates the environment variables against the schema * @param schema The validation schema * @param env The environment variables to validate * @returns Result object with success flag, parsed values, and missing variables */ function validateEnv(schema, env) { const result = (0, valibot_1.safeParse)(schema, env); const missingVars = []; if (!result.success && result.issues instanceof valibot_1.ValiError) { // Extract the missing variable names from the validation error result.issues.forEach(issue => { if (issue.path && issue.path.length > 0) { const path = issue.path[0]; if (typeof path.key === 'string') { missingVars.push(path.key); } } }); } return { success: result.success, data: result.success ? result.output : null, missingVars, }; } /** * Gets missing environment variables based on required vars * @param requiredVars Array of required environment variable names * @param env The environment variables to check * @returns Array of missing variable names */ function getMissingEnvVars(requiredVars, env) { return requiredVars.filter(key => !env[key]); } //# sourceMappingURL=schema.js.map