feat: init
This commit is contained in:
39
node_modules/nitropack/dist/runtime/internal/utils.env.mjs
generated
vendored
Normal file
39
node_modules/nitropack/dist/runtime/internal/utils.env.mjs
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
import destr from "destr";
|
||||
import { snakeCase } from "scule";
|
||||
export function getEnv(key, opts) {
|
||||
const envKey = snakeCase(key).toUpperCase();
|
||||
return destr(
|
||||
process.env[opts.prefix + envKey] ?? process.env[opts.altPrefix + envKey]
|
||||
);
|
||||
}
|
||||
function _isObject(input) {
|
||||
return typeof input === "object" && !Array.isArray(input);
|
||||
}
|
||||
export function applyEnv(obj, opts, parentKey = "") {
|
||||
for (const key in obj) {
|
||||
const subKey = parentKey ? `${parentKey}_${key}` : key;
|
||||
const envValue = getEnv(subKey, opts);
|
||||
if (_isObject(obj[key])) {
|
||||
if (_isObject(envValue)) {
|
||||
obj[key] = { ...obj[key], ...envValue };
|
||||
applyEnv(obj[key], opts, subKey);
|
||||
} else if (envValue === void 0) {
|
||||
applyEnv(obj[key], opts, subKey);
|
||||
} else {
|
||||
obj[key] = envValue ?? obj[key];
|
||||
}
|
||||
} else {
|
||||
obj[key] = envValue ?? obj[key];
|
||||
}
|
||||
if (opts.envExpansion && typeof obj[key] === "string") {
|
||||
obj[key] = _expandFromEnv(obj[key]);
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
const envExpandRx = /\{\{([^{}]*)\}\}/g;
|
||||
function _expandFromEnv(value) {
|
||||
return value.replace(envExpandRx, (match, key) => {
|
||||
return process.env[key] || match;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user