@sendly/cli 3.13.0 → 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.
- package/dist/commands/campaigns/clone.d.ts +14 -0
- package/dist/commands/campaigns/clone.js +47 -0
- package/dist/commands/campaigns/create.js +7 -6
- package/dist/commands/campaigns/delete.js +3 -3
- package/dist/commands/campaigns/get.js +28 -18
- package/dist/commands/campaigns/list.js +7 -8
- package/dist/commands/campaigns/preview.js +16 -5
- package/dist/commands/campaigns/schedule.js +6 -4
- package/dist/commands/campaigns/send.js +27 -9
- package/dist/commands/campaigns/update.d.ts +17 -0
- package/dist/commands/campaigns/update.js +66 -0
- package/dist/commands/contacts/import.d.ts +14 -0
- package/dist/commands/contacts/import.js +132 -0
- package/dist/commands/contacts/lists/get.d.ts +13 -0
- package/dist/commands/contacts/lists/get.js +63 -0
- package/dist/commands/contacts/lists/update.d.ts +15 -0
- package/dist/commands/contacts/lists/update.js +51 -0
- package/dist/commands/contacts/update.d.ts +15 -0
- package/dist/commands/contacts/update.js +52 -0
- package/dist/commands/status.js +3 -3
- package/oclif.manifest.json +2264 -723
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Args, Flags } from "@oclif/core";
|
|
2
2
|
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
3
|
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
-
import { json, success, colors, isJsonMode, keyValue, warn } from "../../lib/output.js";
|
|
4
|
+
import { json, success, colors, isJsonMode, keyValue, warn, } from "../../lib/output.js";
|
|
5
5
|
import * as readline from "readline";
|
|
6
6
|
async function confirm(message) {
|
|
7
7
|
const rl = readline.createInterface({
|
|
@@ -43,6 +43,23 @@ export default class CampaignsSend extends AuthenticatedCommand {
|
|
|
43
43
|
console.log(colors.dim(` Top up at: https://sendly.live/billing`));
|
|
44
44
|
this.exit(1);
|
|
45
45
|
}
|
|
46
|
+
if (preview.sendableCount === 0) {
|
|
47
|
+
warn("No recipients can be reached with your current verification.");
|
|
48
|
+
if (preview.warnings) {
|
|
49
|
+
for (const w of preview.warnings) {
|
|
50
|
+
warn(w);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
this.exit(1);
|
|
54
|
+
}
|
|
55
|
+
if (preview.blockedCount && preview.blockedCount > 0) {
|
|
56
|
+
warn(`${preview.blockedCount} of ${preview.recipientCount} recipients cannot be reached with your current verification.`);
|
|
57
|
+
}
|
|
58
|
+
if (preview.warnings && preview.warnings.length > 0) {
|
|
59
|
+
for (const w of preview.warnings) {
|
|
60
|
+
warn(w);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
46
63
|
if (!flags.yes && !isJsonMode()) {
|
|
47
64
|
console.log();
|
|
48
65
|
console.log(colors.bold("Campaign Summary"));
|
|
@@ -58,21 +75,22 @@ export default class CampaignsSend extends AuthenticatedCommand {
|
|
|
58
75
|
return;
|
|
59
76
|
}
|
|
60
77
|
}
|
|
61
|
-
const
|
|
78
|
+
const result = await apiClient.post(`/api/v1/campaigns/${args.id}/send`);
|
|
62
79
|
if (isJsonMode()) {
|
|
63
|
-
json(
|
|
80
|
+
json(result);
|
|
64
81
|
return;
|
|
65
82
|
}
|
|
66
|
-
success(`Campaign
|
|
83
|
+
success(`Campaign sent!`);
|
|
67
84
|
console.log();
|
|
68
85
|
keyValue([
|
|
69
|
-
["
|
|
70
|
-
["
|
|
71
|
-
["
|
|
86
|
+
["Total", String(result.total)],
|
|
87
|
+
["Sent", colors.success(String(result.sent))],
|
|
88
|
+
["Failed", result.failed > 0 ? colors.error(String(result.failed)) : "0"],
|
|
89
|
+
["Credits Used", String(result.creditsUsed)],
|
|
72
90
|
]);
|
|
73
91
|
console.log();
|
|
74
92
|
console.log(colors.dim("Check status:"));
|
|
75
|
-
console.log(` ${colors.code(`sendly campaigns get ${
|
|
93
|
+
console.log(` ${colors.code(`sendly campaigns get ${args.id}`)}`);
|
|
76
94
|
}
|
|
77
95
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jYW1wYWlnbnMvc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEYsT0FBTyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFpQnJDLEtBQUssVUFBVSxPQUFPLENBQUMsT0FBZTtJQUNwQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2xDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sYUFBYyxTQUFRLG9CQUFvQjtJQUM3RCxNQUFNLENBQUMsV0FBVyxHQUFHLDZCQUE2QixD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LENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBqc29uLCBzdWNjZXNzLCBjb2xvcnMsIGlzSnNvbk1vZGUsIGtleVZhbHVlLCB3YXJuIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCAqIGFzIHJlYWRsaW5lIGZyb20gXCJyZWFkbGluZVwiO1xuXG5pbnRlcmZhY2UgQ2FtcGFpZ24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICByZWNpcGllbnRDb3VudDogbnVtYmVyO1xuICBlc3RpbWF0ZWRDcmVkaXRzOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDYW1wYWlnblByZXZpZXcge1xuICByZWNpcGllbnRDb3VudDogbnVtYmVyO1xuICBlc3RpbWF0ZWRDcmVkaXRzOiBudW1iZXI7XG4gIGN1cnJlbnRCYWxhbmNlOiBudW1iZXI7XG4gIGhhc0Vub3VnaENyZWRpdHM6IGJvb2xlYW47XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbmZpcm0obWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICB9KTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBybC5xdWVzdGlvbihgJHttZXNzYWdlfSAoeS9OKSBgLCAoYW5zd2VyKSA9PiB7XG4gICAgICBybC5jbG9zZSgpO1xuICAgICAgcmVzb2x2ZShhbnN3ZXIudG9Mb3dlckNhc2UoKSA9PT0gXCJ5XCIgfHwgYW5zd2VyLnRvTG93ZXJDYXNlKCkgPT09IFwieWVzXCIpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FtcGFpZ25zU2VuZCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTZW5kIGEgY2FtcGFpZ24gaW1tZWRpYXRlbHlcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgc2VuZCBjbXBfeHh4XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgc2VuZCBjbXBfeHh4IC0teWVzXCIsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgaWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNhbXBhaWduIElEXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHllczogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBjaGFyOiBcInlcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNraXAgY29uZmlybWF0aW9uIHByb21wdFwiLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoQ2FtcGFpZ25zU2VuZCk7XG5cbiAgICBjb25zdCBwcmV2aWV3ID0gYXdhaXQgYXBpQ2xpZW50LmdldDxDYW1wYWlnblByZXZpZXc+KFxuICAgICAgYC9hcGkvdjEvY2FtcGFpZ25zLyR7YXJncy5pZH0vcHJldmlld2AsXG4gICAgKTtcblxuICAgIGlmICghcHJldmlldy5oYXNFbm91Z2hDcmVkaXRzKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBgWW91IG5lZWQgJHtwcmV2aWV3LmVzdGltYXRlZENyZWRpdHMgLSBwcmV2aWV3LmN1cnJlbnRCYWxhbmNlfSBtb3JlIGNyZWRpdHMgdG8gc2VuZCB0aGlzIGNhbXBhaWduLmAsXG4gICAgICApO1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShgICBUb3AgdXAgYXQ6IGh0dHBzOi8vc2VuZGx5LmxpdmUvYmlsbGluZ2ApKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAoIWZsYWdzLnllcyAmJiAhaXNKc29uTW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoXCJDYW1wYWlnbiBTdW1tYXJ5XCIpKTtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBrZXlWYWx1ZShbXG4gICAgICAgIFtcIlJlY2lwaWVudHNcIiwgU3RyaW5nKHByZXZpZXcucmVjaXBpZW50Q291bnQpXSxcbiAgICAgICAgW1wiQ3JlZGl0cyB0byB1c2VcIiwgY29sb3JzLmJvbGQoU3RyaW5nKHByZXZpZXcuZXN0aW1hdGVkQ3JlZGl0cykpXSxcbiAgICAgIF0pO1xuICAgICAgY29uc29sZS5sb2coKTtcblxuICAgICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgY29uZmlybShcbiAgICAgICAgY29sb3JzLndhcm5pbmcoXCJTZW5kIHRoaXMgY2FtcGFpZ24gbm93P1wiKSxcbiAgICAgICk7XG4gICAgICBpZiAoIWNvbmZpcm1lZCkge1xuICAgICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiQ2FuY2VsbGVkXCIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNhbXBhaWduID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8Q2FtcGFpZ24+KFxuICAgICAgYC9hcGkvdjEvY2FtcGFpZ25zLyR7YXJncy5pZH0vc2VuZGAsXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24oY2FtcGFpZ24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoYENhbXBhaWduIGlzIG5vdyBzZW5kaW5nIWApO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICBrZXlWYWx1ZShbXG4gICAgICBbXCJDYW1wYWlnblwiLCBjYW1wYWlnbi5uYW1lXSxcbiAgICAgIFtcIlN0YXR1c1wiLCBjb2xvcnMuaW5mbyhcInNlbmRpbmdcIildLFxuICAgICAgW1wiUmVjaXBpZW50c1wiLCBTdHJpbmcoY2FtcGFpZ24ucmVjaXBpZW50Q291bnQpXSxcbiAgICBdKTtcblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIkNoZWNrIHN0YXR1czpcIikpO1xuICAgIGNvbnNvbGUubG9nKGAgICR7Y29sb3JzLmNvZGUoYHNlbmRseSBjYW1wYWlnbnMgZ2V0ICR7Y2FtcGFpZ24uaWR9YCl9YCk7XG4gIH1cbn1cbiJdfQ==
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jYW1wYWlnbnMvc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLElBQUksRUFDSixPQUFPLEVBQ1AsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBQ1IsSUFBSSxHQUNMLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFxQnJDLEtBQUssVUFBVSxPQUFPLENBQUMsT0FBZTtJQUNwQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2xDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sYUFBYyxTQUFRLG9CQUFvQjtJQUM3RCxNQUFNLENBQUMsV0FBVyxHQUFHLDZCQUE2QixDQUFDO0lBRW5ELE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsMENBQTBDO1FBQzFDLGdEQUFnRDtLQUNqRCxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2QsV0FBVyxFQUFFLGFBQWE7WUFDMUIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsMEJBQTBCO1lBQ3ZDLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXhELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FDakMscUJBQXFCLElBQUksQ0FBQyxFQUFFLFVBQVUsQ0FDdkMsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQ0YsWUFBWSxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGNBQWMsc0NBQXNDLENBQ3BHLENBQUM7WUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsMENBQTBDLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsYUFBYSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO1lBQ3JFLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQixLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNWLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQ0YsR0FBRyxPQUFPLENBQUMsWUFBWSxPQUFPLE9BQU8sQ0FBQyxjQUFjLCtEQUErRCxDQUNwSCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1YsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDaEMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUM3QyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxRQUFRLENBQUM7Z0JBQ1AsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDOUMsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2FBQ2xFLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVkLE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQzFDLENBQUM7WUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDakMscUJBQXFCLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FDcEMsQ0FBQztRQUVGLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDYixPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVkLFFBQVEsQ0FBQztZQUNQLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0MsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDekUsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM3QyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQge1xuICBqc29uLFxuICBzdWNjZXNzLFxuICBjb2xvcnMsXG4gIGlzSnNvbk1vZGUsXG4gIGtleVZhbHVlLFxuICB3YXJuLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0ICogYXMgcmVhZGxpbmUgZnJvbSBcInJlYWRsaW5lXCI7XG5cbmludGVyZmFjZSBCYXRjaFJlc3VsdCB7XG4gIGJhdGNoSWQ6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHRvdGFsOiBudW1iZXI7XG4gIHNlbnQ6IG51bWJlcjtcbiAgZmFpbGVkOiBudW1iZXI7XG4gIGNyZWRpdHNVc2VkOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDYW1wYWlnblByZXZpZXcge1xuICByZWNpcGllbnRDb3VudDogbnVtYmVyO1xuICBlc3RpbWF0ZWRDcmVkaXRzOiBudW1iZXI7XG4gIGN1cnJlbnRCYWxhbmNlOiBudW1iZXI7XG4gIGhhc0Vub3VnaENyZWRpdHM6IGJvb2xlYW47XG4gIGJsb2NrZWRDb3VudD86IG51bWJlcjtcbiAgc2VuZGFibGVDb3VudD86IG51bWJlcjtcbiAgd2FybmluZ3M/OiBzdHJpbmdbXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29uZmlybShtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXG4gIH0pO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHJsLnF1ZXN0aW9uKGAke21lc3NhZ2V9ICh5L04pIGAsIChhbnN3ZXIpID0+IHtcbiAgICAgIHJsLmNsb3NlKCk7XG4gICAgICByZXNvbHZlKGFuc3dlci50b0xvd2VyQ2FzZSgpID09PSBcInlcIiB8fCBhbnN3ZXIudG9Mb3dlckNhc2UoKSA9PT0gXCJ5ZXNcIik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYW1wYWlnbnNTZW5kIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIlNlbmQgYSBjYW1wYWlnbiBpbW1lZGlhdGVseVwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyBzZW5kIGNtcF94eHhcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyBzZW5kIGNtcF94eHggLS15ZXNcIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQ2FtcGFpZ24gSURcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgeWVzOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGNoYXI6IFwieVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiU2tpcCBjb25maXJtYXRpb24gcHJvbXB0XCIsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzLCBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShDYW1wYWlnbnNTZW5kKTtcblxuICAgIGNvbnN0IHByZXZpZXcgPSBhd2FpdCBhcGlDbGllbnQuZ2V0PENhbXBhaWduUHJldmlldz4oXG4gICAgICBgL2FwaS92MS9jYW1wYWlnbnMvJHthcmdzLmlkfS9wcmV2aWV3YCxcbiAgICApO1xuXG4gICAgaWYgKCFwcmV2aWV3Lmhhc0Vub3VnaENyZWRpdHMpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIGBZb3UgbmVlZCAke3ByZXZpZXcuZXN0aW1hdGVkQ3JlZGl0cyAtIHByZXZpZXcuY3VycmVudEJhbGFuY2V9IG1vcmUgY3JlZGl0cyB0byBzZW5kIHRoaXMgY2FtcGFpZ24uYCxcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKGAgIFRvcCB1cCBhdDogaHR0cHM6Ly9zZW5kbHkubGl2ZS9iaWxsaW5nYCkpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmIChwcmV2aWV3LnNlbmRhYmxlQ291bnQgPT09IDApIHtcbiAgICAgIHdhcm4oXCJObyByZWNpcGllbnRzIGNhbiBiZSByZWFjaGVkIHdpdGggeW91ciBjdXJyZW50IHZlcmlmaWNhdGlvbi5cIik7XG4gICAgICBpZiAocHJldmlldy53YXJuaW5ncykge1xuICAgICAgICBmb3IgKGNvbnN0IHcgb2YgcHJldmlldy53YXJuaW5ncykge1xuICAgICAgICAgIHdhcm4odyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAocHJldmlldy5ibG9ja2VkQ291bnQgJiYgcHJldmlldy5ibG9ja2VkQ291bnQgPiAwKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBgJHtwcmV2aWV3LmJsb2NrZWRDb3VudH0gb2YgJHtwcmV2aWV3LnJlY2lwaWVudENvdW50fSByZWNpcGllbnRzIGNhbm5vdCBiZSByZWFjaGVkIHdpdGggeW91ciBjdXJyZW50IHZlcmlmaWNhdGlvbi5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJldmlldy53YXJuaW5ncyAmJiBwcmV2aWV3Lndhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgdyBvZiBwcmV2aWV3Lndhcm5pbmdzKSB7XG4gICAgICAgIHdhcm4odyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFmbGFncy55ZXMgJiYgIWlzSnNvbk1vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiQ2FtcGFpZ24gU3VtbWFyeVwiKSk7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAga2V5VmFsdWUoW1xuICAgICAgICBbXCJSZWNpcGllbnRzXCIsIFN0cmluZyhwcmV2aWV3LnJlY2lwaWVudENvdW50KV0sXG4gICAgICAgIFtcIkNyZWRpdHMgdG8gdXNlXCIsIGNvbG9ycy5ib2xkKFN0cmluZyhwcmV2aWV3LmVzdGltYXRlZENyZWRpdHMpKV0sXG4gICAgICBdKTtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IGNvbmZpcm0oXG4gICAgICAgIGNvbG9ycy53YXJuaW5nKFwiU2VuZCB0aGlzIGNhbXBhaWduIG5vdz9cIiksXG4gICAgICApO1xuICAgICAgaWYgKCFjb25maXJtZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIkNhbmNlbGxlZFwiKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxCYXRjaFJlc3VsdD4oXG4gICAgICBgL2FwaS92MS9jYW1wYWlnbnMvJHthcmdzLmlkfS9zZW5kYCxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXN1bHQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoYENhbXBhaWduIHNlbnQhYCk7XG4gICAgY29uc29sZS5sb2coKTtcblxuICAgIGtleVZhbHVlKFtcbiAgICAgIFtcIlRvdGFsXCIsIFN0cmluZyhyZXN1bHQudG90YWwpXSxcbiAgICAgIFtcIlNlbnRcIiwgY29sb3JzLnN1Y2Nlc3MoU3RyaW5nKHJlc3VsdC5zZW50KSldLFxuICAgICAgW1wiRmFpbGVkXCIsIHJlc3VsdC5mYWlsZWQgPiAwID8gY29sb3JzLmVycm9yKFN0cmluZyhyZXN1bHQuZmFpbGVkKSkgOiBcIjBcIl0sXG4gICAgICBbXCJDcmVkaXRzIFVzZWRcIiwgU3RyaW5nKHJlc3VsdC5jcmVkaXRzVXNlZCldLFxuICAgIF0pO1xuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiQ2hlY2sgc3RhdHVzOlwiKSk7XG4gICAgY29uc29sZS5sb2coYCAgJHtjb2xvcnMuY29kZShgc2VuZGx5IGNhbXBhaWducyBnZXQgJHthcmdzLmlkfWApfWApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class CampaignsUpdate 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
|
+
text: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
list: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
template: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
14
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
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 CampaignsUpdate extends AuthenticatedCommand {
|
|
6
|
+
static description = "Update a campaign";
|
|
7
|
+
static examples = [
|
|
8
|
+
'<%= config.bin %> campaigns update cmp_xxx --name "New Name"',
|
|
9
|
+
'<%= config.bin %> campaigns update cmp_xxx --text "Updated message"',
|
|
10
|
+
"<%= config.bin %> campaigns update cmp_xxx --list lst_xxx",
|
|
11
|
+
'<%= config.bin %> campaigns update cmp_xxx --name "Sale" --text "50% off!"',
|
|
12
|
+
];
|
|
13
|
+
static args = {
|
|
14
|
+
id: Args.string({
|
|
15
|
+
description: "Campaign ID",
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
static flags = {
|
|
20
|
+
...AuthenticatedCommand.baseFlags,
|
|
21
|
+
name: Flags.string({
|
|
22
|
+
char: "n",
|
|
23
|
+
description: "Campaign name",
|
|
24
|
+
}),
|
|
25
|
+
text: Flags.string({
|
|
26
|
+
char: "t",
|
|
27
|
+
description: "Message text (supports {{variables}})",
|
|
28
|
+
}),
|
|
29
|
+
list: Flags.string({
|
|
30
|
+
char: "l",
|
|
31
|
+
description: "Contact list ID",
|
|
32
|
+
}),
|
|
33
|
+
template: Flags.string({
|
|
34
|
+
description: "Template ID",
|
|
35
|
+
}),
|
|
36
|
+
};
|
|
37
|
+
async run() {
|
|
38
|
+
const { args, flags } = await this.parse(CampaignsUpdate);
|
|
39
|
+
if (!flags.name && !flags.text && !flags.list && !flags.template) {
|
|
40
|
+
this.error("At least one of --name, --text, --list, or --template is required");
|
|
41
|
+
}
|
|
42
|
+
const body = {};
|
|
43
|
+
if (flags.name !== undefined)
|
|
44
|
+
body.name = flags.name;
|
|
45
|
+
if (flags.text !== undefined)
|
|
46
|
+
body.messageText = flags.text;
|
|
47
|
+
if (flags.list !== undefined)
|
|
48
|
+
body.targetListId = flags.list;
|
|
49
|
+
if (flags.template !== undefined)
|
|
50
|
+
body.templateId = flags.template;
|
|
51
|
+
const campaign = await apiClient.patch(`/api/v1/campaigns/${args.id}`, body);
|
|
52
|
+
if (isJsonMode()) {
|
|
53
|
+
json(campaign);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
success(`Campaign updated: ${campaign.id}`);
|
|
57
|
+
console.log();
|
|
58
|
+
keyValue([
|
|
59
|
+
["Name", campaign.name],
|
|
60
|
+
["Status", colors.dim(campaign.status)],
|
|
61
|
+
["Message", campaign.messageText],
|
|
62
|
+
["Recipients", String(campaign.totalRecipients)],
|
|
63
|
+
]);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NhbXBhaWducy91cGRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFhbEYsTUFBTSxDQUFDLE9BQU8sT0FBTyxlQUFnQixTQUFRLG9CQUFvQjtJQUMvRCxNQUFNLENBQUMsV0FBVyxHQUFHLG1CQUFtQixDQUFDO0lBRXpDLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsOERBQThEO1FBQzlELHFFQUFxRTtRQUNyRSwyREFBMkQ7UUFDM0QsNEVBQTRFO0tBQzdFLENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDZCxXQUFXLEVBQUUsYUFBYTtZQUMxQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxlQUFlO1NBQzdCLENBQUM7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSx1Q0FBdUM7U0FDckQsQ0FBQztRQUNGLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLGlCQUFpQjtTQUMvQixDQUFDO1FBQ0YsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDckIsV0FBVyxFQUFFLGFBQWE7U0FDM0IsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLEtBQUssQ0FDUixtRUFBbUUsQ0FDcEUsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLElBQUksR0FBNEIsRUFBRSxDQUFDO1FBQ3pDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3JELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzVELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzdELElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRW5FLE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FDcEMscUJBQXFCLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFDOUIsSUFBSSxDQUNMLENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMscUJBQXFCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVkLFFBQVEsQ0FBQztZQUNQLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDdkIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUNqQyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2pELENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBqc29uLCBzdWNjZXNzLCBjb2xvcnMsIGlzSnNvbk1vZGUsIGtleVZhbHVlIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIENhbXBhaWduIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBtZXNzYWdlVGV4dDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgdGFyZ2V0TGlzdElkPzogc3RyaW5nO1xuICB0b3RhbFJlY2lwaWVudHM6IG51bWJlcjtcbiAgZXN0aW1hdGVkQ3JlZGl0czogbnVtYmVyO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FtcGFpZ25zVXBkYXRlIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIlVwZGF0ZSBhIGNhbXBhaWduXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgdXBkYXRlIGNtcF94eHggLS1uYW1lIFwiTmV3IE5hbWVcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IGNhbXBhaWducyB1cGRhdGUgY21wX3h4eCAtLXRleHQgXCJVcGRhdGVkIG1lc3NhZ2VcIicsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjYW1wYWlnbnMgdXBkYXRlIGNtcF94eHggLS1saXN0IGxzdF94eHhcIixcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gY2FtcGFpZ25zIHVwZGF0ZSBjbXBfeHh4IC0tbmFtZSBcIlNhbGVcIiAtLXRleHQgXCI1MCUgb2ZmIVwiJyxcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQ2FtcGFpZ24gSURcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgbmFtZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiblwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ2FtcGFpZ24gbmFtZVwiLFxuICAgIH0pLFxuICAgIHRleHQ6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk1lc3NhZ2UgdGV4dCAoc3VwcG9ydHMge3t2YXJpYWJsZXN9fSlcIixcbiAgICB9KSxcbiAgICBsaXN0OiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJsXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDb250YWN0IGxpc3QgSURcIixcbiAgICB9KSxcbiAgICB0ZW1wbGF0ZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRlbXBsYXRlIElEXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoQ2FtcGFpZ25zVXBkYXRlKTtcblxuICAgIGlmICghZmxhZ3MubmFtZSAmJiAhZmxhZ3MudGV4dCAmJiAhZmxhZ3MubGlzdCAmJiAhZmxhZ3MudGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgIFwiQXQgbGVhc3Qgb25lIG9mIC0tbmFtZSwgLS10ZXh0LCAtLWxpc3QsIG9yIC0tdGVtcGxhdGUgaXMgcmVxdWlyZWRcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYm9keTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBpZiAoZmxhZ3MubmFtZSAhPT0gdW5kZWZpbmVkKSBib2R5Lm5hbWUgPSBmbGFncy5uYW1lO1xuICAgIGlmIChmbGFncy50ZXh0ICE9PSB1bmRlZmluZWQpIGJvZHkubWVzc2FnZVRleHQgPSBmbGFncy50ZXh0O1xuICAgIGlmIChmbGFncy5saXN0ICE9PSB1bmRlZmluZWQpIGJvZHkudGFyZ2V0TGlzdElkID0gZmxhZ3MubGlzdDtcbiAgICBpZiAoZmxhZ3MudGVtcGxhdGUgIT09IHVuZGVmaW5lZCkgYm9keS50ZW1wbGF0ZUlkID0gZmxhZ3MudGVtcGxhdGU7XG5cbiAgICBjb25zdCBjYW1wYWlnbiA9IGF3YWl0IGFwaUNsaWVudC5wYXRjaDxDYW1wYWlnbj4oXG4gICAgICBgL2FwaS92MS9jYW1wYWlnbnMvJHthcmdzLmlkfWAsXG4gICAgICBib2R5LFxuICAgICk7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKGNhbXBhaWduKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdWNjZXNzKGBDYW1wYWlnbiB1cGRhdGVkOiAke2NhbXBhaWduLmlkfWApO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICBrZXlWYWx1ZShbXG4gICAgICBbXCJOYW1lXCIsIGNhbXBhaWduLm5hbWVdLFxuICAgICAgW1wiU3RhdHVzXCIsIGNvbG9ycy5kaW0oY2FtcGFpZ24uc3RhdHVzKV0sXG4gICAgICBbXCJNZXNzYWdlXCIsIGNhbXBhaWduLm1lc3NhZ2VUZXh0XSxcbiAgICAgIFtcIlJlY2lwaWVudHNcIiwgU3RyaW5nKGNhbXBhaWduLnRvdGFsUmVjaXBpZW50cyldLFxuICAgIF0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class ContactsImport extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
file: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
list: 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,132 @@
|
|
|
1
|
+
import { Args, Flags } from "@oclif/core";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
4
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
5
|
+
import { json, success, colors, isJsonMode, keyValue, warn, } from "../../lib/output.js";
|
|
6
|
+
function normalizePhone(raw) {
|
|
7
|
+
let phone = raw.replace(/[\s\-\(\)\.\+]/g, "");
|
|
8
|
+
if (/^\d{10}$/.test(phone)) {
|
|
9
|
+
phone = "1" + phone;
|
|
10
|
+
}
|
|
11
|
+
if (/^\d{11}$/.test(phone) && phone.startsWith("1")) {
|
|
12
|
+
return "+" + phone;
|
|
13
|
+
}
|
|
14
|
+
if (/^\d{7,15}$/.test(phone)) {
|
|
15
|
+
return "+" + phone;
|
|
16
|
+
}
|
|
17
|
+
if (raw.startsWith("+")) {
|
|
18
|
+
return "+" + phone;
|
|
19
|
+
}
|
|
20
|
+
return raw.trim();
|
|
21
|
+
}
|
|
22
|
+
function parseCsv(content) {
|
|
23
|
+
const lines = content.split(/\r?\n/).filter((l) => l.trim());
|
|
24
|
+
if (lines.length < 2)
|
|
25
|
+
return [];
|
|
26
|
+
const headers = lines[0].split(",").map((h) => h.trim().toLowerCase());
|
|
27
|
+
const rows = [];
|
|
28
|
+
for (let i = 1; i < lines.length; i++) {
|
|
29
|
+
const values = lines[i].split(",").map((v) => v.trim());
|
|
30
|
+
const row = {};
|
|
31
|
+
for (let j = 0; j < headers.length; j++) {
|
|
32
|
+
row[headers[j]] = values[j] || "";
|
|
33
|
+
}
|
|
34
|
+
rows.push(row);
|
|
35
|
+
}
|
|
36
|
+
return rows;
|
|
37
|
+
}
|
|
38
|
+
function detectPhoneColumn(headers) {
|
|
39
|
+
const candidates = [
|
|
40
|
+
"phone",
|
|
41
|
+
"phonenumber",
|
|
42
|
+
"phone_number",
|
|
43
|
+
"to",
|
|
44
|
+
"number",
|
|
45
|
+
"mobile",
|
|
46
|
+
"cell",
|
|
47
|
+
];
|
|
48
|
+
for (const h of headers) {
|
|
49
|
+
if (candidates.includes(h.toLowerCase()))
|
|
50
|
+
return h;
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
export default class ContactsImport extends AuthenticatedCommand {
|
|
55
|
+
static description = "Import contacts from a CSV file";
|
|
56
|
+
static examples = [
|
|
57
|
+
"<%= config.bin %> contacts import contacts.csv",
|
|
58
|
+
"<%= config.bin %> contacts import contacts.csv --list lst_xxx",
|
|
59
|
+
"<%= config.bin %> contacts import contacts.csv --list lst_xxx --json",
|
|
60
|
+
];
|
|
61
|
+
static args = {
|
|
62
|
+
file: Args.string({
|
|
63
|
+
description: "Path to CSV file (columns: phone, name, email)",
|
|
64
|
+
required: true,
|
|
65
|
+
}),
|
|
66
|
+
};
|
|
67
|
+
static flags = {
|
|
68
|
+
...AuthenticatedCommand.baseFlags,
|
|
69
|
+
list: Flags.string({
|
|
70
|
+
char: "l",
|
|
71
|
+
description: "Contact list ID to add imported contacts to",
|
|
72
|
+
}),
|
|
73
|
+
};
|
|
74
|
+
async run() {
|
|
75
|
+
const { args, flags } = await this.parse(ContactsImport);
|
|
76
|
+
let content;
|
|
77
|
+
try {
|
|
78
|
+
content = readFileSync(args.file, "utf-8");
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
this.error(`Cannot read file: ${args.file}`);
|
|
82
|
+
}
|
|
83
|
+
const rows = parseCsv(content);
|
|
84
|
+
if (rows.length === 0) {
|
|
85
|
+
this.error("CSV file is empty or has no data rows");
|
|
86
|
+
}
|
|
87
|
+
const headers = Object.keys(rows[0]);
|
|
88
|
+
const phoneCol = detectPhoneColumn(headers);
|
|
89
|
+
if (!phoneCol) {
|
|
90
|
+
this.error(`No phone column found. Expected one of: phone, phoneNumber, to, number, mobile`);
|
|
91
|
+
}
|
|
92
|
+
const contacts = rows.map((row) => ({
|
|
93
|
+
phone: normalizePhone(row[phoneCol] || ""),
|
|
94
|
+
name: row["name"] || row["fullname"] || row["full_name"] || undefined,
|
|
95
|
+
email: row["email"] || row["e-mail"] || undefined,
|
|
96
|
+
}));
|
|
97
|
+
if (!isJsonMode()) {
|
|
98
|
+
console.log();
|
|
99
|
+
console.log(colors.dim(`Importing ${contacts.length} contacts from ${args.file}`));
|
|
100
|
+
if (flags.list) {
|
|
101
|
+
console.log(colors.dim(`Adding to list: ${flags.list}`));
|
|
102
|
+
}
|
|
103
|
+
console.log();
|
|
104
|
+
}
|
|
105
|
+
const result = await apiClient.post("/api/v1/contacts/import", {
|
|
106
|
+
contacts,
|
|
107
|
+
listId: flags.list,
|
|
108
|
+
});
|
|
109
|
+
if (isJsonMode()) {
|
|
110
|
+
json(result);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
success(`Import complete`);
|
|
114
|
+
console.log();
|
|
115
|
+
keyValue([
|
|
116
|
+
["Imported", colors.success(String(result.imported))],
|
|
117
|
+
["Skipped (duplicates)", String(result.skippedDuplicates)],
|
|
118
|
+
["Errors", result.totalErrors > 0 ? colors.error(String(result.totalErrors)) : "0"],
|
|
119
|
+
]);
|
|
120
|
+
if (result.totalErrors > 0 && result.errors.length > 0) {
|
|
121
|
+
console.log();
|
|
122
|
+
warn(`${result.totalErrors} contacts had errors:`);
|
|
123
|
+
for (const err of result.errors.slice(0, 10)) {
|
|
124
|
+
console.log(colors.dim(` Row ${err.index + 1}: ${err.phone || "(empty)"} - ${err.error}`));
|
|
125
|
+
}
|
|
126
|
+
if (result.totalErrors > 10) {
|
|
127
|
+
console.log(colors.dim(` ... and ${result.totalErrors - 10} more`));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NvbnRhY3RzL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsSUFBSSxFQUNKLE9BQU8sRUFDUCxNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsRUFDUixJQUFJLEdBQ0wsTUFBTSxxQkFBcUIsQ0FBQztBQVM3QixTQUFTLGNBQWMsQ0FBQyxHQUFXO0lBQ2pDLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0IsS0FBSyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEQsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPLEdBQUcsR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFD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LENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLHVCQUF1QixDQUFDLENBQUM7WUFDbkQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxTQUFTLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQy9FLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsV0FBVyxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUM1QixPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxNQUFNLENBQUMsV0FBVyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQ3hELENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAganNvbixcbiAgc3VjY2VzcyxcbiAgY29sb3JzLFxuICBpc0pzb25Nb2RlLFxuICBrZXlWYWx1ZSxcbiAgd2Fybixcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIEltcG9ydFJlc3BvbnNlIHtcbiAgaW1wb3J0ZWQ6IG51bWJlcjtcbiAgc2tpcHBlZER1cGxpY2F0ZXM6IG51bWJlcjtcbiAgZXJyb3JzOiBBcnJheTx7IGluZGV4OiBudW1iZXI7IHBob25lOiBzdHJpbmc7IGVycm9yOiBzdHJpbmcgfT47XG4gIHRvdGFsRXJyb3JzOiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBob25lKHJhdzogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHBob25lID0gcmF3LnJlcGxhY2UoL1tcXHNcXC1cXChcXClcXC5cXCtdL2csIFwiXCIpO1xuICBpZiAoL15cXGR7MTB9JC8udGVzdChwaG9uZSkpIHtcbiAgICBwaG9uZSA9IFwiMVwiICsgcGhvbmU7XG4gIH1cbiAgaWYgKC9eXFxkezExfSQvLnRlc3QocGhvbmUpICYmIHBob25lLnN0YXJ0c1dpdGgoXCIxXCIpKSB7XG4gICAgcmV0dXJuIFwiK1wiICsgcGhvbmU7XG4gIH1cbiAgaWYgKC9eXFxkezcsMTV9JC8udGVzdChwaG9uZSkpIHtcbiAgICByZXR1cm4gXCIrXCIgKyBwaG9uZTtcbiAgfVxuICBpZiAocmF3LnN0YXJ0c1dpdGgoXCIrXCIpKSB7XG4gICAgcmV0dXJuIFwiK1wiICsgcGhvbmU7XG4gIH1cbiAgcmV0dXJuIHJhdy50cmltKCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ3N2KGNvbnRlbnQ6IHN0cmluZyk6IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KC9cXHI/XFxuLykuZmlsdGVyKChsKSA9PiBsLnRyaW0oKSk7XG4gIGlmIChsaW5lcy5sZW5ndGggPCAyKSByZXR1cm4gW107XG5cbiAgY29uc3QgaGVhZGVycyA9IGxpbmVzWzBdLnNwbGl0KFwiLFwiKS5tYXAoKGgpID0+IGgudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xuICBjb25zdCByb3dzOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBsaW5lc1tpXS5zcGxpdChcIixcIikubWFwKCh2KSA9PiB2LnRyaW0oKSk7XG4gICAgY29uc3Qgcm93OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBoZWFkZXJzLmxlbmd0aDsgaisrKSB7XG4gICAgICByb3dbaGVhZGVyc1tqXV0gPSB2YWx1ZXNbal0gfHwgXCJcIjtcbiAgICB9XG4gICAgcm93cy5wdXNoKHJvdyk7XG4gIH1cblxuICByZXR1cm4gcm93cztcbn1cblxuZnVuY3Rpb24gZGV0ZWN0UGhvbmVDb2x1bW4oaGVhZGVyczogc3RyaW5nW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICBcInBob25lXCIsXG4gICAgXCJwaG9uZW51bWJlclwiLFxuICAgIFwicGhvbmVfbnVtYmVyXCIsXG4gICAgXCJ0b1wiLFxuICAgIFwibnVtYmVyXCIsXG4gICAgXCJtb2JpbGVcIixcbiAgICBcImNlbGxcIixcbiAgXTtcbiAgZm9yIChjb25zdCBoIG9mIGhlYWRlcnMpIHtcbiAgICBpZiAoY2FuZGlkYXRlcy5pbmNsdWRlcyhoLnRvTG93ZXJDYXNlKCkpKSByZXR1cm4gaDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGFjdHNJbXBvcnQgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiSW1wb3J0IGNvbnRhY3RzIGZyb20gYSBDU1YgZmlsZVwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNvbnRhY3RzIGltcG9ydCBjb250YWN0cy5jc3ZcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNvbnRhY3RzIGltcG9ydCBjb250YWN0cy5jc3YgLS1saXN0IGxzdF94eHhcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNvbnRhY3RzIGltcG9ydCBjb250YWN0cy5jc3YgLS1saXN0IGxzdF94eHggLS1qc29uXCIsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgZmlsZTogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiUGF0aCB0byBDU1YgZmlsZSAoY29sdW1uczogcGhvbmUsIG5hbWUsIGVtYWlsKVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICBsaXN0OiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJsXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDb250YWN0IGxpc3QgSUQgdG8gYWRkIGltcG9ydGVkIGNvbnRhY3RzIHRvXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoQ29udGFjdHNJbXBvcnQpO1xuXG4gICAgbGV0IGNvbnRlbnQ6IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgY29udGVudCA9IHJlYWRGaWxlU3luYyhhcmdzLmZpbGUsIFwidXRmLThcIik7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmVycm9yKGBDYW5ub3QgcmVhZCBmaWxlOiAke2FyZ3MuZmlsZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3dzID0gcGFyc2VDc3YoY29udGVudCk7XG4gICAgaWYgKHJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmVycm9yKFwiQ1NWIGZpbGUgaXMgZW1wdHkgb3IgaGFzIG5vIGRhdGEgcm93c1wiKTtcbiAgICB9XG5cbiAgICBjb25zdCBoZWFkZXJzID0gT2JqZWN0LmtleXMocm93c1swXSk7XG4gICAgY29uc3QgcGhvbmVDb2wgPSBkZXRlY3RQaG9uZUNvbHVtbihoZWFkZXJzKTtcbiAgICBpZiAoIXBob25lQ29sKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBgTm8gcGhvbmUgY29sdW1uIGZvdW5kLiBFeHBlY3RlZCBvbmUgb2Y6IHBob25lLCBwaG9uZU51bWJlciwgdG8sIG51bWJlciwgbW9iaWxlYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFjdHMgPSByb3dzLm1hcCgocm93KSA9PiAoe1xuICAgICAgcGhvbmU6IG5vcm1hbGl6ZVBob25lKHJvd1twaG9uZUNvbF0gfHwgXCJcIiksXG4gICAgICBuYW1lOiByb3dbXCJuYW1lXCJdIHx8IHJvd1tcImZ1bGxuYW1lXCJdIHx8IHJvd1tcImZ1bGxfbmFtZVwiXSB8fCB1bmRlZmluZWQsXG4gICAgICBlbWFpbDogcm93W1wiZW1haWxcIl0gfHwgcm93W1wiZS1tYWlsXCJdIHx8IHVuZGVmaW5lZCxcbiAgICB9KSk7XG5cbiAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBjb2xvcnMuZGltKGBJbXBvcnRpbmcgJHtjb250YWN0cy5sZW5ndGh9IGNvbnRhY3RzIGZyb20gJHthcmdzLmZpbGV9YCksXG4gICAgICApO1xuICAgICAgaWYgKGZsYWdzLmxpc3QpIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShgQWRkaW5nIHRvIGxpc3Q6ICR7ZmxhZ3MubGlzdH1gKSk7XG4gICAgICB9XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PEltcG9ydFJlc3BvbnNlPihcbiAgICAgIFwiL2FwaS92MS9jb250YWN0cy9pbXBvcnRcIixcbiAgICAgIHtcbiAgICAgICAgY29udGFjdHMsXG4gICAgICAgIGxpc3RJZDogZmxhZ3MubGlzdCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzdWx0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdWNjZXNzKGBJbXBvcnQgY29tcGxldGVgKTtcbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAga2V5VmFsdWUoW1xuICAgICAgW1wiSW1wb3J0ZWRcIiwgY29sb3JzLnN1Y2Nlc3MoU3RyaW5nKHJlc3VsdC5pbXBvcnRlZCkpXSxcbiAgICAgIFtcIlNraXBwZWQgKGR1cGxpY2F0ZXMpXCIsIFN0cmluZyhyZXN1bHQuc2tpcHBlZER1cGxpY2F0ZXMpXSxcbiAgICAgIFtcIkVycm9yc1wiLCByZXN1bHQudG90YWxFcnJvcnMgPiAwID8gY29sb3JzLmVycm9yKFN0cmluZyhyZXN1bHQudG90YWxFcnJvcnMpKSA6IFwiMFwiXSxcbiAgICBdKTtcblxuICAgIGlmIChyZXN1bHQudG90YWxFcnJvcnMgPiAwICYmIHJlc3VsdC5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgIHdhcm4oYCR7cmVzdWx0LnRvdGFsRXJyb3JzfSBjb250YWN0cyBoYWQgZXJyb3JzOmApO1xuICAgICAgZm9yIChjb25zdCBlcnIgb2YgcmVzdWx0LmVycm9ycy5zbGljZSgwLCAxMCkpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgY29sb3JzLmRpbShgICBSb3cgJHtlcnIuaW5kZXggKyAxfTogJHtlcnIucGhvbmUgfHwgXCIoZW1wdHkpXCJ9IC0gJHtlcnIuZXJyb3J9YCksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0LnRvdGFsRXJyb3JzID4gMTApIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgY29sb3JzLmRpbShgICAuLi4gYW5kICR7cmVzdWx0LnRvdGFsRXJyb3JzIC0gMTB9IG1vcmVgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
export default class ContactsListsGet 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,63 @@
|
|
|
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, table, } from "../../../lib/output.js";
|
|
5
|
+
export default class ContactsListsGet extends AuthenticatedCommand {
|
|
6
|
+
static description = "Get contact list details";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> contacts lists get lst_xxx",
|
|
9
|
+
"<%= config.bin %> contacts lists get lst_xxx --json",
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
id: Args.string({
|
|
13
|
+
description: "Contact list ID",
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
static flags = {
|
|
18
|
+
...AuthenticatedCommand.baseFlags,
|
|
19
|
+
};
|
|
20
|
+
async run() {
|
|
21
|
+
const { args } = await this.parse(ContactsListsGet);
|
|
22
|
+
const list = await apiClient.get(`/api/v1/contact-lists/${args.id}`, { includeContacts: "true", limit: "10" });
|
|
23
|
+
if (isJsonMode()) {
|
|
24
|
+
json(list);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
console.log();
|
|
28
|
+
console.log(colors.bold(list.name));
|
|
29
|
+
console.log();
|
|
30
|
+
keyValue([
|
|
31
|
+
["ID", list.id],
|
|
32
|
+
["Description", list.description || colors.dim("(none)")],
|
|
33
|
+
["Contacts", String(list.contact_count)],
|
|
34
|
+
["Created", new Date(list.created_at).toLocaleString()],
|
|
35
|
+
["Updated", new Date(list.updated_at).toLocaleString()],
|
|
36
|
+
]);
|
|
37
|
+
if (list.contacts && list.contacts.length > 0) {
|
|
38
|
+
console.log();
|
|
39
|
+
console.log(colors.dim("Contacts:"));
|
|
40
|
+
console.log();
|
|
41
|
+
table(list.contacts, [
|
|
42
|
+
{ header: "Phone", key: "phone_number", width: 18 },
|
|
43
|
+
{
|
|
44
|
+
header: "Name",
|
|
45
|
+
key: "name",
|
|
46
|
+
width: 20,
|
|
47
|
+
formatter: (v) => String(v || colors.dim("-")),
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
header: "Email",
|
|
51
|
+
key: "email",
|
|
52
|
+
width: 25,
|
|
53
|
+
formatter: (v) => String(v || colors.dim("-")),
|
|
54
|
+
},
|
|
55
|
+
]);
|
|
56
|
+
if (list.contact_count > 10) {
|
|
57
|
+
console.log();
|
|
58
|
+
console.log(colors.dim(` Showing 10 of ${list.contact_count} contacts`));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NvbnRhY3RzL2xpc3RzL2dldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssR0FDTixNQUFNLHdCQUF3QixDQUFDO0FBaUJoQyxNQUFNLENBQUMsT0FBTyxPQUFPLGdCQUFpQixTQUFRLG9CQUFvQjtJQUNoRSxNQUFNLENBQUMsV0FBVyxHQUFHLDBCQUEwQixDQUFDO0lBRWhELE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsOENBQThDO1FBQzlDLHFEQUFxRDtLQUN0RCxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2QsV0FBVyxFQUFFLGlCQUFpQjtZQUM5QixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztLQUNsQyxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFcEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUM5Qix5QkFBeUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUNsQyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUN6QyxDQUFDO1FBRUYsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVkLFFBQVEsQ0FBQztZQUNQLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekQsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN4QyxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkQsQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hELENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNyQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFZCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDbkIsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtnQkFDbkQ7b0JBQ0UsTUFBTSxFQUFFLE1BQU07b0JBQ2QsR0FBRyxFQUFFLE1BQU07b0JBQ1gsS0FBSyxFQUFFLEVBQUU7b0JBQ1QsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQy9DO2dCQUNEO29CQUNFLE1BQU0sRUFBRSxPQUFPO29CQUNmLEdBQUcsRUFBRSxPQUFPO29CQUNaLEtBQUssRUFBRSxFQUFFO29CQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMvQzthQUNGLENBQUMsQ0FBQztZQUVILElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLGFBQWEsV0FBVyxDQUFDLENBQzdELENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIGpzb24sXG4gIGNvbG9ycyxcbiAgaXNKc29uTW9kZSxcbiAga2V5VmFsdWUsXG4gIHRhYmxlLFxufSBmcm9tIFwiLi4vLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5pbnRlcmZhY2UgQ29udGFjdExpc3REZXRhaWwge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjb250YWN0X2NvdW50OiBudW1iZXI7XG4gIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgdXBkYXRlZF9hdDogc3RyaW5nO1xuICBjb250YWN0cz86IEFycmF5PHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHBob25lX251bWJlcjogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgZW1haWw/OiBzdHJpbmc7XG4gIH0+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250YWN0c0xpc3RzR2V0IGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkdldCBjb250YWN0IGxpc3QgZGV0YWlsc1wiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNvbnRhY3RzIGxpc3RzIGdldCBsc3RfeHh4XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjb250YWN0cyBsaXN0cyBnZXQgbHN0X3h4eCAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQ29udGFjdCBsaXN0IElEXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoQ29udGFjdHNMaXN0c0dldCk7XG5cbiAgICBjb25zdCBsaXN0ID0gYXdhaXQgYXBpQ2xpZW50LmdldDxDb250YWN0TGlzdERldGFpbD4oXG4gICAgICBgL2FwaS92MS9jb250YWN0LWxpc3RzLyR7YXJncy5pZH1gLFxuICAgICAgeyBpbmNsdWRlQ29udGFjdHM6IFwidHJ1ZVwiLCBsaW1pdDogXCIxMFwiIH0sXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24obGlzdCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChsaXN0Lm5hbWUpKTtcbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAga2V5VmFsdWUoW1xuICAgICAgW1wiSURcIiwgbGlzdC5pZF0sXG4gICAgICBbXCJEZXNjcmlwdGlvblwiLCBsaXN0LmRlc2NyaXB0aW9uIHx8IGNvbG9ycy5kaW0oXCIobm9uZSlcIildLFxuICAgICAgW1wiQ29udGFjdHNcIiwgU3RyaW5nKGxpc3QuY29udGFjdF9jb3VudCldLFxuICAgICAgW1wiQ3JlYXRlZFwiLCBuZXcgRGF0ZShsaXN0LmNyZWF0ZWRfYXQpLnRvTG9jYWxlU3RyaW5nKCldLFxuICAgICAgW1wiVXBkYXRlZFwiLCBuZXcgRGF0ZShsaXN0LnVwZGF0ZWRfYXQpLnRvTG9jYWxlU3RyaW5nKCldLFxuICAgIF0pO1xuXG4gICAgaWYgKGxpc3QuY29udGFjdHMgJiYgbGlzdC5jb250YWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIkNvbnRhY3RzOlwiKSk7XG4gICAgICBjb25zb2xlLmxvZygpO1xuXG4gICAgICB0YWJsZShsaXN0LmNvbnRhY3RzLCBbXG4gICAgICAgIHsgaGVhZGVyOiBcIlBob25lXCIsIGtleTogXCJwaG9uZV9udW1iZXJcIiwgd2lkdGg6IDE4IH0sXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXI6IFwiTmFtZVwiLFxuICAgICAgICAgIGtleTogXCJuYW1lXCIsXG4gICAgICAgICAgd2lkdGg6IDIwLFxuICAgICAgICAgIGZvcm1hdHRlcjogKHYpID0+IFN0cmluZyh2IHx8IGNvbG9ycy5kaW0oXCItXCIpKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjogXCJFbWFpbFwiLFxuICAgICAgICAgIGtleTogXCJlbWFpbFwiLFxuICAgICAgICAgIHdpZHRoOiAyNSxcbiAgICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PiBTdHJpbmcodiB8fCBjb2xvcnMuZGltKFwiLVwiKSksXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgICAgaWYgKGxpc3QuY29udGFjdF9jb3VudCA+IDEwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5kaW0oYCAgU2hvd2luZyAxMCBvZiAke2xpc3QuY29udGFjdF9jb3VudH0gY29udGFjdHNgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
export default class ContactsListsUpdate 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
|
+
description: 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
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
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, isJsonMode } from "../../../lib/output.js";
|
|
5
|
+
export default class ContactsListsUpdate extends AuthenticatedCommand {
|
|
6
|
+
static description = "Update a contact list";
|
|
7
|
+
static examples = [
|
|
8
|
+
'<%= config.bin %> contacts lists update lst_xxx --name "VIP Customers"',
|
|
9
|
+
'<%= config.bin %> contacts lists update lst_xxx --description "Updated desc"',
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
id: Args.string({
|
|
13
|
+
description: "Contact list ID",
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
static flags = {
|
|
18
|
+
...AuthenticatedCommand.baseFlags,
|
|
19
|
+
name: Flags.string({
|
|
20
|
+
char: "n",
|
|
21
|
+
description: "List name",
|
|
22
|
+
}),
|
|
23
|
+
description: Flags.string({
|
|
24
|
+
char: "d",
|
|
25
|
+
description: "List description",
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
async run() {
|
|
29
|
+
const { args, flags } = await this.parse(ContactsListsUpdate);
|
|
30
|
+
if (!flags.name && !flags.description) {
|
|
31
|
+
this.error("At least one of --name or --description is required");
|
|
32
|
+
}
|
|
33
|
+
const body = {};
|
|
34
|
+
if (flags.name !== undefined)
|
|
35
|
+
body.name = flags.name;
|
|
36
|
+
if (flags.description !== undefined)
|
|
37
|
+
body.description = flags.description;
|
|
38
|
+
const list = await apiClient.patch(`/api/v1/contact-lists/${args.id}`, body);
|
|
39
|
+
if (isJsonMode()) {
|
|
40
|
+
json(list);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
success("Contact list updated", {
|
|
44
|
+
ID: list.id,
|
|
45
|
+
Name: list.name,
|
|
46
|
+
Description: list.description || "(none)",
|
|
47
|
+
Contacts: String(list.contact_count),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NvbnRhY3RzL2xpc3RzL3VwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFTbkUsTUFBTSxDQUFDLE9BQU8sT0FBTyxtQkFBb0IsU0FBUSxvQkFBb0I7SUFDbkUsTUFBTSxDQUFDLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQztJQUU3QyxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLHdFQUF3RTtRQUN4RSw4RUFBOEU7S0FDL0UsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNkLFdBQVcsRUFBRSxpQkFBaUI7WUFDOUIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsV0FBVztTQUN6QixDQUFDO1FBQ0YsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDeEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsa0JBQWtCO1NBQ2hDLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQTJCLEVBQUUsQ0FBQztRQUN4QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNyRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUUxRSxNQUFNLElBQUksR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLENBQ2hDLHlCQUF5QixJQUFJLENBQUMsRUFBRSxFQUFFLEVBQ2xDLElBQUksQ0FDTCxDQUFDO1FBRUYsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLHNCQUFzQixFQUFFO1lBQzlCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVE7WUFDekMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBqc29uLCBzdWNjZXNzLCBpc0pzb25Nb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIENvbnRhY3RMaXN0IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY29udGFjdF9jb3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250YWN0c0xpc3RzVXBkYXRlIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIlVwZGF0ZSBhIGNvbnRhY3QgbGlzdFwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gY29udGFjdHMgbGlzdHMgdXBkYXRlIGxzdF94eHggLS1uYW1lIFwiVklQIEN1c3RvbWVyc1wiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gY29udGFjdHMgbGlzdHMgdXBkYXRlIGxzdF94eHggLS1kZXNjcmlwdGlvbiBcIlVwZGF0ZWQgZGVzY1wiJyxcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQ29udGFjdCBsaXN0IElEXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIG5hbWU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcIm5cIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxpc3QgbmFtZVwiLFxuICAgIH0pLFxuICAgIGRlc2NyaXB0aW9uOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJkXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJMaXN0IGRlc2NyaXB0aW9uXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoQ29udGFjdHNMaXN0c1VwZGF0ZSk7XG5cbiAgICBpZiAoIWZsYWdzLm5hbWUgJiYgIWZsYWdzLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmVycm9yKFwiQXQgbGVhc3Qgb25lIG9mIC0tbmFtZSBvciAtLWRlc2NyaXB0aW9uIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBpZiAoZmxhZ3MubmFtZSAhPT0gdW5kZWZpbmVkKSBib2R5Lm5hbWUgPSBmbGFncy5uYW1lO1xuICAgIGlmIChmbGFncy5kZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkKSBib2R5LmRlc2NyaXB0aW9uID0gZmxhZ3MuZGVzY3JpcHRpb247XG5cbiAgICBjb25zdCBsaXN0ID0gYXdhaXQgYXBpQ2xpZW50LnBhdGNoPENvbnRhY3RMaXN0PihcbiAgICAgIGAvYXBpL3YxL2NvbnRhY3QtbGlzdHMvJHthcmdzLmlkfWAsXG4gICAgICBib2R5LFxuICAgICk7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKGxpc3QpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoXCJDb250YWN0IGxpc3QgdXBkYXRlZFwiLCB7XG4gICAgICBJRDogbGlzdC5pZCxcbiAgICAgIE5hbWU6IGxpc3QubmFtZSxcbiAgICAgIERlc2NyaXB0aW9uOiBsaXN0LmRlc2NyaXB0aW9uIHx8IFwiKG5vbmUpXCIsXG4gICAgICBDb250YWN0czogU3RyaW5nKGxpc3QuY29udGFjdF9jb3VudCksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class ContactsUpdate 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
|
+
email: 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
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
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, isJsonMode } from "../../lib/output.js";
|
|
5
|
+
export default class ContactsUpdate extends AuthenticatedCommand {
|
|
6
|
+
static description = "Update a contact";
|
|
7
|
+
static examples = [
|
|
8
|
+
'<%= config.bin %> contacts update cnt_xxx --name "John Doe"',
|
|
9
|
+
"<%= config.bin %> contacts update cnt_xxx --email john@example.com",
|
|
10
|
+
'<%= config.bin %> contacts update cnt_xxx --name "John" --email john@example.com',
|
|
11
|
+
];
|
|
12
|
+
static args = {
|
|
13
|
+
id: Args.string({
|
|
14
|
+
description: "Contact ID",
|
|
15
|
+
required: true,
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
static flags = {
|
|
19
|
+
...AuthenticatedCommand.baseFlags,
|
|
20
|
+
name: Flags.string({
|
|
21
|
+
char: "n",
|
|
22
|
+
description: "Contact name",
|
|
23
|
+
}),
|
|
24
|
+
email: Flags.string({
|
|
25
|
+
char: "e",
|
|
26
|
+
description: "Contact email",
|
|
27
|
+
}),
|
|
28
|
+
};
|
|
29
|
+
async run() {
|
|
30
|
+
const { args, flags } = await this.parse(ContactsUpdate);
|
|
31
|
+
if (!flags.name && !flags.email) {
|
|
32
|
+
this.error("At least one of --name or --email is required");
|
|
33
|
+
}
|
|
34
|
+
const body = {};
|
|
35
|
+
if (flags.name !== undefined)
|
|
36
|
+
body.name = flags.name;
|
|
37
|
+
if (flags.email !== undefined)
|
|
38
|
+
body.email = flags.email;
|
|
39
|
+
const contact = await apiClient.patch(`/api/v1/contacts/${args.id}`, body);
|
|
40
|
+
if (isJsonMode()) {
|
|
41
|
+
json(contact);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
success("Contact updated", {
|
|
45
|
+
ID: contact.id,
|
|
46
|
+
Phone: contact.phone_number,
|
|
47
|
+
Name: contact.name || "(none)",
|
|
48
|
+
Email: contact.email || "(none)",
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NvbnRhY3RzL3VwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFTaEUsTUFBTSxDQUFDLE9BQU8sT0FBTyxjQUFlLFNBQVEsb0JBQW9CO0lBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUM7SUFFeEMsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiw2REFBNkQ7UUFDN0Qsb0VBQW9FO1FBQ3BFLGtGQUFrRjtLQUNuRixDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2QsV0FBVyxFQUFFLFlBQVk7WUFDekIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsY0FBYztTQUM1QixDQUFDO1FBQ0YsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDbEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsZUFBZTtTQUM3QixDQUFDO0tBQ0gsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNLElBQUksR0FBMkIsRUFBRSxDQUFDO1FBQ3hDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3JELElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBRXhELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FDbkMsb0JBQW9CLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFDN0IsSUFBSSxDQUNMLENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2QsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsaUJBQWlCLEVBQUU7WUFDekIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxZQUFZO1lBQzNCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLFFBQVE7WUFDOUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLElBQUksUUFBUTtTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncywgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgc3VjY2VzcywgaXNKc29uTW9kZSB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBDb250YWN0IHtcbiAgaWQ6IHN0cmluZztcbiAgcGhvbmVfbnVtYmVyOiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250YWN0c1VwZGF0ZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJVcGRhdGUgYSBjb250YWN0XCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBjb250YWN0cyB1cGRhdGUgY250X3h4eCAtLW5hbWUgXCJKb2huIERvZVwiJyxcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGNvbnRhY3RzIHVwZGF0ZSBjbnRfeHh4IC0tZW1haWwgam9obkBleGFtcGxlLmNvbVwiLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBjb250YWN0cyB1cGRhdGUgY250X3h4eCAtLW5hbWUgXCJKb2huXCIgLS1lbWFpbCBqb2huQGV4YW1wbGUuY29tJyxcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQ29udGFjdCBJRFwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICBuYW1lOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJuXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDb250YWN0IG5hbWVcIixcbiAgICB9KSxcbiAgICBlbWFpbDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ29udGFjdCBlbWFpbFwiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MsIGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKENvbnRhY3RzVXBkYXRlKTtcblxuICAgIGlmICghZmxhZ3MubmFtZSAmJiAhZmxhZ3MuZW1haWwpIHtcbiAgICAgIHRoaXMuZXJyb3IoXCJBdCBsZWFzdCBvbmUgb2YgLS1uYW1lIG9yIC0tZW1haWwgaXMgcmVxdWlyZWRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgYm9keTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGlmIChmbGFncy5uYW1lICE9PSB1bmRlZmluZWQpIGJvZHkubmFtZSA9IGZsYWdzLm5hbWU7XG4gICAgaWYgKGZsYWdzLmVtYWlsICE9PSB1bmRlZmluZWQpIGJvZHkuZW1haWwgPSBmbGFncy5lbWFpbDtcblxuICAgIGNvbnN0IGNvbnRhY3QgPSBhd2FpdCBhcGlDbGllbnQucGF0Y2g8Q29udGFjdD4oXG4gICAgICBgL2FwaS92MS9jb250YWN0cy8ke2FyZ3MuaWR9YCxcbiAgICAgIGJvZHksXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24oY29udGFjdCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VjY2VzcyhcIkNvbnRhY3QgdXBkYXRlZFwiLCB7XG4gICAgICBJRDogY29udGFjdC5pZCxcbiAgICAgIFBob25lOiBjb250YWN0LnBob25lX251bWJlcixcbiAgICAgIE5hbWU6IGNvbnRhY3QubmFtZSB8fCBcIihub25lKVwiLFxuICAgICAgRW1haWw6IGNvbnRhY3QuZW1haWwgfHwgXCIobm9uZSlcIixcbiAgICB9KTtcbiAgfVxufVxuIl19
|