export function interpolateEnvVars(value: unknown, env: Record<string, string | undefined> = process.env): unknown {
  if (typeof value === 'string') {
    return value.replace(/\$\{([a-zA-Z0-9_]+)(?::-([^}]*))?\}/g, (_match, varName, defaultValue) => {
      const val = env[varName];
      if (val !== undefined && val !== '') {
        return val;
      }
      if (defaultValue !== undefined) {
        return defaultValue;
      }
      return '';
    });
  }

  if (Array.isArray(value)) {
    return value.map((item) => interpolateEnvVars(item, env));
  }

  if (value !== null && typeof value === 'object') {
    const result: Record<string, unknown> = {};
    for (const [k, v] of Object.entries(value as Record<string, unknown>)) {
      result[k] = interpolateEnvVars(v, env);
    }
    return result;
  }

  return value;
}

