@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
package/README.md CHANGED
@@ -25,18 +25,54 @@ npm install -g @cakemail-org/cakemail-cli
25
25
  npx @cakemail-org/cakemail-cli --help
26
26
  ```
27
27
 
28
- ## Configuration
28
+ ## Quick Start
29
29
 
30
- Set your Cakemail credentials using environment variables:
30
+ No setup required! Just run any command and the CLI will guide you through authentication:
31
31
 
32
32
  ```bash
33
- # Option 1: Use access token
34
- export CAKEMAIL_ACCESS_TOKEN=your_access_token
33
+ cakemail campaigns list
34
+ ```
35
+
36
+ The CLI will prompt for your email and password, then save OAuth tokens to `~/.cakemail/config.json`.
37
+
38
+ **NEW in v1.7.0**: The CLI now uses OAuth token-based authentication. Your password is never stored - only secure access and refresh tokens are saved.
39
+
40
+ ### Profile System (NEW in v1.5.0)
41
+
42
+ Choose a profile that matches your workflow:
43
+
44
+ - **Developer**: Fast, scriptable, no interruptions (JSON output, no prompts, no confirmations)
45
+ - **Marketer**: Guided, interactive, safe (Compact output, prompts, confirmations, tips)
46
+ - **Balanced**: Best of both worlds (Table output, auto-detect prompts, confirmations) - **Default**
47
+
48
+ ```bash
49
+ # Switch profiles
50
+ cakemail config profile-set developer # For scripts and automation
51
+ cakemail config profile-set marketer # For exploratory work
52
+ cakemail config profile-set balanced # For general use
53
+
54
+ # Preview a profile before switching
55
+ cakemail config preview developer
56
+
57
+ # Override profile for one command
58
+ cakemail --profile developer campaigns list
59
+
60
+ # Disable all prompts for scripting
61
+ cakemail --batch campaigns create --name "Test" --list-id 123 --sender-id 456
62
+ ```
63
+
64
+ ### Manual Configuration (Optional)
35
65
 
36
- # Option 2: Use email/password
66
+ You can also configure manually with environment variables or `.env` file:
67
+
68
+ ```bash
69
+ # Option 1: Use email/password
37
70
  export CAKEMAIL_EMAIL=your@email.com
38
71
  export CAKEMAIL_PASSWORD=your_password
39
72
 
73
+ # Option 2: Use access token
74
+ export CAKEMAIL_ACCESS_TOKEN=your_access_token
75
+
40
76
  # Optional: Set default output format
41
77
  export CAKEMAIL_OUTPUT_FORMAT=compact # json, table, or compact
42
78
  ```
@@ -66,9 +102,12 @@ cakemail [options] <command>
66
102
  ### Global Options
67
103
 
68
104
  - `-f, --format <format>` - Output format: `json`, `table`, or `compact` (default: `json`)
105
+ - `--profile <type>` - Override profile for this command: `developer`, `marketer`, or `balanced`
106
+ - `--batch` - Run in batch/scripting mode (disable all interactive prompts)
69
107
  - `--access-token <token>` - Override access token from environment
70
108
  - `--email <email>` - Override email from environment
71
109
  - `--password <password>` - Override password from environment
110
+ - `--account <id>` - Override account ID for this command
72
111
 
73
112
  ### Output Formats
74
113
 
@@ -106,6 +145,37 @@ cakemail -f json campaigns list # Override to JSON
106
145
 
107
146
  ### Commands
108
147
 
148
+ #### Profile Management (v1.5.0+) & Logout (NEW in v1.7.0)
149
+
150
+ ```bash
151
+ # Show current profile and settings
152
+ cakemail config profile
153
+
154
+ # Switch to a different profile
155
+ cakemail config profile-set developer # Fast, scriptable
156
+ cakemail config profile-set marketer # Guided, interactive
157
+ cakemail config profile-set balanced # Balanced (default)
158
+
159
+ # Preview a profile without switching
160
+ cakemail config preview developer
161
+ cakemail config preview marketer
162
+
163
+ # Customize individual settings
164
+ cakemail config set output.format table
165
+ cakemail config set behavior.confirm_destructive false
166
+ cakemail config set display.date_format iso8601
167
+
168
+ # Reset all settings to profile defaults
169
+ cakemail config reset
170
+
171
+ # Show complete configuration
172
+ cakemail config show
173
+
174
+ # Logout and clear all credentials (NEW in v1.7.0)
175
+ cakemail logout # Interactive confirmation
176
+ cakemail logout --force # Skip confirmation
177
+ ```
178
+
109
179
  #### Email API v2
110
180
 
111
181
  ```bash
@@ -197,14 +267,21 @@ cakemail campaigns list [options]
197
267
  # Get campaign details
198
268
  cakemail campaigns get <id>
199
269
 
200
- # Create a campaign
270
+ # Create a campaign (interactive in marketer/balanced profiles)
201
271
  cakemail campaigns create -n "My Campaign" -l <list-id> [options]
202
- -n, --name <name> Campaign name (required)
203
- -l, --list-id <id> List ID (required)
204
- -s, --sender-id <id> Sender ID
272
+ -n, --name <name> Campaign name (prompts if missing)
273
+ -l, --list-id <id> List ID (auto-detects or shows selection)
274
+ -s, --sender-id <id> Sender ID (auto-detects or shows selection)
205
275
  -t, --template-id <id> Template ID
206
276
  --subject <subject> Email subject
207
277
 
278
+ # Interactive example (marketer profile)
279
+ cakemail campaigns create
280
+ # Prompts: Campaign name? Select list? Select sender?
281
+
282
+ # Non-interactive example (developer profile or --batch)
283
+ cakemail campaigns create --name "Newsletter" --list-id 123 --sender-id 456
284
+
208
285
  # Update a campaign
209
286
  cakemail campaigns update <id> [options]
210
287
  -n, --name <name> Campaign name
@@ -261,10 +338,17 @@ cakemail lists list [options]
261
338
  # Get list details
262
339
  cakemail lists get <id>
263
340
 
264
- # Create a list
341
+ # Create a list (interactive in marketer/balanced profiles)
265
342
  cakemail lists create -n "My List" [options]
266
- -n, --name <name> List name (required)
267
- -l, --language <lang> Language code (e.g., en, fr)
343
+ -n, --name <name> List name (prompts if missing)
344
+ -l, --language <lang> Language code (optional, prompts in interactive mode)
345
+
346
+ # Interactive example
347
+ cakemail lists create
348
+ # Prompts: List name? Language code (optional)?
349
+
350
+ # Non-interactive example
351
+ cakemail lists create --name "Newsletter Subscribers" --language en
268
352
 
269
353
  # Delete list
270
354
  cakemail lists delete <id> --force
@@ -510,6 +594,165 @@ cakemail emails logs --tag newsletter --status delivered
510
594
  cakemail emails tags
511
595
  ```
512
596
 
597
+ #### Tags (NEW in v1.6.0)
598
+
599
+ ```bash
600
+ # List all tags
601
+ cakemail tags list <list-id>
602
+ -p, --page <number> Page number
603
+ --per-page <number> Results per page
604
+ --with-count Include total count
605
+
606
+ # Show tag details
607
+ cakemail tags show <list-id> <tag-id>
608
+
609
+ # Create a tag
610
+ cakemail tags create <list-id> -n "vip" -d "VIP customers"
611
+ -n, --name <name> Tag name (required)
612
+ -d, --description <text> Tag description
613
+
614
+ # Update a tag
615
+ cakemail tags update <list-id> <tag-id> -n "premium" -d "Premium members"
616
+ -n, --name <name> New tag name
617
+ -d, --description <text> New description
618
+
619
+ # Delete a tag
620
+ cakemail tags delete <list-id> <tag-id> --force
621
+ ```
622
+
623
+ #### Interests (NEW in v1.6.0)
624
+
625
+ ```bash
626
+ # List all interests
627
+ cakemail interests list <list-id>
628
+ -p, --page <number> Page number
629
+ --per-page <number> Results per page
630
+ --with-count Include total count
631
+
632
+ # Show interest details
633
+ cakemail interests show <list-id> <interest-id>
634
+
635
+ # Create an interest
636
+ cakemail interests create <list-id> -n "Product Updates" -d "Receive product announcements"
637
+ -n, --name <name> Interest name (required)
638
+ -d, --description <text> Interest description
639
+
640
+ # Update an interest
641
+ cakemail interests update <list-id> <interest-id> -n "News" -d "Newsletter updates"
642
+ -n, --name <name> New interest name
643
+ -d, --description <text> New description
644
+
645
+ # Delete an interest
646
+ cakemail interests delete <list-id> <interest-id> --force
647
+
648
+ # Manage contact interests
649
+ cakemail contacts add-interests <list-id> -i "Product Updates,News" -c "1,2,3"
650
+ cakemail contacts add-interests <list-id> -i "Newsletter" -q "status='subscribed'"
651
+ cakemail contacts remove-interests <list-id> -i "Old Interest" -c "1,2,3"
652
+ -i, --interests <interests> Comma-separated interest names (required)
653
+ -c, --contacts <ids> Comma-separated contact IDs
654
+ -q, --query <query> SQL query to select contacts
655
+ ```
656
+
657
+ #### Campaign Enhancements (NEW in v1.6.0)
658
+
659
+ ```bash
660
+ # Enhanced campaign commands with additional filters
661
+ cakemail campaigns list --sort "+scheduled_for" # Sort by scheduled date
662
+ cakemail campaigns list --filter "status==delivered;name==Newsletter"
663
+
664
+ # Show rendered campaign HTML
665
+ cakemail campaigns show-html <id>
666
+
667
+ # Get campaign statistics
668
+ cakemail campaigns stats <id>
669
+ ```
670
+
671
+ #### Activity Logs (NEW in v1.6.0)
672
+
673
+ ```bash
674
+ # Campaign activity logs
675
+ cakemail logs campaign <campaign-id>
676
+ --from <date> Filter by start date (YYYY-MM-DD)
677
+ --to <date> Filter by end date (YYYY-MM-DD)
678
+ --status <status> Filter by status
679
+ -p, --page <number> Page number
680
+ --per-page <number> Results per page
681
+
682
+ # List activity logs
683
+ cakemail logs list <list-id>
684
+ --from <date> Filter by start date
685
+ --to <date> Filter by end date
686
+ --status <status> Filter by status
687
+ -p, --page <number> Page number
688
+ --per-page <number> Results per page
689
+
690
+ # Show single log entry
691
+ cakemail logs show <list-id> <log-id>
692
+ ```
693
+
694
+ #### Transactional Templates (NEW in v1.6.0)
695
+
696
+ ```bash
697
+ # List transactional templates
698
+ cakemail transactional-templates list [list-id]
699
+ -p, --page <number> Page number
700
+ --per-page <number> Results per page
701
+ --with-count Include total count
702
+
703
+ # Show template details
704
+ cakemail transactional-templates show [list-id] <template-id>
705
+
706
+ # Create a transactional template
707
+ cakemail transactional-templates create [list-id] \
708
+ -n "Order Confirmation" \
709
+ -s "Your Order #{{order_id}}" \
710
+ --html "<h1>Order Confirmation</h1>" \
711
+ --sender-id 123
712
+ -n, --name <name> Template name (required)
713
+ -s, --subject <subject> Email subject (required)
714
+ --html <html> HTML content (required)
715
+ --text <text> Plain text content
716
+ --sender-id <id> Sender ID
717
+ --tracking <tracking> Tracking settings
718
+
719
+ # Update a template
720
+ cakemail transactional-templates update [list-id] <template-id> \
721
+ -n "New Name" \
722
+ -s "New Subject"
723
+ -n, --name <name> Template name
724
+ -s, --subject <subject> Email subject
725
+ --html <html> HTML content
726
+ --text <text> Plain text content
727
+ --sender-id <id> Sender ID
728
+ --tracking <tracking> Tracking settings
729
+
730
+ # Delete a template
731
+ cakemail transactional-templates delete [list-id] <template-id> --force
732
+
733
+ # Send transactional email from template
734
+ cakemail transactional-templates send [list-id] <template-id> \
735
+ -c 456 \
736
+ --variables '{"order_id":"12345"}'
737
+ -c, --contact-id <id> Contact ID to send to
738
+ -e, --email <email> Email address (alternative to contact-id)
739
+ --variables <json> Template variables as JSON
740
+
741
+ # Send test email
742
+ cakemail transactional-templates test [list-id] <template-id> \
743
+ -e "test@example.com" \
744
+ --variables '{"order_id":"TEST"}'
745
+ -e, --email <email> Email address (required)
746
+ --variables <json> Template variables as JSON
747
+
748
+ # Render template preview
749
+ cakemail transactional-templates render [list-id] <template-id> \
750
+ -c 456 \
751
+ --variables '{"order_id":"12345"}'
752
+ -c, --contact-id <id> Contact ID for personalization
753
+ --variables <json> Template variables as JSON
754
+ ```
755
+
513
756
  ## Examples
514
757
 
515
758
  ```bash
@@ -591,6 +834,63 @@ npm start -- campaigns list
591
834
  node dist/cli.js campaigns list
592
835
  ```
593
836
 
837
+ ### Testing
838
+
839
+ The CLI has a comprehensive test suite:
840
+
841
+ ```bash
842
+ # Run all tests
843
+ npm test
844
+
845
+ # Run integration tests (requires real API credentials)
846
+ npm run test:integration
847
+
848
+ # Run PTY tests (requires Node 18-20)
849
+ npm run test:pty
850
+
851
+ # Generate coverage report
852
+ npm run test:coverage
853
+
854
+ # Watch mode for development
855
+ npm run test:watch
856
+ ```
857
+
858
+ **Test Types:**
859
+
860
+ 1. **Integration Tests** - Test against real Cakemail API
861
+ - Requires credentials in `.env` file
862
+ - Tests real API calls and responses
863
+ - Currently: 5 passing tests
864
+
865
+ 2. **PTY Tests** - Simulate real terminal user experience
866
+ - Tests colors, spinners, interactive prompts
867
+ - Tests all output formats (JSON, table, compact)
868
+ - Requires Node 18.x or 20.x (node-pty compatibility)
869
+ - Uses mock HTTP server for isolated testing
870
+
871
+ **Setting up Integration Tests:**
872
+
873
+ Create a `.env` file with test credentials:
874
+
875
+ ```bash
876
+ CAKEMAIL_EMAIL=your_test_account@example.com
877
+ CAKEMAIL_PASSWORD=your_test_password
878
+ ```
879
+
880
+ **PTY Tests (Note):**
881
+
882
+ PTY tests require Node 18 or 20 due to node-pty compilation limitations with Node 24+. If you're on Node 24:
883
+
884
+ ```bash
885
+ # Switch to Node 20 for PTY tests
886
+ nvm install 20
887
+ nvm use 20
888
+ npm install
889
+ npm run test:pty
890
+ ```
891
+
892
+ See `tests/PTY_TESTING_GUIDE.md` for complete testing documentation.
893
+
594
894
  ## License
595
895
 
596
896
  MIT
package/dist/cli.js CHANGED
@@ -14,23 +14,48 @@ import { createReportsCommand } from './commands/reports.js';
14
14
  import { createSegmentsCommand } from './commands/segments.js';
15
15
  import { createAttributesCommand } from './commands/attributes.js';
16
16
  import { createSuppressedCommand } from './commands/suppressed.js';
17
+ import { createAccountCommand } from './commands/account.js';
18
+ import { createTagsCommand } from './commands/tags.js';
19
+ import { createInterestsCommand } from './commands/interests.js';
20
+ import { createLogsCommand } from './commands/logs.js';
21
+ import { createTransactionalTemplatesCommand } from './commands/transactional-templates.js';
22
+ import { registerConfigCommands } from './commands/config.js';
23
+ import { getProfileConfig } from './utils/config-file.js';
17
24
  import chalk from 'chalk';
18
25
  async function main() {
19
26
  const program = new Command();
20
27
  program
21
28
  .name('cakemail')
22
29
  .description('Official Cakemail CLI - Command-line interface for the Cakemail API')
23
- .version('1.3.0')
30
+ .version('1.7.0')
24
31
  .option('-f, --format <format>', 'Output format (json|table|compact)')
32
+ .option('--profile <type>', 'Override profile for this command (developer|marketer|balanced)')
33
+ .option('--batch', 'Run in batch/scripting mode (disable all interactive prompts)')
25
34
  .option('--access-token <token>', 'Cakemail access token (overrides env)')
26
35
  .option('--email <email>', 'Cakemail account email (overrides env)')
27
- .option('--password <password>', 'Cakemail account password (overrides env)');
36
+ .option('--password <password>', 'Cakemail account password (overrides env)')
37
+ .option('--account <id>', 'Account ID to use for this command (overrides current account)');
28
38
  try {
29
- // Get config (don't require credentials for help/version)
30
- const config = getConfig(false);
31
- // Create client and formatter with lazy format evaluation
32
- // Client will fail on first API call if credentials are missing
33
- const client = new CakemailClient(config);
39
+ // Check if this is a help/version command that doesn't need credentials
40
+ const args = process.argv.slice(2);
41
+ // Check if it's root-level help/version (single flag only)
42
+ const isRootHelp = (args.length === 1) &&
43
+ (args[0] === '-h' || args[0] === '--help' ||
44
+ args[0] === '-V' || args[0] === '--version');
45
+ // Check if it's a help request for any subcommand
46
+ const isSubcommandHelp = args.includes('-h') || args.includes('--help');
47
+ // For root help/version only, skip auth and commands
48
+ if (isRootHelp) {
49
+ await program.parseAsync(process.argv);
50
+ return;
51
+ }
52
+ // For subcommand help, we need to add commands but can skip auth
53
+ // For everything else, we need full auth
54
+ const needsAuth = !isSubcommandHelp;
55
+ // Get config with interactive authentication if needed
56
+ const config = await getConfig(needsAuth, needsAuth);
57
+ // Create client and formatter (use dummy values for help commands)
58
+ const client = new CakemailClient(needsAuth ? config : { accessToken: 'dummy', profileConfig: config.profileConfig });
34
59
  const formatter = new OutputFormatter(() => {
35
60
  const opts = program.opts();
36
61
  // Override config with CLI options
@@ -40,10 +65,32 @@ async function main() {
40
65
  config.email = opts.email;
41
66
  if (opts.password)
42
67
  config.password = opts.password;
43
- // Priority: CLI flag > env var > default
68
+ if (opts.account)
69
+ config.currentAccountId = opts.account;
70
+ // Priority: CLI flag > env var > profile config > default
44
71
  return opts.format || config.outputFormat || 'json';
72
+ }, () => {
73
+ const opts = program.opts();
74
+ // Handle --batch flag by setting environment variable
75
+ if (opts.batch) {
76
+ process.env.CAKEMAIL_BATCH_MODE = 'true';
77
+ }
78
+ // Handle --profile override
79
+ if (opts.profile) {
80
+ const validProfiles = ['developer', 'marketer', 'balanced'];
81
+ if (!validProfiles.includes(opts.profile)) {
82
+ console.error(chalk.red(`Invalid profile: ${opts.profile}`));
83
+ console.error(chalk.gray(`Valid profiles: ${validProfiles.join(', ')}`));
84
+ process.exit(1);
85
+ }
86
+ return getProfileConfig(opts.profile);
87
+ }
88
+ // Return default profile config
89
+ return config.profileConfig;
45
90
  });
46
91
  // Add commands
92
+ registerConfigCommands(program);
93
+ program.addCommand(createAccountCommand(client, formatter));
47
94
  program.addCommand(createCampaignsCommand(client, formatter));
48
95
  program.addCommand(createListsCommand(client, formatter));
49
96
  program.addCommand(createContactsCommand(client, formatter));
@@ -55,6 +102,10 @@ async function main() {
55
102
  program.addCommand(createSegmentsCommand(client, formatter));
56
103
  program.addCommand(createAttributesCommand(client, formatter));
57
104
  program.addCommand(createSuppressedCommand(client, formatter));
105
+ program.addCommand(createTagsCommand(client, formatter));
106
+ program.addCommand(createInterestsCommand(client, formatter));
107
+ program.addCommand(createLogsCommand(client, formatter));
108
+ program.addCommand(createTransactionalTemplatesCommand(client, formatter));
58
109
  // Parse
59
110
  await program.parseAsync(process.argv);
60
111
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { CakemailClient as SDK } from '@cakemail-org/cakemail-sdk';
2
2
  export interface CakemailConfig {
3
3
  accessToken?: string;
4
+ refreshToken?: string;
5
+ expiresIn?: number;
4
6
  email?: string;
5
7
  password?: string;
6
8
  baseURL?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,GAAG,EAAwB,MAAM,4BAA4B,CAAC;AAEzF,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,cAAc;IAClB,GAAG,EAAE,GAAG,CAAC;IAChB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,cAAc;IAiBlC;;;OAGG;IACG,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAMhE,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlD,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAInD,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAG/C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,GAAG,EAAwB,MAAM,4BAA4B,CAAC;AAEzF,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,cAAc;IAClB,GAAG,EAAE,GAAG,CAAC;IAChB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,cAAc;IAyBlC;;;OAGG;IACG,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAMhE,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlD,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAInD,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAG/C"}
package/dist/client.js CHANGED
@@ -4,19 +4,27 @@ import { CakemailClient as SDK } from '@cakemail-org/cakemail-sdk';
4
4
  * Provides backward compatibility with our CLI while using the SDK
5
5
  */
6
6
  export class CakemailClient {
7
- sdk;
8
- config;
9
7
  constructor(config) {
10
8
  this.config = config;
11
- // The SDK requires email and password
12
- if (!config.email || !config.password) {
13
- throw new Error('Email and password are required for SDK authentication');
9
+ // The SDK supports either access token OR email/password
10
+ if (!config.accessToken && (!config.email || !config.password)) {
11
+ throw new Error('Either accessToken or email/password is required for authentication');
14
12
  }
15
13
  const sdkConfig = {
16
- email: config.email,
17
- password: config.password,
18
14
  baseURL: config.baseURL || process.env.CAKEMAIL_API_BASE || 'https://api.cakemail.dev',
19
15
  };
16
+ // Use access token if available, otherwise use email/password
17
+ if (config.accessToken) {
18
+ sdkConfig.accessToken = config.accessToken;
19
+ if (config.refreshToken)
20
+ sdkConfig.refreshToken = config.refreshToken;
21
+ if (config.expiresIn)
22
+ sdkConfig.expiresIn = config.expiresIn;
23
+ }
24
+ else {
25
+ sdkConfig.email = config.email;
26
+ sdkConfig.password = config.password;
27
+ }
20
28
  this.sdk = new SDK(sdkConfig);
21
29
  }
22
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,GAAG,EAAwB,MAAM,4BAA4B,CAAC;AASzF;;;GAGG;AACH,MAAM,OAAO,cAAc;IAClB,GAAG,CAAM;IACR,MAAM,CAAiB;IAE/B,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,sCAAsC;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,SAAS,GAAyB;YACtC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,0BAA0B;SACvF,CAAC;QAEF,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAU,GAAW,EAAE,MAAyB;QACvD,iDAAiD;QACjD,4FAA4F;QAC5F,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACvH,CAAC;IAED,KAAK,CAAC,IAAI,CAAU,GAAW,EAAE,IAAU;QACzC,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACvH,CAAC;IAED,KAAK,CAAC,KAAK,CAAU,GAAW,EAAE,IAAU;QAC1C,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACvH,CAAC;IAED,KAAK,CAAC,MAAM,CAAU,GAAW;QAC/B,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACvH,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,GAAG,EAAwB,MAAM,4BAA4B,CAAC;AAWzF;;;GAGG;AACH,MAAM,OAAO,cAAc;IAIzB,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,yDAAyD;QACzD,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,SAAS,GAAyB;YACtC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,0BAA0B;SACvF,CAAC;QAEF,8DAA8D;QAC9D,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YAC3C,IAAI,MAAM,CAAC,YAAY;gBAAE,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;YACtE,IAAI,MAAM,CAAC,SAAS;gBAAE,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC/B,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAU,GAAW,EAAE,MAAyB;QACvD,iDAAiD;QACjD,4FAA4F;QAC5F,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACvH,CAAC;IAED,KAAK,CAAC,IAAI,CAAU,GAAW,EAAE,IAAU;QACzC,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACvH,CAAC;IAED,KAAK,CAAC,KAAK,CAAU,GAAW,EAAE,IAAU;QAC1C,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACvH,CAAC;IAED,KAAK,CAAC,MAAM,CAAU,GAAW;QAC/B,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACvH,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ import { Command } from 'commander';
2
+ import { CakemailClient } from '../client.js';
3
+ import { OutputFormatter } from '../utils/output.js';
4
+ export declare function createAccountCommand(client: CakemailClient, formatter: OutputFormatter): Command;
5
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/commands/account.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;AAQrD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAgQhG"}