@cakemail-org/cakemail-cli 1.3.0 → 1.7.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 (103) hide show
  1. package/README.md +312 -12
  2. package/dist/cli.js +59 -8
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client.d.ts +2 -0
  5. package/dist/client.d.ts.map +1 -1
  6. package/dist/client.js +15 -7
  7. package/dist/client.js.map +1 -1
  8. package/dist/commands/account.d.ts +5 -0
  9. package/dist/commands/account.d.ts.map +1 -0
  10. package/dist/commands/account.js +231 -0
  11. package/dist/commands/account.js.map +1 -0
  12. package/dist/commands/attributes.d.ts.map +1 -1
  13. package/dist/commands/attributes.js +43 -15
  14. package/dist/commands/attributes.js.map +1 -1
  15. package/dist/commands/campaigns.d.ts.map +1 -1
  16. package/dist/commands/campaigns.js +255 -26
  17. package/dist/commands/campaigns.js.map +1 -1
  18. package/dist/commands/config.d.ts +8 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +294 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/contacts.d.ts.map +1 -1
  23. package/dist/commands/contacts.js +321 -47
  24. package/dist/commands/contacts.js.map +1 -1
  25. package/dist/commands/interests.d.ts +5 -0
  26. package/dist/commands/interests.d.ts.map +1 -0
  27. package/dist/commands/interests.js +172 -0
  28. package/dist/commands/interests.js.map +1 -0
  29. package/dist/commands/lists.d.ts.map +1 -1
  30. package/dist/commands/lists.js +165 -30
  31. package/dist/commands/lists.js.map +1 -1
  32. package/dist/commands/logs.d.ts +5 -0
  33. package/dist/commands/logs.d.ts.map +1 -0
  34. package/dist/commands/logs.js +237 -0
  35. package/dist/commands/logs.js.map +1 -0
  36. package/dist/commands/reports.d.ts.map +1 -1
  37. package/dist/commands/reports.js +90 -13
  38. package/dist/commands/reports.js.map +1 -1
  39. package/dist/commands/segments.d.ts.map +1 -1
  40. package/dist/commands/segments.js +59 -21
  41. package/dist/commands/segments.js.map +1 -1
  42. package/dist/commands/senders.d.ts.map +1 -1
  43. package/dist/commands/senders.js +46 -12
  44. package/dist/commands/senders.js.map +1 -1
  45. package/dist/commands/suppressed.d.ts.map +1 -1
  46. package/dist/commands/suppressed.js +20 -6
  47. package/dist/commands/suppressed.js.map +1 -1
  48. package/dist/commands/tags.d.ts +5 -0
  49. package/dist/commands/tags.d.ts.map +1 -0
  50. package/dist/commands/tags.js +124 -0
  51. package/dist/commands/tags.js.map +1 -0
  52. package/dist/commands/templates.d.ts.map +1 -1
  53. package/dist/commands/templates.js +11 -3
  54. package/dist/commands/templates.js.map +1 -1
  55. package/dist/commands/transactional-templates.d.ts +5 -0
  56. package/dist/commands/transactional-templates.d.ts.map +1 -0
  57. package/dist/commands/transactional-templates.js +354 -0
  58. package/dist/commands/transactional-templates.js.map +1 -0
  59. package/dist/types/profile.d.ts +92 -0
  60. package/dist/types/profile.d.ts.map +1 -0
  61. package/dist/types/profile.js +119 -0
  62. package/dist/types/profile.js.map +1 -0
  63. package/dist/utils/auth.d.ts +33 -0
  64. package/dist/utils/auth.d.ts.map +1 -0
  65. package/dist/utils/auth.js +226 -0
  66. package/dist/utils/auth.js.map +1 -0
  67. package/dist/utils/config-file.d.ts +99 -0
  68. package/dist/utils/config-file.d.ts.map +1 -0
  69. package/dist/utils/config-file.js +259 -0
  70. package/dist/utils/config-file.js.map +1 -0
  71. package/dist/utils/config.d.ts +13 -2
  72. package/dist/utils/config.d.ts.map +1 -1
  73. package/dist/utils/config.js +82 -8
  74. package/dist/utils/config.js.map +1 -1
  75. package/dist/utils/confirm.d.ts +38 -0
  76. package/dist/utils/confirm.d.ts.map +1 -0
  77. package/dist/utils/confirm.js +124 -0
  78. package/dist/utils/confirm.js.map +1 -0
  79. package/dist/utils/defaults.d.ts +39 -0
  80. package/dist/utils/defaults.d.ts.map +1 -0
  81. package/dist/utils/defaults.js +195 -0
  82. package/dist/utils/defaults.js.map +1 -0
  83. package/dist/utils/errors.d.ts +67 -0
  84. package/dist/utils/errors.d.ts.map +1 -0
  85. package/dist/utils/errors.js +395 -0
  86. package/dist/utils/errors.js.map +1 -0
  87. package/dist/utils/interactive.d.ts +97 -0
  88. package/dist/utils/interactive.d.ts.map +1 -0
  89. package/dist/utils/interactive.js +265 -0
  90. package/dist/utils/interactive.js.map +1 -0
  91. package/dist/utils/list-defaults.d.ts +33 -0
  92. package/dist/utils/list-defaults.d.ts.map +1 -0
  93. package/dist/utils/list-defaults.js +52 -0
  94. package/dist/utils/list-defaults.js.map +1 -0
  95. package/dist/utils/output.d.ts +72 -2
  96. package/dist/utils/output.d.ts.map +1 -1
  97. package/dist/utils/output.js +407 -38
  98. package/dist/utils/output.js.map +1 -1
  99. package/dist/utils/progress.d.ts +139 -0
  100. package/dist/utils/progress.d.ts.map +1 -0
  101. package/dist/utils/progress.js +216 -0
  102. package/dist/utils/progress.js.map +1 -0
  103. package/package.json +19 -3
@@ -0,0 +1,231 @@
1
+ import { Command } from 'commander';
2
+ import { testCredentials } from '../utils/auth.js';
3
+ import { readFileSync, existsSync, writeFileSync } from 'fs';
4
+ import { join } from 'path';
5
+ import ora from 'ora';
6
+ import chalk from 'chalk';
7
+ import { confirmAction } from '../utils/confirm.js';
8
+ export function createAccountCommand(client, formatter) {
9
+ const account = new Command('account')
10
+ .description('Manage account context and multi-tenant access');
11
+ // Show current account
12
+ account
13
+ .command('show')
14
+ .description('Display current account details')
15
+ .action(async () => {
16
+ const spinner = ora('Fetching account details...').start();
17
+ try {
18
+ const data = await client.sdk.accountService.getSelfAccount();
19
+ spinner.stop();
20
+ const currentAccountId = process.env.CAKEMAIL_CURRENT_ACCOUNT_ID;
21
+ if (currentAccountId) {
22
+ formatter.info(`Current account context: ${currentAccountId}`);
23
+ }
24
+ formatter.output(data);
25
+ }
26
+ catch (error) {
27
+ spinner.stop();
28
+ formatter.error(error.message);
29
+ process.exit(1);
30
+ }
31
+ });
32
+ // List all accessible accounts
33
+ account
34
+ .command('list')
35
+ .description('List all accessible accounts (parent and sub-accounts)')
36
+ .option('-r, --recursive', 'Include nested sub-accounts')
37
+ .action(async (options) => {
38
+ const spinner = ora('Fetching accessible accounts...').start();
39
+ try {
40
+ // Get main account
41
+ const mainAccount = await client.sdk.accountService.getSelfAccount();
42
+ const accounts = [mainAccount.data];
43
+ // Get sub-accounts
44
+ const subAccounts = await client.sdk.subAccountService.listAccounts({
45
+ partnerAccountId: parseInt(mainAccount.data.id),
46
+ recursive: options.recursive !== false
47
+ });
48
+ if (subAccounts.data && subAccounts.data.length > 0) {
49
+ accounts.push(...subAccounts.data);
50
+ }
51
+ spinner.stop();
52
+ // Mark current account
53
+ const currentAccountId = process.env.CAKEMAIL_CURRENT_ACCOUNT_ID || mainAccount.data.id;
54
+ console.log(chalk.cyan('Available accounts:\n'));
55
+ accounts.forEach(acc => {
56
+ const isCurrent = acc.id === currentAccountId;
57
+ const marker = isCurrent ? chalk.green('• ') : ' ';
58
+ const suffix = isCurrent ? chalk.gray(' (current)') : '';
59
+ console.log(`${marker}${acc.name || `Account ${acc.id}`} (ID: ${acc.id})${suffix}`);
60
+ });
61
+ console.log('');
62
+ formatter.info(`Total accessible accounts: ${accounts.length}`);
63
+ }
64
+ catch (error) {
65
+ spinner.stop();
66
+ formatter.error(error.message);
67
+ process.exit(1);
68
+ }
69
+ });
70
+ // Switch active account
71
+ account
72
+ .command('use <id>')
73
+ .description('Switch active account context')
74
+ .action(async (id) => {
75
+ const spinner = ora('Switching account context...').start();
76
+ try {
77
+ const accountId = id;
78
+ // Verify the account exists and is accessible
79
+ // First check if it's the main account
80
+ const mainAccount = await client.sdk.accountService.getSelfAccount();
81
+ if (mainAccount.data.id === accountId) {
82
+ // It's the main account
83
+ spinner.stop();
84
+ }
85
+ else {
86
+ // Check sub-accounts
87
+ const subAccounts = await client.sdk.subAccountService.listAccounts({
88
+ partnerAccountId: parseInt(mainAccount.data.id),
89
+ recursive: true
90
+ });
91
+ const hasAccess = subAccounts.data?.some(acc => acc.id === accountId);
92
+ if (!hasAccess) {
93
+ spinner.stop();
94
+ formatter.error(`Account ${accountId} not found or not accessible`);
95
+ process.exit(1);
96
+ }
97
+ spinner.stop();
98
+ }
99
+ // Update .env file with new account context
100
+ const envPath = join(process.cwd(), '.env');
101
+ let envContent = '';
102
+ if (existsSync(envPath)) {
103
+ envContent = readFileSync(envPath, 'utf-8');
104
+ }
105
+ // Parse existing env variables
106
+ const envLines = envContent.split('\n');
107
+ const envVars = {};
108
+ envLines.forEach(line => {
109
+ const match = line.match(/^([^=]+)=(.*)$/);
110
+ if (match) {
111
+ envVars[match[1].trim()] = match[2].trim();
112
+ }
113
+ });
114
+ // Update account ID
115
+ envVars['CAKEMAIL_CURRENT_ACCOUNT_ID'] = accountId;
116
+ // Rebuild .env content
117
+ const newEnvContent = Object.entries(envVars)
118
+ .map(([key, value]) => `${key}=${value}`)
119
+ .join('\n') + '\n';
120
+ writeFileSync(envPath, newEnvContent, 'utf-8');
121
+ // Get account name for confirmation
122
+ let accountName = `Account ${accountId}`;
123
+ if (mainAccount.data.id === accountId) {
124
+ accountName = mainAccount.data.name || accountName;
125
+ }
126
+ else {
127
+ const subAccounts = await client.sdk.subAccountService.listAccounts({
128
+ partnerAccountId: parseInt(mainAccount.data.id),
129
+ recursive: true
130
+ });
131
+ const targetAccount = subAccounts.data?.find(acc => acc.id === accountId);
132
+ if (targetAccount) {
133
+ accountName = targetAccount.name || accountName;
134
+ }
135
+ }
136
+ formatter.success(`Now using: ${accountName} (ID: ${accountId})`);
137
+ }
138
+ catch (error) {
139
+ spinner.stop();
140
+ formatter.error(error.message);
141
+ process.exit(1);
142
+ }
143
+ });
144
+ // Test current credentials
145
+ account
146
+ .command('test')
147
+ .description('Validate current credentials')
148
+ .action(async () => {
149
+ const spinner = ora('Testing credentials...').start();
150
+ try {
151
+ const email = process.env.CAKEMAIL_EMAIL;
152
+ const password = process.env.CAKEMAIL_PASSWORD;
153
+ if (!email || !password) {
154
+ spinner.stop();
155
+ formatter.error('No credentials found in .env file');
156
+ process.exit(1);
157
+ }
158
+ const isValid = await testCredentials(email, password);
159
+ spinner.stop();
160
+ if (isValid) {
161
+ formatter.success('Credentials are valid');
162
+ // Show account info
163
+ const accountData = await client.sdk.accountService.getSelfAccount();
164
+ const account = accountData.data;
165
+ console.log(chalk.gray(`\nAuthenticated as: ${email}`));
166
+ console.log(chalk.gray(`Account: ${account.name || `ID ${account.id}`}`));
167
+ }
168
+ else {
169
+ formatter.error('Invalid credentials');
170
+ process.exit(1);
171
+ }
172
+ }
173
+ catch (error) {
174
+ spinner.stop();
175
+ formatter.error(error.message);
176
+ process.exit(1);
177
+ }
178
+ });
179
+ // Logout (remove credentials)
180
+ account
181
+ .command('logout')
182
+ .description('Remove credentials from .env file')
183
+ .option('-f, --force', 'Skip confirmation prompt')
184
+ .action(async (options) => {
185
+ // Interactive confirmation (unless --force is used)
186
+ if (!options.force) {
187
+ const confirmed = await confirmAction('Log out and remove credentials?', [
188
+ 'Credentials will be removed from .env file',
189
+ 'You will need to re-authenticate'
190
+ ], 'low');
191
+ if (!confirmed) {
192
+ formatter.info('Logout cancelled');
193
+ return;
194
+ }
195
+ }
196
+ try {
197
+ const envPath = join(process.cwd(), '.env');
198
+ if (!existsSync(envPath)) {
199
+ formatter.info('No .env file found');
200
+ return;
201
+ }
202
+ const envContent = readFileSync(envPath, 'utf-8');
203
+ const envLines = envContent.split('\n');
204
+ const envVars = {};
205
+ envLines.forEach(line => {
206
+ const match = line.match(/^([^=]+)=(.*)$/);
207
+ if (match) {
208
+ envVars[match[1].trim()] = match[2].trim();
209
+ }
210
+ });
211
+ // Remove auth-related variables
212
+ delete envVars['CAKEMAIL_EMAIL'];
213
+ delete envVars['CAKEMAIL_PASSWORD'];
214
+ delete envVars['CAKEMAIL_ACCESS_TOKEN'];
215
+ delete envVars['CAKEMAIL_CURRENT_ACCOUNT_ID'];
216
+ // Rebuild .env content
217
+ const newEnvContent = Object.entries(envVars)
218
+ .map(([key, value]) => `${key}=${value}`)
219
+ .join('\n') + '\n';
220
+ writeFileSync(envPath, newEnvContent, 'utf-8');
221
+ formatter.success('Logged out successfully');
222
+ formatter.info('Credentials removed from .env file');
223
+ }
224
+ catch (error) {
225
+ formatter.error(error.message);
226
+ process.exit(1);
227
+ }
228
+ });
229
+ return account;
230
+ }
231
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/commands/account.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../src/commands/attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAgGnG"}
1
+ {"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../src/commands/attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKrD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAmInG"}
@@ -1,17 +1,24 @@
1
1
  import { Command } from 'commander';
2
2
  import ora from 'ora';
3
+ import { confirmDelete } from '../utils/confirm.js';
4
+ import { autoDetectList } from '../utils/defaults.js';
3
5
  export function createAttributesCommand(client, formatter) {
4
6
  const attributes = new Command('attributes')
5
7
  .description('Manage custom attributes (custom fields)');
6
8
  // List attributes
7
9
  attributes
8
- .command('list <list-id>')
9
- .description('List all custom attributes for a list')
10
+ .command('list [list-id]')
11
+ .description('List all custom attributes for a list (auto-detects if only one list exists)')
10
12
  .action(async (listId) => {
13
+ // Auto-detect list ID if not provided
14
+ const detectedListId = await autoDetectList(client, formatter, listId, { useCache: true });
15
+ if (!detectedListId) {
16
+ process.exit(1);
17
+ }
11
18
  const spinner = ora('Fetching custom attributes...').start();
12
19
  try {
13
20
  const data = await client.sdk.customAttributeService.listCustomAttributes({
14
- listId: parseInt(listId)
21
+ listId: detectedListId
15
22
  });
16
23
  spinner.stop();
17
24
  formatter.output(data);
@@ -24,13 +31,18 @@ export function createAttributesCommand(client, formatter) {
24
31
  });
25
32
  // Get attribute
26
33
  attributes
27
- .command('get <list-id> <name>')
28
- .description('Get custom attribute details')
34
+ .command('get [list-id] <name>')
35
+ .description('Get custom attribute details (auto-detects if only one list exists)')
29
36
  .action(async (listId, name) => {
37
+ // Auto-detect list ID if not provided
38
+ const detectedListId = await autoDetectList(client, formatter, listId, { useCache: true });
39
+ if (!detectedListId) {
40
+ process.exit(1);
41
+ }
30
42
  const spinner = ora(`Fetching attribute ${name}...`).start();
31
43
  try {
32
44
  const data = await client.sdk.customAttributeService.getCustomAttribute({
33
- listId: parseInt(listId),
45
+ listId: detectedListId,
34
46
  name
35
47
  });
36
48
  spinner.stop();
@@ -44,15 +56,20 @@ export function createAttributesCommand(client, formatter) {
44
56
  });
45
57
  // Create attribute
46
58
  attributes
47
- .command('create <list-id>')
48
- .description('Create a new custom attribute')
59
+ .command('create [list-id]')
60
+ .description('Create a new custom attribute (auto-detects if only one list exists)')
49
61
  .requiredOption('-n, --name <name>', 'Attribute name')
50
62
  .requiredOption('-t, --type <type>', 'Attribute type (text, number, date, boolean)')
51
63
  .action(async (listId, options) => {
64
+ // Auto-detect list ID if not provided
65
+ const detectedListId = await autoDetectList(client, formatter, listId, { useCache: true });
66
+ if (!detectedListId) {
67
+ process.exit(1);
68
+ }
52
69
  const spinner = ora('Creating custom attribute...').start();
53
70
  try {
54
71
  const data = await client.sdk.customAttributeService.createCustomAttribute({
55
- listId: parseInt(listId),
72
+ listId: detectedListId,
56
73
  requestBody: {
57
74
  name: options.name,
58
75
  type: options.type
@@ -70,18 +87,29 @@ export function createAttributesCommand(client, formatter) {
70
87
  });
71
88
  // Delete attribute
72
89
  attributes
73
- .command('delete <list-id> <name>')
74
- .description('Delete a custom attribute')
75
- .option('-f, --force', 'Skip confirmation')
90
+ .command('delete [list-id] <name>')
91
+ .description('Delete a custom attribute (auto-detects if only one list exists)')
92
+ .option('-f, --force', 'Skip confirmation prompt')
76
93
  .action(async (listId, name, options) => {
77
- if (!options.force) {
78
- formatter.info('Use --force to confirm deletion');
94
+ // Auto-detect list ID if not provided
95
+ const detectedListId = await autoDetectList(client, formatter, listId, { useCache: true });
96
+ if (!detectedListId) {
79
97
  process.exit(1);
80
98
  }
99
+ // Interactive confirmation (unless --force is used)
100
+ if (!options.force) {
101
+ const confirmed = await confirmDelete('custom attribute', name, [
102
+ 'Attribute and all its data will be deleted from all contacts'
103
+ ]);
104
+ if (!confirmed) {
105
+ formatter.info('Deletion cancelled');
106
+ return;
107
+ }
108
+ }
81
109
  const spinner = ora(`Deleting attribute ${name}...`).start();
82
110
  try {
83
111
  await client.sdk.customAttributeService.deleteCustomAttribute({
84
- listId: parseInt(listId),
112
+ listId: detectedListId,
85
113
  name
86
114
  });
87
115
  spinner.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../src/commands/attributes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../src/commands/attributes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/commands/campaigns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAkUlG"}
1
+ {"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/commands/campaigns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AASrD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CA0jBlG"}