@cakemail-org/cakemail-cli 1.2.0 → 1.5.0

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 (88) hide show
  1. package/README.md +140 -0
  2. package/dist/cli.js +48 -6
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client.js +0 -2
  5. package/dist/client.js.map +1 -1
  6. package/dist/commands/account.d.ts +5 -0
  7. package/dist/commands/account.d.ts.map +1 -0
  8. package/dist/commands/account.js +231 -0
  9. package/dist/commands/account.js.map +1 -0
  10. package/dist/commands/attributes.d.ts +5 -0
  11. package/dist/commands/attributes.d.ts.map +1 -0
  12. package/dist/commands/attributes.js +126 -0
  13. package/dist/commands/attributes.js.map +1 -0
  14. package/dist/commands/campaigns.d.ts.map +1 -1
  15. package/dist/commands/campaigns.js +153 -19
  16. package/dist/commands/campaigns.js.map +1 -1
  17. package/dist/commands/config.d.ts +8 -0
  18. package/dist/commands/config.d.ts.map +1 -0
  19. package/dist/commands/config.js +235 -0
  20. package/dist/commands/config.js.map +1 -0
  21. package/dist/commands/contacts.d.ts.map +1 -1
  22. package/dist/commands/contacts.js +436 -14
  23. package/dist/commands/contacts.js.map +1 -1
  24. package/dist/commands/emails.d.ts.map +1 -1
  25. package/dist/commands/emails.js +53 -0
  26. package/dist/commands/emails.js.map +1 -1
  27. package/dist/commands/lists.d.ts.map +1 -1
  28. package/dist/commands/lists.js +282 -11
  29. package/dist/commands/lists.js.map +1 -1
  30. package/dist/commands/reports.d.ts +5 -0
  31. package/dist/commands/reports.d.ts.map +1 -0
  32. package/dist/commands/reports.js +334 -0
  33. package/dist/commands/reports.js.map +1 -0
  34. package/dist/commands/segments.d.ts +5 -0
  35. package/dist/commands/segments.d.ts.map +1 -0
  36. package/dist/commands/segments.js +203 -0
  37. package/dist/commands/segments.js.map +1 -0
  38. package/dist/commands/senders.d.ts.map +1 -1
  39. package/dist/commands/senders.js +36 -5
  40. package/dist/commands/senders.js.map +1 -1
  41. package/dist/commands/suppressed.d.ts +5 -0
  42. package/dist/commands/suppressed.d.ts.map +1 -0
  43. package/dist/commands/suppressed.js +193 -0
  44. package/dist/commands/suppressed.js.map +1 -0
  45. package/dist/commands/templates.d.ts.map +1 -1
  46. package/dist/commands/templates.js +11 -3
  47. package/dist/commands/templates.js.map +1 -1
  48. package/dist/types/profile.d.ts +92 -0
  49. package/dist/types/profile.d.ts.map +1 -0
  50. package/dist/types/profile.js +119 -0
  51. package/dist/types/profile.js.map +1 -0
  52. package/dist/utils/auth.d.ts +26 -0
  53. package/dist/utils/auth.d.ts.map +1 -0
  54. package/dist/utils/auth.js +198 -0
  55. package/dist/utils/auth.js.map +1 -0
  56. package/dist/utils/config-file.d.ts +92 -0
  57. package/dist/utils/config-file.d.ts.map +1 -0
  58. package/dist/utils/config-file.js +244 -0
  59. package/dist/utils/config-file.js.map +1 -0
  60. package/dist/utils/config.d.ts +11 -2
  61. package/dist/utils/config.d.ts.map +1 -1
  62. package/dist/utils/config.js +74 -8
  63. package/dist/utils/config.js.map +1 -1
  64. package/dist/utils/confirm.d.ts +38 -0
  65. package/dist/utils/confirm.d.ts.map +1 -0
  66. package/dist/utils/confirm.js +124 -0
  67. package/dist/utils/confirm.js.map +1 -0
  68. package/dist/utils/defaults.d.ts +39 -0
  69. package/dist/utils/defaults.d.ts.map +1 -0
  70. package/dist/utils/defaults.js +195 -0
  71. package/dist/utils/defaults.js.map +1 -0
  72. package/dist/utils/errors.d.ts +67 -0
  73. package/dist/utils/errors.d.ts.map +1 -0
  74. package/dist/utils/errors.js +395 -0
  75. package/dist/utils/errors.js.map +1 -0
  76. package/dist/utils/interactive.d.ts +97 -0
  77. package/dist/utils/interactive.d.ts.map +1 -0
  78. package/dist/utils/interactive.js +265 -0
  79. package/dist/utils/interactive.js.map +1 -0
  80. package/dist/utils/output.d.ts +72 -2
  81. package/dist/utils/output.d.ts.map +1 -1
  82. package/dist/utils/output.js +383 -37
  83. package/dist/utils/output.js.map +1 -1
  84. package/dist/utils/progress.d.ts +139 -0
  85. package/dist/utils/progress.d.ts.map +1 -0
  86. package/dist/utils/progress.js +216 -0
  87. package/dist/utils/progress.js.map +1 -0
  88. package/package.json +3 -1
@@ -1,22 +1,62 @@
1
1
  import Table from 'cli-table3';
2
2
  import chalk from 'chalk';
3
3
  export class OutputFormatter {
4
- formatGetter;
5
- constructor(formatOrGetter = 'json') {
4
+ constructor(formatOrGetter = 'json', profileConfigGetter) {
6
5
  if (typeof formatOrGetter === 'function') {
7
6
  this.formatGetter = formatOrGetter;
8
7
  }
9
8
  else {
10
9
  this.formatGetter = () => formatOrGetter;
11
10
  }
11
+ this.profileConfigGetter = profileConfigGetter;
12
12
  }
13
13
  getFormat() {
14
14
  return this.formatGetter();
15
15
  }
16
+ getProfileConfig() {
17
+ return this.profileConfigGetter?.();
18
+ }
19
+ /**
20
+ * Get profile config (public accessor for commands)
21
+ */
22
+ getProfile() {
23
+ return this.getProfileConfig();
24
+ }
25
+ getColorScheme() {
26
+ return this.getProfileConfig()?.output.colors || 'rich';
27
+ }
28
+ shouldShowTips() {
29
+ return this.getProfileConfig()?.output.show_tips ?? true;
30
+ }
31
+ /**
32
+ * Apply color based on profile's color scheme
33
+ */
34
+ applyColor(text, colorFn) {
35
+ const scheme = this.getColorScheme();
36
+ switch (scheme) {
37
+ case 'none':
38
+ return text; // No colors
39
+ case 'minimal':
40
+ // Only basic colors for minimal scheme
41
+ return colorFn === chalk.red || colorFn === chalk.green ? colorFn(text) : text;
42
+ case 'moderate':
43
+ case 'rich':
44
+ default:
45
+ return colorFn(text); // Full colors
46
+ }
47
+ }
48
+ /**
49
+ * Conditionally show tip based on profile
50
+ */
51
+ showTip(message) {
52
+ if (this.shouldShowTips()) {
53
+ console.log(this.applyColor('💡 ', chalk.gray) + this.applyColor(message, chalk.gray));
54
+ }
55
+ }
16
56
  output(data, fields) {
17
57
  switch (this.getFormat()) {
18
58
  case 'json':
19
- console.log(JSON.stringify(data, null, 2));
59
+ this.outputJson(data);
20
60
  break;
21
61
  case 'table':
22
62
  this.outputTable(data, fields);
@@ -35,6 +75,33 @@ export class OutputFormatter {
35
75
  info(message) {
36
76
  console.log(chalk.blue('ℹ'), message);
37
77
  }
78
+ warning(message) {
79
+ console.log(chalk.yellow('⚠'), message);
80
+ }
81
+ /**
82
+ * Output JSON with syntax highlighting
83
+ */
84
+ outputJson(data) {
85
+ const jsonString = JSON.stringify(data, null, 2);
86
+ const highlighted = this.highlightJson(jsonString);
87
+ console.log(highlighted);
88
+ }
89
+ /**
90
+ * Syntax highlighting for JSON output
91
+ */
92
+ highlightJson(jsonString) {
93
+ return jsonString
94
+ // Keys (property names)
95
+ .replace(/"([^"]+)":/g, (match, key) => `${chalk.cyan(`"${key}":`)}`)
96
+ // String values
97
+ .replace(/: "([^"]*)"/g, (match, value) => `: ${chalk.green(`"${value}"`)}`)
98
+ // Numbers
99
+ .replace(/: (\d+\.?\d*)/g, (match, num) => `: ${chalk.yellow(num)}`)
100
+ // Booleans
101
+ .replace(/: (true|false)/g, (match, bool) => `: ${bool === 'true' ? chalk.magenta('true') : chalk.magenta('false')}`)
102
+ // Null
103
+ .replace(/: null/g, `: ${chalk.gray('null')}`);
104
+ }
38
105
  outputTable(data, fields) {
39
106
  if (!data) {
40
107
  console.log('No data');
@@ -42,32 +109,86 @@ export class OutputFormatter {
42
109
  }
43
110
  // Handle paginated responses with 'data' property
44
111
  let items = data;
112
+ let pagination = {};
45
113
  if (data.data && Array.isArray(data.data)) {
46
114
  items = data.data;
47
- // Show pagination info if available
48
- if (data.count !== undefined) {
49
- console.log(chalk.gray(`Total: ${data.count} items`));
50
- }
115
+ pagination = {
116
+ count: data.count,
117
+ page: data.page,
118
+ perPage: data.per_page,
119
+ totalPages: data.count && data.per_page ? Math.ceil(data.count / data.per_page) : undefined
120
+ };
51
121
  }
52
122
  // Ensure we have an array
53
123
  items = Array.isArray(items) ? items : [items];
54
124
  if (items.length === 0) {
55
- console.log('No results');
125
+ console.log(chalk.gray('No results'));
56
126
  return;
57
127
  }
128
+ // Show enhanced pagination info
129
+ this.displayPaginationHeader(pagination, items.length);
58
130
  // Determine which fields to show
59
131
  const keys = fields || this.getDisplayFields(items[0]);
60
132
  const table = new Table({
61
- head: keys.map(k => chalk.cyan(k)),
133
+ head: keys.map(k => chalk.cyan.bold(k)),
62
134
  style: {
63
135
  head: [],
64
136
  border: ['gray']
65
- }
137
+ },
138
+ colWidths: this.calculateColumnWidths(items, keys)
66
139
  });
67
140
  items.forEach((item) => {
68
- table.push(keys.map(k => this.formatValue(item[k])));
141
+ table.push(keys.map(k => this.formatTableValue(item, k)));
69
142
  });
70
143
  console.log(table.toString());
144
+ // Show pagination footer with hints
145
+ this.displayPaginationFooter(pagination);
146
+ }
147
+ /**
148
+ * Display pagination header with item counts
149
+ */
150
+ displayPaginationHeader(pagination, itemCount) {
151
+ if (!pagination.count)
152
+ return;
153
+ const start = ((pagination.page || 1) - 1) * (pagination.perPage || itemCount) + 1;
154
+ const end = start + itemCount - 1;
155
+ const parts = [
156
+ chalk.gray(`Showing ${chalk.white(`${this.formatNumber(start)}-${this.formatNumber(end)}`)} of ${chalk.white(this.formatNumber(pagination.count))}`),
157
+ ];
158
+ if (pagination.totalPages) {
159
+ parts.push(chalk.gray(`• Page ${chalk.white(pagination.page || 1)} of ${chalk.white(pagination.totalPages)}`));
160
+ }
161
+ console.log(parts.join(' '));
162
+ console.log(); // Empty line for spacing
163
+ }
164
+ /**
165
+ * Display pagination footer with navigation hints
166
+ */
167
+ displayPaginationFooter(pagination) {
168
+ if (!pagination.totalPages || pagination.totalPages <= 1)
169
+ return;
170
+ const currentPage = pagination.page || 1;
171
+ const hasNext = currentPage < pagination.totalPages;
172
+ const hasPrev = currentPage > 1;
173
+ if (hasNext || hasPrev) {
174
+ console.log(); // Empty line for spacing
175
+ const hints = [];
176
+ if (hasPrev) {
177
+ hints.push(chalk.gray(`Previous: ${chalk.cyan(`--page ${currentPage - 1}`)}`));
178
+ }
179
+ if (hasNext) {
180
+ hints.push(chalk.gray(`Next: ${chalk.cyan(`--page ${currentPage + 1}`)}`));
181
+ }
182
+ console.log(chalk.gray('💡 ') + hints.join(' • '));
183
+ }
184
+ }
185
+ /**
186
+ * Calculate optimal column widths
187
+ */
188
+ calculateColumnWidths(items, keys) {
189
+ // Let cli-table3 handle width automatically for now
190
+ // Could implement smart width calculation in the future
191
+ return undefined;
71
192
  }
72
193
  getDisplayFields(item) {
73
194
  // Common important fields to show first
@@ -94,52 +215,105 @@ export class OutputFormatter {
94
215
  outputCompact(data) {
95
216
  // Handle paginated responses with 'data' property
96
217
  let items = data;
218
+ let pagination = {};
97
219
  if (data.data && Array.isArray(data.data)) {
98
220
  items = data.data;
99
- // Show pagination info if available
100
- if (data.count !== undefined) {
101
- console.log(chalk.gray(`Total: ${data.count} items\n`));
102
- }
221
+ pagination = {
222
+ count: data.count,
223
+ page: data.page,
224
+ perPage: data.per_page,
225
+ totalPages: data.count && data.per_page ? Math.ceil(data.count / data.per_page) : undefined
226
+ };
103
227
  }
104
228
  if (Array.isArray(items)) {
229
+ // Show enhanced pagination for lists
230
+ if (pagination.count) {
231
+ const start = ((pagination.page || 1) - 1) * (pagination.perPage || items.length) + 1;
232
+ const end = start + items.length - 1;
233
+ console.log(chalk.gray(`Showing ${chalk.white(`${this.formatNumber(start)}-${this.formatNumber(end)}`)} of ${chalk.white(this.formatNumber(pagination.count))}`));
234
+ console.log();
235
+ }
105
236
  items.forEach(item => {
106
- // Try different common field combinations
107
- if (item.id && item.name) {
108
- console.log(`${chalk.yellow(item.id.toString().padStart(6))} ${chalk.white('│')} ${chalk.bold(item.name)}${item.status ? chalk.gray(` (${item.status})`) : ''}`);
109
- }
110
- else if (item.id && item.email) {
111
- console.log(`${chalk.yellow(item.id.toString().padStart(6))} ${chalk.white('│')} ${chalk.bold(item.email)}${item.status ? chalk.gray(` (${item.status})`) : ''}`);
237
+ // Build compact line with status badge
238
+ const idStr = item.id ? chalk.yellow(item.id.toString().padStart(6)) : '';
239
+ const separator = chalk.gray('');
240
+ // Main content (name/email/subject)
241
+ let mainContent = '';
242
+ if (item.name) {
243
+ mainContent = chalk.bold.white(item.name);
112
244
  }
113
- else if (item.id && item.subject) {
114
- console.log(`${chalk.yellow(item.id.toString().padStart(6))} ${chalk.white('│')} ${chalk.bold(item.subject)}${item.status ? chalk.gray(` (${item.status})`) : ''}`);
245
+ else if (item.email) {
246
+ mainContent = chalk.bold.white(item.email);
115
247
  }
116
- else if (item.id) {
117
- console.log(`${chalk.yellow(item.id.toString().padStart(6))} ${chalk.white('│')} ${this.compactObjectSummary(item)}`);
248
+ else if (item.subject) {
249
+ mainContent = chalk.bold.white(item.subject);
118
250
  }
119
251
  else {
120
- console.log(this.compactObjectSummary(item));
252
+ mainContent = this.compactObjectSummary(item);
253
+ }
254
+ // Status badge
255
+ let statusBadge = '';
256
+ if (item.status) {
257
+ statusBadge = ' ' + this.formatStatus(item.status);
258
+ }
259
+ else if (item.confirmed !== undefined) {
260
+ statusBadge = item.confirmed ? chalk.green(' ✓') : chalk.yellow(' ⏳');
121
261
  }
262
+ // Additional metadata (dates, etc.)
263
+ let metadata = '';
264
+ if (item.created_on || item.updated_on || item.scheduled_for) {
265
+ const dateField = item.scheduled_for || item.updated_on || item.created_on;
266
+ metadata = chalk.gray(` • ${this.formatDate(dateField)}`);
267
+ }
268
+ console.log(`${idStr} ${separator} ${mainContent}${statusBadge}${metadata}`);
122
269
  });
270
+ // Show pagination footer
271
+ if (pagination.totalPages && pagination.totalPages > 1) {
272
+ console.log();
273
+ const currentPage = pagination.page || 1;
274
+ const hints = [];
275
+ if (currentPage > 1) {
276
+ hints.push(chalk.gray(`Previous: ${chalk.cyan(`--page ${currentPage - 1}`)}`));
277
+ }
278
+ if (currentPage < pagination.totalPages) {
279
+ hints.push(chalk.gray(`Next: ${chalk.cyan(`--page ${currentPage + 1}`)}`));
280
+ }
281
+ if (hints.length > 0) {
282
+ console.log(chalk.gray('💡 ') + hints.join(' • '));
283
+ }
284
+ }
123
285
  }
124
286
  else if (typeof items === 'object' && items !== null) {
125
287
  // Single object - show key details in a compact card format
126
288
  const obj = items;
127
289
  // Header with ID and name/email/subject
128
- if (obj.id && obj.name) {
129
- console.log(`${chalk.yellow(obj.id.toString())} ${chalk.white('│')} ${chalk.bold(obj.name)}${obj.status ? chalk.gray(` (${obj.status})`) : ''}`);
290
+ const idStr = obj.id ? chalk.yellow(obj.id.toString()) : '';
291
+ const separator = chalk.gray('');
292
+ let mainContent = '';
293
+ if (obj.name) {
294
+ mainContent = chalk.bold.white(obj.name);
295
+ }
296
+ else if (obj.email) {
297
+ mainContent = chalk.bold.white(obj.email);
298
+ }
299
+ else if (obj.subject) {
300
+ mainContent = chalk.bold.white(obj.subject);
130
301
  }
131
- else if (obj.id && obj.email) {
132
- console.log(`${chalk.yellow(obj.id.toString())} ${chalk.white('│')} ${chalk.bold(obj.email)}${obj.status ? chalk.gray(` (${obj.status})`) : ''}`);
302
+ else {
303
+ mainContent = chalk.bold('Details');
133
304
  }
134
- else if (obj.id && obj.subject) {
135
- console.log(`${chalk.yellow(obj.id.toString())} ${chalk.white('│')} ${chalk.bold(obj.subject)}${obj.status ? chalk.gray(` (${obj.status})`) : ''}`);
305
+ let statusBadge = '';
306
+ if (obj.status) {
307
+ statusBadge = ' ' + this.formatStatus(obj.status);
136
308
  }
137
- else if (obj.id) {
138
- console.log(`${chalk.yellow(obj.id.toString())} ${chalk.white('')} ${chalk.bold('Details')}`);
309
+ else if (obj.confirmed !== undefined) {
310
+ statusBadge = obj.confirmed ? chalk.green(' ✓ Confirmed') : chalk.yellow(' ⏳ Pending');
139
311
  }
312
+ console.log(`${idStr} ${separator} ${mainContent}${statusBadge}`);
313
+ console.log();
140
314
  // Show other important fields
141
- const importantFields = ['created_on', 'updated_on', 'scheduled_for', 'type', 'language'];
142
- const shownFields = new Set(['id', 'name', 'email', 'subject', 'status']);
315
+ const importantFields = ['created_on', 'updated_on', 'scheduled_for', 'type', 'language', 'list_id', 'sender_id', 'template_id'];
316
+ const shownFields = new Set(['id', 'name', 'email', 'subject', 'status', 'confirmed']);
143
317
  Object.entries(obj).forEach(([key, value]) => {
144
318
  if (shownFields.has(key))
145
319
  return;
@@ -151,7 +325,15 @@ export class OutputFormatter {
151
325
  // Skip nested objects in compact view
152
326
  return;
153
327
  }
154
- console.log(` ${chalk.gray(key.padEnd(18))} ${chalk.white('│')} ${this.formatValue(value)}`);
328
+ let formattedValue = this.formatValue(value);
329
+ // Apply special formatting for dates and numbers
330
+ if (key.includes('_on') || key.includes('_at') || key.includes('date')) {
331
+ formattedValue = this.formatDate(value);
332
+ }
333
+ else if (typeof value === 'number') {
334
+ formattedValue = chalk.yellow(this.formatNumber(value));
335
+ }
336
+ console.log(` ${chalk.gray(key.padEnd(18))} ${chalk.gray('│')} ${formattedValue}`);
155
337
  }
156
338
  });
157
339
  }
@@ -182,6 +364,170 @@ export class OutputFormatter {
182
364
  });
183
365
  return parts.join(' ');
184
366
  }
367
+ /**
368
+ * Format value for table display with enhanced colors and formatting
369
+ */
370
+ formatTableValue(item, key) {
371
+ const value = item[key];
372
+ // Handle null/undefined
373
+ if (value === null || value === undefined)
374
+ return chalk.gray('—');
375
+ // Status field - apply status-specific colors
376
+ if (key === 'status') {
377
+ return this.formatStatus(value);
378
+ }
379
+ // Confirmed field (for senders)
380
+ if (key === 'confirmed') {
381
+ return value ? chalk.green('✓ Yes') : chalk.yellow('⏳ Pending');
382
+ }
383
+ // Boolean values
384
+ if (typeof value === 'boolean') {
385
+ return value ? chalk.green('✓') : chalk.gray('✗');
386
+ }
387
+ // Date fields - format with relative time
388
+ if (key.includes('_on') || key.includes('_at') || key.includes('date')) {
389
+ return this.formatDate(value);
390
+ }
391
+ // Numbers - format with commas
392
+ if (typeof value === 'number') {
393
+ return chalk.yellow(this.formatNumber(value));
394
+ }
395
+ // Objects/arrays - truncate
396
+ if (typeof value === 'object') {
397
+ const str = JSON.stringify(value);
398
+ return str.length > 50 ? chalk.gray(str.substring(0, 47) + '...') : chalk.gray(str);
399
+ }
400
+ // Strings - truncate if too long
401
+ const str = String(value);
402
+ if (str.length > 60) {
403
+ return str.substring(0, 57) + '...';
404
+ }
405
+ return str;
406
+ }
407
+ /**
408
+ * Format status with color-coded badges
409
+ */
410
+ formatStatus(status) {
411
+ const statusLower = String(status).toLowerCase();
412
+ // Campaign statuses
413
+ if (statusLower === 'draft')
414
+ return chalk.gray('⚪ draft');
415
+ if (statusLower === 'scheduled')
416
+ return chalk.blue('🔵 scheduled');
417
+ if (statusLower === 'sending')
418
+ return chalk.yellow('🟡 sending');
419
+ if (statusLower === 'sent' || statusLower === 'delivered')
420
+ return chalk.green('🟢 sent');
421
+ if (statusLower === 'failed')
422
+ return chalk.red('🔴 failed');
423
+ if (statusLower === 'cancelled')
424
+ return chalk.gray('⚫ cancelled');
425
+ if (statusLower === 'suspended')
426
+ return chalk.yellow('🟠 suspended');
427
+ // Contact statuses
428
+ if (statusLower === 'active')
429
+ return chalk.green('✓ active');
430
+ if (statusLower === 'unsubscribed')
431
+ return chalk.gray('✗ unsubscribed');
432
+ if (statusLower === 'bounced')
433
+ return chalk.red('⚠ bounced');
434
+ // Default - just colorize
435
+ return chalk.white(status);
436
+ }
437
+ /**
438
+ * Format date based on profile settings
439
+ */
440
+ formatDate(dateString) {
441
+ if (!dateString)
442
+ return this.applyColor('—', chalk.gray);
443
+ try {
444
+ const date = new Date(dateString);
445
+ if (isNaN(date.getTime()))
446
+ return String(dateString);
447
+ const dateFormat = this.getProfileConfig()?.display.date_format || 'relative';
448
+ switch (dateFormat) {
449
+ case 'iso8601':
450
+ return this.formatDateISO(date);
451
+ case 'friendly':
452
+ return this.formatDateFriendly(date);
453
+ case 'relative':
454
+ default:
455
+ return this.formatDateRelative(date);
456
+ }
457
+ }
458
+ catch {
459
+ return String(dateString);
460
+ }
461
+ }
462
+ /**
463
+ * Format date as ISO 8601 (for developer profile)
464
+ */
465
+ formatDateISO(date) {
466
+ return date.toISOString();
467
+ }
468
+ /**
469
+ * Format date in friendly format (for balanced profile)
470
+ * Example: "Oct 12, 2025 10:30 AM"
471
+ */
472
+ formatDateFriendly(date) {
473
+ const now = new Date();
474
+ const diffDay = Math.floor((now.getTime() - date.getTime()) / (1000 * 60 * 60 * 24));
475
+ // Show relative for very recent dates
476
+ if (diffDay === 0) {
477
+ const hours = date.getHours();
478
+ const minutes = date.getMinutes().toString().padStart(2, '0');
479
+ const ampm = hours >= 12 ? 'PM' : 'AM';
480
+ const displayHours = hours % 12 || 12;
481
+ return this.applyColor(`Today ${displayHours}:${minutes} ${ampm}`, chalk.gray);
482
+ }
483
+ else if (diffDay === 1) {
484
+ return this.applyColor('Yesterday', chalk.gray);
485
+ }
486
+ else if (diffDay === -1) {
487
+ return this.applyColor('Tomorrow', chalk.gray);
488
+ }
489
+ // Format: "Oct 12, 2025"
490
+ const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
491
+ const month = months[date.getMonth()];
492
+ const day = date.getDate();
493
+ const year = date.getFullYear();
494
+ return this.applyColor(`${month} ${day}, ${year}`, chalk.gray);
495
+ }
496
+ /**
497
+ * Format date with relative time (for marketer profile)
498
+ * Example: "2 hours ago"
499
+ */
500
+ formatDateRelative(date) {
501
+ const now = new Date();
502
+ const diffMs = now.getTime() - date.getTime();
503
+ const diffSec = Math.floor(diffMs / 1000);
504
+ const diffMin = Math.floor(diffSec / 60);
505
+ const diffHour = Math.floor(diffMin / 60);
506
+ const diffDay = Math.floor(diffHour / 24);
507
+ // Show relative time for recent dates
508
+ if (diffSec < 60)
509
+ return this.applyColor('just now', chalk.gray);
510
+ if (diffMin < 60)
511
+ return this.applyColor(`${diffMin}m ago`, chalk.gray);
512
+ if (diffHour < 24)
513
+ return this.applyColor(`${diffHour}h ago`, chalk.gray);
514
+ if (diffDay < 7)
515
+ return this.applyColor(`${diffDay}d ago`, chalk.gray);
516
+ // Show formatted date for older dates
517
+ const month = (date.getMonth() + 1).toString().padStart(2, '0');
518
+ const day = date.getDate().toString().padStart(2, '0');
519
+ const year = date.getFullYear();
520
+ return this.applyColor(`${year}-${month}-${day}`, chalk.gray);
521
+ }
522
+ /**
523
+ * Format number with thousands separator
524
+ */
525
+ formatNumber(num) {
526
+ return num.toLocaleString('en-US');
527
+ }
528
+ /**
529
+ * Legacy formatValue for compact mode
530
+ */
185
531
  formatValue(value) {
186
532
  if (value === null || value === undefined)
187
533
  return chalk.gray('null');
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}