import { createDirectus, rest, authentication, DirectusClient, RestClient, AuthenticationClient, } from "@directus/sdk"; export type MintelDirectusClient = DirectusClient & RestClient & AuthenticationClient; /** * Creates a Directus client configured with Mintel standards */ export function createMintelDirectusClient(url?: string): MintelDirectusClient { const directusUrl = url || process.env.DIRECTUS_URL || "http://localhost:8055"; return createDirectus(directusUrl).with(rest()).with(authentication()); } /** * Ensures the client is authenticated using either a static token or admin credentials */ export async function ensureDirectusAuthenticated( client: MintelDirectusClient, ) { const token = process.env.DIRECTUS_API_TOKEN || process.env.DIRECTUS_TOKEN; const email = process.env.DIRECTUS_ADMIN_EMAIL; const password = process.env.DIRECTUS_ADMIN_PASSWORD; if (token) { client.setToken(token); return; } if (email && password) { try { await client.login({ email, password }); } catch (e) { console.error("Failed to authenticate with Directus:", e); throw e; } } }