MCP Svelte Docs Server

by spences10
Verified
  • src
import { Novu } from "@novu/api"; import type { ISubscribersDefine } from "@novu/shared"; import { NovuExecutePayload, NovuResult } from "./novu-types"; export class NovuService { private novu: Novu; constructor(apiKey: string) { this.novu = new Novu({ secretKey: apiKey }); } async execute(payload: NovuExecutePayload): Promise<NovuResult> { try { const { operation, params = {} } = payload; switch (operation) { case "trigger_event": return { success: true, data: await this.novu.trigger({ workflowId: params.name, to: params.to, payload: params.payload, }), }; case "create_subscriber": const subscriber: ISubscribersDefine = { subscriberId: params.subscriberId, email: params.email, firstName: params.firstName, lastName: params.lastName, phone: params.phone, avatar: params.avatar, data: {}, }; return { success: true, data: await this.novu.subscribers.create(subscriber), }; case "delete_subscriber": return { success: true, data: await this.novu.subscribers.delete(params.subscriberId), }; default: return { success: false, error: `Unsupported operation: ${operation}`, }; } } catch (error) { return { success: false, error: error instanceof Error ? error.message : String(error), }; } } }