UNPKG

@lusc/fastmail-masked-email

Version:

A library for creating, deleting, and updating Fastmail masked emails

41 lines 1.41 kB
import { API_HOSTNAME, JMAP } from './constants.js'; import { httpRequest } from './http.js'; import { sessionResponseSchema } from './schemas.js'; const sessionCache = new Map(); // eslint-disable-next-line n/prefer-global/process const env = typeof process === 'undefined' ? {} : process.env; export async function getSession(apiToken, hostname) { hostname ??= env['JMAP_HOSTNAME'] ?? API_HOSTNAME; apiToken ??= env['JMAP_TOKEN']; if (!apiToken) { throw new Error('No api token provided and JMAP_TOKEN environment variable is not set. Please provide a token.'); } const cached = sessionCache.get(apiToken)?.get(hostname); if (cached) { return cached; } const authUrl = `https://${hostname}/jmap/session`; const headers = { Authorization: `Bearer ${apiToken}`, }; const result = await httpRequest({ url: authUrl, headers, schema: sessionResponseSchema, action: 'getSession', }); const accountId = result.primaryAccounts[JMAP.CORE]; const { apiUrl } = result; const session = { accountId, apiUrl, apiToken, capabilities: Object.keys(result.capabilities), }; if (!sessionCache.has(apiToken)) { sessionCache.set(apiToken, new Map()); } sessionCache.get(apiToken).set(hostname, session); return session; } //# sourceMappingURL=session.js.map