mxroute-cli 0.3.2 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +281 -11
  2. package/dist/commands/accounts-search.d.ts +1 -0
  3. package/dist/commands/accounts-search.js +66 -0
  4. package/dist/commands/accounts-search.js.map +1 -0
  5. package/dist/commands/accounts.js +39 -9
  6. package/dist/commands/accounts.js.map +1 -1
  7. package/dist/commands/aliases-sync.d.ts +1 -0
  8. package/dist/commands/aliases-sync.js +162 -0
  9. package/dist/commands/aliases-sync.js.map +1 -0
  10. package/dist/commands/autoresponder.js +7 -6
  11. package/dist/commands/autoresponder.js.map +1 -1
  12. package/dist/commands/backup.d.ts +1 -0
  13. package/dist/commands/backup.js +170 -0
  14. package/dist/commands/backup.js.map +1 -0
  15. package/dist/commands/bulk.js +52 -9
  16. package/dist/commands/bulk.js.map +1 -1
  17. package/dist/commands/catchall.js +2 -2
  18. package/dist/commands/catchall.js.map +1 -1
  19. package/dist/commands/cleanup.d.ts +1 -0
  20. package/dist/commands/cleanup.js +234 -0
  21. package/dist/commands/cleanup.js.map +1 -0
  22. package/dist/commands/config.js +9 -2
  23. package/dist/commands/config.js.map +1 -1
  24. package/dist/commands/credentials-export.d.ts +13 -0
  25. package/dist/commands/credentials-export.js +142 -0
  26. package/dist/commands/credentials-export.js.map +1 -0
  27. package/dist/commands/deprovision.d.ts +1 -0
  28. package/dist/commands/deprovision.js +125 -0
  29. package/dist/commands/deprovision.js.map +1 -0
  30. package/dist/commands/dns-setup.js +20 -3
  31. package/dist/commands/dns-setup.js.map +1 -1
  32. package/dist/commands/export-import.js +22 -1
  33. package/dist/commands/export-import.js.map +1 -1
  34. package/dist/commands/filters.js +2 -2
  35. package/dist/commands/filters.js.map +1 -1
  36. package/dist/commands/fix.js +1 -1
  37. package/dist/commands/fix.js.map +1 -1
  38. package/dist/commands/forwarders-validate.d.ts +1 -0
  39. package/dist/commands/forwarders-validate.js +190 -0
  40. package/dist/commands/forwarders-validate.js.map +1 -0
  41. package/dist/commands/forwarders.js +6 -5
  42. package/dist/commands/forwarders.js.map +1 -1
  43. package/dist/commands/lists.js +7 -6
  44. package/dist/commands/lists.js.map +1 -1
  45. package/dist/commands/mail.d.ts +15 -0
  46. package/dist/commands/mail.js +998 -0
  47. package/dist/commands/mail.js.map +1 -0
  48. package/dist/commands/migrate.js.map +1 -1
  49. package/dist/commands/onboard.js +11 -4
  50. package/dist/commands/onboard.js.map +1 -1
  51. package/dist/commands/password-audit.d.ts +1 -0
  52. package/dist/commands/password-audit.js +304 -0
  53. package/dist/commands/password-audit.js.map +1 -0
  54. package/dist/commands/password.d.ts +1 -0
  55. package/dist/commands/password.js +96 -0
  56. package/dist/commands/password.js.map +1 -0
  57. package/dist/commands/provision.d.ts +13 -0
  58. package/dist/commands/provision.js +306 -0
  59. package/dist/commands/provision.js.map +1 -0
  60. package/dist/commands/quota-policy.d.ts +3 -0
  61. package/dist/commands/quota-policy.js +192 -0
  62. package/dist/commands/quota-policy.js.map +1 -0
  63. package/dist/commands/quota.js +1 -1
  64. package/dist/commands/quota.js.map +1 -1
  65. package/dist/commands/rate-limit.d.ts +2 -0
  66. package/dist/commands/rate-limit.js +121 -0
  67. package/dist/commands/rate-limit.js.map +1 -0
  68. package/dist/commands/reputation.d.ts +1 -0
  69. package/dist/commands/reputation.js +265 -0
  70. package/dist/commands/reputation.js.map +1 -0
  71. package/dist/commands/schedule.d.ts +3 -0
  72. package/dist/commands/schedule.js +270 -0
  73. package/dist/commands/schedule.js.map +1 -0
  74. package/dist/commands/send.js +2 -1
  75. package/dist/commands/send.js.map +1 -1
  76. package/dist/commands/setup.js +22 -0
  77. package/dist/commands/setup.js.map +1 -1
  78. package/dist/commands/share.js +20 -10
  79. package/dist/commands/share.js.map +1 -1
  80. package/dist/commands/smtp-debug.d.ts +1 -0
  81. package/dist/commands/smtp-debug.js +188 -0
  82. package/dist/commands/smtp-debug.js.map +1 -0
  83. package/dist/commands/spam.js +3 -3
  84. package/dist/commands/spam.js.map +1 -1
  85. package/dist/commands/ssl-check.d.ts +1 -0
  86. package/dist/commands/ssl-check.js +145 -0
  87. package/dist/commands/ssl-check.js.map +1 -0
  88. package/dist/commands/status.js +53 -1
  89. package/dist/commands/status.js.map +1 -1
  90. package/dist/commands/templates.d.ts +4 -0
  91. package/dist/commands/templates.js +310 -0
  92. package/dist/commands/templates.js.map +1 -0
  93. package/dist/commands/test-delivery.d.ts +1 -0
  94. package/dist/commands/test-delivery.js +87 -0
  95. package/dist/commands/test-delivery.js.map +1 -0
  96. package/dist/commands/usage-history.d.ts +1 -0
  97. package/dist/commands/usage-history.js +173 -0
  98. package/dist/commands/usage-history.js.map +1 -0
  99. package/dist/commands/webhook.js +18 -3
  100. package/dist/commands/webhook.js.map +1 -1
  101. package/dist/commands/welcome-send.d.ts +11 -0
  102. package/dist/commands/welcome-send.js +163 -0
  103. package/dist/commands/welcome-send.js.map +1 -0
  104. package/dist/index.js +362 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/mcp.js +1940 -10
  107. package/dist/mcp.js.map +1 -1
  108. package/dist/utils/config.js +1 -1
  109. package/dist/utils/config.js.map +1 -1
  110. package/dist/utils/directadmin.js +23 -2
  111. package/dist/utils/directadmin.js.map +1 -1
  112. package/dist/utils/imap.d.ts +61 -0
  113. package/dist/utils/imap.js +424 -0
  114. package/dist/utils/imap.js.map +1 -0
  115. package/dist/utils/mime.d.ts +50 -0
  116. package/dist/utils/mime.js +369 -0
  117. package/dist/utils/mime.js.map +1 -0
  118. package/dist/utils/shared.d.ts +10 -0
  119. package/dist/utils/shared.js +28 -1
  120. package/dist/utils/shared.js.map +1 -1
  121. package/package.json +1 -1
@@ -0,0 +1,369 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseMessage = parseMessage;
37
+ exports.htmlToText = htmlToText;
38
+ exports.buildMimeMessage = buildMimeMessage;
39
+ exports.formatFileSize = formatFileSize;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ /**
43
+ * Parse a raw email message into structured parts.
44
+ */
45
+ function parseMessage(raw) {
46
+ const msg = {
47
+ headers: {},
48
+ from: '',
49
+ to: '',
50
+ cc: '',
51
+ subject: '',
52
+ date: '',
53
+ messageId: '',
54
+ inReplyTo: '',
55
+ contentType: '',
56
+ textBody: '',
57
+ htmlBody: '',
58
+ attachments: [],
59
+ };
60
+ // Split headers from body
61
+ const headerEnd = raw.indexOf('\r\n\r\n');
62
+ const headerPart = headerEnd >= 0 ? raw.substring(0, headerEnd) : raw;
63
+ const bodyPart = headerEnd >= 0 ? raw.substring(headerEnd + 4) : '';
64
+ // Parse headers (handle folded headers)
65
+ const unfolded = headerPart.replace(/\r\n([ \t])/g, ' ');
66
+ const headerLines = unfolded.split('\r\n');
67
+ for (const line of headerLines) {
68
+ const colonIdx = line.indexOf(':');
69
+ if (colonIdx < 0)
70
+ continue;
71
+ const key = line.substring(0, colonIdx).trim().toLowerCase();
72
+ const value = line.substring(colonIdx + 1).trim();
73
+ msg.headers[key] = value;
74
+ }
75
+ msg.from = decodeHeaderValue(msg.headers['from'] || '');
76
+ msg.to = decodeHeaderValue(msg.headers['to'] || '');
77
+ msg.cc = decodeHeaderValue(msg.headers['cc'] || '');
78
+ msg.subject = decodeHeaderValue(msg.headers['subject'] || '');
79
+ msg.date = msg.headers['date'] || '';
80
+ msg.messageId = msg.headers['message-id'] || '';
81
+ msg.inReplyTo = msg.headers['in-reply-to'] || '';
82
+ msg.contentType = msg.headers['content-type'] || 'text/plain';
83
+ // Parse body
84
+ const boundary = extractBoundary(msg.contentType);
85
+ if (boundary) {
86
+ parseMimeParts(bodyPart, boundary, msg);
87
+ }
88
+ else {
89
+ const encoding = (msg.headers['content-transfer-encoding'] || '').toLowerCase();
90
+ const decoded = decodeBody(bodyPart, encoding);
91
+ if (msg.contentType.toLowerCase().includes('text/html')) {
92
+ msg.htmlBody = decoded;
93
+ }
94
+ else {
95
+ msg.textBody = decoded;
96
+ }
97
+ }
98
+ return msg;
99
+ }
100
+ function extractBoundary(contentType) {
101
+ const match = contentType.match(/boundary="?([^";\s]+)"?/i);
102
+ return match ? match[1] : null;
103
+ }
104
+ function parseMimeParts(body, boundary, msg, depth = 0) {
105
+ if (depth > 10)
106
+ return; // Prevent recursive DoS
107
+ const parts = body.split(`--${boundary}`);
108
+ for (const part of parts) {
109
+ if (part.startsWith('--') || !part.trim())
110
+ continue;
111
+ const headerEnd = part.indexOf('\r\n\r\n');
112
+ if (headerEnd < 0)
113
+ continue;
114
+ const partHeaders = part.substring(0, headerEnd);
115
+ const partBody = part.substring(headerEnd + 4).replace(/\r\n$/, '');
116
+ const headers = {};
117
+ const unfolded = partHeaders.replace(/\r\n([ \t])/g, ' ');
118
+ for (const line of unfolded.split('\r\n')) {
119
+ const colonIdx = line.indexOf(':');
120
+ if (colonIdx < 0)
121
+ continue;
122
+ headers[line.substring(0, colonIdx).trim().toLowerCase()] = line.substring(colonIdx + 1).trim();
123
+ }
124
+ const ct = (headers['content-type'] || 'text/plain').toLowerCase();
125
+ const encoding = (headers['content-transfer-encoding'] || '').toLowerCase();
126
+ const disposition = (headers['content-disposition'] || '').toLowerCase();
127
+ // Check for nested multipart
128
+ const nestedBoundary = extractBoundary(ct);
129
+ if (nestedBoundary) {
130
+ parseMimeParts(partBody, nestedBoundary, msg, depth + 1);
131
+ continue;
132
+ }
133
+ // Attachment
134
+ if (disposition.includes('attachment') || disposition.includes('filename') || ct.includes('name=')) {
135
+ const filenameMatch = disposition.match(/filename="?([^";\r\n]+)"?/i) || ct.match(/name="?([^";\r\n]+)"?/i);
136
+ const filename = filenameMatch ? decodeHeaderValue(filenameMatch[1].trim()) : 'attachment';
137
+ const content = encoding === 'base64'
138
+ ? Buffer.from(partBody.replace(/\s/g, ''), 'base64')
139
+ : Buffer.from(decodeBody(partBody, encoding), 'binary');
140
+ msg.attachments.push({
141
+ filename,
142
+ contentType: ct.split(';')[0].trim(),
143
+ size: content.length,
144
+ content,
145
+ });
146
+ continue;
147
+ }
148
+ // Text parts
149
+ const decoded = decodeBody(partBody, encoding);
150
+ if (ct.includes('text/html')) {
151
+ msg.htmlBody = decoded;
152
+ }
153
+ else if (ct.includes('text/plain')) {
154
+ msg.textBody = decoded;
155
+ }
156
+ }
157
+ }
158
+ function decodeBody(body, encoding) {
159
+ if (encoding === 'base64') {
160
+ try {
161
+ return Buffer.from(body.replace(/\s/g, ''), 'base64').toString('utf-8');
162
+ }
163
+ catch {
164
+ return body;
165
+ }
166
+ }
167
+ if (encoding === 'quoted-printable') {
168
+ return body
169
+ .replace(/=\r\n/g, '') // soft line breaks
170
+ .replace(/=([0-9A-Fa-f]{2})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));
171
+ }
172
+ return body;
173
+ }
174
+ function decodeHeaderValue(value) {
175
+ if (!value)
176
+ return '';
177
+ return value.replace(/=\?([^?]+)\?([BbQq])\?([^?]+)\?=/g, (_, _charset, encoding, text) => {
178
+ try {
179
+ if (encoding.toUpperCase() === 'B') {
180
+ return Buffer.from(text, 'base64').toString('utf-8');
181
+ }
182
+ if (encoding.toUpperCase() === 'Q') {
183
+ return text
184
+ .replace(/_/g, ' ')
185
+ .replace(/=([0-9A-Fa-f]{2})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));
186
+ }
187
+ }
188
+ catch {
189
+ // fall through
190
+ }
191
+ return text;
192
+ });
193
+ }
194
+ /**
195
+ * Strip HTML tags and return plain text.
196
+ */
197
+ function htmlToText(html) {
198
+ return html
199
+ .replace(/<br\s*\/?>/gi, '\n')
200
+ .replace(/<\/p>/gi, '\n\n')
201
+ .replace(/<\/div>/gi, '\n')
202
+ .replace(/<\/li>/gi, '\n')
203
+ .replace(/<\/h[1-6]>/gi, '\n\n')
204
+ .replace(/<[^>]+>/g, '')
205
+ .replace(/&nbsp;/gi, ' ')
206
+ .replace(/&amp;/gi, '&')
207
+ .replace(/&lt;/gi, '<')
208
+ .replace(/&gt;/gi, '>')
209
+ .replace(/&quot;/gi, '"')
210
+ .replace(/&#39;/gi, "'")
211
+ .replace(/\n{3,}/g, '\n\n')
212
+ .trim();
213
+ }
214
+ /**
215
+ * Build a MIME message with optional attachments.
216
+ */
217
+ function buildMimeMessage(options) {
218
+ const boundary = `----=_Part_${Date.now()}_${Math.random().toString(36).substring(2)}`;
219
+ const hasAttachments = options.attachments && options.attachments.length > 0;
220
+ const hasHtml = !!options.htmlBody;
221
+ const headers = [`From: ${options.from}`, `To: ${options.to}`];
222
+ if (options.cc)
223
+ headers.push(`Cc: ${options.cc}`);
224
+ if (options.bcc)
225
+ headers.push(`Bcc: ${options.bcc}`);
226
+ headers.push(`Subject: ${encodeMimeHeader(options.subject)}`);
227
+ headers.push(`Date: ${new Date().toUTCString()}`);
228
+ headers.push(`Message-ID: <${Date.now()}.${Math.random().toString(36).substring(2)}@mxroute-cli>`);
229
+ headers.push('MIME-Version: 1.0');
230
+ if (options.inReplyTo)
231
+ headers.push(`In-Reply-To: ${options.inReplyTo}`);
232
+ if (options.references)
233
+ headers.push(`References: ${options.references}`);
234
+ if (hasAttachments) {
235
+ headers.push(`Content-Type: multipart/mixed; boundary="${boundary}"`);
236
+ }
237
+ else if (hasHtml) {
238
+ const altBoundary = `----=_Alt_${Date.now()}_${Math.random().toString(36).substring(2)}`;
239
+ headers.push(`Content-Type: multipart/alternative; boundary="${altBoundary}"`);
240
+ const bodyParts = [];
241
+ if (options.textBody) {
242
+ bodyParts.push(`--${altBoundary}\r\n` +
243
+ `Content-Type: text/plain; charset=utf-8\r\n` +
244
+ `Content-Transfer-Encoding: quoted-printable\r\n\r\n` +
245
+ encodeQuotedPrintable(options.textBody));
246
+ }
247
+ bodyParts.push(`--${altBoundary}\r\n` +
248
+ `Content-Type: text/html; charset=utf-8\r\n` +
249
+ `Content-Transfer-Encoding: quoted-printable\r\n\r\n` +
250
+ encodeQuotedPrintable(options.htmlBody));
251
+ bodyParts.push(`--${altBoundary}--`);
252
+ return headers.join('\r\n') + '\r\n\r\n' + bodyParts.join('\r\n');
253
+ }
254
+ else {
255
+ headers.push('Content-Type: text/plain; charset=utf-8');
256
+ headers.push('Content-Transfer-Encoding: quoted-printable');
257
+ return headers.join('\r\n') + '\r\n\r\n' + encodeQuotedPrintable(options.textBody || '');
258
+ }
259
+ // Build multipart/mixed with attachments
260
+ const bodyParts = [];
261
+ // Text/HTML body part
262
+ if (hasHtml) {
263
+ const altBoundary = `----=_Alt_${Date.now()}_${Math.random().toString(36).substring(2)}`;
264
+ let altPart = `--${boundary}\r\n` + `Content-Type: multipart/alternative; boundary="${altBoundary}"\r\n\r\n`;
265
+ if (options.textBody) {
266
+ altPart +=
267
+ `--${altBoundary}\r\n` +
268
+ `Content-Type: text/plain; charset=utf-8\r\n` +
269
+ `Content-Transfer-Encoding: quoted-printable\r\n\r\n` +
270
+ encodeQuotedPrintable(options.textBody) +
271
+ '\r\n';
272
+ }
273
+ altPart +=
274
+ `--${altBoundary}\r\n` +
275
+ `Content-Type: text/html; charset=utf-8\r\n` +
276
+ `Content-Transfer-Encoding: quoted-printable\r\n\r\n` +
277
+ encodeQuotedPrintable(options.htmlBody) +
278
+ '\r\n';
279
+ altPart += `--${altBoundary}--`;
280
+ bodyParts.push(altPart);
281
+ }
282
+ else {
283
+ bodyParts.push(`--${boundary}\r\n` +
284
+ `Content-Type: text/plain; charset=utf-8\r\n` +
285
+ `Content-Transfer-Encoding: quoted-printable\r\n\r\n` +
286
+ encodeQuotedPrintable(options.textBody || ''));
287
+ }
288
+ // Attachment parts
289
+ if (options.attachments) {
290
+ for (const att of options.attachments) {
291
+ const content = fs.readFileSync(att.path);
292
+ const base64 = content.toString('base64');
293
+ const mimeType = guessMimeType(att.filename);
294
+ // Break base64 into 76-char lines
295
+ const lines = [];
296
+ for (let i = 0; i < base64.length; i += 76) {
297
+ lines.push(base64.substring(i, i + 76));
298
+ }
299
+ bodyParts.push(`--${boundary}\r\n` +
300
+ `Content-Type: ${mimeType}; name="${att.filename}"\r\n` +
301
+ `Content-Disposition: attachment; filename="${att.filename}"\r\n` +
302
+ `Content-Transfer-Encoding: base64\r\n\r\n` +
303
+ lines.join('\r\n'));
304
+ }
305
+ }
306
+ bodyParts.push(`--${boundary}--`);
307
+ return headers.join('\r\n') + '\r\n\r\n' + bodyParts.join('\r\n');
308
+ }
309
+ function encodeMimeHeader(value) {
310
+ // Only encode if non-ASCII
311
+ if (/^[\x20-\x7E]+$/.test(value))
312
+ return value;
313
+ return `=?utf-8?B?${Buffer.from(value).toString('base64')}?=`;
314
+ }
315
+ function encodeQuotedPrintable(text) {
316
+ return text
317
+ .replace(/[^\r\n\t\x20-\x7E]/g, (ch) => {
318
+ const buf = Buffer.from(ch);
319
+ return Array.from(buf)
320
+ .map((b) => `=${b.toString(16).toUpperCase().padStart(2, '0')}`)
321
+ .join('');
322
+ })
323
+ .replace(/(.{73})/g, '$1=\r\n'); // Soft line breaks at 76 chars
324
+ }
325
+ function guessMimeType(filename) {
326
+ const ext = path.extname(filename).toLowerCase();
327
+ const types = {
328
+ '.txt': 'text/plain',
329
+ '.html': 'text/html',
330
+ '.htm': 'text/html',
331
+ '.css': 'text/css',
332
+ '.js': 'application/javascript',
333
+ '.json': 'application/json',
334
+ '.xml': 'application/xml',
335
+ '.pdf': 'application/pdf',
336
+ '.zip': 'application/zip',
337
+ '.gz': 'application/gzip',
338
+ '.tar': 'application/x-tar',
339
+ '.png': 'image/png',
340
+ '.jpg': 'image/jpeg',
341
+ '.jpeg': 'image/jpeg',
342
+ '.gif': 'image/gif',
343
+ '.svg': 'image/svg+xml',
344
+ '.webp': 'image/webp',
345
+ '.mp3': 'audio/mpeg',
346
+ '.mp4': 'video/mp4',
347
+ '.wav': 'audio/wav',
348
+ '.doc': 'application/msword',
349
+ '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
350
+ '.xls': 'application/vnd.ms-excel',
351
+ '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
352
+ '.ppt': 'application/vnd.ms-powerpoint',
353
+ '.csv': 'text/csv',
354
+ '.ics': 'text/calendar',
355
+ '.eml': 'message/rfc822',
356
+ };
357
+ return types[ext] || 'application/octet-stream';
358
+ }
359
+ /**
360
+ * Format a file size in human-readable form.
361
+ */
362
+ function formatFileSize(bytes) {
363
+ if (bytes < 1024)
364
+ return `${bytes}B`;
365
+ if (bytes < 1024 * 1024)
366
+ return `${(bytes / 1024).toFixed(1)}KB`;
367
+ return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
368
+ }
369
+ //# sourceMappingURL=mime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mime.js","sourceRoot":"","sources":["../../src/utils/mime.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,16 @@
1
1
  import { DACredentials } from './directadmin';
2
2
  export declare function getCreds(): DACredentials;
3
3
  export declare function pickDomain(creds: DACredentials, domain?: string): Promise<string>;
4
+ /**
5
+ * Validates an email address format.
6
+ * Returns true if valid, or an error message string if invalid.
7
+ */
8
+ export declare function validateEmail(input: string): true | string;
9
+ /**
10
+ * Validates a domain name format.
11
+ * Returns true if valid, or an error message string if invalid.
12
+ */
13
+ export declare function validateDomain(input: string): true | string;
4
14
  export declare const tableChars: {
5
15
  top: string;
6
16
  'top-mid': string;
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.tableChars = void 0;
7
7
  exports.getCreds = getCreds;
8
8
  exports.pickDomain = pickDomain;
9
+ exports.validateEmail = validateEmail;
10
+ exports.validateDomain = validateDomain;
9
11
  const ora_1 = __importDefault(require("ora"));
10
12
  const inquirer_1 = __importDefault(require("inquirer"));
11
13
  const theme_1 = require("./theme");
@@ -29,7 +31,8 @@ async function pickDomain(creds, domain) {
29
31
  const domains = await (0, directadmin_1.listDomains)(creds);
30
32
  spinner.stop();
31
33
  if (domains.length === 0) {
32
- console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} No domains found.\n`));
34
+ console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} No domains found on this account.`));
35
+ console.log(theme_1.theme.muted(` Add a domain via Control Panel (panel.mxroute.com) first.\n`));
33
36
  process.exit(1);
34
37
  }
35
38
  if (domains.length === 1)
@@ -44,6 +47,30 @@ async function pickDomain(creds, domain) {
44
47
  ]);
45
48
  return selected;
46
49
  }
50
+ /**
51
+ * Validates an email address format.
52
+ * Returns true if valid, or an error message string if invalid.
53
+ */
54
+ function validateEmail(input) {
55
+ if (!input.trim())
56
+ return 'Email address is required';
57
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
58
+ if (!emailRegex.test(input))
59
+ return 'Enter a valid email address (e.g., user@example.com)';
60
+ return true;
61
+ }
62
+ /**
63
+ * Validates a domain name format.
64
+ * Returns true if valid, or an error message string if invalid.
65
+ */
66
+ function validateDomain(input) {
67
+ if (!input.trim())
68
+ return 'Domain is required';
69
+ const domainRegex = /^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)*\.[a-zA-Z]{2,}$/;
70
+ if (!domainRegex.test(input))
71
+ return 'Enter a valid domain (e.g., example.com)';
72
+ return true;
73
+ }
47
74
  exports.tableChars = {
48
75
  top: '─',
49
76
  'top-mid': '┬',
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/utils/shared.ts"],"names":[],"mappings":";;;;;;AAMA,4BAWC;AAED,gCA2BC;AA9CD,8CAAsB;AACtB,wDAAgC;AAChC,mCAAgC;AAChC,qCAAqC;AACrC,+CAA2D;AAE3D,SAAgB,QAAQ;IACtB,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CACT,aAAK,CAAC,KAAK,CACT,OAAO,aAAK,CAAC,UAAU,CAAC,MAAM,CAAC,2BAA2B,aAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CACxG,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7F,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,KAAoB,EAAE,MAAe;IACpE,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IAExC,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/F,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAW,EAAC,KAAK,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,KAAK,CAAC,OAAO,aAAK,CAAC,UAAU,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IAE5C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QACzC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,OAAO;SACjB;KACF,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAEY,QAAA,UAAU,GAAG;IACxB,GAAG,EAAE,GAAG;IACR,SAAS,EAAE,GAAG;IACd,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,GAAG;IAChB,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,GAAG;IACnB,IAAI,EAAE,KAAK;IACX,UAAU,EAAE,KAAK;IACjB,GAAG,EAAE,GAAG;IACR,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,GAAG;IACV,WAAW,EAAE,GAAG;IAChB,MAAM,EAAE,GAAG;CACZ,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/utils/shared.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mxroute-cli",
3
- "version": "0.3.2",
3
+ "version": "1.0.1",
4
4
  "description": "A powerful CLI for managing MXroute email hosting — send emails, verify DNS, generate records, troubleshoot, and more.",
5
5
  "main": "dist/index.js",
6
6
  "repository": {