@robinpath/mailchimp
Advanced tools
+15
-3
| { | ||
| "name": "@robinpath/mailchimp", | ||
| "version": "0.1.1", | ||
| "version": "0.1.2", | ||
| "publishConfig": { | ||
@@ -23,8 +23,20 @@ "access": "public" | ||
| "peerDependencies": { | ||
| "@wiredwp/robinpath": ">=0.20.0" | ||
| "@robinpath/core": ">=0.20.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@wiredwp/robinpath": "^0.30.1", | ||
| "@robinpath/core": "^0.30.1", | ||
| "typescript": "^5.6.0" | ||
| }, | ||
| "description": "Mailchimp module for RobinPath.", | ||
| "keywords": [ | ||
| "mailchimp", | ||
| "email marketing" | ||
| ], | ||
| "license": "MIT", | ||
| "robinpath": { | ||
| "category": "email-marketing", | ||
| "type": "integration", | ||
| "auth": "api-key", | ||
| "functionCount": 25 | ||
| } | ||
| } |
| import type { ModuleAdapter } from "@wiredwp/robinpath"; | ||
| declare const MailchimpModule: ModuleAdapter; | ||
| export default MailchimpModule; | ||
| export { MailchimpModule }; | ||
| export { MailchimpFunctions, MailchimpFunctionMetadata, MailchimpModuleMetadata } from "./mailchimp.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,QAAA,MAAM,eAAe,EAAE,aAMtB,CAAC;AAEF,eAAe,eAAe,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"} |
| import { MailchimpFunctions, MailchimpFunctionMetadata, MailchimpModuleMetadata } from "./mailchimp.js"; | ||
| const MailchimpModule = { | ||
| name: "mailchimp", | ||
| functions: MailchimpFunctions, | ||
| functionMetadata: MailchimpFunctionMetadata, | ||
| moduleMetadata: MailchimpModuleMetadata, | ||
| global: false, | ||
| }; // as ModuleAdapter | ||
| export default MailchimpModule; | ||
| export { MailchimpModule }; | ||
| export { MailchimpFunctions, MailchimpFunctionMetadata, MailchimpModuleMetadata } from "./mailchimp.js"; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAExG,MAAM,eAAe,GAAkB;IACrC,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,kBAAkB;IAC7B,gBAAgB,EAAE,yBAAgC;IAClD,cAAc,EAAE,uBAA8B;IAC9C,MAAM,EAAE,KAAK;CACd,CAAC,CAAC,mBAAmB;AAEtB,eAAe,eAAe,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"} |
| import type { BuiltinHandler } from "@wiredwp/robinpath"; | ||
| export declare const MailchimpFunctions: Record<string, BuiltinHandler>; | ||
| export declare const MailchimpFunctionMetadata: { | ||
| setCredentials: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| getLists: { | ||
| description: string; | ||
| parameters: never[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| getList: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| createList: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| deleteList: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| getMembers: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| getMember: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| addMember: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| updateMember: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| removeMember: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| addTag: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| removeTag: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| getCampaigns: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| getCampaign: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| createCampaign: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| updateCampaign: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| deleteCampaign: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| sendCampaign: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| scheduleCampaign: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| getCampaignContent: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| setCampaignContent: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| getTemplates: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| getTemplate: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| searchMembers: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| getListActivity: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| }; | ||
| export declare const MailchimpModuleMetadata: { | ||
| description: string; | ||
| methods: string[]; | ||
| category: string; | ||
| }; | ||
| //# sourceMappingURL=mailchimp.d.ts.map |
| {"version":3,"file":"mailchimp.d.ts","sourceRoot":"","sources":["../src/mailchimp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AAkYlG,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CA0B7D,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgMrC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;CAInC,CAAC"} |
| // ── Internal State ────────────────────────────────────────────────── | ||
| let storedApiKey = ""; | ||
| let storedServerPrefix = ""; | ||
| function getBaseUrl() { | ||
| if (!storedServerPrefix) | ||
| throw new Error("Mailchimp server prefix not set. Call mailchimp.setCredentials first."); | ||
| return `https://${storedServerPrefix}.api.mailchimp.com/3.0`; | ||
| } | ||
| function getAuthHeaders() { | ||
| if (!storedApiKey) | ||
| throw new Error("Mailchimp API key not set. Call mailchimp.setCredentials first."); | ||
| const encoded = Buffer.from(`anystring:${storedApiKey}`).toString("base64"); | ||
| return { | ||
| Authorization: `Basic ${encoded}`, | ||
| "Content-Type": "application/json", | ||
| }; | ||
| } | ||
| async function mcFetch(path, options = {}) { | ||
| const url = `${getBaseUrl()}${path}`; | ||
| const headers = getAuthHeaders(); | ||
| const res = await fetch(url, { | ||
| ...options, | ||
| headers: { ...headers, ...(options.headers ?? {}) }, | ||
| }); | ||
| const text = await res.text(); | ||
| let data; | ||
| try { | ||
| data = JSON.parse(text); | ||
| } | ||
| catch { | ||
| data = text; | ||
| } | ||
| if (!res.ok) { | ||
| const detail = typeof data === "object" && data !== null && "detail" in data ? data.detail : text; | ||
| throw new Error(`Mailchimp API error ${res.status}: ${detail}`); | ||
| } | ||
| return data; | ||
| } | ||
| function md5(input) { | ||
| // Simple MD5 implementation for email hashing | ||
| const crypto = require("crypto"); | ||
| return crypto.createHash("md5").update(input).digest("hex"); | ||
| } | ||
| function emailHash(email) { | ||
| return md5(email.toLowerCase().trim()); | ||
| } | ||
| // ── Function Handlers ─────────────────────────────────────────────── | ||
| const setCredentials = (args) => { | ||
| const apiKey = String(args[0] ?? ""); | ||
| const serverPrefix = String(args[1] ?? ""); | ||
| if (!apiKey) | ||
| throw new Error("API key is required."); | ||
| if (!serverPrefix) | ||
| throw new Error("Server prefix is required (e.g. 'us21')."); | ||
| storedApiKey = apiKey; | ||
| storedServerPrefix = serverPrefix; | ||
| return { configured: true, serverPrefix }; | ||
| }; | ||
| const getLists = async () => { | ||
| const data = await mcFetch("/lists"); | ||
| return data; | ||
| }; | ||
| const getList = async (args) => { | ||
| const listId = String(args[0] ?? ""); | ||
| if (!listId) | ||
| throw new Error("listId is required."); | ||
| const data = await mcFetch(`/lists/${listId}`); | ||
| return data; | ||
| }; | ||
| const createList = async (args) => { | ||
| const name = String(args[0] ?? ""); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| if (!name) | ||
| throw new Error("List name is required."); | ||
| const body = { | ||
| name, | ||
| permission_reminder: opts.permissionReminder ?? opts.permission_reminder ?? "You signed up for updates.", | ||
| contact: opts.contact ?? { | ||
| company: opts.company ?? "", | ||
| address1: opts.address1 ?? "", | ||
| city: opts.city ?? "", | ||
| state: opts.state ?? "", | ||
| zip: opts.zip ?? "", | ||
| country: opts.country ?? "US", | ||
| }, | ||
| campaign_defaults: opts.campaignDefaults ?? opts.campaign_defaults ?? { | ||
| from_name: opts.fromName ?? opts.from_name ?? "", | ||
| from_email: opts.fromEmail ?? opts.from_email ?? "", | ||
| subject: opts.subject ?? "", | ||
| language: opts.language ?? "en", | ||
| }, | ||
| email_type_option: opts.emailTypeOption ?? opts.email_type_option ?? true, | ||
| }; | ||
| const data = await mcFetch("/lists", { | ||
| method: "POST", | ||
| body: JSON.stringify(body), | ||
| }); | ||
| return data; | ||
| }; | ||
| const deleteList = async (args) => { | ||
| const listId = String(args[0] ?? ""); | ||
| if (!listId) | ||
| throw new Error("listId is required."); | ||
| await mcFetch(`/lists/${listId}`, { method: "DELETE" }); | ||
| return { deleted: true, listId }; | ||
| }; | ||
| const getMembers = async (args) => { | ||
| const listId = String(args[0] ?? ""); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| if (!listId) | ||
| throw new Error("listId is required."); | ||
| const params = new URLSearchParams(); | ||
| if (opts.status) | ||
| params.set("status", String(opts.status)); | ||
| if (opts.count) | ||
| params.set("count", String(opts.count)); | ||
| if (opts.offset) | ||
| params.set("offset", String(opts.offset)); | ||
| const qs = params.toString(); | ||
| const data = await mcFetch(`/lists/${listId}/members${qs ? `?${qs}` : ""}`); | ||
| return data; | ||
| }; | ||
| const getMember = async (args) => { | ||
| const listId = String(args[0] ?? ""); | ||
| const email = String(args[1] ?? ""); | ||
| if (!listId) | ||
| throw new Error("listId is required."); | ||
| if (!email) | ||
| throw new Error("email is required."); | ||
| const hash = emailHash(email); | ||
| const data = await mcFetch(`/lists/${listId}/members/${hash}`); | ||
| return data; | ||
| }; | ||
| const addMember = async (args) => { | ||
| const listId = String(args[0] ?? ""); | ||
| const email = String(args[1] ?? ""); | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| if (!listId) | ||
| throw new Error("listId is required."); | ||
| if (!email) | ||
| throw new Error("email is required."); | ||
| const body = { | ||
| email_address: email, | ||
| status: opts.status ?? "subscribed", | ||
| }; | ||
| if (opts.mergeFields ?? opts.merge_fields) | ||
| body.merge_fields = opts.mergeFields ?? opts.merge_fields; | ||
| if (opts.tags) | ||
| body.tags = opts.tags; | ||
| if (opts.language) | ||
| body.language = opts.language; | ||
| if (opts.vip !== undefined) | ||
| body.vip = opts.vip; | ||
| const data = await mcFetch(`/lists/${listId}/members`, { | ||
| method: "POST", | ||
| body: JSON.stringify(body), | ||
| }); | ||
| return data; | ||
| }; | ||
| const updateMember = async (args) => { | ||
| const listId = String(args[0] ?? ""); | ||
| const email = String(args[1] ?? ""); | ||
| const fields = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| if (!listId) | ||
| throw new Error("listId is required."); | ||
| if (!email) | ||
| throw new Error("email is required."); | ||
| const hash = emailHash(email); | ||
| const body = {}; | ||
| if (fields.status) | ||
| body.status = fields.status; | ||
| if (fields.mergeFields ?? fields.merge_fields) | ||
| body.merge_fields = fields.mergeFields ?? fields.merge_fields; | ||
| if (fields.language) | ||
| body.language = fields.language; | ||
| if (fields.vip !== undefined) | ||
| body.vip = fields.vip; | ||
| if (fields.emailAddress ?? fields.email_address) | ||
| body.email_address = fields.emailAddress ?? fields.email_address; | ||
| const data = await mcFetch(`/lists/${listId}/members/${hash}`, { | ||
| method: "PATCH", | ||
| body: JSON.stringify(body), | ||
| }); | ||
| return data; | ||
| }; | ||
| const removeMember = async (args) => { | ||
| const listId = String(args[0] ?? ""); | ||
| const email = String(args[1] ?? ""); | ||
| if (!listId) | ||
| throw new Error("listId is required."); | ||
| if (!email) | ||
| throw new Error("email is required."); | ||
| const hash = emailHash(email); | ||
| await mcFetch(`/lists/${listId}/members/${hash}`, { method: "DELETE" }); | ||
| return { archived: true, email }; | ||
| }; | ||
| const addTag = async (args) => { | ||
| const listId = String(args[0] ?? ""); | ||
| const email = String(args[1] ?? ""); | ||
| const tags = args[2]; | ||
| if (!listId) | ||
| throw new Error("listId is required."); | ||
| if (!email) | ||
| throw new Error("email is required."); | ||
| if (!tags) | ||
| throw new Error("tags are required."); | ||
| const tagArray = Array.isArray(tags) ? tags : [tags]; | ||
| const body = { | ||
| tags: tagArray.map((t) => ({ name: String(t), status: "active" })), | ||
| }; | ||
| const hash = emailHash(email); | ||
| const data = await mcFetch(`/lists/${listId}/members/${hash}/tags`, { | ||
| method: "POST", | ||
| body: JSON.stringify(body), | ||
| }); | ||
| return data ?? { tagged: true, email, tags: tagArray }; | ||
| }; | ||
| const removeTag = async (args) => { | ||
| const listId = String(args[0] ?? ""); | ||
| const email = String(args[1] ?? ""); | ||
| const tags = args[2]; | ||
| if (!listId) | ||
| throw new Error("listId is required."); | ||
| if (!email) | ||
| throw new Error("email is required."); | ||
| if (!tags) | ||
| throw new Error("tags are required."); | ||
| const tagArray = Array.isArray(tags) ? tags : [tags]; | ||
| const body = { | ||
| tags: tagArray.map((t) => ({ name: String(t), status: "inactive" })), | ||
| }; | ||
| const hash = emailHash(email); | ||
| const data = await mcFetch(`/lists/${listId}/members/${hash}/tags`, { | ||
| method: "POST", | ||
| body: JSON.stringify(body), | ||
| }); | ||
| return data ?? { untagged: true, email, tags: tagArray }; | ||
| }; | ||
| const getCampaigns = async (args) => { | ||
| const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {}); | ||
| const params = new URLSearchParams(); | ||
| if (opts.status) | ||
| params.set("status", String(opts.status)); | ||
| if (opts.type) | ||
| params.set("type", String(opts.type)); | ||
| if (opts.count) | ||
| params.set("count", String(opts.count)); | ||
| if (opts.offset) | ||
| params.set("offset", String(opts.offset)); | ||
| const qs = params.toString(); | ||
| const data = await mcFetch(`/campaigns${qs ? `?${qs}` : ""}`); | ||
| return data; | ||
| }; | ||
| const getCampaign = async (args) => { | ||
| const campaignId = String(args[0] ?? ""); | ||
| if (!campaignId) | ||
| throw new Error("campaignId is required."); | ||
| const data = await mcFetch(`/campaigns/${campaignId}`); | ||
| return data; | ||
| }; | ||
| const createCampaign = async (args) => { | ||
| const type = String(args[0] ?? "regular"); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| const body = { type }; | ||
| if (opts.recipients) | ||
| body.recipients = opts.recipients; | ||
| if (opts.settings) | ||
| body.settings = opts.settings; | ||
| if (opts.tracking) | ||
| body.tracking = opts.tracking; | ||
| const data = await mcFetch("/campaigns", { | ||
| method: "POST", | ||
| body: JSON.stringify(body), | ||
| }); | ||
| return data; | ||
| }; | ||
| const updateCampaign = async (args) => { | ||
| const campaignId = String(args[0] ?? ""); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| if (!campaignId) | ||
| throw new Error("campaignId is required."); | ||
| const body = {}; | ||
| if (opts.recipients) | ||
| body.recipients = opts.recipients; | ||
| if (opts.settings) | ||
| body.settings = opts.settings; | ||
| if (opts.tracking) | ||
| body.tracking = opts.tracking; | ||
| const data = await mcFetch(`/campaigns/${campaignId}`, { | ||
| method: "PATCH", | ||
| body: JSON.stringify(body), | ||
| }); | ||
| return data; | ||
| }; | ||
| const deleteCampaign = async (args) => { | ||
| const campaignId = String(args[0] ?? ""); | ||
| if (!campaignId) | ||
| throw new Error("campaignId is required."); | ||
| await mcFetch(`/campaigns/${campaignId}`, { method: "DELETE" }); | ||
| return { deleted: true, campaignId }; | ||
| }; | ||
| const sendCampaign = async (args) => { | ||
| const campaignId = String(args[0] ?? ""); | ||
| if (!campaignId) | ||
| throw new Error("campaignId is required."); | ||
| await mcFetch(`/campaigns/${campaignId}/actions/send`, { method: "POST" }); | ||
| return { sent: true, campaignId }; | ||
| }; | ||
| const scheduleCampaign = async (args) => { | ||
| const campaignId = String(args[0] ?? ""); | ||
| const scheduleTime = String(args[1] ?? ""); | ||
| if (!campaignId) | ||
| throw new Error("campaignId is required."); | ||
| if (!scheduleTime) | ||
| throw new Error("scheduleTime is required (ISO 8601 format)."); | ||
| await mcFetch(`/campaigns/${campaignId}/actions/schedule`, { | ||
| method: "POST", | ||
| body: JSON.stringify({ schedule_time: scheduleTime }), | ||
| }); | ||
| return { scheduled: true, campaignId, scheduleTime }; | ||
| }; | ||
| const getCampaignContent = async (args) => { | ||
| const campaignId = String(args[0] ?? ""); | ||
| if (!campaignId) | ||
| throw new Error("campaignId is required."); | ||
| const data = await mcFetch(`/campaigns/${campaignId}/content`); | ||
| return data; | ||
| }; | ||
| const setCampaignContent = async (args) => { | ||
| const campaignId = String(args[0] ?? ""); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| if (!campaignId) | ||
| throw new Error("campaignId is required."); | ||
| const body = {}; | ||
| if (opts.html) | ||
| body.html = opts.html; | ||
| if (opts.plain_text ?? opts.plainText) | ||
| body.plain_text = opts.plain_text ?? opts.plainText; | ||
| if (opts.template) | ||
| body.template = opts.template; | ||
| const data = await mcFetch(`/campaigns/${campaignId}/content`, { | ||
| method: "PUT", | ||
| body: JSON.stringify(body), | ||
| }); | ||
| return data; | ||
| }; | ||
| const getTemplates = async (args) => { | ||
| const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {}); | ||
| const params = new URLSearchParams(); | ||
| if (opts.count) | ||
| params.set("count", String(opts.count)); | ||
| if (opts.offset) | ||
| params.set("offset", String(opts.offset)); | ||
| if (opts.type) | ||
| params.set("type", String(opts.type)); | ||
| const qs = params.toString(); | ||
| const data = await mcFetch(`/templates${qs ? `?${qs}` : ""}`); | ||
| return data; | ||
| }; | ||
| const getTemplate = async (args) => { | ||
| const templateId = String(args[0] ?? ""); | ||
| if (!templateId) | ||
| throw new Error("templateId is required."); | ||
| const data = await mcFetch(`/templates/${templateId}`); | ||
| return data; | ||
| }; | ||
| const searchMembers = async (args) => { | ||
| const query = String(args[0] ?? ""); | ||
| const listId = args[1] != null ? String(args[1]) : undefined; | ||
| if (!query) | ||
| throw new Error("query is required."); | ||
| const params = new URLSearchParams(); | ||
| params.set("query", query); | ||
| if (listId) | ||
| params.set("list_id", listId); | ||
| const data = await mcFetch(`/search-members?${params.toString()}`); | ||
| return data; | ||
| }; | ||
| const getListActivity = async (args) => { | ||
| const listId = String(args[0] ?? ""); | ||
| if (!listId) | ||
| throw new Error("listId is required."); | ||
| const data = await mcFetch(`/lists/${listId}/activity`); | ||
| return data; | ||
| }; | ||
| // ── Exports ───────────────────────────────────────────────────────── | ||
| export const MailchimpFunctions = { | ||
| setCredentials, | ||
| getLists, | ||
| getList, | ||
| createList, | ||
| deleteList, | ||
| getMembers, | ||
| getMember, | ||
| addMember, | ||
| updateMember, | ||
| removeMember, | ||
| addTag, | ||
| removeTag, | ||
| getCampaigns, | ||
| getCampaign, | ||
| createCampaign, | ||
| updateCampaign, | ||
| deleteCampaign, | ||
| sendCampaign, | ||
| scheduleCampaign, | ||
| getCampaignContent, | ||
| setCampaignContent, | ||
| getTemplates, | ||
| getTemplate, | ||
| searchMembers, | ||
| getListActivity, | ||
| }; | ||
| export const MailchimpFunctionMetadata = { | ||
| setCredentials: { | ||
| description: "Store Mailchimp API key and server prefix for authentication", | ||
| parameters: [ | ||
| { name: "apiKey", dataType: "string", description: "Mailchimp API key", formInputType: "text", required: true }, | ||
| { name: "serverPrefix", dataType: "string", description: "Server prefix (e.g. 'us21')", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "{configured, serverPrefix}", example: 'mailchimp.setCredentials "abc123-us21" "us21"', | ||
| }, | ||
| getLists: { | ||
| description: "Get all audiences/lists in the account", | ||
| parameters: [], | ||
| returnType: "object", returnDescription: "Lists response with items and total count", example: "mailchimp.getLists", | ||
| }, | ||
| getList: { | ||
| description: "Get details for a specific audience/list", | ||
| parameters: [ | ||
| { name: "listId", dataType: "string", description: "The list/audience ID", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "List details object", example: 'mailchimp.getList "abc123"', | ||
| }, | ||
| createList: { | ||
| description: "Create a new audience/list with contact info and campaign defaults", | ||
| parameters: [ | ||
| { name: "name", dataType: "string", description: "List name", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{contact, campaignDefaults, permissionReminder, emailTypeOption}", formInputType: "json", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "Created list object", example: 'mailchimp.createList "My Newsletter" {"company": "Acme", "fromEmail": "news@acme.com", "fromName": "Acme News"}', | ||
| }, | ||
| deleteList: { | ||
| description: "Delete an audience/list", | ||
| parameters: [ | ||
| { name: "listId", dataType: "string", description: "The list/audience ID to delete", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "{deleted, listId}", example: 'mailchimp.deleteList "abc123"', | ||
| }, | ||
| getMembers: { | ||
| description: "Get members of an audience/list with optional filtering", | ||
| parameters: [ | ||
| { name: "listId", dataType: "string", description: "The list/audience ID", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{status, count, offset}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "object", returnDescription: "Members response with items and total count", example: 'mailchimp.getMembers "abc123" {"status": "subscribed", "count": 50}', | ||
| }, | ||
| getMember: { | ||
| description: "Get a specific member by email address", | ||
| parameters: [ | ||
| { name: "listId", dataType: "string", description: "The list/audience ID", formInputType: "text", required: true }, | ||
| { name: "email", dataType: "string", description: "Member email address", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "Member details object", example: 'mailchimp.getMember "abc123" "user@example.com"', | ||
| }, | ||
| addMember: { | ||
| description: "Add a new member to an audience/list", | ||
| parameters: [ | ||
| { name: "listId", dataType: "string", description: "The list/audience ID", formInputType: "text", required: true }, | ||
| { name: "email", dataType: "string", description: "Member email address", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{status, mergeFields, tags, language, vip}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "object", returnDescription: "Created member object", example: 'mailchimp.addMember "abc123" "user@example.com" {"status": "subscribed", "mergeFields": {"FNAME": "John"}}', | ||
| }, | ||
| updateMember: { | ||
| description: "Update an existing member's information", | ||
| parameters: [ | ||
| { name: "listId", dataType: "string", description: "The list/audience ID", formInputType: "text", required: true }, | ||
| { name: "email", dataType: "string", description: "Member email address", formInputType: "text", required: true }, | ||
| { name: "fields", dataType: "object", description: "{status, mergeFields, language, vip, emailAddress}", formInputType: "json", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "Updated member object", example: 'mailchimp.updateMember "abc123" "user@example.com" {"mergeFields": {"FNAME": "Jane"}}', | ||
| }, | ||
| removeMember: { | ||
| description: "Archive/remove a member from an audience/list", | ||
| parameters: [ | ||
| { name: "listId", dataType: "string", description: "The list/audience ID", formInputType: "text", required: true }, | ||
| { name: "email", dataType: "string", description: "Member email address to remove", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "{archived, email}", example: 'mailchimp.removeMember "abc123" "user@example.com"', | ||
| }, | ||
| addTag: { | ||
| description: "Add tags to a member in an audience/list", | ||
| parameters: [ | ||
| { name: "listId", dataType: "string", description: "The list/audience ID", formInputType: "text", required: true }, | ||
| { name: "email", dataType: "string", description: "Member email address", formInputType: "text", required: true }, | ||
| { name: "tags", dataType: "array", description: "Tag names to add", formInputType: "json", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "{tagged, email, tags}", example: 'mailchimp.addTag "abc123" "user@example.com" ["vip", "newsletter"]', | ||
| }, | ||
| removeTag: { | ||
| description: "Remove tags from a member in an audience/list", | ||
| parameters: [ | ||
| { name: "listId", dataType: "string", description: "The list/audience ID", formInputType: "text", required: true }, | ||
| { name: "email", dataType: "string", description: "Member email address", formInputType: "text", required: true }, | ||
| { name: "tags", dataType: "array", description: "Tag names to remove", formInputType: "json", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "{untagged, email, tags}", example: 'mailchimp.removeTag "abc123" "user@example.com" ["old-tag"]', | ||
| }, | ||
| getCampaigns: { | ||
| description: "List campaigns with optional filtering", | ||
| parameters: [ | ||
| { name: "options", dataType: "object", description: "{status, type, count, offset}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "object", returnDescription: "Campaigns response with items and total count", example: 'mailchimp.getCampaigns {"status": "sent", "count": 20}', | ||
| }, | ||
| getCampaign: { | ||
| description: "Get details for a specific campaign", | ||
| parameters: [ | ||
| { name: "campaignId", dataType: "string", description: "The campaign ID", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "Campaign details object", example: 'mailchimp.getCampaign "cam123"', | ||
| }, | ||
| createCampaign: { | ||
| description: "Create a new campaign (regular, plaintext, or absplit)", | ||
| parameters: [ | ||
| { name: "type", dataType: "string", description: "Campaign type: regular, plaintext, absplit", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{recipients, settings, tracking}", formInputType: "json", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "Created campaign object", example: 'mailchimp.createCampaign "regular" {"recipients": {"list_id": "abc123"}, "settings": {"subject_line": "Hello", "from_name": "Acme", "reply_to": "news@acme.com"}}', | ||
| }, | ||
| updateCampaign: { | ||
| description: "Update campaign settings", | ||
| parameters: [ | ||
| { name: "campaignId", dataType: "string", description: "The campaign ID", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{recipients, settings, tracking}", formInputType: "json", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "Updated campaign object", example: 'mailchimp.updateCampaign "cam123" {"settings": {"subject_line": "Updated Subject"}}', | ||
| }, | ||
| deleteCampaign: { | ||
| description: "Delete a campaign", | ||
| parameters: [ | ||
| { name: "campaignId", dataType: "string", description: "The campaign ID to delete", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "{deleted, campaignId}", example: 'mailchimp.deleteCampaign "cam123"', | ||
| }, | ||
| sendCampaign: { | ||
| description: "Send a campaign immediately", | ||
| parameters: [ | ||
| { name: "campaignId", dataType: "string", description: "The campaign ID to send", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "{sent, campaignId}", example: 'mailchimp.sendCampaign "cam123"', | ||
| }, | ||
| scheduleCampaign: { | ||
| description: "Schedule a campaign for future delivery", | ||
| parameters: [ | ||
| { name: "campaignId", dataType: "string", description: "The campaign ID to schedule", formInputType: "text", required: true }, | ||
| { name: "scheduleTime", dataType: "string", description: "ISO 8601 datetime for sending", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "{scheduled, campaignId, scheduleTime}", example: 'mailchimp.scheduleCampaign "cam123" "2025-12-25T10:00:00Z"', | ||
| }, | ||
| getCampaignContent: { | ||
| description: "Get the content of a campaign", | ||
| parameters: [ | ||
| { name: "campaignId", dataType: "string", description: "The campaign ID", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "Campaign content with html and plain text", example: 'mailchimp.getCampaignContent "cam123"', | ||
| }, | ||
| setCampaignContent: { | ||
| description: "Set the content of a campaign with HTML or a template", | ||
| parameters: [ | ||
| { name: "campaignId", dataType: "string", description: "The campaign ID", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{html, plainText, template}", formInputType: "json", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "Updated campaign content", example: 'mailchimp.setCampaignContent "cam123" {"html": "<h1>Hello</h1><p>Welcome!</p>"}', | ||
| }, | ||
| getTemplates: { | ||
| description: "List available email templates", | ||
| parameters: [ | ||
| { name: "options", dataType: "object", description: "{count, offset, type}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "object", returnDescription: "Templates response with items and total count", example: 'mailchimp.getTemplates {"count": 20}', | ||
| }, | ||
| getTemplate: { | ||
| description: "Get details for a specific template", | ||
| parameters: [ | ||
| { name: "templateId", dataType: "string", description: "The template ID", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "Template details object", example: 'mailchimp.getTemplate "tmpl123"', | ||
| }, | ||
| searchMembers: { | ||
| description: "Search for members across all lists or a specific list", | ||
| parameters: [ | ||
| { name: "query", dataType: "string", description: "Search query string", formInputType: "text", required: true }, | ||
| { name: "listId", dataType: "string", description: "Optional list ID to limit search", formInputType: "text", required: false }, | ||
| ], | ||
| returnType: "object", returnDescription: "Search results with matching members", example: 'mailchimp.searchMembers "john@example.com"', | ||
| }, | ||
| getListActivity: { | ||
| description: "Get recent activity stats for an audience/list", | ||
| parameters: [ | ||
| { name: "listId", dataType: "string", description: "The list/audience ID", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", returnDescription: "List activity data with daily stats", example: 'mailchimp.getListActivity "abc123"', | ||
| }, | ||
| }; | ||
| export const MailchimpModuleMetadata = { | ||
| description: "Mailchimp Marketing API v3 - manage audiences, members, campaigns, templates, and tags", | ||
| methods: Object.keys(MailchimpFunctions), | ||
| category: "email", | ||
| }; | ||
| //# sourceMappingURL=mailchimp.js.map |
| {"version":3,"file":"mailchimp.js","sourceRoot":"","sources":["../src/mailchimp.ts"],"names":[],"mappings":"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"} |
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
No License Found
LicenseLicense information could not be found.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
0
-100%1
-50%5181
-92.41%2
-80%0
-100%2
100%