@owlrelay/api-sdk
Version:
OwlRelay API SDK for JavaScript and TypeScript
1 lines • 7.17 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../src/api.ts","../src/api.models.ts","../src/index.ts"],"sourcesContent":["import { ofetch } from 'ofetch';\nimport { version } from '../package.json';\n\nexport function createApiClient({ apiKey, baseApiUrl }: { apiKey: string; baseApiUrl: string }) {\n const apiClient = ofetch.create({\n headers: {\n 'Authorization': `Bearer ${apiKey}`,\n 'X-OwlRelay-Source': `owlrelay-api-sdk-javascript/${version}`,\n },\n baseURL: baseApiUrl,\n });\n\n return {\n apiClient,\n };\n}\n","export function coerceDate<T extends { createdAt: string; updatedAt: string }>(\n obj: T,\n): T & { createdAt: Date; updatedAt: Date } {\n return {\n ...obj,\n createdAt: new Date(obj.createdAt),\n updatedAt: new Date(obj.updatedAt),\n } as T & { createdAt: Date; updatedAt: Date };\n}\n\nexport function getEmailIdentifier(args: { emailId: string } | { emailAddress: string } | { username: string; domain: string }) {\n if ('emailId' in args) {\n return { emailIdentifier: args.emailId };\n }\n\n if ('emailAddress' in args) {\n return { emailIdentifier: args.emailAddress };\n }\n\n return { emailIdentifier: `${args.username}@${args.domain}` };\n}\n","import { createApiClient } from './api';\nimport { coerceDate, getEmailIdentifier } from './api.models';\n\nexport const OWLRELAY_API_BASE_URL = 'https://api.owlrelay.email';\n\n type AsDto<T> = {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n };\n\nexport type OwlRelayEmail = {\n id: string;\n domain: string;\n username: string;\n webhookUrl: string;\n webhookSecret: string;\n isEnabled: boolean;\n allowedOrigins: string[];\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type OwlRelayEmailProcessing = {\n id: string;\n emailId: string;\n status: string;\n error?: string;\n fromAddress: string;\n subject: string;\n webhookUrl?: string;\n webhookResponseStatusCode?: number;\n\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport function createClient({\n apiKey,\n baseApiUrl = OWLRELAY_API_BASE_URL,\n}: {\n apiKey: string;\n baseApiUrl?: string;\n}) {\n const { apiClient } = createApiClient({ apiKey, baseApiUrl });\n\n const updateEmail = async ({ emailId, ...body }: { emailId: string } & Partial<Omit<OwlRelayEmail, 'id' | 'createdAt' | 'updatedAt'>>): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>(`/api/email-callbacks/${emailId}`, {\n method: 'PUT',\n body,\n });\n\n return coerceDate(emailCallback);\n };\n\n return {\n updateEmail,\n\n enableEmail: async ({ emailId }: { emailId: string }) => {\n return updateEmail({ emailId, isEnabled: true });\n },\n\n disableEmail: async ({ emailId }: { emailId: string }) => {\n return updateEmail({ emailId, isEnabled: false });\n },\n\n getEmails: async (): Promise<OwlRelayEmail[]> => {\n const { emailCallbacks } = await apiClient<{ emailCallbacks: AsDto<OwlRelayEmail>[] }>('/api/email-callbacks', {\n method: 'GET',\n });\n\n return emailCallbacks.map(coerceDate);\n },\n\n createEmail: async (body: {\n domain?: string;\n username: string;\n webhookUrl: string;\n webhookSecret?: string;\n allowedOrigins?: string[];\n }): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>('/api/email-callbacks', {\n method: 'POST',\n body,\n });\n\n return coerceDate(emailCallback);\n },\n\n deleteEmail: async (args: { emailId: string } | { emailAddress: string } | { username: string; domain: string }) => {\n const { emailIdentifier } = getEmailIdentifier(args);\n\n await apiClient(`/api/email-callbacks/${emailIdentifier}`, { method: 'DELETE' });\n },\n\n getEmail: async ({ emailId }: { emailId: string }): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>(`/api/email-callbacks/${emailId}`, {\n method: 'GET',\n });\n\n return coerceDate(emailCallback);\n },\n\n getEmailProcessings: async ({ emailId }: { emailId: string }): Promise<OwlRelayEmailProcessing[]> => {\n const { processings } = await apiClient<{ processings: AsDto<OwlRelayEmailProcessing>[] }>(`/api/email-callbacks/${emailId}/processings`, {\n method: 'GET',\n });\n\n return processings.map(coerceDate);\n },\n };\n}\n"],"names":[],"mappings":"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"}