Files
discord-clone/node_modules/nitropack/dist/runtime/config.mjs
2023-01-03 09:29:04 -06:00

41 lines
1.3 KiB
JavaScript

import destr from "destr";
import { snakeCase } from "scule";
const _runtimeConfig = process.env.RUNTIME_CONFIG;
const ENV_PREFIX = "NITRO_";
const ENV_PREFIX_ALT = _runtimeConfig.nitro.envPrefix ?? process.env.NITRO_ENV_PREFIX ?? "_";
const getEnv = (key) => {
const envKey = snakeCase(key).toUpperCase();
return destr(process.env[ENV_PREFIX + envKey] ?? process.env[ENV_PREFIX_ALT + envKey]);
};
function isObject(input) {
return typeof input === "object" && !Array.isArray(input);
}
function overrideConfig(obj, parentKey = "") {
for (const key in obj) {
const subKey = parentKey ? `${parentKey}_${key}` : key;
const envValue = getEnv(subKey);
if (isObject(obj[key])) {
if (isObject(envValue)) {
obj[key] = { ...obj[key], ...envValue };
}
overrideConfig(obj[key], subKey);
} else {
obj[key] = envValue ?? obj[key];
}
}
}
overrideConfig(_runtimeConfig);
const config = deepFreeze(_runtimeConfig);
export const useRuntimeConfig = () => config;
export default config;
function deepFreeze(object) {
const propNames = Object.getOwnPropertyNames(object);
for (const name of propNames) {
const value = object[name];
if (value && typeof value === "object") {
deepFreeze(value);
}
}
return Object.freeze(object);
}