src / config / Config.ts
import { defaultConfigurationService } from "./ConfigurationService";
export const DEFAULT_HTTP_TIMEOUT = 30.0;
export const DEFAULT_IMAGE_PROVIDER = "duckduckgo";
export const DEFAULT_READ_WEBPAGE_CHUNK_SIZE = 5000;
export const DEFAULT_SEARCH_MAX_SNIPPET_LENGTH = 500;
export const DEFAULT_SEARCH_MAX_PAYLOAD_CHARACTERS = 8000;
/**
* Global application configuration and developer debug flags.
* Purely parses and interprets process.env flags without environment initialization side-effects.
*/
export class Config {
private static debugEnabled: boolean = false;
public static load(): void {
const debug = process.env.DEBUG?.trim().toLowerCase();
const browseDebug = process.env.BROWSE_DEBUG?.trim().toLowerCase();
this.debugEnabled =
debug === "true" ||
debug === "1" ||
browseDebug === "true" ||
browseDebug === "1";
}
public static isDebugEnabled(): boolean {
return this.debugEnabled;
}
public static getProviderKeys(providerName: string): string[] {
return defaultConfigurationService.getProviderKeys(providerName);
}
public static getProviderKey(providerName: string): string {
const keys = this.getProviderKeys(providerName);
return keys.length > 0 ? keys[0] : "";
}
public static getHttpTimeout(): number {
return defaultConfigurationService.getHttpTimeoutSeconds();
}
public static getImageProviderName(): string {
return defaultConfigurationService.getImageDefaultProvider();
}
public static getReadWebpageChunkSize(): number {
return defaultConfigurationService.getReadWebpageChunkSize();
}
public static parseKeys(...envVarNames: string[]): string[] {
for (const name of envVarNames) {
const rawVal = process.env[name];
if (rawVal && rawVal.trim()) {
const keys = rawVal
.split(",")
.map((k) => k.trim())
.filter((k) => k.length > 0);
if (keys.length > 0) {
return keys;
}
}
}
return [];
}
}
Config.load();
src / config / Config.ts
import { defaultConfigurationService } from "./ConfigurationService";
export const DEFAULT_HTTP_TIMEOUT = 30.0;
export const DEFAULT_IMAGE_PROVIDER = "duckduckgo";
export const DEFAULT_READ_WEBPAGE_CHUNK_SIZE = 5000;
export const DEFAULT_SEARCH_MAX_SNIPPET_LENGTH = 500;
export const DEFAULT_SEARCH_MAX_PAYLOAD_CHARACTERS = 8000;
/**
* Global application configuration and developer debug flags.
* Purely parses and interprets process.env flags without environment initialization side-effects.
*/
export class Config {
private static debugEnabled: boolean = false;
public static load(): void {
const debug = process.env.DEBUG?.trim().toLowerCase();
const browseDebug = process.env.BROWSE_DEBUG?.trim().toLowerCase();
this.debugEnabled =
debug === "true" ||
debug === "1" ||
browseDebug === "true" ||
browseDebug === "1";
}
public static isDebugEnabled(): boolean {
return this.debugEnabled;
}
public static getProviderKeys(providerName: string): string[] {
return defaultConfigurationService.getProviderKeys(providerName);
}
public static getProviderKey(providerName: string): string {
const keys = this.getProviderKeys(providerName);
return keys.length > 0 ? keys[0] : "";
}
public static getHttpTimeout(): number {
return defaultConfigurationService.getHttpTimeoutSeconds();
}
public static getImageProviderName(): string {
return defaultConfigurationService.getImageDefaultProvider();
}
public static getReadWebpageChunkSize(): number {
return defaultConfigurationService.getReadWebpageChunkSize();
}
public static parseKeys(...envVarNames: string[]): string[] {
for (const name of envVarNames) {
const rawVal = process.env[name];
if (rawVal && rawVal.trim()) {
const keys = rawVal
.split(",")
.map((k) => k.trim())
.filter((k) => k.length > 0);
if (keys.length > 0) {
return keys;
}
}
}
return [];
}
}
Config.load();