{"_id":"@armco/mesa-sdk","_rev":"3-18eb1af97cb60ce4277e2dc1fd67f795","name":"@armco/mesa-sdk","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.1":{"name":"@armco/mesa-sdk","version":"1.0.1","keywords":["email","sandesh","mesa","armco","smtp","transactional-email","email-api"],"author":{"name":"Armco"},"license":"MIT","_id":"@armco/mesa-sdk@1.0.1","maintainers":[{"name":"mohiit1502","email":"mohiit1502@gmail.com"}],"dist":{"shasum":"5a4c1f767d08995eaae2037022c2960d45394489","tarball":"https://registry.npmjs.org/@armco/mesa-sdk/-/mesa-sdk-1.0.1.tgz","fileCount":6,"integrity":"sha512-ZqN8JKt/ySD+QdmmaqOpaVucX98MTcEHxHstGXnwOo0EIS5gOPASSHNwnRu0gIoUvc27s5Cw+PD4xk+hQhTaOA==","signatures":[{"sig":"MEUCIDryK8UCbzez4FAw01Yl9O58VYs2sXZfsW0or9Svtg5gAiEAniWQ/MHOhpYCJtk4TzNhdQ0wtOiUYfK7ZjQs3rcXjBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35799},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"850899149f7c487db9f09a4bbc76fb1d4a8b4750","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup src/index.ts --format cjs,esm --dts","publish:sh":"./publish.sh","prepublishOnly":"npm run build","publish:sh:minor":"./publish.sh minor"},"_npmUser":{"name":"mohiit1502","email":"mohiit1502@gmail.com"},"repository":{"url":"https://gitea.armco.dev/Restruct-Corporate-Advantage/mesa-client-sdk","type":"git"},"_npmVersion":"11.6.1","description":"Official Node.js SDK for Sandesh/Mesa Email Platform","directories":{},"_nodeVersion":"24.11.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.1.0","typescript":"^5.3.3","@types/node":"^20.10.6"},"_npmOperationalInternal":{"tmp":"tmp/mesa-sdk_1.0.1_1767815479110_0.3811516707852949","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@armco/mesa-sdk","version":"1.0.2","keywords":["email","sandesh","mesa","armco","smtp","transactional-email","email-api"],"author":{"name":"Armco"},"license":"MIT","_id":"@armco/mesa-sdk@1.0.2","maintainers":[{"name":"mohiit1502","email":"mohiit1502@gmail.com"}],"dist":{"shasum":"8bfe9647e3e86c8def9718d5fed0e0c846bbbd7a","tarball":"https://registry.npmjs.org/@armco/mesa-sdk/-/mesa-sdk-1.0.2.tgz","fileCount":6,"integrity":"sha512-xPN8Yuf7vPIHY1yAqaqFiBoao0QM/j0ub/nWxCJJ0u/A5xNFUZLb5xK3FkmS56LKgKXU2+8LVGhfq6pQj1AlOA==","signatures":[{"sig":"MEUCIQDc1Jy5ylBeBc9k6Ys1OBzWzTIu4z3/Y9w6ggAowFum+QIgfkN8IoXGjuX+CpzZ7oMtNjgFPBllGIcrf8Fu2QBVtdY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35775},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"05777555af6ac9b91da79eec90cf646f7fad3fc8","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup src/index.ts --format cjs,esm --dts","publish:sh":"./publish.sh","prepublishOnly":"npm run build","publish:sh:minor":"./publish.sh minor"},"_npmUser":{"name":"mohiit1502","email":"mohiit1502@gmail.com"},"repository":{"url":"https://gitea.armco.dev/Restruct-Corporate-Advantage/mesa-client-sdk","type":"git"},"_npmVersion":"11.6.1","description":"Official Node.js SDK for Sandesh/Mesa Email Platform","directories":{},"_nodeVersion":"24.11.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.1.0","typescript":"^5.3.3","@types/node":"^20.10.6"},"_npmOperationalInternal":{"tmp":"tmp/mesa-sdk_1.0.2_1767818450265_0.3719679858279288","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@armco/mesa-sdk","version":"1.0.3","description":"Official Node.js SDK for Sandesh/Mesa Email Platform","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts","dev":"tsup src/index.ts --format cjs,esm --dts --watch","test":"vitest","lint":"eslint src --ext .ts","prepublishOnly":"npm run build","publish:sh":"./publish.sh","publish:sh:minor":"./publish.sh minor"},"keywords":["email","sandesh","mesa","armco","smtp","transactional-email","email-api"],"author":{"name":"Armco"},"license":"MIT","repository":{"type":"git","url":"https://gitea.armco.dev/Restruct-Corporate-Advantage/mesa-client-sdk"},"dependencies":{},"devDependencies":{"@types/node":"^20.10.6","tsup":"^8.0.1","typescript":"^5.3.3","vitest":"^1.1.0"},"engines":{"node":">=18.0.0"},"gitHead":"5b9720eb415583d8af562bf27fdbb40dcfc94eb1","_id":"@armco/mesa-sdk@1.0.3","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-noYbF86mO7C2SRlkBj/8B3Yu89IQiqx5kYBwfxM2d4az3DyNTd4ipyyqP7Dqd6t6qCbm610Bv33GaLKJecf66w==","shasum":"cc1154e026fae89e8edcdfefb7f215098fd7e598","tarball":"https://registry.npmjs.org/@armco/mesa-sdk/-/mesa-sdk-1.0.3.tgz","fileCount":6,"unpackedSize":35778,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID8/6B7IK9cI/68ITGm1YUts7YN65lvikDZvHSXz4wm7AiBSAHFwNWb6dT1ggn578I12ix+ZUTGakzmAVf/EAI+DDA=="}]},"_npmUser":{"name":"mohiit1502","email":"mohiit1502@gmail.com"},"directories":{},"maintainers":[{"name":"mohiit1502","email":"mohiit1502@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mesa-sdk_1.0.3_1767904312927_0.8305887324012666"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-07T19:51:18.934Z","modified":"2026-01-08T20:31:53.563Z","1.0.1":"2026-01-07T19:51:19.297Z","1.0.2":"2026-01-07T20:40:50.413Z","1.0.3":"2026-01-08T20:31:53.067Z"},"author":{"name":"Armco"},"license":"MIT","keywords":["email","sandesh","mesa","armco","smtp","transactional-email","email-api"],"repository":{"type":"git","url":"https://gitea.armco.dev/Restruct-Corporate-Advantage/mesa-client-sdk"},"description":"Official Node.js SDK for Sandesh/Mesa Email Platform","maintainers":[{"name":"mohiit1502","email":"mohiit1502@gmail.com"}],"readme":"# @armco/mesa-sdk\n\nOfficial Node.js SDK for the Mesa/Sandesh Email Platform.\n\n## Installation\n\n```bash\nnpm install @armco/mesa-sdk\n# or\nyarn add @armco/mesa-sdk\n# or\npnpm add @armco/mesa-sdk\n```\n\n## Quick Start\n\n```typescript\nimport { MesaClient } from '@armco/mesa-sdk';\n\nconst mesa = new MesaClient({\n  apiKey: process.env.MESA_API_KEY!,\n});\n\nawait mesa.send({\n  from: { email: 'noreply@example.com', name: 'My App' },\n  to: 'user@example.com',\n  subject: 'Welcome!',\n  html: '<h1>Hello World</h1>',\n});\n```\n\n## Configuration\n\n### Basic Configuration\n\n```typescript\nconst mesa = new MesaClient({\n  apiKey: 'your-api-key',           // Required\n  baseUrl: 'https://custom.api.url', // Optional (default: https://mesa.armco.dev)\n  timeout: 30000,                    // Optional (default: 30000ms)\n  retries: 3,                        // Optional (default: 3)\n});\n```\n\n### Mail Configuration\n\nThe `mailConfig` object allows you to set default email settings. **This is a flexible JSON config** - new settings added to Sandesh can be passed here without SDK updates.\n\n```typescript\nconst mesa = new MesaClient({\n  apiKey: process.env.MESA_API_KEY!,\n  mailConfig: {\n    // Core settings (typed)\n    defaultFrom: { email: 'noreply@example.com', name: 'My App' },\n    defaultReplyTo: { email: 'support@example.com' },\n    trackClicks: true,\n    trackOpens: true,\n    trackingDomain: 'track.example.com',\n    defaultTags: ['transactional'],\n    sandbox: false,\n    ipPool: 'dedicated-pool',\n    sendTimeOptimization: true,\n\n    // Any additional config fields (forward compatible)\n    customField: 'value',\n    newFeatureFlag: true,\n  },\n});\n```\n\n#### Available Mail Config Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `defaultFrom` | `EmailAddress` | - | Default sender address |\n| `defaultReplyTo` | `EmailAddress` | - | Default reply-to address |\n| `trackClicks` | `boolean` | `true` | Enable click tracking |\n| `trackOpens` | `boolean` | `true` | Enable open tracking |\n| `trackingDomain` | `string` | - | Custom tracking domain |\n| `defaultTags` | `string[]` | - | Tags applied to all emails |\n| `sandbox` | `boolean` | `false` | Sandbox mode (emails logged, not sent) |\n| `ipPool` | `string` | - | Dedicated IP pool name |\n| `sendTimeOptimization` | `boolean` | `false` | AI-powered send time optimization |\n| `[key: string]` | `unknown` | - | Any additional config for future features |\n\n## Sending Emails\n\n### Basic Send\n\n```typescript\nconst response = await mesa.send({\n  to: 'user@example.com',\n  subject: 'Hello',\n  html: '<p>Welcome to our platform!</p>',\n  text: 'Welcome to our platform!',\n});\n\nconsole.log('Email queued:', response.id);\n```\n\n### Multiple Recipients\n\n```typescript\nawait mesa.send({\n  to: [\n    { email: 'user1@example.com', name: 'User One' },\n    { email: 'user2@example.com', name: 'User Two' },\n  ],\n  cc: 'manager@example.com',\n  bcc: ['audit@example.com'],\n  subject: 'Team Update',\n  html: '<p>Important announcement...</p>',\n});\n```\n\n### Using Templates\n\n```typescript\nawait mesa.send({\n  to: 'user@example.com',\n  subject: 'Order Confirmation',\n  templateId: 'order-confirmation',\n  templateData: {\n    orderNumber: 'ORD-12345',\n    items: [\n      { name: 'Widget', quantity: 2, price: 29.99 },\n    ],\n    total: 59.98,\n  },\n});\n```\n\n### With Attachments\n\n```typescript\nimport { readFileSync } from 'fs';\n\nawait mesa.send({\n  to: 'user@example.com',\n  subject: 'Your Invoice',\n  html: '<p>Please find your invoice attached.</p>',\n  attachments: [\n    {\n      filename: 'invoice.pdf',\n      content: readFileSync('./invoice.pdf').toString('base64'),\n      contentType: 'application/pdf',\n    },\n  ],\n});\n```\n\n### Scheduled Send\n\n```typescript\nawait mesa.send({\n  to: 'user@example.com',\n  subject: 'Reminder',\n  html: '<p>Don\\'t forget about your appointment!</p>',\n  scheduledAt: '2024-01-15T09:00:00Z',\n});\n```\n\n### Override Tracking per Email\n\n```typescript\nawait mesa.send({\n  to: 'user@example.com',\n  subject: 'Sensitive Information',\n  html: '<p>Your password reset link...</p>',\n  tracking: {\n    clicks: false,  // Disable click tracking for this email\n    opens: false,   // Disable open tracking for this email\n  },\n});\n```\n\n## Batch Sending\n\n```typescript\nconst responses = await mesa.sendBatch([\n  { to: 'user1@example.com', subject: 'Hello User 1', html: '...' },\n  { to: 'user2@example.com', subject: 'Hello User 2', html: '...' },\n  { to: 'user3@example.com', subject: 'Hello User 3', html: '...' },\n]);\n\nresponses.forEach((res) => console.log('Sent:', res.id));\n```\n\n## Check Email Status\n\n```typescript\nconst status = await mesa.getStatus('email-id-here');\nconsole.log(status);\n```\n\n## Webhook Handling\n\n### Verify Webhook Signature\n\n```typescript\nimport express from 'express';\n\nconst app = express();\n\napp.post('/webhooks/mesa', express.raw({ type: 'application/json' }), (req, res) => {\n  const signature = req.headers['x-mesa-signature'] as string;\n  const payload = req.body.toString();\n\n  if (!mesa.verifyWebhook(payload, signature, process.env.WEBHOOK_SECRET!)) {\n    return res.status(401).send('Invalid signature');\n  }\n\n  const event = mesa.parseWebhook(payload);\n\n  switch (event.event) {\n    case 'email.delivered':\n      console.log('Email delivered:', event.messageId);\n      break;\n    case 'email.bounced':\n      console.log('Email bounced:', event.messageId, event.data);\n      break;\n    case 'email.opened':\n      console.log('Email opened:', event.messageId);\n      break;\n    case 'email.clicked':\n      console.log('Link clicked:', event.data.url);\n      break;\n  }\n\n  res.status(200).send('OK');\n});\n```\n\n## Runtime Configuration Updates\n\n```typescript\n// Update mail config at runtime\nmesa.updateMailConfig({\n  sandbox: true, // Enable sandbox mode\n});\n\n// Get current config\nconst config = mesa.getMailConfig();\n```\n\n## Error Handling\n\n```typescript\nimport { MesaClient, MesaAPIError, MesaValidationError } from '@armco/mesa-sdk';\n\ntry {\n  await mesa.send({ /* ... */ });\n} catch (error) {\n  if (error instanceof MesaValidationError) {\n    console.error('Validation error:', error.message, 'Field:', error.field);\n  } else if (error instanceof MesaAPIError) {\n    console.error('API error:', error.message);\n    console.error('Status:', error.statusCode);\n    console.error('Code:', error.code);\n    console.error('Details:', error.details);\n  } else {\n    console.error('Unknown error:', error);\n  }\n}\n```\n\n## TypeScript Support\n\nFull TypeScript support with exported types:\n\n```typescript\nimport type {\n  MesaConfig,\n  MailConfig,\n  SendEmailOptions,\n  SendEmailResponse,\n  EmailAddress,\n  Attachment,\n  WebhookEvent,\n  WebhookPayload,\n} from '@armco/mesa-sdk';\n```\n\n## Environment Variables\n\nRecommended setup:\n\n```bash\n# .env\nMESA_API_KEY=your-api-key\nMESA_API_URL=https://api.sandesh.armco.dev  # Optional\nWEBHOOK_SECRET=your-webhook-secret\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}