import type { AuthProvider } from '@mondaydotcomorg/atp-protocol'; /** * Environment variable based auth provider * Simple provider that reads credentials from process.env * Good for development and simple deployments */ export class EnvAuthProvider implements AuthProvider { name = 'env'; private prefix: string; private credentials: Map; constructor( options: { prefix?: string; credentials?: Record; } = {} ) { this.prefix = options.prefix || 'ATP_'; this.credentials = new Map(); if (options.credentials) { for (const [key, value] of Object.entries(options.credentials)) { this.credentials.set(key, value); } } } async getCredential(key: string): Promise { if (this.credentials.has(key)) { return this.credentials.get(key) || null; } const envValue = process.env[key] || process.env[`${this.prefix}${key}`]; return envValue || null; } async setCredential(key: string, value: string, _ttl?: number): Promise { this.credentials.set(key, value); } async deleteCredential(key: string): Promise { this.credentials.delete(key); } async listCredentials(): Promise { const keys = new Set(); for (const key of this.credentials.keys()) { keys.add(key); } for (const key of Object.keys(process.env)) { if (key.startsWith(this.prefix)) { keys.add(key.substring(this.prefix.length)); } } return Array.from(keys); } async disconnect(): Promise { this.credentials.clear(); } }