react-azure-config
Version:
🚀 The Ultimate Multi-App Configuration Library! CRITICAL BUG FIXES: Prefixed environment keys no longer sent to Azure. Complete architectural redesign with bulletproof fallback system. Enterprise-grade Azure integration and monorepo support.
87 lines • 2.56 kB
TypeScript
export interface ConfigurationValue {
[key: string]: unknown;
}
export type TypedConfigurationValue<T = Record<string, unknown>> = {
[K in keyof T]: T[K];
};
export interface AuthenticationConfig {
type: 'servicePrincipal' | 'managedIdentity' | 'azureCli';
tenantId?: string | undefined;
clientId?: string | undefined;
clientSecret?: string | undefined;
}
export interface CacheConfig {
ttl: number;
maxSize: number;
storage: ('memory' | 'localStorage')[];
refreshStrategy?: 'load-once' | 'periodic' | 'on-demand';
refreshInterval?: number;
}
export interface KeyVaultConfig {
enableKeyVaultReferences?: boolean;
secretCacheTtl?: number;
maxRetries?: number;
retryDelayMs?: number;
refreshStrategy?: 'load-once' | 'periodic' | 'on-demand';
refreshInterval?: number;
}
export interface AzureConfigOptions {
endpoint?: string | undefined;
environment: string;
application?: string | undefined;
appId?: string | undefined;
label?: string | undefined;
authentication?: AuthenticationConfig | undefined;
cache?: Partial<CacheConfig>;
enableLocalFallback?: boolean;
sources?: string[];
precedence?: 'first-wins' | 'merge-deep';
configServiceUrl?: string;
useEmbeddedService?: boolean;
port?: number;
keyVault?: KeyVaultConfig;
logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent';
}
export interface ConfigResult<T = ConfigurationValue> {
data: T | null;
loading: boolean;
error: string | null;
source: 'azure' | 'cache' | 'local' | 'environment' | 'api' | null;
lastUpdated: number | null;
refresh: () => Promise<void>;
}
export interface CachedValue<T = unknown> {
value: T;
timestamp: number;
expires: number;
source: string;
}
export interface ConfigSourceHierarchy {
sources: string[];
precedence: 'first-wins' | 'merge-deep';
fallbackEnabled: boolean;
}
export interface ConfigApiResponse<T = unknown> {
success: boolean;
data?: T;
config?: ConfigurationValue;
error?: string;
source?: string;
timestamp: number;
key?: string;
}
export interface HealthCheckResponse {
status: 'healthy' | 'unhealthy' | 'degraded' | 'not-running';
checks?: Record<string, 'healthy' | 'unhealthy' | 'empty'>;
timestamp: number;
error?: string;
}
export interface ServerInfo {
sources: string[];
activeSource: string;
environment: string;
port: number;
uptime: number;
timestamp: number;
}
//# sourceMappingURL=types.d.ts.map