@sendly/cli 3.12.2 → 3.13.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.
- package/dist/commands/campaigns/cancel.d.ts +13 -0
- package/dist/commands/campaigns/cancel.js +34 -0
- package/dist/commands/campaigns/create.d.ts +14 -0
- package/dist/commands/campaigns/create.js +63 -0
- package/dist/commands/campaigns/delete.d.ts +14 -0
- package/dist/commands/campaigns/delete.js +63 -0
- package/dist/commands/campaigns/get.d.ts +13 -0
- package/dist/commands/campaigns/get.js +91 -0
- package/dist/commands/campaigns/list.d.ts +13 -0
- package/dist/commands/campaigns/list.js +116 -0
- package/dist/commands/campaigns/preview.d.ts +13 -0
- package/dist/commands/campaigns/preview.js +60 -0
- package/dist/commands/campaigns/schedule.d.ts +15 -0
- package/dist/commands/campaigns/schedule.js +59 -0
- package/dist/commands/campaigns/send.d.ts +14 -0
- package/dist/commands/campaigns/send.js +78 -0
- package/dist/commands/contacts/create.d.ts +13 -0
- package/dist/commands/contacts/create.js +48 -0
- package/dist/commands/contacts/delete.d.ts +14 -0
- package/dist/commands/contacts/delete.js +52 -0
- package/dist/commands/contacts/get.d.ts +13 -0
- package/dist/commands/contacts/get.js +51 -0
- package/dist/commands/contacts/list.d.ts +14 -0
- package/dist/commands/contacts/list.js +101 -0
- package/dist/commands/contacts/lists/add.d.ts +14 -0
- package/dist/commands/contacts/lists/add.js +40 -0
- package/dist/commands/contacts/lists/create.d.ts +12 -0
- package/dist/commands/contacts/lists/create.js +40 -0
- package/dist/commands/contacts/lists/delete.d.ts +14 -0
- package/dist/commands/contacts/lists/delete.js +52 -0
- package/dist/commands/contacts/lists/index.d.ts +10 -0
- package/dist/commands/contacts/lists/index.js +68 -0
- package/dist/commands/contacts/lists/remove.d.ts +14 -0
- package/dist/commands/contacts/lists/remove.js +36 -0
- package/dist/commands/keys/get.d.ts +13 -0
- package/dist/commands/keys/get.js +53 -0
- package/dist/commands/keys/rename.d.ts +14 -0
- package/dist/commands/keys/rename.js +53 -0
- package/dist/commands/keys/rotate.d.ts +15 -0
- package/dist/commands/keys/rotate.js +82 -0
- package/dist/commands/keys/usage.d.ts +13 -0
- package/dist/commands/keys/usage.js +102 -0
- package/dist/commands/templates/clone.d.ts +14 -0
- package/dist/commands/templates/clone.js +45 -0
- package/dist/commands/verify/list.d.ts +3 -0
- package/dist/commands/verify/list.js +31 -5
- package/dist/lib/api-client.d.ts +9 -2
- package/dist/lib/api-client.js +31 -7
- package/dist/lib/base-command.js +31 -4
- package/dist/lib/output.d.ts +4 -2
- package/dist/lib/output.js +19 -6
- 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 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,63 @@
|
|
|
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
|
+
text: flags.text,
|
|
41
|
+
templateId: flags.template,
|
|
42
|
+
contactListIds: flags.list,
|
|
43
|
+
});
|
|
44
|
+
if (isJsonMode()) {
|
|
45
|
+
json(campaign);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
success(`Campaign created: ${campaign.id}`);
|
|
49
|
+
console.log();
|
|
50
|
+
keyValue([
|
|
51
|
+
["Name", campaign.name],
|
|
52
|
+
["Status", colors.dim("draft")],
|
|
53
|
+
["Recipients", String(campaign.recipientCount)],
|
|
54
|
+
["Estimated Credits", String(campaign.estimatedCredits)],
|
|
55
|
+
]);
|
|
56
|
+
console.log();
|
|
57
|
+
console.log(colors.dim("Next steps:"));
|
|
58
|
+
console.log(` Preview: ${colors.code(`sendly campaigns preview ${campaign.id}`)}`);
|
|
59
|
+
console.log(` Send now: ${colors.code(`sendly campaigns send ${campaign.id}`)}`);
|
|
60
|
+
console.log(` Schedule: ${colors.code(`sendly campaigns schedule ${campaign.id} --at "2024-01-15T10:00:00Z"`)}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NhbXBhaWducy9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVlsRixNQUFNLENBQUMsT0FBTyxPQUFPLGVBQWdCLFNBQVEsb0JBQW9CO0lBQy9ELE1BQU0sQ0FBQyxXQUFXLEdBQUcsdUJBQXVCLENBQUM7SUFFN0MsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiw2RkFBNkY7UUFDN0Ysc0hBQXNIO1FBQ3RILDRGQUE0RjtLQUM3RixDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxlQUFlO1lBQzVCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDO1FBQ0YsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDckIsV0FBVyxFQUFFLG9DQUFvQztTQUNsRCxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsd0NBQXdDO1lBQ3JELFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBVyxtQkFBbUIsRUFBRTtZQUNuRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUMxQixjQUFjLEVBQUUsS0FBSyxDQUFDLElBQUk7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLHFCQUFxQixRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFZCxRQUFRLENBQUM7WUFDUCxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMvQyxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUN6RCxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxFQUFFLDhCQUE4QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBqc29uLCBzdWNjZXNzLCBjb2xvcnMsIGlzSnNvbk1vZGUsIGtleVZhbHVlIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIENhbXBhaWduIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICByZWNpcGllbnRDb3VudDogbnVtYmVyO1xuICBlc3RpbWF0ZWRDcmVkaXRzOiBudW1iZXI7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYW1wYWlnbnNDcmVhdGUgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiQ3JlYXRlIGEgbmV3IGNhbXBhaWduXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgY3JlYXRlIC0tbmFtZSBcIldlbGNvbWVcIiAtLXRleHQgXCJIZWxsbyB7e25hbWV9fSFcIiAtLWxpc3QgbHN0X3h4eCcsXG4gICAgJzwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyBjcmVhdGUgLS1uYW1lIFwiU2FsZVwiIC0tdGV4dCBcIjUwJSBvZmYgdG9kYXkhXCIgLS1saXN0IGxzdF9jdXN0b21lcnMgLS1saXN0IGxzdF9zdWJzY3JpYmVycycsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgY3JlYXRlIC0tbmFtZSBcXFwiT1RQXFxcIiAtLXRlbXBsYXRlIHRwbF9wcmVzZXRfb3RwIC0tbGlzdCBsc3RfeHh4XCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICBuYW1lOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJuXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDYW1wYWlnbiBuYW1lXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgICB0ZXh0OiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJNZXNzYWdlIHRleHQgKHN1cHBvcnRzIHt7dmFyaWFibGVzfX0pXCIsXG4gICAgfSksXG4gICAgdGVtcGxhdGU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJUZW1wbGF0ZSBJRCB0byB1c2UgaW5zdGVhZCBvZiB0ZXh0XCIsXG4gICAgfSksXG4gICAgbGlzdDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwibFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ29udGFjdCBsaXN0IElEIChjYW4gc3BlY2lmeSBtdWx0aXBsZSlcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoQ2FtcGFpZ25zQ3JlYXRlKTtcblxuICAgIGlmICghZmxhZ3MudGV4dCAmJiAhZmxhZ3MudGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuZXJyb3IoXCJFaXRoZXIgLS10ZXh0IG9yIC0tdGVtcGxhdGUgaXMgcmVxdWlyZWRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY2FtcGFpZ24gPSBhd2FpdCBhcGlDbGllbnQucG9zdDxDYW1wYWlnbj4oXCIvYXBpL3YxL2NhbXBhaWduc1wiLCB7XG4gICAgICBuYW1lOiBmbGFncy5uYW1lLFxuICAgICAgdGV4dDogZmxhZ3MudGV4dCxcbiAgICAgIHRlbXBsYXRlSWQ6IGZsYWdzLnRlbXBsYXRlLFxuICAgICAgY29udGFjdExpc3RJZHM6IGZsYWdzLmxpc3QsXG4gICAgfSk7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKGNhbXBhaWduKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdWNjZXNzKGBDYW1wYWlnbiBjcmVhdGVkOiAke2NhbXBhaWduLmlkfWApO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICBrZXlWYWx1ZShbXG4gICAgICBbXCJOYW1lXCIsIGNhbXBhaWduLm5hbWVdLFxuICAgICAgW1wiU3RhdHVzXCIsIGNvbG9ycy5kaW0oXCJkcmFmdFwiKV0sXG4gICAgICBbXCJSZWNpcGllbnRzXCIsIFN0cmluZyhjYW1wYWlnbi5yZWNpcGllbnRDb3VudCldLFxuICAgICAgW1wiRXN0aW1hdGVkIENyZWRpdHNcIiwgU3RyaW5nKGNhbXBhaWduLmVzdGltYXRlZENyZWRpdHMpXSxcbiAgICBdKTtcblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIk5leHQgc3RlcHM6XCIpKTtcbiAgICBjb25zb2xlLmxvZyhgICBQcmV2aWV3OiAgJHtjb2xvcnMuY29kZShgc2VuZGx5IGNhbXBhaWducyBwcmV2aWV3ICR7Y2FtcGFpZ24uaWR9YCl9YCk7XG4gICAgY29uc29sZS5sb2coYCAgU2VuZCBub3c6ICR7Y29sb3JzLmNvZGUoYHNlbmRseSBjYW1wYWlnbnMgc2VuZCAke2NhbXBhaWduLmlkfWApfWApO1xuICAgIGNvbnNvbGUubG9nKGAgIFNjaGVkdWxlOiAke2NvbG9ycy5jb2RlKGBzZW5kbHkgY2FtcGFpZ25zIHNjaGVkdWxlICR7Y2FtcGFpZ24uaWR9IC0tYXQgXCIyMDI0LTAxLTE1VDEwOjAwOjAwWlwiYCl9YCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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 (!["draft", "cancelled"].includes(campaign.status)) {
|
|
42
|
+
warn(`Cannot delete a campaign with status "${campaign.status}". Only draft and cancelled campaigns can be deleted.`);
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NhbXBhaWducy9kZWxldGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUUsT0FBTyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFRckMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxPQUFlO0lBQ3BDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDbEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDMUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxlQUFnQixTQUFRLG9CQUFvQjtJQUMvRCxNQUFNLENBQUMsV0FBVyxHQUFHLG1CQUFtQixDQUFDO0lBRXpDLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsNENBQTRDO1FBQzVDLGtEQUFrRDtLQUNuRCxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2QsV0FBVyxFQUFFLGFBQWE7WUFDMUIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsMEJBQTBCO1lBQ3ZDLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTFELE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FDbEMscUJBQXFCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FDL0IsQ0FBQztRQUVGLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLHlDQUF5QyxRQUFRLENBQUMsTUFBTSx1REFBdUQsQ0FBQyxDQUFDO1lBQ3RILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkQsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRWQsTUFBTSxTQUFTLEdBQUcsTUFBTSxPQUFPLENBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FDcEQsQ0FBQztZQUNGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDckMsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDLHFCQUFxQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV2RCxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckMsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncywgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgc3VjY2VzcywgY29sb3JzLCBpc0pzb25Nb2RlLCB3YXJuIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCAqIGFzIHJlYWRsaW5lIGZyb20gXCJyZWFkbGluZVwiO1xuXG5pbnRlcmZhY2UgQ2FtcGFpZ24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjb25maXJtKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgb3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgcmwucXVlc3Rpb24oYCR7bWVzc2FnZX0gKHkvTikgYCwgKGFuc3dlcikgPT4ge1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIHJlc29sdmUoYW5zd2VyLnRvTG93ZXJDYXNlKCkgPT09IFwieVwiIHx8IGFuc3dlci50b0xvd2VyQ2FzZSgpID09PSBcInllc1wiKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhbXBhaWduc0RlbGV0ZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJEZWxldGUgYSBjYW1wYWlnblwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyBkZWxldGUgY21wX3h4eFwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gY2FtcGFpZ25zIGRlbGV0ZSBjbXBfeHh4IC0teWVzXCIsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgaWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNhbXBhaWduIElEXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHllczogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBjaGFyOiBcInlcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNraXAgY29uZmlybWF0aW9uIHByb21wdFwiLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoQ2FtcGFpZ25zRGVsZXRlKTtcblxuICAgIGNvbnN0IGNhbXBhaWduID0gYXdhaXQgYXBpQ2xpZW50LmdldDxDYW1wYWlnbj4oXG4gICAgICBgL2FwaS92MS9jYW1wYWlnbnMvJHthcmdzLmlkfWAsXG4gICAgKTtcblxuICAgIGlmICghW1wiZHJhZnRcIiwgXCJjYW5jZWxsZWRcIl0uaW5jbHVkZXMoY2FtcGFpZ24uc3RhdHVzKSkge1xuICAgICAgd2FybihgQ2Fubm90IGRlbGV0ZSBhIGNhbXBhaWduIHdpdGggc3RhdHVzIFwiJHtjYW1wYWlnbi5zdGF0dXN9XCIuIE9ubHkgZHJhZnQgYW5kIGNhbmNlbGxlZCBjYW1wYWlnbnMgY2FuIGJlIGRlbGV0ZWQuYCk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKCFmbGFncy55ZXMgJiYgIWlzSnNvbk1vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgIGNvbnNvbGUubG9nKGBDYW1wYWlnbjogJHtjb2xvcnMuYm9sZChjYW1wYWlnbi5uYW1lKX1gKTtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IGNvbmZpcm0oXG4gICAgICAgIGNvbG9ycy53YXJuaW5nKFwiRGVsZXRlIHRoaXMgY2FtcGFpZ24gcGVybWFuZW50bHk/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,91 @@
|
|
|
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 "sent":
|
|
14
|
+
return colors.success("Sent");
|
|
15
|
+
case "paused":
|
|
16
|
+
return colors.warning("Paused");
|
|
17
|
+
case "cancelled":
|
|
18
|
+
return colors.dim("Cancelled");
|
|
19
|
+
case "failed":
|
|
20
|
+
return colors.error("Failed");
|
|
21
|
+
default:
|
|
22
|
+
return status;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export default class CampaignsGet extends AuthenticatedCommand {
|
|
26
|
+
static description = "Get campaign details";
|
|
27
|
+
static examples = [
|
|
28
|
+
"<%= config.bin %> campaigns get cmp_xxx",
|
|
29
|
+
"<%= config.bin %> campaigns get cmp_xxx --json",
|
|
30
|
+
];
|
|
31
|
+
static args = {
|
|
32
|
+
id: Args.string({
|
|
33
|
+
description: "Campaign ID",
|
|
34
|
+
required: true,
|
|
35
|
+
}),
|
|
36
|
+
};
|
|
37
|
+
static flags = {
|
|
38
|
+
...AuthenticatedCommand.baseFlags,
|
|
39
|
+
};
|
|
40
|
+
async run() {
|
|
41
|
+
const { args } = await this.parse(CampaignsGet);
|
|
42
|
+
const campaign = await apiClient.get(`/api/v1/campaigns/${args.id}`);
|
|
43
|
+
if (isJsonMode()) {
|
|
44
|
+
json(campaign);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
console.log();
|
|
48
|
+
console.log(colors.bold(`Campaign: ${campaign.name}`));
|
|
49
|
+
console.log();
|
|
50
|
+
keyValue([
|
|
51
|
+
["ID", campaign.id],
|
|
52
|
+
["Status", formatStatus(campaign.status)],
|
|
53
|
+
["Recipients", String(campaign.recipientCount)],
|
|
54
|
+
...(campaign.status === "sent" || campaign.status === "sending"
|
|
55
|
+
? [
|
|
56
|
+
["Sent", String(campaign.sentCount)],
|
|
57
|
+
["Delivered", colors.success(String(campaign.deliveredCount))],
|
|
58
|
+
["Failed", campaign.failedCount > 0 ? colors.error(String(campaign.failedCount)) : "0"],
|
|
59
|
+
]
|
|
60
|
+
: []),
|
|
61
|
+
["Estimated Credits", String(campaign.estimatedCredits)],
|
|
62
|
+
...(campaign.creditsUsed > 0
|
|
63
|
+
? [["Credits Used", String(campaign.creditsUsed)]]
|
|
64
|
+
: []),
|
|
65
|
+
...(campaign.scheduledAt
|
|
66
|
+
? [["Scheduled For", new Date(campaign.scheduledAt).toLocaleString()]]
|
|
67
|
+
: []),
|
|
68
|
+
...(campaign.timezone
|
|
69
|
+
? [["Timezone", campaign.timezone]]
|
|
70
|
+
: []),
|
|
71
|
+
["Created", new Date(campaign.createdAt).toLocaleString()],
|
|
72
|
+
...(campaign.startedAt
|
|
73
|
+
? [["Started", new Date(campaign.startedAt).toLocaleString()]]
|
|
74
|
+
: []),
|
|
75
|
+
...(campaign.completedAt
|
|
76
|
+
? [["Completed", new Date(campaign.completedAt).toLocaleString()]]
|
|
77
|
+
: []),
|
|
78
|
+
]);
|
|
79
|
+
console.log();
|
|
80
|
+
console.log(colors.dim("Message:"));
|
|
81
|
+
console.log(` ${campaign.text}`);
|
|
82
|
+
if (campaign.contactListIds.length > 0) {
|
|
83
|
+
console.log();
|
|
84
|
+
console.log(colors.dim("Contact Lists:"));
|
|
85
|
+
campaign.contactListIds.forEach((id) => {
|
|
86
|
+
console.log(` - ${id}`);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NhbXBhaWducy9nZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBdUJ6RSxTQUFTLFlBQVksQ0FBQyxNQUFjO0lBQ2xDLFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLE9BQU87WUFDVixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsS0FBSyxXQUFXO1lBQ2QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLEtBQUssU0FBUztZQUNaLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxLQUFLLE1BQU07WUFDVCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsS0FBSyxRQUFRO1lBQ1gsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLEtBQUssV0FBVztZQUNkLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxLQUFLLFFBQVE7WUFDWCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEM7WUFDRSxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sWUFBYSxTQUFRLG9CQUFvQjtJQUM1RCxNQUFN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QUM7WUFDMUQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTO2dCQUNwQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQXFCLENBQUM7Z0JBQ2xGLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVc7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBcUIsQ0FBQztnQkFDdEYsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNSLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVsQyxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDMUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgY29sb3JzLCBpc0pzb25Nb2RlLCBrZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBDYW1wYWlnbiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdGV4dDogc3RyaW5nO1xuICB0ZW1wbGF0ZUlkPzogc3RyaW5nO1xuICBjb250YWN0TGlzdElkczogc3RyaW5nW107XG4gIHN0YXR1czogc3RyaW5nO1xuICByZWNpcGllbnRDb3VudDogbnVtYmVyO1xuICBzZW50Q291bnQ6IG51bWJlcjtcbiAgZGVsaXZlcmVkQ291bnQ6IG51bWJlcjtcbiAgZmFpbGVkQ291bnQ6IG51bWJlcjtcbiAgZXN0aW1hdGVkQ3JlZGl0czogbnVtYmVyO1xuICBjcmVkaXRzVXNlZDogbnVtYmVyO1xuICBzY2hlZHVsZWRBdD86IHN0cmluZztcbiAgdGltZXpvbmU/OiBzdHJpbmc7XG4gIHN0YXJ0ZWRBdD86IHN0cmluZztcbiAgY29tcGxldGVkQXQ/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZm9ybWF0U3RhdHVzKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFwiZHJhZnRcIjpcbiAgICAgIHJldHVybiBjb2xvcnMuZGltKFwiRHJhZnRcIik7XG4gICAgY2FzZSBcInNjaGVkdWxlZFwiOlxuICAgICAgcmV0dXJuIGNvbG9ycy53YXJuaW5nKFwiU2NoZWR1bGVkXCIpO1xuICAgIGNhc2UgXCJzZW5kaW5nXCI6XG4gICAgICByZXR1cm4gY29sb3JzLmluZm8oXCJTZW5kaW5nXCIpO1xuICAgIGNhc2UgXCJzZW50XCI6XG4gICAgICByZXR1cm4gY29sb3JzLnN1Y2Nlc3MoXCJTZW50XCIpO1xuICAgIGNhc2UgXCJwYXVzZWRcIjpcbiAgICAgIHJldHVybiBjb2xvcnMud2FybmluZyhcIlBhdXNlZFwiKTtcbiAgICBjYXNlIFwiY2FuY2VsbGVkXCI6XG4gICAgICByZXR1cm4gY29sb3JzLmRpbShcIkNhbmNlbGxlZFwiKTtcbiAgICBjYXNlIFwiZmFpbGVkXCI6XG4gICAgICByZXR1cm4gY29sb3JzLmVycm9yKFwiRmFpbGVkXCIpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdHVzO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhbXBhaWduc0dldCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJHZXQgY2FtcGFpZ24gZGV0YWlsc1wiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyBnZXQgY21wX3h4eFwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gY2FtcGFpZ25zIGdldCBjbXBfeHh4IC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIGlkOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJDYW1wYWlnbiBJRFwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKENhbXBhaWduc0dldCk7XG5cbiAgICBjb25zdCBjYW1wYWlnbiA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8Q2FtcGFpZ24+KFxuICAgICAgYC9hcGkvdjEvY2FtcGFpZ25zLyR7YXJncy5pZH1gLFxuICAgICk7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKGNhbXBhaWduKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKGBDYW1wYWlnbjogJHtjYW1wYWlnbi5uYW1lfWApKTtcbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAga2V5VmFsdWUoW1xuICAgICAgW1wiSURcIiwgY2FtcGFpZ24uaWRdLFxuICAgICAgW1wiU3RhdHVzXCIsIGZvcm1hdFN0YXR1cyhjYW1wYWlnbi5zdGF0dXMpXSxcbiAgICAgIFtcIlJlY2lwaWVudHNcIiwgU3RyaW5nKGNhbXBhaWduLnJlY2lwaWVudENvdW50KV0sXG4gICAgICAuLi4oY2FtcGFpZ24uc3RhdHVzID09PSBcInNlbnRcIiB8fCBjYW1wYWlnbi5zdGF0dXMgPT09IFwic2VuZGluZ1wiXG4gICAgICAgID8gW1xuICAgICAgICAgICAgW1wiU2VudFwiLCBTdHJpbmcoY2FtcGFpZ24uc2VudENvdW50KV0gYXMgW3N0cmluZywgc3RyaW5nXSxcbiAgICAgICAgICAgIFtcIkRlbGl2ZXJlZFwiLCBjb2xvcnMuc3VjY2VzcyhTdHJpbmcoY2FtcGFpZ24uZGVsaXZlcmVkQ291bnQpKV0gYXMgW3N0cmluZywgc3RyaW5nXSxcbiAgICAgICAgICAgIFtcIkZhaWxlZFwiLCBjYW1wYWlnbi5mYWlsZWRDb3VudCA+IDAgPyBjb2xvcnMuZXJyb3IoU3RyaW5nKGNhbXBhaWduLmZhaWxlZENvdW50KSkgOiBcIjBcIl0gYXMgW3N0cmluZywgc3RyaW5nXSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgW1wiRXN0aW1hdGVkIENyZWRpdHNcIiwgU3RyaW5nKGNhbXBhaWduLmVzdGltYXRlZENyZWRpdHMpXSxcbiAgICAgIC4uLihjYW1wYWlnbi5jcmVkaXRzVXNlZCA+IDBcbiAgICAgICAgPyBbW1wiQ3JlZGl0cyBVc2VkXCIsIFN0cmluZyhjYW1wYWlnbi5jcmVkaXRzVXNlZCldIGFzIFtzdHJpbmcsIHN0cmluZ11dXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKGNhbXBhaWduLnNjaGVkdWxlZEF0XG4gICAgICAgID8gW1tcIlNjaGVkdWxlZCBGb3JcIiwgbmV3IERhdGUoY2FtcGFpZ24uc2NoZWR1bGVkQXQpLnRvTG9jYWxlU3RyaW5nKCldIGFzIFtzdHJpbmcsIHN0cmluZ11dXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKGNhbXBhaWduLnRpbWV6b25lXG4gICAgICAgID8gW1tcIlRpbWV6b25lXCIsIGNhbXBhaWduLnRpbWV6b25lXSBhcyBbc3RyaW5nLCBzdHJpbmddXVxuICAgICAgICA6IFtdKSxcbiAgICAgIFtcIkNyZWF0ZWRcIiwgbmV3IERhdGUoY2FtcGFpZ24uY3JlYXRlZEF0KS50b0xvY2FsZVN0cmluZygpXSxcbiAgICAgIC4uLihjYW1wYWlnbi5zdGFydGVkQXRcbiAgICAgICAgPyBbW1wiU3RhcnRlZFwiLCBuZXcgRGF0ZShjYW1wYWlnbi5zdGFydGVkQXQpLnRvTG9jYWxlU3RyaW5nKCldIGFzIFtzdHJpbmcsIHN0cmluZ11dXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKGNhbXBhaWduLmNvbXBsZXRlZEF0XG4gICAgICAgID8gW1tcIkNvbXBsZXRlZFwiLCBuZXcgRGF0ZShjYW1wYWlnbi5jb21wbGV0ZWRBdCkudG9Mb2NhbGVTdHJpbmcoKV0gYXMgW3N0cmluZywgc3RyaW5nXV1cbiAgICAgICAgOiBbXSksXG4gICAgXSk7XG5cbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJNZXNzYWdlOlwiKSk7XG4gICAgY29uc29sZS5sb2coYCAgJHtjYW1wYWlnbi50ZXh0fWApO1xuXG4gICAgaWYgKGNhbXBhaWduLmNvbnRhY3RMaXN0SWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiQ29udGFjdCBMaXN0czpcIikpO1xuICAgICAgY2FtcGFpZ24uY29udGFjdExpc3RJZHMuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coYCAgLSAke2lkfWApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -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,116 @@
|
|
|
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 "sent":
|
|
14
|
+
return colors.success("sent");
|
|
15
|
+
case "paused":
|
|
16
|
+
return colors.warning("paused");
|
|
17
|
+
case "cancelled":
|
|
18
|
+
return colors.dim("cancelled");
|
|
19
|
+
case "failed":
|
|
20
|
+
return colors.error("failed");
|
|
21
|
+
default:
|
|
22
|
+
return status;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export default class CampaignsList extends AuthenticatedCommand {
|
|
26
|
+
static description = "List campaigns";
|
|
27
|
+
static examples = [
|
|
28
|
+
"<%= config.bin %> campaigns list",
|
|
29
|
+
"<%= config.bin %> campaigns list --status draft",
|
|
30
|
+
"<%= config.bin %> campaigns list --limit 10",
|
|
31
|
+
"<%= config.bin %> campaigns list --json",
|
|
32
|
+
];
|
|
33
|
+
static flags = {
|
|
34
|
+
...AuthenticatedCommand.baseFlags,
|
|
35
|
+
limit: Flags.integer({
|
|
36
|
+
char: "l",
|
|
37
|
+
description: "Number of campaigns to show",
|
|
38
|
+
default: 20,
|
|
39
|
+
}),
|
|
40
|
+
offset: Flags.integer({
|
|
41
|
+
description: "Offset for pagination",
|
|
42
|
+
default: 0,
|
|
43
|
+
}),
|
|
44
|
+
status: Flags.string({
|
|
45
|
+
char: "s",
|
|
46
|
+
description: "Filter by status (draft, scheduled, sending, sent, cancelled)",
|
|
47
|
+
}),
|
|
48
|
+
};
|
|
49
|
+
async run() {
|
|
50
|
+
const { flags } = await this.parse(CampaignsList);
|
|
51
|
+
const response = await apiClient.get("/api/v1/campaigns", {
|
|
52
|
+
limit: flags.limit,
|
|
53
|
+
offset: flags.offset,
|
|
54
|
+
...(flags.status && { status: flags.status }),
|
|
55
|
+
});
|
|
56
|
+
if (isJsonMode()) {
|
|
57
|
+
json(response);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (response.campaigns.length === 0) {
|
|
61
|
+
info("No campaigns found");
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
console.log();
|
|
65
|
+
console.log(colors.dim(`Showing ${response.campaigns.length} of ${response.total} campaigns`));
|
|
66
|
+
console.log();
|
|
67
|
+
table(response.campaigns, [
|
|
68
|
+
{
|
|
69
|
+
header: "ID",
|
|
70
|
+
key: "id",
|
|
71
|
+
width: 18,
|
|
72
|
+
formatter: (v) => colors.dim(String(v).slice(0, 15) + "..."),
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
header: "Name",
|
|
76
|
+
key: "name",
|
|
77
|
+
width: 20,
|
|
78
|
+
formatter: (v) => {
|
|
79
|
+
const name = String(v);
|
|
80
|
+
return name.length > 18 ? name.slice(0, 18) + "..." : name;
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
header: "Status",
|
|
85
|
+
key: "status",
|
|
86
|
+
width: 11,
|
|
87
|
+
formatter: (v) => formatCampaignStatus(String(v)),
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
header: "Recipients",
|
|
91
|
+
key: "recipientCount",
|
|
92
|
+
width: 11,
|
|
93
|
+
formatter: (v) => String(v),
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
header: "Delivered",
|
|
97
|
+
key: "deliveredCount",
|
|
98
|
+
width: 10,
|
|
99
|
+
formatter: (v, row) => {
|
|
100
|
+
const campaign = row;
|
|
101
|
+
if (campaign.status === "sent" || campaign.status === "sending") {
|
|
102
|
+
return `${v}/${campaign.recipientCount}`;
|
|
103
|
+
}
|
|
104
|
+
return "-";
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
header: "Created",
|
|
109
|
+
key: "createdAt",
|
|
110
|
+
width: 12,
|
|
111
|
+
formatter: (v) => formatRelativeTime(String(v)),
|
|
112
|
+
},
|
|
113
|
+
]);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jYW1wYWlnbnMvbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsS0FBSyxFQUNMLElBQUksRUFDSixJQUFJLEVBQ0osa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQXVCN0IsU0FBUyxvQkFBb0IsQ0FBQyxNQUFjO0lBQzFDLFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLE9BQU87WUFDVixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsS0FBSyxXQUFXO1lBQ2QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLEtBQUssU0FBUztZQUNaLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxLQUFLLE1BQU07WUFDVCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsS0FBSyxRQUFRO1lBQ1gsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLEtBQUssV0FBVztZQUNkLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxLQUFLLFFBQVE7WUFDWCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEM7WUFDRSxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8s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QUUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEQ7WUFDRDtnQkFDRSxNQUFNLEVBQUUsWUFBWTtnQkFDcEIsR0FBRyxFQUFFLGdCQUFnQjtnQkFDckIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQzVCO1lBQ0Q7Z0JBQ0UsTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLEdBQUcsRUFBRSxnQkFBZ0I7Z0JBQ3JCLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDcEIsTUFBTSxRQUFRLEdBQUcsR0FBZSxDQUFDO29CQUNqQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7d0JBQ2hFLE9BQU8sR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUMzQyxDQUFDO29CQUNELE9BQU8sR0FBRyxDQUFDO2dCQUNiLENBQUM7YUFDRjtZQUNEO2dCQUNFLE1BQU0sRUFBRSxTQUFTO2dCQUNqQixHQUFHLEVBQUUsV0FBVztnQkFDaEIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEQ7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgdGFibGUsXG4gIGpzb24sXG4gIGluZm8sXG4gIGZvcm1hdFJlbGF0aXZlVGltZSxcbiAgY29sb3JzLFxuICBpc0pzb25Nb2RlLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5pbnRlcmZhY2UgQ2FtcGFpZ24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHJlY2lwaWVudENvdW50OiBudW1iZXI7XG4gIHNlbnRDb3VudDogbnVtYmVyO1xuICBkZWxpdmVyZWRDb3VudDogbnVtYmVyO1xuICBmYWlsZWRDb3VudDogbnVtYmVyO1xuICBlc3RpbWF0ZWRDcmVkaXRzOiBudW1iZXI7XG4gIHNjaGVkdWxlZEF0Pzogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIExpc3RDYW1wYWlnbnNSZXNwb25zZSB7XG4gIGNhbXBhaWduczogQ2FtcGFpZ25bXTtcbiAgdG90YWw6IG51bWJlcjtcbiAgbGltaXQ6IG51bWJlcjtcbiAgb2Zmc2V0OiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdENhbXBhaWduU3RhdHVzKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFwiZHJhZnRcIjpcbiAgICAgIHJldHVybiBjb2xvcnMuZGltKFwiZHJhZnRcIik7XG4gICAgY2FzZSBcInNjaGVkdWxlZFwiOlxuICAgICAgcmV0dXJuIGNvbG9ycy53YXJuaW5nKFwic2NoZWR1bGVkXCIpO1xuICAgIGNhc2UgXCJzZW5kaW5nXCI6XG4gICAgICByZXR1cm4gY29sb3JzLmluZm8oXCJzZW5kaW5nXCIpO1xuICAgIGNhc2UgXCJzZW50XCI6XG4gICAgICByZXR1cm4gY29sb3JzLnN1Y2Nlc3MoXCJzZW50XCIpO1xuICAgIGNhc2UgXCJwYXVzZWRcIjpcbiAgICAgIHJldHVybiBjb2xvcnMud2FybmluZyhcInBhdXNlZFwiKTtcbiAgICBjYXNlIFwiY2FuY2VsbGVkXCI6XG4gICAgICByZXR1cm4gY29sb3JzLmRpbShcImNhbmNlbGxlZFwiKTtcbiAgICBjYXNlIFwiZmFpbGVkXCI6XG4gICAgICByZXR1cm4gY29sb3JzLmVycm9yKFwiZmFpbGVkXCIpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdHVzO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhbXBhaWduc0xpc3QgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiTGlzdCBjYW1wYWlnbnNcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgbGlzdFwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gY2FtcGFpZ25zIGxpc3QgLS1zdGF0dXMgZHJhZnRcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyBsaXN0IC0tbGltaXQgMTBcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyBsaXN0IC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgbGltaXQ6IEZsYWdzLmludGVnZXIoe1xuICAgICAgY2hhcjogXCJsXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJOdW1iZXIgb2YgY2FtcGFpZ25zIHRvIHNob3dcIixcbiAgICAgIGRlZmF1bHQ6IDIwLFxuICAgIH0pLFxuICAgIG9mZnNldDogRmxhZ3MuaW50ZWdlcih7XG4gICAgICBkZXNjcmlwdGlvbjogXCJPZmZzZXQgZm9yIHBhZ2luYXRpb25cIixcbiAgICAgIGRlZmF1bHQ6IDAsXG4gICAgfSksXG4gICAgc3RhdHVzOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJzXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJGaWx0ZXIgYnkgc3RhdHVzIChkcmFmdCwgc2NoZWR1bGVkLCBzZW5kaW5nLCBzZW50LCBjYW5jZWxsZWQpXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoQ2FtcGFpZ25zTGlzdCk7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8TGlzdENhbXBhaWduc1Jlc3BvbnNlPihcbiAgICAgIFwiL2FwaS92MS9jYW1wYWlnbnNcIixcbiAgICAgIHtcbiAgICAgICAgbGltaXQ6IGZsYWdzLmxpbWl0LFxuICAgICAgICBvZmZzZXQ6IGZsYWdzLm9mZnNldCxcbiAgICAgICAgLi4uKGZsYWdzLnN0YXR1cyAmJiB7IHN0YXR1czogZmxhZ3Muc3RhdHVzIH0pLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLmNhbXBhaWducy5sZW5ndGggPT09IDApIHtcbiAgICAgIGluZm8oXCJObyBjYW1wYWlnbnMgZm91bmRcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGNvbG9ycy5kaW0oYFNob3dpbmcgJHtyZXNwb25zZS5jYW1wYWlnbnMubGVuZ3RofSBvZiAke3Jlc3BvbnNlLnRvdGFsfSBjYW1wYWlnbnNgKSxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICB0YWJsZShyZXNwb25zZS5jYW1wYWlnbnMsIFtcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyOiBcIklEXCIsXG4gICAgICAgIGtleTogXCJpZFwiLFxuICAgICAgICB3aWR0aDogMTgsXG4gICAgICAgIGZvcm1hdHRlcjogKHYpID0+IGNvbG9ycy5kaW0oU3RyaW5nKHYpLnNsaWNlKDAsIDE1KSArIFwiLi4uXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyOiBcIk5hbWVcIixcbiAgICAgICAga2V5OiBcIm5hbWVcIixcbiAgICAgICAgd2lkdGg6IDIwLFxuICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmFtZSA9IFN0cmluZyh2KTtcbiAgICAgICAgICByZXR1cm4gbmFtZS5sZW5ndGggPiAxOCA/IG5hbWUuc2xpY2UoMCwgMTgpICsgXCIuLi5cIiA6IG5hbWU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IFwiU3RhdHVzXCIsXG4gICAgICAgIGtleTogXCJzdGF0dXNcIixcbiAgICAgICAgd2lkdGg6IDExLFxuICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PiBmb3JtYXRDYW1wYWlnblN0YXR1cyhTdHJpbmcodikpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyOiBcIlJlY2lwaWVudHNcIixcbiAgICAgICAga2V5OiBcInJlY2lwaWVudENvdW50XCIsXG4gICAgICAgIHdpZHRoOiAxMSxcbiAgICAgICAgZm9ybWF0dGVyOiAodikgPT4gU3RyaW5nKHYpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyOiBcIkRlbGl2ZXJlZFwiLFxuICAgICAgICBrZXk6IFwiZGVsaXZlcmVkQ291bnRcIixcbiAgICAgICAgd2lkdGg6IDEwLFxuICAgICAgICBmb3JtYXR0ZXI6ICh2LCByb3cpID0+IHtcbiAgICAgICAgICBjb25zdCBjYW1wYWlnbiA9IHJvdyBhcyBDYW1wYWlnbjtcbiAgICAgICAgICBpZiAoY2FtcGFpZ24uc3RhdHVzID09PSBcInNlbnRcIiB8fCBjYW1wYWlnbi5zdGF0dXMgPT09IFwic2VuZGluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7dn0vJHtjYW1wYWlnbi5yZWNpcGllbnRDb3VudH1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gXCItXCI7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IFwiQ3JlYXRlZFwiLFxuICAgICAgICBrZXk6IFwiY3JlYXRlZEF0XCIsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgZm9ybWF0dGVyOiAodikgPT4gZm9ybWF0UmVsYXRpdmVUaW1lKFN0cmluZyh2KSksXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG59XG4iXX0=
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
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, warn } from "../../lib/output.js";
|
|
5
|
+
export default class CampaignsPreview extends AuthenticatedCommand {
|
|
6
|
+
static description = "Preview campaign cost and recipients";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> campaigns preview cmp_xxx",
|
|
9
|
+
"<%= config.bin %> campaigns preview cmp_xxx --json",
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
id: Args.string({
|
|
13
|
+
description: "Campaign ID",
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
static flags = {
|
|
18
|
+
...AuthenticatedCommand.baseFlags,
|
|
19
|
+
};
|
|
20
|
+
async run() {
|
|
21
|
+
const { args } = await this.parse(CampaignsPreview);
|
|
22
|
+
const preview = await apiClient.get(`/api/v1/campaigns/${args.id}/preview`);
|
|
23
|
+
if (isJsonMode()) {
|
|
24
|
+
json(preview);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
console.log();
|
|
28
|
+
console.log(colors.bold("Campaign Preview"));
|
|
29
|
+
console.log();
|
|
30
|
+
keyValue([
|
|
31
|
+
["Recipients", String(preview.recipientCount)],
|
|
32
|
+
["Segments per message", String(preview.estimatedSegments)],
|
|
33
|
+
["Estimated Credits", colors.bold(String(preview.estimatedCredits))],
|
|
34
|
+
["Your Balance", String(preview.currentBalance)],
|
|
35
|
+
[
|
|
36
|
+
"Status",
|
|
37
|
+
preview.hasEnoughCredits
|
|
38
|
+
? colors.success("Ready to send")
|
|
39
|
+
: colors.error("Insufficient credits"),
|
|
40
|
+
],
|
|
41
|
+
]);
|
|
42
|
+
if (!preview.hasEnoughCredits) {
|
|
43
|
+
console.log();
|
|
44
|
+
warn(`You need ${preview.estimatedCredits - preview.currentBalance} more credits to send this campaign.`);
|
|
45
|
+
console.log(colors.dim(` Top up at: https://sendly.live/billing`));
|
|
46
|
+
}
|
|
47
|
+
if (preview.breakdown && preview.breakdown.length > 0) {
|
|
48
|
+
console.log();
|
|
49
|
+
console.log(colors.dim("Cost breakdown by country:"));
|
|
50
|
+
console.log();
|
|
51
|
+
for (const item of preview.breakdown) {
|
|
52
|
+
console.log(` ${item.country.padEnd(20)} ${String(item.count).padStart(6)} recipients × ${item.creditsPerMessage} = ${colors.bold(String(item.totalCredits))} credits`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
console.log();
|
|
56
|
+
console.log(colors.dim("To send this campaign:"));
|
|
57
|
+
console.log(` ${colors.code(`sendly campaigns send ${args.id}`)}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jYW1wYWlnbnMvcHJldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBaUIvRSxNQUFNLENBQUMsT0FBTyxPQUFPLGdCQUFpQixTQUFRLG9CQUFvQjtJQUNoRSxNQUFNLENBQUMsV0FBVyxHQUFHLHNDQUFzQyxDQUFDO0lBRTVELE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsNkNBQTZDO1FBQzdDLG9EQUFvRDtLQUNyRCxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2QsV0FBVyxFQUFFLGFBQWE7WUFDMUIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7S0FDbEMsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXBELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FDakMscUJBQXFCLElBQUksQ0FBQyxFQUFFLFVBQVUsQ0FDdkMsQ0FBQztRQUVGLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDZCxPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWQsUUFBUSxDQUFDO1lBQ1AsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM5QyxDQUFDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMzRCxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNoRDtnQkFDRSxRQUFRO2dCQUNSLE9BQU8sQ0FBQyxnQkFBZ0I7b0JBQ3RCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztvQkFDakMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7YUFDekM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUNGLFlBQVksT0FBTyxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxjQUFjLHNDQUFzQyxDQUNwRyxDQUFDO1lBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7WUFDdEQsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRWQsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLElBQUksQ0FBQyxpQkFBaUIsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUM1SixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgY29sb3JzLCBpc0pzb25Nb2RlLCBrZXlWYWx1ZSwgd2FybiB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBDYW1wYWlnblByZXZpZXcge1xuICBpZDogc3RyaW5nO1xuICByZWNpcGllbnRDb3VudDogbnVtYmVyO1xuICBlc3RpbWF0ZWRTZWdtZW50czogbnVtYmVyO1xuICBlc3RpbWF0ZWRDcmVkaXRzOiBudW1iZXI7XG4gIGN1cnJlbnRCYWxhbmNlOiBudW1iZXI7XG4gIGhhc0Vub3VnaENyZWRpdHM6IGJvb2xlYW47XG4gIGJyZWFrZG93bj86IEFycmF5PHtcbiAgICBjb3VudHJ5OiBzdHJpbmc7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgICBjcmVkaXRzUGVyTWVzc2FnZTogbnVtYmVyO1xuICAgIHRvdGFsQ3JlZGl0czogbnVtYmVyO1xuICB9Pjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FtcGFpZ25zUHJldmlldyBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJQcmV2aWV3IGNhbXBhaWduIGNvc3QgYW5kIHJlY2lwaWVudHNcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgcHJldmlldyBjbXBfeHh4XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgcHJldmlldyBjbXBfeHh4IC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIGlkOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJDYW1wYWlnbiBJRFwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKENhbXBhaWduc1ByZXZpZXcpO1xuXG4gICAgY29uc3QgcHJldmlldyA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8Q2FtcGFpZ25QcmV2aWV3PihcbiAgICAgIGAvYXBpL3YxL2NhbXBhaWducy8ke2FyZ3MuaWR9L3ByZXZpZXdgLFxuICAgICk7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKHByZXZpZXcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoXCJDYW1wYWlnbiBQcmV2aWV3XCIpKTtcbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAga2V5VmFsdWUoW1xuICAgICAgW1wiUmVjaXBpZW50c1wiLCBTdHJpbmcocHJldmlldy5yZWNpcGllbnRDb3VudCldLFxuICAgICAgW1wiU2VnbWVudHMgcGVyIG1lc3NhZ2VcIiwgU3RyaW5nKHByZXZpZXcuZXN0aW1hdGVkU2VnbWVudHMpXSxcbiAgICAgIFtcIkVzdGltYXRlZCBDcmVkaXRzXCIsIGNvbG9ycy5ib2xkKFN0cmluZyhwcmV2aWV3LmVzdGltYXRlZENyZWRpdHMpKV0sXG4gICAgICBbXCJZb3VyIEJhbGFuY2VcIiwgU3RyaW5nKHByZXZpZXcuY3VycmVudEJhbGFuY2UpXSxcbiAgICAgIFtcbiAgICAgICAgXCJTdGF0dXNcIixcbiAgICAgICAgcHJldmlldy5oYXNFbm91Z2hDcmVkaXRzXG4gICAgICAgICAgPyBjb2xvcnMuc3VjY2VzcyhcIlJlYWR5IHRvIHNlbmRcIilcbiAgICAgICAgICA6IGNvbG9ycy5lcnJvcihcIkluc3VmZmljaWVudCBjcmVkaXRzXCIpLFxuICAgICAgXSxcbiAgICBdKTtcblxuICAgIGlmICghcHJldmlldy5oYXNFbm91Z2hDcmVkaXRzKSB7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgd2FybihcbiAgICAgICAgYFlvdSBuZWVkICR7cHJldmlldy5lc3RpbWF0ZWRDcmVkaXRzIC0gcHJldmlldy5jdXJyZW50QmFsYW5jZX0gbW9yZSBjcmVkaXRzIHRvIHNlbmQgdGhpcyBjYW1wYWlnbi5gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oYCAgVG9wIHVwIGF0OiBodHRwczovL3NlbmRseS5saXZlL2JpbGxpbmdgKSk7XG4gICAgfVxuXG4gICAgaWYgKHByZXZpZXcuYnJlYWtkb3duICYmIHByZXZpZXcuYnJlYWtkb3duLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiQ29zdCBicmVha2Rvd24gYnkgY291bnRyeTpcIikpO1xuICAgICAgY29uc29sZS5sb2coKTtcblxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHByZXZpZXcuYnJlYWtkb3duKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAgICR7aXRlbS5jb3VudHJ5LnBhZEVuZCgyMCl9ICR7U3RyaW5nKGl0ZW0uY291bnQpLnBhZFN0YXJ0KDYpfSByZWNpcGllbnRzIMOXICR7aXRlbS5jcmVkaXRzUGVyTWVzc2FnZX0gPSAke2NvbG9ycy5ib2xkKFN0cmluZyhpdGVtLnRvdGFsQ3JlZGl0cykpfSBjcmVkaXRzYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJUbyBzZW5kIHRoaXMgY2FtcGFpZ246XCIpKTtcbiAgICBjb25zb2xlLmxvZyhgICAke2NvbG9ycy5jb2RlKGBzZW5kbHkgY2FtcGFpZ25zIHNlbmQgJHthcmdzLmlkfWApfWApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class CampaignsSchedule 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
|
+
at: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
timezone: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|