UNPKG

vike

Version:

The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.

38 lines (37 loc) 1.65 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getEnvVarObject = getEnvVarObject; exports.parseJson5 = parseJson5; const picocolors_1 = __importDefault(require("@brillout/picocolors")); const utils_js_1 = require("../utils.js"); const json5_1 = __importDefault(require("json5")); function getEnvVarObject(envVarName) { const valueStr = process.env[envVarName]; if (!valueStr) return null; const value = parseJson5(valueStr, envVarName); (0, utils_js_1.assertUsage)(value, `${envVarName} should define an object but it's ${picocolors_1.default.bold(String(value))} instead.`); (0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(value), `${envVarName} should define an object but it's set to the following which isn't an object: ${picocolors_1.default.bold(valueStr)}`); return value; } function parseJson5(valueStr, what) { let value; try { value = json5_1.default.parse(valueStr); } catch (err) { if (isNotJavaScriptLike(valueStr)) { // Interpret as string return valueStr; } console.error(err); (0, utils_js_1.assertUsage)(false, `Cannot parse ${picocolors_1.default.cyan(what)} (see error above) because it's set to the following which isn't a valid JSON5 string: ${picocolors_1.default.bold(valueStr)}`); } return value; } function isNotJavaScriptLike(valueStr) { return ![':', ',', '{', '}', '(', ')'].some((c) => valueStr.includes(c)); }