@sendly/cli 3.12.3 → 3.13.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 (66) hide show
  1. package/dist/commands/campaigns/cancel.d.ts +13 -0
  2. package/dist/commands/campaigns/cancel.js +34 -0
  3. package/dist/commands/campaigns/clone.d.ts +14 -0
  4. package/dist/commands/campaigns/clone.js +47 -0
  5. package/dist/commands/campaigns/create.d.ts +14 -0
  6. package/dist/commands/campaigns/create.js +64 -0
  7. package/dist/commands/campaigns/delete.d.ts +14 -0
  8. package/dist/commands/campaigns/delete.js +63 -0
  9. package/dist/commands/campaigns/get.d.ts +13 -0
  10. package/dist/commands/campaigns/get.js +101 -0
  11. package/dist/commands/campaigns/list.d.ts +13 -0
  12. package/dist/commands/campaigns/list.js +115 -0
  13. package/dist/commands/campaigns/preview.d.ts +13 -0
  14. package/dist/commands/campaigns/preview.js +71 -0
  15. package/dist/commands/campaigns/schedule.d.ts +15 -0
  16. package/dist/commands/campaigns/schedule.js +61 -0
  17. package/dist/commands/campaigns/send.d.ts +14 -0
  18. package/dist/commands/campaigns/send.js +96 -0
  19. package/dist/commands/campaigns/update.d.ts +17 -0
  20. package/dist/commands/campaigns/update.js +66 -0
  21. package/dist/commands/contacts/create.d.ts +13 -0
  22. package/dist/commands/contacts/create.js +48 -0
  23. package/dist/commands/contacts/delete.d.ts +14 -0
  24. package/dist/commands/contacts/delete.js +52 -0
  25. package/dist/commands/contacts/get.d.ts +13 -0
  26. package/dist/commands/contacts/get.js +51 -0
  27. package/dist/commands/contacts/import.d.ts +14 -0
  28. package/dist/commands/contacts/import.js +132 -0
  29. package/dist/commands/contacts/list.d.ts +14 -0
  30. package/dist/commands/contacts/list.js +101 -0
  31. package/dist/commands/contacts/lists/add.d.ts +14 -0
  32. package/dist/commands/contacts/lists/add.js +40 -0
  33. package/dist/commands/contacts/lists/create.d.ts +12 -0
  34. package/dist/commands/contacts/lists/create.js +40 -0
  35. package/dist/commands/contacts/lists/delete.d.ts +14 -0
  36. package/dist/commands/contacts/lists/delete.js +52 -0
  37. package/dist/commands/contacts/lists/get.d.ts +13 -0
  38. package/dist/commands/contacts/lists/get.js +63 -0
  39. package/dist/commands/contacts/lists/index.d.ts +10 -0
  40. package/dist/commands/contacts/lists/index.js +68 -0
  41. package/dist/commands/contacts/lists/remove.d.ts +14 -0
  42. package/dist/commands/contacts/lists/remove.js +36 -0
  43. package/dist/commands/contacts/lists/update.d.ts +15 -0
  44. package/dist/commands/contacts/lists/update.js +51 -0
  45. package/dist/commands/contacts/update.d.ts +15 -0
  46. package/dist/commands/contacts/update.js +52 -0
  47. package/dist/commands/keys/get.d.ts +13 -0
  48. package/dist/commands/keys/get.js +53 -0
  49. package/dist/commands/keys/rename.d.ts +14 -0
  50. package/dist/commands/keys/rename.js +53 -0
  51. package/dist/commands/keys/rotate.d.ts +15 -0
  52. package/dist/commands/keys/rotate.js +82 -0
  53. package/dist/commands/keys/usage.d.ts +13 -0
  54. package/dist/commands/keys/usage.js +102 -0
  55. package/dist/commands/status.js +3 -3
  56. package/dist/commands/templates/clone.d.ts +14 -0
  57. package/dist/commands/templates/clone.js +45 -0
  58. package/dist/commands/verify/list.d.ts +3 -0
  59. package/dist/commands/verify/list.js +31 -5
  60. package/dist/lib/api-client.d.ts +9 -2
  61. package/dist/lib/api-client.js +31 -7
  62. package/dist/lib/base-command.js +31 -4
  63. package/dist/lib/output.d.ts +4 -2
  64. package/dist/lib/output.js +19 -6
  65. package/oclif.manifest.json +2264 -723
  66. package/package.json +1 -1
@@ -0,0 +1,13 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ export default class CampaignsCancel extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,34 @@
1
+ import { Args } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
3
+ import { apiClient } from "../../lib/api-client.js";
4
+ import { json, success, colors, isJsonMode, keyValue } from "../../lib/output.js";
5
+ export default class CampaignsCancel extends AuthenticatedCommand {
6
+ static description = "Cancel a scheduled campaign";
7
+ static examples = [
8
+ "<%= config.bin %> campaigns cancel cmp_xxx",
9
+ ];
10
+ static args = {
11
+ id: Args.string({
12
+ description: "Campaign ID",
13
+ required: true,
14
+ }),
15
+ };
16
+ static flags = {
17
+ ...AuthenticatedCommand.baseFlags,
18
+ };
19
+ async run() {
20
+ const { args } = await this.parse(CampaignsCancel);
21
+ const campaign = await apiClient.post(`/api/v1/campaigns/${args.id}/cancel`);
22
+ if (isJsonMode()) {
23
+ json(campaign);
24
+ return;
25
+ }
26
+ success(`Campaign cancelled`);
27
+ console.log();
28
+ keyValue([
29
+ ["Campaign", campaign.name],
30
+ ["Status", colors.dim("cancelled")],
31
+ ]);
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NhbXBhaWducy9jYW5jZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVFsRixNQUFNLENBQUMsT0FBTyxPQUFPLGVBQWdCLFNBQVEsb0JBQW9CO0lBQy9ELE1BQU0sQ0FBQyxXQUFXLEdBQUcsNkJBQTZCLENBQUM7SUFFbkQsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiw0Q0FBNEM7S0FDN0MsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNkLFdBQVcsRUFBRSxhQUFhO1lBQzFCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFbkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUNuQyxxQkFBcUIsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUN0QyxDQUFDO1FBRUYsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDOUIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWQsUUFBUSxDQUFDO1lBQ1AsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMzQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7IGpzb24sIHN1Y2Nlc3MsIGNvbG9ycywgaXNKc29uTW9kZSwga2V5VmFsdWUgfSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5pbnRlcmZhY2UgQ2FtcGFpZ24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYW1wYWlnbnNDYW5jZWwgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiQ2FuY2VsIGEgc2NoZWR1bGVkIGNhbXBhaWduXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gY2FtcGFpZ25zIGNhbmNlbCBjbXBfeHh4XCIsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgaWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNhbXBhaWduIElEXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoQ2FtcGFpZ25zQ2FuY2VsKTtcblxuICAgIGNvbnN0IGNhbXBhaWduID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8Q2FtcGFpZ24+KFxuICAgICAgYC9hcGkvdjEvY2FtcGFpZ25zLyR7YXJncy5pZH0vY2FuY2VsYCxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihjYW1wYWlnbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VjY2VzcyhgQ2FtcGFpZ24gY2FuY2VsbGVkYCk7XG4gICAgY29uc29sZS5sb2coKTtcblxuICAgIGtleVZhbHVlKFtcbiAgICAgIFtcIkNhbXBhaWduXCIsIGNhbXBhaWduLm5hbWVdLFxuICAgICAgW1wiU3RhdHVzXCIsIGNvbG9ycy5kaW0oXCJjYW5jZWxsZWRcIildLFxuICAgIF0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ export default class CampaignsClone extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,47 @@
1
+ import { Args, Flags } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
3
+ import { apiClient } from "../../lib/api-client.js";
4
+ import { json, success, colors, isJsonMode, keyValue } from "../../lib/output.js";
5
+ export default class CampaignsClone extends AuthenticatedCommand {
6
+ static description = "Clone an existing campaign";
7
+ static examples = [
8
+ "<%= config.bin %> campaigns clone cmp_xxx",
9
+ '<%= config.bin %> campaigns clone cmp_xxx --name "Copy of Sale"',
10
+ ];
11
+ static args = {
12
+ id: Args.string({
13
+ description: "Campaign ID to clone",
14
+ required: true,
15
+ }),
16
+ };
17
+ static flags = {
18
+ ...AuthenticatedCommand.baseFlags,
19
+ name: Flags.string({
20
+ char: "n",
21
+ description: "Name for the cloned campaign",
22
+ }),
23
+ };
24
+ async run() {
25
+ const { args, flags } = await this.parse(CampaignsClone);
26
+ const body = {};
27
+ if (flags.name)
28
+ body.name = flags.name;
29
+ const campaign = await apiClient.post(`/api/v1/campaigns/${args.id}/clone`, body);
30
+ if (isJsonMode()) {
31
+ json(campaign);
32
+ return;
33
+ }
34
+ success(`Campaign cloned: ${campaign.id}`);
35
+ console.log();
36
+ keyValue([
37
+ ["Name", campaign.name],
38
+ ["Status", colors.dim("draft")],
39
+ ["Message", campaign.messageText],
40
+ ]);
41
+ console.log();
42
+ console.log(colors.dim("Next steps:"));
43
+ console.log(` Preview: ${colors.code(`sendly campaigns preview ${campaign.id}`)}`);
44
+ console.log(` Send now: ${colors.code(`sendly campaigns send ${campaign.id}`)}`);
45
+ }
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvY2FtcGFpZ25zL2Nsb25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBWWxGLE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBZSxTQUFRLG9CQUFvQjtJQUM5RCxNQUFNLENBQUMsV0FBVyxHQUFHLDRCQUE0QixDQUFDO0lBRWxELE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsMkNBQTJDO1FBQzNDLGlFQUFpRTtLQUNsRSxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2QsV0FBVyxFQUFFLHNCQUFzQjtZQUNuQyxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSw4QkFBOEI7U0FDNUMsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXpELE1BQU0sSUFBSSxHQUEyQixFQUFFLENBQUM7UUFDeEMsSUFBSSxLQUFLLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUV2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQ25DLHFCQUFxQixJQUFJLENBQUMsRUFBRSxRQUFRLEVBQ3BDLElBQUksQ0FDTCxDQUFDO1FBRUYsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLG9CQUFvQixRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFZCxRQUFRLENBQUM7WUFDUCxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQztTQUNsQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUN2QyxPQUFPLENBQUMsR0FBRyxDQUNULGVBQWUsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FDeEUsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQ1QsZUFBZSxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUNyRSxDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MsIEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7IGpzb24sIHN1Y2Nlc3MsIGNvbG9ycywgaXNKc29uTW9kZSwga2V5VmFsdWUgfSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5pbnRlcmZhY2UgQ2FtcGFpZ24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG1lc3NhZ2VUZXh0OiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbFJlY2lwaWVudHM6IG51bWJlcjtcbiAgZXN0aW1hdGVkQ3JlZGl0czogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FtcGFpZ25zQ2xvbmUgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiQ2xvbmUgYW4gZXhpc3RpbmcgY2FtcGFpZ25cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgY2xvbmUgY21wX3h4eFwiLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgY2xvbmUgY21wX3h4eCAtLW5hbWUgXCJDb3B5IG9mIFNhbGVcIicsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgaWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNhbXBhaWduIElEIHRvIGNsb25lXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIG5hbWU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcIm5cIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk5hbWUgZm9yIHRoZSBjbG9uZWQgY2FtcGFpZ25cIixcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzLCBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShDYW1wYWlnbnNDbG9uZSk7XG5cbiAgICBjb25zdCBib2R5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgaWYgKGZsYWdzLm5hbWUpIGJvZHkubmFtZSA9IGZsYWdzLm5hbWU7XG5cbiAgICBjb25zdCBjYW1wYWlnbiA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PENhbXBhaWduPihcbiAgICAgIGAvYXBpL3YxL2NhbXBhaWducy8ke2FyZ3MuaWR9L2Nsb25lYCxcbiAgICAgIGJvZHksXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24oY2FtcGFpZ24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoYENhbXBhaWduIGNsb25lZDogJHtjYW1wYWlnbi5pZH1gKTtcbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAga2V5VmFsdWUoW1xuICAgICAgW1wiTmFtZVwiLCBjYW1wYWlnbi5uYW1lXSxcbiAgICAgIFtcIlN0YXR1c1wiLCBjb2xvcnMuZGltKFwiZHJhZnRcIildLFxuICAgICAgW1wiTWVzc2FnZVwiLCBjYW1wYWlnbi5tZXNzYWdlVGV4dF0sXG4gICAgXSk7XG5cbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJOZXh0IHN0ZXBzOlwiKSk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgICBQcmV2aWV3OiAgJHtjb2xvcnMuY29kZShgc2VuZGx5IGNhbXBhaWducyBwcmV2aWV3ICR7Y2FtcGFpZ24uaWR9YCl9YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCAgU2VuZCBub3c6ICR7Y29sb3JzLmNvZGUoYHNlbmRseSBjYW1wYWlnbnMgc2VuZCAke2NhbXBhaWduLmlkfWApfWAsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,14 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ export default class CampaignsCreate extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
+ text: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
+ template: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
+ list: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[], import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,64 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
3
+ import { apiClient } from "../../lib/api-client.js";
4
+ import { json, success, colors, isJsonMode, keyValue, } from "../../lib/output.js";
5
+ export default class CampaignsCreate extends AuthenticatedCommand {
6
+ static description = "Create a new campaign";
7
+ static examples = [
8
+ '<%= config.bin %> campaigns create --name "Welcome" --text "Hello {{name}}!" --list lst_xxx',
9
+ '<%= config.bin %> campaigns create --name "Sale" --text "50% off today!" --list lst_customers --list lst_subscribers',
10
+ '<%= config.bin %> campaigns create --name "OTP" --template tpl_preset_otp --list lst_xxx',
11
+ ];
12
+ static flags = {
13
+ ...AuthenticatedCommand.baseFlags,
14
+ name: Flags.string({
15
+ char: "n",
16
+ description: "Campaign name",
17
+ required: true,
18
+ }),
19
+ text: Flags.string({
20
+ char: "t",
21
+ description: "Message text (supports {{variables}})",
22
+ }),
23
+ template: Flags.string({
24
+ description: "Template ID to use instead of text",
25
+ }),
26
+ list: Flags.string({
27
+ char: "l",
28
+ description: "Contact list ID (can specify multiple)",
29
+ multiple: true,
30
+ required: true,
31
+ }),
32
+ };
33
+ async run() {
34
+ const { flags } = await this.parse(CampaignsCreate);
35
+ if (!flags.text && !flags.template) {
36
+ this.error("Either --text or --template is required");
37
+ }
38
+ const campaign = await apiClient.post("/api/v1/campaigns", {
39
+ name: flags.name,
40
+ messageText: flags.text,
41
+ templateId: flags.template,
42
+ targetType: "contact_list",
43
+ targetListId: flags.list[0],
44
+ });
45
+ if (isJsonMode()) {
46
+ json(campaign);
47
+ return;
48
+ }
49
+ success(`Campaign created: ${campaign.id}`);
50
+ console.log();
51
+ keyValue([
52
+ ["Name", campaign.name],
53
+ ["Status", colors.dim("draft")],
54
+ ["Recipients", String(campaign.totalRecipients)],
55
+ ["Estimated Credits", String(campaign.estimatedCredits)],
56
+ ]);
57
+ console.log();
58
+ console.log(colors.dim("Next steps:"));
59
+ console.log(` Preview: ${colors.code(`sendly campaigns preview ${campaign.id}`)}`);
60
+ console.log(` Send now: ${colors.code(`sendly campaigns send ${campaign.id}`)}`);
61
+ console.log(` Schedule: ${colors.code(`sendly campaigns schedule ${campaign.id} --at "2024-01-15T10:00:00Z"`)}`);
62
+ }
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NhbXBhaWducy9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLElBQUksRUFDSixPQUFPLEVBQ1AsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQVk3QixNQUFNLENBQUMsT0FBTyxPQUFPLGVBQWdCLFNBQVEsb0JBQW9CO0lBQy9ELE1BQU0sQ0FBQyxXQUFXLEdBQUcsdUJBQXVCLENBQUM7SUFFN0MsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiw2RkFBNkY7UUFDN0Ysc0hBQXNIO1FBQ3RILDBGQUEwRjtLQUMzRixDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxlQUFlO1lBQzVCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDO1FBQ0YsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDckIsV0FBVyxFQUFFLG9DQUFvQztTQUNsRCxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsd0NBQXdDO1lBQ3JELFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBVyxtQkFBbUIsRUFBRTtZQUNuRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ3ZCLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUMxQixVQUFVLEVBQUUsY0FBYztZQUMxQixZQUFZLEVBQUUsS0FBSyxDQUFDLElBQUssQ0FBQyxDQUFDLENBQUM7U0FDN0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLHFCQUFxQixRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFZCxRQUFRLENBQUM7WUFDUCxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNoRCxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUN6RCxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUN2QyxPQUFPLENBQUMsR0FBRyxDQUNULGVBQWUsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FDeEUsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQ1QsZUFBZSxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUNyRSxDQUFDO1FBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FDVCxlQUFlLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxFQUFFLDhCQUE4QixDQUFDLEVBQUUsQ0FDckcsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQge1xuICBqc29uLFxuICBzdWNjZXNzLFxuICBjb2xvcnMsXG4gIGlzSnNvbk1vZGUsXG4gIGtleVZhbHVlLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5pbnRlcmZhY2UgQ2FtcGFpZ24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG1lc3NhZ2VUZXh0OiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbFJlY2lwaWVudHM6IG51bWJlcjtcbiAgZXN0aW1hdGVkQ3JlZGl0czogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FtcGFpZ25zQ3JlYXRlIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkNyZWF0ZSBhIG5ldyBjYW1wYWlnblwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gY2FtcGFpZ25zIGNyZWF0ZSAtLW5hbWUgXCJXZWxjb21lXCIgLS10ZXh0IFwiSGVsbG8ge3tuYW1lfX0hXCIgLS1saXN0IGxzdF94eHgnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgY3JlYXRlIC0tbmFtZSBcIlNhbGVcIiAtLXRleHQgXCI1MCUgb2ZmIHRvZGF5IVwiIC0tbGlzdCBsc3RfY3VzdG9tZXJzIC0tbGlzdCBsc3Rfc3Vic2NyaWJlcnMnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgY3JlYXRlIC0tbmFtZSBcIk9UUFwiIC0tdGVtcGxhdGUgdHBsX3ByZXNldF9vdHAgLS1saXN0IGxzdF94eHgnLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgbmFtZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiblwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ2FtcGFpZ24gbmFtZVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwidFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0ZXh0IChzdXBwb3J0cyB7e3ZhcmlhYmxlc319KVwiLFxuICAgIH0pLFxuICAgIHRlbXBsYXRlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiVGVtcGxhdGUgSUQgdG8gdXNlIGluc3RlYWQgb2YgdGV4dFwiLFxuICAgIH0pLFxuICAgIGxpc3Q6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImxcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbnRhY3QgbGlzdCBJRCAoY2FuIHNwZWNpZnkgbXVsdGlwbGUpXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKENhbXBhaWduc0NyZWF0ZSk7XG5cbiAgICBpZiAoIWZsYWdzLnRleHQgJiYgIWZsYWdzLnRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmVycm9yKFwiRWl0aGVyIC0tdGV4dCBvciAtLXRlbXBsYXRlIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbXBhaWduID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8Q2FtcGFpZ24+KFwiL2FwaS92MS9jYW1wYWlnbnNcIiwge1xuICAgICAgbmFtZTogZmxhZ3MubmFtZSxcbiAgICAgIG1lc3NhZ2VUZXh0OiBmbGFncy50ZXh0LFxuICAgICAgdGVtcGxhdGVJZDogZmxhZ3MudGVtcGxhdGUsXG4gICAgICB0YXJnZXRUeXBlOiBcImNvbnRhY3RfbGlzdFwiLFxuICAgICAgdGFyZ2V0TGlzdElkOiBmbGFncy5saXN0IVswXSxcbiAgICB9KTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24oY2FtcGFpZ24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoYENhbXBhaWduIGNyZWF0ZWQ6ICR7Y2FtcGFpZ24uaWR9YCk7XG4gICAgY29uc29sZS5sb2coKTtcblxuICAgIGtleVZhbHVlKFtcbiAgICAgIFtcIk5hbWVcIiwgY2FtcGFpZ24ubmFtZV0sXG4gICAgICBbXCJTdGF0dXNcIiwgY29sb3JzLmRpbShcImRyYWZ0XCIpXSxcbiAgICAgIFtcIlJlY2lwaWVudHNcIiwgU3RyaW5nKGNhbXBhaWduLnRvdGFsUmVjaXBpZW50cyldLFxuICAgICAgW1wiRXN0aW1hdGVkIENyZWRpdHNcIiwgU3RyaW5nKGNhbXBhaWduLmVzdGltYXRlZENyZWRpdHMpXSxcbiAgICBdKTtcblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIk5leHQgc3RlcHM6XCIpKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGAgIFByZXZpZXc6ICAke2NvbG9ycy5jb2RlKGBzZW5kbHkgY2FtcGFpZ25zIHByZXZpZXcgJHtjYW1wYWlnbi5pZH1gKX1gLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgICBTZW5kIG5vdzogJHtjb2xvcnMuY29kZShgc2VuZGx5IGNhbXBhaWducyBzZW5kICR7Y2FtcGFpZ24uaWR9YCl9YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCAgU2NoZWR1bGU6ICR7Y29sb3JzLmNvZGUoYHNlbmRseSBjYW1wYWlnbnMgc2NoZWR1bGUgJHtjYW1wYWlnbi5pZH0gLS1hdCBcIjIwMjQtMDEtMTVUMTA6MDA6MDBaXCJgKX1gLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ export default class CampaignsDelete extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ yes: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,63 @@
1
+ import { Args, Flags } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
3
+ import { apiClient } from "../../lib/api-client.js";
4
+ import { json, success, colors, isJsonMode, warn } from "../../lib/output.js";
5
+ import * as readline from "readline";
6
+ async function confirm(message) {
7
+ const rl = readline.createInterface({
8
+ input: process.stdin,
9
+ output: process.stdout,
10
+ });
11
+ return new Promise((resolve) => {
12
+ rl.question(`${message} (y/N) `, (answer) => {
13
+ rl.close();
14
+ resolve(answer.toLowerCase() === "y" || answer.toLowerCase() === "yes");
15
+ });
16
+ });
17
+ }
18
+ export default class CampaignsDelete extends AuthenticatedCommand {
19
+ static description = "Delete a campaign";
20
+ static examples = [
21
+ "<%= config.bin %> campaigns delete cmp_xxx",
22
+ "<%= config.bin %> campaigns delete cmp_xxx --yes",
23
+ ];
24
+ static args = {
25
+ id: Args.string({
26
+ description: "Campaign ID",
27
+ required: true,
28
+ }),
29
+ };
30
+ static flags = {
31
+ ...AuthenticatedCommand.baseFlags,
32
+ yes: Flags.boolean({
33
+ char: "y",
34
+ description: "Skip confirmation prompt",
35
+ default: false,
36
+ }),
37
+ };
38
+ async run() {
39
+ const { args, flags } = await this.parse(CampaignsDelete);
40
+ const campaign = await apiClient.get(`/api/v1/campaigns/${args.id}`);
41
+ if (campaign.status === "sending") {
42
+ warn(`Cannot delete a campaign that is currently sending.`);
43
+ this.exit(1);
44
+ }
45
+ if (!flags.yes && !isJsonMode()) {
46
+ console.log();
47
+ console.log(`Campaign: ${colors.bold(campaign.name)}`);
48
+ console.log();
49
+ const confirmed = await confirm(colors.warning("Delete this campaign permanently?"));
50
+ if (!confirmed) {
51
+ console.log(colors.dim("Cancelled"));
52
+ return;
53
+ }
54
+ }
55
+ await apiClient.delete(`/api/v1/campaigns/${args.id}`);
56
+ if (isJsonMode()) {
57
+ json({ deleted: true, id: args.id });
58
+ return;
59
+ }
60
+ success(`Campaign deleted`);
61
+ }
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NhbXBhaWducy9kZWxldGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUUsT0FBTyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFRckMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxPQUFlO0lBQ3BDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDbEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDMUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxlQUFnQixTQUFRLG9CQUFvQjtJQUMvRCxNQUFNLENBQUMsV0FBVyxHQUFHLG1CQUFtQixDQUFDO0lBRXpDLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsNENBQTRDO1FBQzVDLGtEQUFrRDtLQUNuRCxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2QsV0FBVyxFQUFFLGFBQWE7WUFDMUIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsMEJBQTBCO1lBQ3ZDLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTFELE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FDbEMscUJBQXFCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FDL0IsQ0FBQztRQUVGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMscURBQXFELENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVkLE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQ3BELENBQUM7WUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFdkQsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MsIEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7IGpzb24sIHN1Y2Nlc3MsIGNvbG9ycywgaXNKc29uTW9kZSwgd2FybiB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5pbXBvcnQgKiBhcyByZWFkbGluZSBmcm9tIFwicmVhZGxpbmVcIjtcblxuaW50ZXJmYWNlIENhbXBhaWduIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29uZmlybShtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXG4gIH0pO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHJsLnF1ZXN0aW9uKGAke21lc3NhZ2V9ICh5L04pIGAsIChhbnN3ZXIpID0+IHtcbiAgICAgIHJsLmNsb3NlKCk7XG4gICAgICByZXNvbHZlKGFuc3dlci50b0xvd2VyQ2FzZSgpID09PSBcInlcIiB8fCBhbnN3ZXIudG9Mb3dlckNhc2UoKSA9PT0gXCJ5ZXNcIik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYW1wYWlnbnNEZWxldGUgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiRGVsZXRlIGEgY2FtcGFpZ25cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgZGVsZXRlIGNtcF94eHhcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyBkZWxldGUgY21wX3h4eCAtLXllc1wiLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIGlkOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJDYW1wYWlnbiBJRFwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICB5ZXM6IEZsYWdzLmJvb2xlYW4oe1xuICAgICAgY2hhcjogXCJ5XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTa2lwIGNvbmZpcm1hdGlvbiBwcm9tcHRcIixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MsIGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKENhbXBhaWduc0RlbGV0ZSk7XG5cbiAgICBjb25zdCBjYW1wYWlnbiA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8Q2FtcGFpZ24+KFxuICAgICAgYC9hcGkvdjEvY2FtcGFpZ25zLyR7YXJncy5pZH1gLFxuICAgICk7XG5cbiAgICBpZiAoY2FtcGFpZ24uc3RhdHVzID09PSBcInNlbmRpbmdcIikge1xuICAgICAgd2FybihgQ2Fubm90IGRlbGV0ZSBhIGNhbXBhaWduIHRoYXQgaXMgY3VycmVudGx5IHNlbmRpbmcuYCk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKCFmbGFncy55ZXMgJiYgIWlzSnNvbk1vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgIGNvbnNvbGUubG9nKGBDYW1wYWlnbjogJHtjb2xvcnMuYm9sZChjYW1wYWlnbi5uYW1lKX1gKTtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IGNvbmZpcm0oXG4gICAgICAgIGNvbG9ycy53YXJuaW5nKFwiRGVsZXRlIHRoaXMgY2FtcGFpZ24gcGVybWFuZW50bHk/XCIpLFxuICAgICAgKTtcbiAgICAgIGlmICghY29uZmlybWVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJDYW5jZWxsZWRcIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgYXBpQ2xpZW50LmRlbGV0ZShgL2FwaS92MS9jYW1wYWlnbnMvJHthcmdzLmlkfWApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbih7IGRlbGV0ZWQ6IHRydWUsIGlkOiBhcmdzLmlkIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoYENhbXBhaWduIGRlbGV0ZWRgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,13 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ export default class CampaignsGet extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,101 @@
1
+ import { Args } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
3
+ import { apiClient } from "../../lib/api-client.js";
4
+ import { json, colors, isJsonMode, keyValue } from "../../lib/output.js";
5
+ function formatStatus(status) {
6
+ switch (status) {
7
+ case "draft":
8
+ return colors.dim("Draft");
9
+ case "scheduled":
10
+ return colors.warning("Scheduled");
11
+ case "sending":
12
+ return colors.info("Sending");
13
+ case "completed":
14
+ return colors.success("Completed");
15
+ case "cancelled":
16
+ return colors.dim("Cancelled");
17
+ case "failed":
18
+ return colors.error("Failed");
19
+ default:
20
+ return status;
21
+ }
22
+ }
23
+ export default class CampaignsGet extends AuthenticatedCommand {
24
+ static description = "Get campaign details";
25
+ static examples = [
26
+ "<%= config.bin %> campaigns get cmp_xxx",
27
+ "<%= config.bin %> campaigns get cmp_xxx --json",
28
+ ];
29
+ static args = {
30
+ id: Args.string({
31
+ description: "Campaign ID",
32
+ required: true,
33
+ }),
34
+ };
35
+ static flags = {
36
+ ...AuthenticatedCommand.baseFlags,
37
+ };
38
+ async run() {
39
+ const { args } = await this.parse(CampaignsGet);
40
+ const campaign = await apiClient.get(`/api/v1/campaigns/${args.id}`);
41
+ if (isJsonMode()) {
42
+ json(campaign);
43
+ return;
44
+ }
45
+ console.log();
46
+ console.log(colors.bold(`Campaign: ${campaign.name}`));
47
+ console.log();
48
+ keyValue([
49
+ ["ID", campaign.id],
50
+ ["Status", formatStatus(campaign.status)],
51
+ ["Recipients", String(campaign.totalRecipients)],
52
+ ...(campaign.status === "completed" || campaign.status === "sending"
53
+ ? [
54
+ ["Sent", String(campaign.sentCount)],
55
+ ["Delivered", colors.success(String(campaign.deliveredCount))],
56
+ [
57
+ "Failed",
58
+ campaign.failedCount > 0
59
+ ? colors.error(String(campaign.failedCount))
60
+ : "0",
61
+ ],
62
+ ]
63
+ : []),
64
+ ["Estimated Credits", String(campaign.estimatedCredits)],
65
+ ...(campaign.creditsUsed > 0
66
+ ? [["Credits Used", String(campaign.creditsUsed)]]
67
+ : []),
68
+ ...(campaign.scheduledAt
69
+ ? [
70
+ [
71
+ "Scheduled For",
72
+ new Date(campaign.scheduledAt).toLocaleString(),
73
+ ],
74
+ ]
75
+ : []),
76
+ ...(campaign.timezone
77
+ ? [["Timezone", campaign.timezone]]
78
+ : []),
79
+ ["Created", new Date(campaign.createdAt).toLocaleString()],
80
+ ...(campaign.sentAt
81
+ ? [
82
+ ["Started", new Date(campaign.sentAt).toLocaleString()],
83
+ ]
84
+ : []),
85
+ ...(campaign.completedAt
86
+ ? [
87
+ ["Completed", new Date(campaign.completedAt).toLocaleString()],
88
+ ]
89
+ : []),
90
+ ]);
91
+ console.log();
92
+ console.log(colors.dim("Message:"));
93
+ console.log(` ${campaign.messageText}`);
94
+ if (campaign.targetListId) {
95
+ console.log();
96
+ console.log(colors.dim("Contact List:"));
97
+ console.log(` ${campaign.targetListId}`);
98
+ }
99
+ }
100
+ }
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NhbXBhaWducy9nZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBdUJ6RSxTQUFTLFlBQVksQ0FBQyxNQUFjO0lBQ2xDLFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLE9BQU87WUFDVixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsS0FBSyxXQUFXO1lBQ2QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLEtBQUssU0FBUztZQUNaLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxLQUFLLFdBQVc7WUFDZCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckMsS0FBSyxXQUFXO1lBQ2QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssUUFBUTtZQUNYLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQztZQUNFLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxZQUFhLFNBQVEsb0JBQW9CO0lBQzVELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUM7SUFFNUMsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQix5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b0JBQ0UsQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUdyRDtpQkFDRjtnQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXO2dCQUN0QixDQUFDLENBQUM7b0JBQ0UsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUc1RDtpQkFDRjtnQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ1IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgY29sb3JzLCBpc0pzb25Nb2RlLCBrZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBDYW1wYWlnbiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgbWVzc2FnZVRleHQ6IHN0cmluZztcbiAgdGFyZ2V0VHlwZTogc3RyaW5nO1xuICB0YXJnZXRMaXN0SWQ/OiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbFJlY2lwaWVudHM6IG51bWJlcjtcbiAgc2VudENvdW50OiBudW1iZXI7XG4gIGRlbGl2ZXJlZENvdW50OiBudW1iZXI7XG4gIGZhaWxlZENvdW50OiBudW1iZXI7XG4gIGVzdGltYXRlZENyZWRpdHM6IG51bWJlcjtcbiAgY3JlZGl0c1VzZWQ6IG51bWJlcjtcbiAgc2NoZWR1bGVkQXQ/OiBzdHJpbmc7XG4gIHRpbWV6b25lPzogc3RyaW5nO1xuICBzZW50QXQ/OiBzdHJpbmc7XG4gIGNvbXBsZXRlZEF0Pzogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBcImRyYWZ0XCI6XG4gICAgICByZXR1cm4gY29sb3JzLmRpbShcIkRyYWZ0XCIpO1xuICAgIGNhc2UgXCJzY2hlZHVsZWRcIjpcbiAgICAgIHJldHVybiBjb2xvcnMud2FybmluZyhcIlNjaGVkdWxlZFwiKTtcbiAgICBjYXNlIFwic2VuZGluZ1wiOlxuICAgICAgcmV0dXJuIGNvbG9ycy5pbmZvKFwiU2VuZGluZ1wiKTtcbiAgICBjYXNlIFwiY29tcGxldGVkXCI6XG4gICAgICByZXR1cm4gY29sb3JzLnN1Y2Nlc3MoXCJDb21wbGV0ZWRcIik7XG4gICAgY2FzZSBcImNhbmNlbGxlZFwiOlxuICAgICAgcmV0dXJuIGNvbG9ycy5kaW0oXCJDYW5jZWxsZWRcIik7XG4gICAgY2FzZSBcImZhaWxlZFwiOlxuICAgICAgcmV0dXJuIGNvbG9ycy5lcnJvcihcIkZhaWxlZFwiKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXR1cztcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYW1wYWlnbnNHZXQgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiR2V0IGNhbXBhaWduIGRldGFpbHNcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgZ2V0IGNtcF94eHhcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyBnZXQgY21wX3h4eCAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQ2FtcGFpZ24gSURcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShDYW1wYWlnbnNHZXQpO1xuXG4gICAgY29uc3QgY2FtcGFpZ24gPSBhd2FpdCBhcGlDbGllbnQuZ2V0PENhbXBhaWduPihcbiAgICAgIGAvYXBpL3YxL2NhbXBhaWducy8ke2FyZ3MuaWR9YCxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihjYW1wYWlnbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChgQ2FtcGFpZ246ICR7Y2FtcGFpZ24ubmFtZX1gKSk7XG4gICAgY29uc29sZS5sb2coKTtcblxuICAgIGtleVZhbHVlKFtcbiAgICAgIFtcIklEXCIsIGNhbXBhaWduLmlkXSxcbiAgICAgIFtcIlN0YXR1c1wiLCBmb3JtYXRTdGF0dXMoY2FtcGFpZ24uc3RhdHVzKV0sXG4gICAgICBbXCJSZWNpcGllbnRzXCIsIFN0cmluZyhjYW1wYWlnbi50b3RhbFJlY2lwaWVudHMpXSxcbiAgICAgIC4uLihjYW1wYWlnbi5zdGF0dXMgPT09IFwiY29tcGxldGVkXCIgfHwgY2FtcGFpZ24uc3RhdHVzID09PSBcInNlbmRpbmdcIlxuICAgICAgICA/IFtcbiAgICAgICAgICAgIFtcIlNlbnRcIiwgU3RyaW5nKGNhbXBhaWduLnNlbnRDb3VudCldIGFzIFtzdHJpbmcsIHN0cmluZ10sXG4gICAgICAgICAgICBbXCJEZWxpdmVyZWRcIiwgY29sb3JzLnN1Y2Nlc3MoU3RyaW5nKGNhbXBhaWduLmRlbGl2ZXJlZENvdW50KSldIGFzIFtcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcIkZhaWxlZFwiLFxuICAgICAgICAgICAgICBjYW1wYWlnbi5mYWlsZWRDb3VudCA+IDBcbiAgICAgICAgICAgICAgICA/IGNvbG9ycy5lcnJvcihTdHJpbmcoY2FtcGFpZ24uZmFpbGVkQ291bnQpKVxuICAgICAgICAgICAgICAgIDogXCIwXCIsXG4gICAgICAgICAgICBdIGFzIFtzdHJpbmcsIHN0cmluZ10sXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIFtcIkVzdGltYXRlZCBDcmVkaXRzXCIsIFN0cmluZyhjYW1wYWlnbi5lc3RpbWF0ZWRDcmVkaXRzKV0sXG4gICAgICAuLi4oY2FtcGFpZ24uY3JlZGl0c1VzZWQgPiAwXG4gICAgICAgID8gW1tcIkNyZWRpdHMgVXNlZFwiLCBTdHJpbmcoY2FtcGFpZ24uY3JlZGl0c1VzZWQpXSBhcyBbc3RyaW5nLCBzdHJpbmddXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLihjYW1wYWlnbi5zY2hlZHVsZWRBdFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJTY2hlZHVsZWQgRm9yXCIsXG4gICAgICAgICAgICAgIG5ldyBEYXRlKGNhbXBhaWduLnNjaGVkdWxlZEF0KS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgICAgXSBhcyBbc3RyaW5nLCBzdHJpbmddLFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4oY2FtcGFpZ24udGltZXpvbmVcbiAgICAgICAgPyBbW1wiVGltZXpvbmVcIiwgY2FtcGFpZ24udGltZXpvbmVdIGFzIFtzdHJpbmcsIHN0cmluZ11dXG4gICAgICAgIDogW10pLFxuICAgICAgW1wiQ3JlYXRlZFwiLCBuZXcgRGF0ZShjYW1wYWlnbi5jcmVhdGVkQXQpLnRvTG9jYWxlU3RyaW5nKCldLFxuICAgICAgLi4uKGNhbXBhaWduLnNlbnRBdFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIFtcIlN0YXJ0ZWRcIiwgbmV3IERhdGUoY2FtcGFpZ24uc2VudEF0KS50b0xvY2FsZVN0cmluZygpXSBhcyBbXG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKGNhbXBhaWduLmNvbXBsZXRlZEF0XG4gICAgICAgID8gW1xuICAgICAgICAgICAgW1wiQ29tcGxldGVkXCIsIG5ldyBEYXRlKGNhbXBhaWduLmNvbXBsZXRlZEF0KS50b0xvY2FsZVN0cmluZygpXSBhcyBbXG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgIF0pO1xuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiTWVzc2FnZTpcIikpO1xuICAgIGNvbnNvbGUubG9nKGAgICR7Y2FtcGFpZ24ubWVzc2FnZVRleHR9YCk7XG5cbiAgICBpZiAoY2FtcGFpZ24udGFyZ2V0TGlzdElkKSB7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIkNvbnRhY3QgTGlzdDpcIikpO1xuICAgICAgY29uc29sZS5sb2coYCAgJHtjYW1wYWlnbi50YXJnZXRMaXN0SWR9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ export default class CampaignsList extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ limit: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
+ offset: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
+ status: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,115 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
3
+ import { apiClient } from "../../lib/api-client.js";
4
+ import { table, json, info, formatRelativeTime, colors, isJsonMode, } from "../../lib/output.js";
5
+ function formatCampaignStatus(status) {
6
+ switch (status) {
7
+ case "draft":
8
+ return colors.dim("draft");
9
+ case "scheduled":
10
+ return colors.warning("scheduled");
11
+ case "sending":
12
+ return colors.info("sending");
13
+ case "completed":
14
+ return colors.success("completed");
15
+ case "cancelled":
16
+ return colors.dim("cancelled");
17
+ case "failed":
18
+ return colors.error("failed");
19
+ default:
20
+ return status;
21
+ }
22
+ }
23
+ export default class CampaignsList extends AuthenticatedCommand {
24
+ static description = "List campaigns";
25
+ static examples = [
26
+ "<%= config.bin %> campaigns list",
27
+ "<%= config.bin %> campaigns list --status draft",
28
+ "<%= config.bin %> campaigns list --limit 10",
29
+ "<%= config.bin %> campaigns list --json",
30
+ ];
31
+ static flags = {
32
+ ...AuthenticatedCommand.baseFlags,
33
+ limit: Flags.integer({
34
+ char: "l",
35
+ description: "Number of campaigns to show",
36
+ default: 20,
37
+ }),
38
+ offset: Flags.integer({
39
+ description: "Offset for pagination",
40
+ default: 0,
41
+ }),
42
+ status: Flags.string({
43
+ char: "s",
44
+ description: "Filter by status (draft, scheduled, sending, sent, cancelled)",
45
+ }),
46
+ };
47
+ async run() {
48
+ const { flags } = await this.parse(CampaignsList);
49
+ const response = await apiClient.get("/api/v1/campaigns", {
50
+ limit: flags.limit,
51
+ offset: flags.offset,
52
+ ...(flags.status && { status: flags.status }),
53
+ });
54
+ if (isJsonMode()) {
55
+ json(response);
56
+ return;
57
+ }
58
+ if (response.campaigns.length === 0) {
59
+ info("No campaigns found");
60
+ return;
61
+ }
62
+ console.log();
63
+ console.log(colors.dim(`Showing ${response.campaigns.length} of ${response.total} campaigns`));
64
+ console.log();
65
+ table(response.campaigns, [
66
+ {
67
+ header: "ID",
68
+ key: "id",
69
+ width: 18,
70
+ formatter: (v) => colors.dim(String(v).slice(0, 15) + "..."),
71
+ },
72
+ {
73
+ header: "Name",
74
+ key: "name",
75
+ width: 20,
76
+ formatter: (v) => {
77
+ const name = String(v);
78
+ return name.length > 18 ? name.slice(0, 18) + "..." : name;
79
+ },
80
+ },
81
+ {
82
+ header: "Status",
83
+ key: "status",
84
+ width: 11,
85
+ formatter: (v) => formatCampaignStatus(String(v)),
86
+ },
87
+ {
88
+ header: "Recipients",
89
+ key: "totalRecipients",
90
+ width: 11,
91
+ formatter: (v) => String(v),
92
+ },
93
+ {
94
+ header: "Delivered",
95
+ key: "deliveredCount",
96
+ width: 10,
97
+ formatter: (v, row) => {
98
+ const campaign = row;
99
+ if (campaign.status === "completed" ||
100
+ campaign.status === "sending") {
101
+ return `${v}/${campaign.totalRecipients}`;
102
+ }
103
+ return "-";
104
+ },
105
+ },
106
+ {
107
+ header: "Created",
108
+ key: "createdAt",
109
+ width: 12,
110
+ formatter: (v) => formatRelativeTime(String(v)),
111
+ },
112
+ ]);
113
+ }
114
+ }
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jYW1wYWlnbnMvbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsS0FBSyxFQUNMLElBQUksRUFDSixJQUFJLEVBQ0osa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQXVCN0IsU0FBUyxvQkFBb0IsQ0FBQyxNQUFjO0lBQzFDLFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLE9BQU87WUFDVixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsS0FBSyxXQUFXO1lBQ2QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLEtBQUssU0FBUztZQUNaLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxLQUFLLFdBQVc7WUFDZCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckMsS0FBSyxXQUFXO1lBQ2QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssUUFBUTtZQUNYLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQztZQUNFLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxhQUFjLFNBQVEsb0JBQW9CO0lBQzdELE1BQU0sQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7SUFFdEMs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LE1BQU0sRUFBRSxZQUFZO2dCQUNwQixHQUFHLEVBQUUsaUJBQWlCO2dCQUN0QixLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDNUI7WUFDRDtnQkFDRSxNQUFNLEVBQUUsV0FBVztnQkFDbkIsR0FBRyxFQUFFLGdCQUFnQjtnQkFDckIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNwQixNQUFNLFFBQVEsR0FBRyxHQUFlLENBQUM7b0JBQ2pDLElBQ0UsUUFBUSxDQUFDLE1BQU0sS0FBSyxXQUFXO3dCQUMvQixRQUFRLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFDN0IsQ0FBQzt3QkFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDNUMsQ0FBQztvQkFDRCxPQUFPLEdBQUcsQ0FBQztnQkFDYixDQUFDO2FBQ0Y7WUFDRDtnQkFDRSxNQUFNLEVBQUUsU0FBUztnQkFDakIsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHRhYmxlLFxuICBqc29uLFxuICBpbmZvLFxuICBmb3JtYXRSZWxhdGl2ZVRpbWUsXG4gIGNvbG9ycyxcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIENhbXBhaWduIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBtZXNzYWdlVGV4dDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgdG90YWxSZWNpcGllbnRzOiBudW1iZXI7XG4gIHNlbnRDb3VudDogbnVtYmVyO1xuICBkZWxpdmVyZWRDb3VudDogbnVtYmVyO1xuICBmYWlsZWRDb3VudDogbnVtYmVyO1xuICBlc3RpbWF0ZWRDcmVkaXRzOiBudW1iZXI7XG4gIHNjaGVkdWxlZEF0Pzogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIExpc3RDYW1wYWlnbnNSZXNwb25zZSB7XG4gIGNhbXBhaWduczogQ2FtcGFpZ25bXTtcbiAgdG90YWw6IG51bWJlcjtcbiAgbGltaXQ6IG51bWJlcjtcbiAgb2Zmc2V0OiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdENhbXBhaWduU3RhdHVzKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFwiZHJhZnRcIjpcbiAgICAgIHJldHVybiBjb2xvcnMuZGltKFwiZHJhZnRcIik7XG4gICAgY2FzZSBcInNjaGVkdWxlZFwiOlxuICAgICAgcmV0dXJuIGNvbG9ycy53YXJuaW5nKFwic2NoZWR1bGVkXCIpO1xuICAgIGNhc2UgXCJzZW5kaW5nXCI6XG4gICAgICByZXR1cm4gY29sb3JzLmluZm8oXCJzZW5kaW5nXCIpO1xuICAgIGNhc2UgXCJjb21wbGV0ZWRcIjpcbiAgICAgIHJldHVybiBjb2xvcnMuc3VjY2VzcyhcImNvbXBsZXRlZFwiKTtcbiAgICBjYXNlIFwiY2FuY2VsbGVkXCI6XG4gICAgICByZXR1cm4gY29sb3JzLmRpbShcImNhbmNlbGxlZFwiKTtcbiAgICBjYXNlIFwiZmFpbGVkXCI6XG4gICAgICByZXR1cm4gY29sb3JzLmVycm9yKFwiZmFpbGVkXCIpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdHVzO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhbXBhaWduc0xpc3QgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiTGlzdCBjYW1wYWlnbnNcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgbGlzdFwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gY2FtcGFpZ25zIGxpc3QgLS1zdGF0dXMgZHJhZnRcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyBsaXN0IC0tbGltaXQgMTBcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyBsaXN0IC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgbGltaXQ6IEZsYWdzLmludGVnZXIoe1xuICAgICAgY2hhcjogXCJsXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJOdW1iZXIgb2YgY2FtcGFpZ25zIHRvIHNob3dcIixcbiAgICAgIGRlZmF1bHQ6IDIwLFxuICAgIH0pLFxuICAgIG9mZnNldDogRmxhZ3MuaW50ZWdlcih7XG4gICAgICBkZXNjcmlwdGlvbjogXCJPZmZzZXQgZm9yIHBhZ2luYXRpb25cIixcbiAgICAgIGRlZmF1bHQ6IDAsXG4gICAgfSksXG4gICAgc3RhdHVzOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJzXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGaWx0ZXIgYnkgc3RhdHVzIChkcmFmdCwgc2NoZWR1bGVkLCBzZW5kaW5nLCBzZW50LCBjYW5jZWxsZWQpXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoQ2FtcGFpZ25zTGlzdCk7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8TGlzdENhbXBhaWduc1Jlc3BvbnNlPihcbiAgICAgIFwiL2FwaS92MS9jYW1wYWlnbnNcIixcbiAgICAgIHtcbiAgICAgICAgbGltaXQ6IGZsYWdzLmxpbWl0LFxuICAgICAgICBvZmZzZXQ6IGZsYWdzLm9mZnNldCxcbiAgICAgICAgLi4uKGZsYWdzLnN0YXR1cyAmJiB7IHN0YXR1czogZmxhZ3Muc3RhdHVzIH0pLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLmNhbXBhaWducy5sZW5ndGggPT09IDApIHtcbiAgICAgIGluZm8oXCJObyBjYW1wYWlnbnMgZm91bmRcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgIGBTaG93aW5nICR7cmVzcG9uc2UuY2FtcGFpZ25zLmxlbmd0aH0gb2YgJHtyZXNwb25zZS50b3RhbH0gY2FtcGFpZ25zYCxcbiAgICAgICksXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAgdGFibGUocmVzcG9uc2UuY2FtcGFpZ25zLCBbXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJJRFwiLFxuICAgICAgICBrZXk6IFwiaWRcIixcbiAgICAgICAgd2lkdGg6IDE4LFxuICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PiBjb2xvcnMuZGltKFN0cmluZyh2KS5zbGljZSgwLCAxNSkgKyBcIi4uLlwiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJOYW1lXCIsXG4gICAgICAgIGtleTogXCJuYW1lXCIsXG4gICAgICAgIHdpZHRoOiAyMCxcbiAgICAgICAgZm9ybWF0dGVyOiAodikgPT4ge1xuICAgICAgICAgIGNvbnN0IG5hbWUgPSBTdHJpbmcodik7XG4gICAgICAgICAgcmV0dXJuIG5hbWUubGVuZ3RoID4gMTggPyBuYW1lLnNsaWNlKDAsIDE4KSArIFwiLi4uXCIgOiBuYW1lO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyOiBcIlN0YXR1c1wiLFxuICAgICAgICBrZXk6IFwic3RhdHVzXCIsXG4gICAgICAgIHdpZHRoOiAxMSxcbiAgICAgICAgZm9ybWF0dGVyOiAodikgPT4gZm9ybWF0Q2FtcGFpZ25TdGF0dXMoU3RyaW5nKHYpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJSZWNpcGllbnRzXCIsXG4gICAgICAgIGtleTogXCJ0b3RhbFJlY2lwaWVudHNcIixcbiAgICAgICAgd2lkdGg6IDExLFxuICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PiBTdHJpbmcodiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IFwiRGVsaXZlcmVkXCIsXG4gICAgICAgIGtleTogXCJkZWxpdmVyZWRDb3VudFwiLFxuICAgICAgICB3aWR0aDogMTAsXG4gICAgICAgIGZvcm1hdHRlcjogKHYsIHJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhbXBhaWduID0gcm93IGFzIENhbXBhaWduO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNhbXBhaWduLnN0YXR1cyA9PT0gXCJjb21wbGV0ZWRcIiB8fFxuICAgICAgICAgICAgY2FtcGFpZ24uc3RhdHVzID09PSBcInNlbmRpbmdcIlxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGAke3Z9LyR7Y2FtcGFpZ24udG90YWxSZWNpcGllbnRzfWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBcIi1cIjtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJDcmVhdGVkXCIsXG4gICAgICAgIGtleTogXCJjcmVhdGVkQXRcIixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PiBmb3JtYXRSZWxhdGl2ZVRpbWUoU3RyaW5nKHYpKSxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ export default class CampaignsPreview extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }