Skip to content

Latest commit

 

History

History
64 lines (44 loc) · 1.67 KB

adapters.md

File metadata and controls

64 lines (44 loc) · 1.67 KB

Chat adapters

The adapters package returns platform-specific payloads for Slack, Discord, GitHub, or generic markdown. Each adapter returns:

  • payload — JSON-ready message body for the platform
  • files — binary attachments (use platform-specific upload APIs)
  • meta — hints for upload behavior (e.g., GitHub upload URL)

You can also use the generic dispatcher:

import { formatForChat } from "@mermkit/adapters";
const result = formatForChat(diagram, "slack", { includeCodeBlock: true });

Slack

import { formatSlackMessage } from "@mermkit/adapters";

const result = formatSlackMessage(diagram, {
  image: { bytes, mime: "image/png", filename: "diagram.png" },
  altText: "Checkout flow",
  title: "Checkout flow"
});

// result.payload => { text, blocks }
// result.files => [{ bytes, mime, filename }]

Slack uses attachment://filename in image blocks. You must upload files separately and pass them alongside the message.

Discord

import { formatDiscordMessage } from "@mermkit/adapters";

const result = formatDiscordMessage(diagram, {
  image: { bytes, mime: "image/png", filename: "diagram.png" }
});

// result.payload => { content, embeds }

GitHub (PR comment)

import { formatGitHubComment } from "@mermkit/adapters";

const result = formatGitHubComment(diagram, {
  image: { bytes, mime: "image/png", filename: "diagram.png" }
});

// result.payload.body contains markdown with an <upload_url> placeholder.
// Use the GitHub uploads API to replace it before posting.

Generic markdown

import { formatGenericMessage } from "@mermkit/adapters";

const result = formatGenericMessage(diagram, { includeCodeBlock: true });