UNPKG

@zingersystems/parse-server-api-mail-adapter

Version:

Universal Mail Adapter for Parse Server, supports any email provider REST API, with localization and templates - both built-in and external.

121 lines (98 loc) 4.5 kB
"use strict";function ownKeys(e, r) {var t = Object.keys(e);if (Object.getOwnPropertySymbols) {var o = Object.getOwnPropertySymbols(e);r && (o = o.filter(function (r) {return Object.getOwnPropertyDescriptor(e, r).enumerable;})), t.push.apply(t, o);}return t;}function _objectSpread(e) {for (var r = 1; r < arguments.length; r++) {var t = null != arguments[r] ? arguments[r] : {};r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {_defineProperty(e, r, t[r]);}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));});}return e;}function _defineProperty(e, r, t) {return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e;}function _toPropertyKey(t) {var i = _toPrimitive(t, "string");return "symbol" == typeof i ? i : i + "";}function _toPrimitive(t, r) {if ("object" != typeof t || !t) return t;var e = t[Symbol.toPrimitive];if (void 0 !== e) {var i = e.call(t, r || "default");if ("object" != typeof i) return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return ("string" === r ? String : Number)(t);} /** * @class ApiPayloadConverter * @description Converter of mail payload for various mail provider APIs. */ class ApiPayloadConverter { /** * @description Converts the mail payload for the official Mailgun client. * @param {Object} originalPayload The original payload (provider agnostic). * @returns {Object} The payload according to Mailgun client specification. */ static mailgun(originalPayload) { // Clone payload const payload = Object.assign({}, originalPayload); // Transform reply-to if (payload.replyTo) { payload['h:Reply-To'] = payload.replyTo; delete payload.replyTo; } return payload; } /** * @description Converts the mail payload for the AWS Simple Mail Service (AWS JavaScript SDK v3). * @param {Object} originalPayload The original payload (provider agnostic). * @returns {Object} The payload according to AWS SDK specification. */ static awsSes(originalPayload) { // Clone payload const payload = Object.assign({}, originalPayload); // Transform sender payload.Source = [payload.from]; delete payload.from; // Transform recipient payload.Destination = { ToAddresses: [payload.to] }; delete payload.to; // Transform reply-to if (payload.replyTo) { payload.ReplyToAddresses = [payload.replyTo]; delete payload.replyTo; } // If message has content if (payload.subject || payload.text || payload.html) { // Set default message payload.Message = {}; // Transform subject if (payload.subject) { payload.Message.Subject = { Data: payload.subject, Charset: 'UTF-8' }; delete payload.subject; } // If message has body if (payload.text || payload.html) { // Set default body payload.Message.Body = {}; // Transform plain-text if (payload.text) { payload.Message.Body.Text = { Charset: 'UTF-8', Data: payload.text }; delete payload.text; } // Transform HTML if (payload.html) { payload.Message.Body.Html = { Charset: 'UTF-8', Data: payload.html }; delete payload.html; } } } return payload; } /** * @description Converts the mail payload for the official Sendgrid client. * This is just for a very basic use case and discouraged for use with this version. * @param {Object} originalPayload The original payload (provider agnostic). * @returns {Object} The payload according to Mailgun client specification. */ static sendgrid(originalPayload) { const payload = { to: originalPayload.to, from: originalPayload.from, // Change to your verified sender subject: originalPayload.subject, text: originalPayload.text, html: originalPayload.html, templateId: originalPayload.templateName, dynamicTemplateData: _objectSpread(_objectSpread({}, originalPayload.extra), originalPayload.placeholders) }; return payload; } } module.exports = ApiPayloadConverter; //# sourceMappingURL=ApiPayloadConverter.js.map