@sendly/cli 3.0.1 → 3.0.3
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/README.md +2 -3
- package/dist/commands/credits/history.js +4 -4
- package/dist/commands/keys/create.js +3 -3
- package/dist/commands/keys/revoke.js +13 -10
- package/dist/commands/send.d.ts +13 -0
- package/dist/commands/send.js +75 -0
- package/dist/commands/status.d.ts +10 -0
- package/dist/commands/status.js +112 -0
- package/dist/commands/webhooks/create.js +7 -5
- package/dist/commands/webhooks/deliveries.js +17 -15
- package/dist/commands/webhooks/get.js +17 -15
- package/dist/commands/webhooks/list.js +3 -3
- package/dist/commands/webhooks/listen.js +5 -18
- package/dist/commands/webhooks/rotate-secret.js +6 -6
- package/dist/commands/webhooks/test.js +17 -14
- package/dist/commands/webhooks/update.js +16 -11
- package/dist/commands/whoami.js +14 -10
- package/dist/hooks/command-not-found.d.ts +3 -0
- package/dist/hooks/command-not-found.js +142 -0
- package/dist/lib/api-client.js +66 -15
- package/oclif.manifest.json +173 -72
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -278,9 +278,8 @@ sendly credits balance --json | jq '.balance'
|
|
|
278
278
|
## Configuration Storage
|
|
279
279
|
|
|
280
280
|
Configuration is stored in:
|
|
281
|
-
- **macOS**: `~/.config
|
|
282
|
-
- **
|
|
283
|
-
- **Windows**: `%APPDATA%\sendly\`
|
|
281
|
+
- **macOS/Linux**: `~/.sendly/config.json`
|
|
282
|
+
- **Windows**: `%USERPROFILE%\.sendly\config.json`
|
|
284
283
|
|
|
285
284
|
## Webhook Signature Verification
|
|
286
285
|
|
|
@@ -19,7 +19,7 @@ export default class CreditsHistory extends AuthenticatedCommand {
|
|
|
19
19
|
};
|
|
20
20
|
async run() {
|
|
21
21
|
const { flags } = await this.parse(CreditsHistory);
|
|
22
|
-
const response = await apiClient.get("/api/credits/transactions", { limit: flags.limit });
|
|
22
|
+
const response = await apiClient.get("/api/v1/credits/transactions", { limit: flags.limit });
|
|
23
23
|
if (isJsonMode()) {
|
|
24
24
|
json(response.transactions);
|
|
25
25
|
return;
|
|
@@ -63,7 +63,7 @@ export default class CreditsHistory extends AuthenticatedCommand {
|
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
header: "Balance",
|
|
66
|
-
key: "
|
|
66
|
+
key: "balance_after",
|
|
67
67
|
width: 12,
|
|
68
68
|
formatter: (v) => `${v.toLocaleString()}`,
|
|
69
69
|
},
|
|
@@ -78,11 +78,11 @@ export default class CreditsHistory extends AuthenticatedCommand {
|
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
header: "When",
|
|
81
|
-
key: "
|
|
81
|
+
key: "created_at",
|
|
82
82
|
width: 12,
|
|
83
83
|
formatter: (v) => formatRelativeTime(String(v)),
|
|
84
84
|
},
|
|
85
85
|
]);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jcmVkaXRzL2hpc3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLEtBQUssRUFDTCxJQUFJLEVBQ0osSUFBSSxFQUNKLGtCQUFrQixFQUNsQixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFlN0IsTUFBTSxDQUFDLE9BQU8sT0FBTyxjQUFlLFNBQVEsb0JBQW9CO0lBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsaUNBQWlDLENBQUM7SUFFdkQsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQixtQ0FBbUM7UUFDbkMsOENBQThDO1FBQzlDLDBDQUEwQztLQUMzQyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNuQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxnQ0FBZ0M7WUFDN0MsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO0tBQ0gsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVuRCxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQ2xDLDhCQUE4QixFQUM5QixFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQ3ZCLENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM1QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFZCxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRTtZQUMzQjtnQkFDRSxNQUFNLEVBQUUsTUFBTTtnQkFDZCxHQUFHLEVBQUUsTUFBTTtnQkFDWCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDZixRQUFRLENBQUMsRUFBRSxDQUFDO3dCQUNWLEtBQUssVUFBVTs0QkFDYixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ3BDLEtBQUssT0FBTzs0QkFDVixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ2pDLEtBQUssT0FBTzs0QkFDVixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ2pDLEtBQUssUUFBUTs0QkFDWCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQy9COzRCQUNFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyQixDQUFDO2dCQUNILENBQUM7YUFDRjtZQUNEO2dCQUNFLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixHQUFHLEVBQUUsUUFBUTtnQkFDYixLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDZixNQUFNLEdBQUcsR0FBRyxDQUFXLENBQUM7b0JBQ3hCLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUNaLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3BELENBQUM7b0JBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO2FBQ0Y7WUFDRDtnQkFDRSxNQUFNLEVBQUUsU0FBUztnQkFDakIsR0FBRyxFQUFFLGVBQWU7Z0JBQ3BCLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBSSxDQUFZLENBQUMsY0FBYyxFQUFFLEVBQUU7YUFDdEQ7WUFDRDtnQkFDRSxNQUFNLEVBQUUsYUFBYTtnQkFDckIsR0FBRyxFQUFFLGFBQWE7Z0JBQ2xCLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNmLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzdELENBQUM7YUFDRjtZQUNEO2dCQUNFLE1BQU0sRUFBRSxNQUFNO2dCQUNkLEdBQUcsRUFBRSxZQUFZO2dCQUNqQixLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoRDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQge1xuICB0YWJsZSxcbiAganNvbixcbiAgaW5mbyxcbiAgZm9ybWF0UmVsYXRpdmVUaW1lLFxuICBjb2xvcnMsXG4gIGlzSnNvbk1vZGUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGFtb3VudDogbnVtYmVyO1xuICBiYWxhbmNlX2FmdGVyOiBudW1iZXI7XG4gIHR5cGU6IFwicHVyY2hhc2VcIiB8IFwidXNhZ2VcIiB8IFwiYm9udXNcIiB8IFwicmVmdW5kXCI7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFRyYW5zYWN0aW9uc1Jlc3BvbnNlIHtcbiAgdHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDcmVkaXRzSGlzdG9yeSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJWaWV3IGNyZWRpdCB0cmFuc2FjdGlvbiBoaXN0b3J5XCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gY3JlZGl0cyBoaXN0b3J5XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBjcmVkaXRzIGhpc3RvcnkgLS1saW1pdCAxMFwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gY3JlZGl0cyBoaXN0b3J5IC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgbGltaXQ6IEZsYWdzLmludGVnZXIoe1xuICAgICAgY2hhcjogXCJsXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJOdW1iZXIgb2YgdHJhbnNhY3Rpb25zIHRvIHNob3dcIixcbiAgICAgIGRlZmF1bHQ6IDIwLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKENyZWRpdHNIaXN0b3J5KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LmdldDxUcmFuc2FjdGlvbnNSZXNwb25zZT4oXG4gICAgICBcIi9hcGkvdjEvY3JlZGl0cy90cmFuc2FjdGlvbnNcIixcbiAgICAgIHsgbGltaXQ6IGZsYWdzLmxpbWl0IH0sXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzcG9uc2UudHJhbnNhY3Rpb25zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UudHJhbnNhY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaW5mbyhcIk5vIHRyYW5zYWN0aW9ucyBmb3VuZFwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAgdGFibGUocmVzcG9uc2UudHJhbnNhY3Rpb25zLCBbXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJUeXBlXCIsXG4gICAgICAgIGtleTogXCJ0eXBlXCIsXG4gICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgZm9ybWF0dGVyOiAodikgPT4ge1xuICAgICAgICAgIHN3aXRjaCAodikge1xuICAgICAgICAgICAgY2FzZSBcInB1cmNoYXNlXCI6XG4gICAgICAgICAgICAgIHJldHVybiBjb2xvcnMuc3VjY2VzcyhcInB1cmNoYXNlXCIpO1xuICAgICAgICAgICAgY2FzZSBcInVzYWdlXCI6XG4gICAgICAgICAgICAgIHJldHVybiBjb2xvcnMud2FybmluZyhcInVzYWdlXCIpO1xuICAgICAgICAgICAgY2FzZSBcImJvbnVzXCI6XG4gICAgICAgICAgICAgIHJldHVybiBjb2xvcnMucHJpbWFyeShcImJvbnVzXCIpO1xuICAgICAgICAgICAgY2FzZSBcInJlZnVuZFwiOlxuICAgICAgICAgICAgICByZXR1cm4gY29sb3JzLmluZm8oXCJyZWZ1bmRcIik7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJBbW91bnRcIixcbiAgICAgICAga2V5OiBcImFtb3VudFwiLFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIGZvcm1hdHRlcjogKHYpID0+IHtcbiAgICAgICAgICBjb25zdCBudW0gPSB2IGFzIG51bWJlcjtcbiAgICAgICAgICBpZiAobnVtID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbG9ycy5zdWNjZXNzKGArJHtudW0udG9Mb2NhbGVTdHJpbmcoKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbG9ycy5lcnJvcihudW0udG9Mb2NhbGVTdHJpbmcoKSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IFwiQmFsYW5jZVwiLFxuICAgICAgICBrZXk6IFwiYmFsYW5jZV9hZnRlclwiLFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIGZvcm1hdHRlcjogKHYpID0+IGAkeyh2IGFzIG51bWJlcikudG9Mb2NhbGVTdHJpbmcoKX1gLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyOiBcIkRlc2NyaXB0aW9uXCIsXG4gICAgICAgIGtleTogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICB3aWR0aDogMzUsXG4gICAgICAgIGZvcm1hdHRlcjogKHYpID0+IHtcbiAgICAgICAgICBjb25zdCBkZXNjID0gU3RyaW5nKHYpO1xuICAgICAgICAgIHJldHVybiBkZXNjLmxlbmd0aCA+IDMyID8gZGVzYy5zbGljZSgwLCAzMikgKyBcIi4uLlwiIDogZGVzYztcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJXaGVuXCIsXG4gICAgICAgIGtleTogXCJjcmVhdGVkX2F0XCIsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgZm9ybWF0dGVyOiAodikgPT4gZm9ybWF0UmVsYXRpdmVUaW1lKFN0cmluZyh2KSksXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG59XG4iXX0=
|
|
@@ -25,7 +25,7 @@ export default class KeysCreate extends AuthenticatedCommand {
|
|
|
25
25
|
};
|
|
26
26
|
async run() {
|
|
27
27
|
const { flags } = await this.parse(KeysCreate);
|
|
28
|
-
const response = await apiClient.post("/api/keys", {
|
|
28
|
+
const response = await apiClient.post("/api/v1/account/keys", {
|
|
29
29
|
name: flags.name,
|
|
30
30
|
type: flags.type,
|
|
31
31
|
});
|
|
@@ -35,7 +35,7 @@ export default class KeysCreate extends AuthenticatedCommand {
|
|
|
35
35
|
}
|
|
36
36
|
success("API key created", {
|
|
37
37
|
Name: response.name,
|
|
38
|
-
"Key ID": response.
|
|
38
|
+
"Key ID": response.id,
|
|
39
39
|
Type: flags.type === "test" ? colors.warning("test") : colors.success("live"),
|
|
40
40
|
});
|
|
41
41
|
console.log();
|
|
@@ -44,4 +44,4 @@ export default class KeysCreate extends AuthenticatedCommand {
|
|
|
44
44
|
console.log(colors.dim("Store this key securely. It provides access to your Sendly account."));
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2tleXMvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsSUFBSSxFQUNKLElBQUksRUFDSixNQUFNLEVBQ04sU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLHFCQUFxQixDQUFDO0FBVzdCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sVUFBVyxTQUFRLG9CQUFvQjtJQUMxRCxNQUFNLENBQUMsV0FBVyxHQUFHLHNCQUFzQixDQUFDO0lBRTVDLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsbURBQW1EO1FBQ25ELCtEQUErRDtRQUMvRCxtRUFBbUU7S0FDcEUsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsc0JBQXNCO1lBQ25DLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHlCQUF5QjtZQUN0QyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxNQUFNO1NBQ2hCLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDbkMsc0JBQXNCLEVBQ3RCO1lBQ0UsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNqQixDQUNGLENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsaUJBQWlCLEVBQUU7WUFDekIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1lBQ25CLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNyQixJQUFJLEVBQ0YsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQzFFLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1FBQ2xFLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEIsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUNSLHFFQUFxRSxDQUN0RSxDQUNGLENBQUM7SUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgd2FybixcbiAganNvbixcbiAgY29sb3JzLFxuICBjb2RlQmxvY2ssXG4gIGlzSnNvbk1vZGUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBDcmVhdGVLZXlSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7IC8vIE9ubHkgcmV0dXJuZWQgb24gY3JlYXRpb25cbiAga2V5UHJlZml4OiBzdHJpbmc7XG4gIHR5cGU6IFwidGVzdFwiIHwgXCJsaXZlXCI7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBLZXlzQ3JlYXRlIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkNyZWF0ZSBhIG5ldyBBUEkga2V5XCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBrZXlzIGNyZWF0ZSAtLW5hbWUgXCJQcm9kdWN0aW9uXCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBrZXlzIGNyZWF0ZSAtLW5hbWUgXCJDSSBUZXN0aW5nXCIgLS10eXBlIHRlc3QnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBrZXlzIGNyZWF0ZSAtLW5hbWUgXCJCYWNrZW5kXCIgLS10eXBlIGxpdmUgLS1qc29uJyxcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIG5hbWU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcIm5cIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk5hbWUgZm9yIHRoZSBBUEkga2V5XCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgICB0eXBlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJLZXkgdHlwZSAodGVzdCBvciBsaXZlKVwiLFxuICAgICAgb3B0aW9uczogW1widGVzdFwiLCBcImxpdmVcIl0sXG4gICAgICBkZWZhdWx0OiBcInRlc3RcIixcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShLZXlzQ3JlYXRlKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8Q3JlYXRlS2V5UmVzcG9uc2U+KFxuICAgICAgXCIvYXBpL3YxL2FjY291bnQva2V5c1wiLFxuICAgICAge1xuICAgICAgICBuYW1lOiBmbGFncy5uYW1lLFxuICAgICAgICB0eXBlOiBmbGFncy50eXBlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VjY2VzcyhcIkFQSSBrZXkgY3JlYXRlZFwiLCB7XG4gICAgICBOYW1lOiByZXNwb25zZS5uYW1lLFxuICAgICAgXCJLZXkgSURcIjogcmVzcG9uc2UuaWQsXG4gICAgICBUeXBlOlxuICAgICAgICBmbGFncy50eXBlID09PSBcInRlc3RcIiA/IGNvbG9ycy53YXJuaW5nKFwidGVzdFwiKSA6IGNvbG9ycy5zdWNjZXNzKFwibGl2ZVwiKSxcbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgd2FybihcIkNvcHkgeW91ciBBUEkga2V5IG5vdy4gWW91IHdvbid0IGJlIGFibGUgdG8gc2VlIGl0IGFnYWluIVwiKTtcbiAgICBjb2RlQmxvY2socmVzcG9uc2Uua2V5KTtcblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgXCJTdG9yZSB0aGlzIGtleSBzZWN1cmVseS4gSXQgcHJvdmlkZXMgYWNjZXNzIHRvIHlvdXIgU2VuZGx5IGFjY291bnQuXCIsXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -45,16 +45,19 @@ export default class KeysRevoke extends AuthenticatedCommand {
|
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
//
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
// Revoke the key directly by ID
|
|
49
|
+
try {
|
|
50
|
+
await apiClient.patch(`/api/v1/account/keys/${args.keyId}/revoke`, {
|
|
51
|
+
reason: flags.reason || "Revoked via CLI",
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
if (err.message?.includes("not_found") || err.message?.includes("404")) {
|
|
56
|
+
error(`Key not found: ${args.keyId}`);
|
|
57
|
+
this.exit(1);
|
|
58
|
+
}
|
|
59
|
+
throw err;
|
|
54
60
|
}
|
|
55
|
-
await apiClient.patch(`/api/keys/${key.id}/revoke`, {
|
|
56
|
-
reason: flags.reason || "Revoked via CLI",
|
|
57
|
-
});
|
|
58
61
|
if (isJsonMode()) {
|
|
59
62
|
json({ success: true, keyId: args.keyId, revoked: true });
|
|
60
63
|
return;
|
|
@@ -65,4 +68,4 @@ export default class KeysRevoke extends AuthenticatedCommand {
|
|
|
65
68
|
});
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2b2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2tleXMvcmV2b2tlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxNQUFNLENBQUMsT0FBTyxPQUFPLFVBQVcsU0FBUSxvQkFBb0I7SUFDMUQsTUFBTSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQztJQUV6QyxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDBDQUEwQztRQUMxQyxpRUFBaUU7UUFDakUsZ0RBQWdEO0tBQ2pELENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDakIsV0FBVyxFQUFFLHFDQUFxQztZQUNsRCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNuQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSw2QkFBNkI7U0FDM0MsQ0FBQztRQUNGLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLDBCQUEwQjtZQUN2QyxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyRCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNmLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hDO29CQUNFLElBQUksRUFBRSxTQUFTO29CQUNmLElBQUksRUFBRSxTQUFTO29CQUNmLE9BQU8sRUFBRSxtQ0FBbUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLDBCQUEwQjtvQkFDN0YsT0FBTyxFQUFFLEtBQUs7aUJBQ2Y7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBQzlCLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxJQUFJLENBQUM7WUFDSCxNQUFNLFNBQVMsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDakUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksaUJBQWlCO2FBQzFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkUsS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLENBQUM7WUFDRCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7UUFFRCxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMxRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDcEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksaUJBQWlCO1NBQzFDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBzdWNjZXNzLCBlcnJvciwganNvbiwgY29sb3JzLCBpc0pzb25Nb2RlIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCBpbnF1aXJlciBmcm9tIFwiaW5xdWlyZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgS2V5c1Jldm9rZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJSZXZva2UgYW4gQVBJIGtleVwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGtleXMgcmV2b2tlIGtleV9hYmMxMjNcIixcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4ga2V5cyByZXZva2Uga2V5X2FiYzEyMyAtLXJlYXNvbiBcIkNvbXByb21pc2VkXCInLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4ga2V5cyByZXZva2Uga2V5X2FiYzEyMyAtLXllc1wiLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIGtleUlkOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJLZXkgSUQgdG8gcmV2b2tlIChlLmcuLCBrZXlfYWJjMTIzKVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICByZWFzb246IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJlYXNvbiBmb3IgcmV2b2tpbmcgdGhlIGtleVwiLFxuICAgIH0pLFxuICAgIHllczogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBjaGFyOiBcInlcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNraXAgY29uZmlybWF0aW9uIHByb21wdFwiLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoS2V5c1Jldm9rZSk7XG5cbiAgICAvLyBDb25maXJtIHJldm9jYXRpb25cbiAgICBpZiAoIWZsYWdzLnllcykge1xuICAgICAgY29uc3QgeyBjb25maXJtIH0gPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjb25maXJtXCIsXG4gICAgICAgICAgbmFtZTogXCJjb25maXJtXCIsXG4gICAgICAgICAgbWVzc2FnZTogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXZva2UgJHtjb2xvcnMuY29kZShhcmdzLmtleUlkKX0/IFRoaXMgY2Fubm90IGJlIHVuZG9uZS5gLFxuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgXSk7XG5cbiAgICAgIGlmICghY29uZmlybSkge1xuICAgICAgICBlcnJvcihcIlJldm9jYXRpb24gY2FuY2VsbGVkXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV2b2tlIHRoZSBrZXkgZGlyZWN0bHkgYnkgSURcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXBpQ2xpZW50LnBhdGNoKGAvYXBpL3YxL2FjY291bnQva2V5cy8ke2FyZ3Mua2V5SWR9L3Jldm9rZWAsIHtcbiAgICAgICAgcmVhc29uOiBmbGFncy5yZWFzb24gfHwgXCJSZXZva2VkIHZpYSBDTElcIixcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyLm1lc3NhZ2U/LmluY2x1ZGVzKFwibm90X2ZvdW5kXCIpIHx8IGVyci5tZXNzYWdlPy5pbmNsdWRlcyhcIjQwNFwiKSkge1xuICAgICAgICBlcnJvcihgS2V5IG5vdCBmb3VuZDogJHthcmdzLmtleUlkfWApO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbih7IHN1Y2Nlc3M6IHRydWUsIGtleUlkOiBhcmdzLmtleUlkLCByZXZva2VkOiB0cnVlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoXCJBUEkga2V5IHJldm9rZWRcIiwge1xuICAgICAgXCJLZXkgSURcIjogYXJncy5rZXlJZCxcbiAgICAgIFJlYXNvbjogZmxhZ3MucmVhc29uIHx8IFwiUmV2b2tlZCB2aWEgQ0xJXCIsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../lib/base-command.js";
|
|
2
|
+
export default class Send extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
to: 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, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
from: 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,75 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../lib/api-client.js";
|
|
4
|
+
import { success, error, json, colors, spinner, isJsonMode, } from "../lib/output.js";
|
|
5
|
+
export default class Send extends AuthenticatedCommand {
|
|
6
|
+
static description = "Send an SMS message (shortcut for 'sms send')";
|
|
7
|
+
static examples = [
|
|
8
|
+
'<%= config.bin %> send --to "+1234567890" --text "Hello!"',
|
|
9
|
+
'<%= config.bin %> send -t "+1234567890" -m "Meeting at 3pm"',
|
|
10
|
+
'<%= config.bin %> send --to "+1234567890" --text "Hello!" --json',
|
|
11
|
+
];
|
|
12
|
+
static flags = {
|
|
13
|
+
...AuthenticatedCommand.baseFlags,
|
|
14
|
+
to: Flags.string({
|
|
15
|
+
char: "t",
|
|
16
|
+
description: "Recipient phone number (E.164 format)",
|
|
17
|
+
required: true,
|
|
18
|
+
}),
|
|
19
|
+
text: Flags.string({
|
|
20
|
+
char: "m",
|
|
21
|
+
description: "Message text",
|
|
22
|
+
required: true,
|
|
23
|
+
}),
|
|
24
|
+
from: Flags.string({
|
|
25
|
+
char: "f",
|
|
26
|
+
description: "Sender phone number (optional, uses default if not set)",
|
|
27
|
+
}),
|
|
28
|
+
};
|
|
29
|
+
async run() {
|
|
30
|
+
const { flags } = await this.parse(Send);
|
|
31
|
+
const sendSpinner = spinner("Sending message...");
|
|
32
|
+
if (!isJsonMode()) {
|
|
33
|
+
sendSpinner.start();
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const response = await apiClient.post("/api/v1/messages", {
|
|
37
|
+
to: flags.to,
|
|
38
|
+
text: flags.text,
|
|
39
|
+
...(flags.from && { from: flags.from }),
|
|
40
|
+
});
|
|
41
|
+
sendSpinner.stop();
|
|
42
|
+
if (isJsonMode()) {
|
|
43
|
+
json(response);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
success("Message sent", {
|
|
47
|
+
"Message ID": colors.code(response.id),
|
|
48
|
+
To: response.to,
|
|
49
|
+
Status: response.status === "sent"
|
|
50
|
+
? colors.success(response.status)
|
|
51
|
+
: colors.primary(response.status),
|
|
52
|
+
Segments: String(response.segments),
|
|
53
|
+
Credits: String(response.creditsUsed),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
sendSpinner.stop();
|
|
58
|
+
if (err.message?.includes("insufficient_credits")) {
|
|
59
|
+
error("Insufficient credits", {
|
|
60
|
+
hint: `Run ${colors.code("sendly credits balance")} to check your balance`,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else if (err.message?.includes("invalid_phone")) {
|
|
64
|
+
error("Invalid phone number format", {
|
|
65
|
+
hint: "Use E.164 format: +1234567890",
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
throw err;
|
|
70
|
+
}
|
|
71
|
+
this.exit(1);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9zZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQVEsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLElBQUksRUFDSixNQUFNLEVBQ04sT0FBTyxFQUNQLFVBQVUsR0FDWCxNQUFNLGtCQUFrQixDQUFDO0FBYTFCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sSUFBSyxTQUFRLG9CQUFvQjtJQUNwRCxNQUFNLENBQUMsV0FBVyxHQUFHLCtDQUErQyxDQUFDO0lBRXJFLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsMkRBQTJEO1FBQzNELDZEQUE2RDtRQUM3RCxrRUFBa0U7S0FDbkUsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsRUFBRSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDZixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSx1Q0FBdUM7WUFDcEQsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsY0FBYztZQUMzQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSx5REFBeUQ7U0FDdkUsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFbEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDbEIsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQ25DLGtCQUFrQixFQUNsQjtnQkFDRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDeEMsQ0FDRixDQUFDO1lBRUYsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRW5CLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNmLE9BQU87WUFDVCxDQUFDO1lBRUQsT0FBTyxDQUFDLGNBQWMsRUFBRTtnQkFDdEIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNmLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxLQUFLLE1BQU07b0JBQ2hDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7b0JBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ25DLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDbkMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2FBQ3RDLENBQUMsQ0FBQztRQUVMLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVuQixJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztnQkFDbEQsS0FBSyxDQUFDLHNCQUFzQixFQUFFO29CQUM1QixJQUFJLEVBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHdCQUF3QjtpQkFDM0UsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELEtBQUssQ0FBQyw2QkFBNkIsRUFBRTtvQkFDbkMsSUFBSSxFQUFFLCtCQUErQjtpQkFDdEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzLCBBcmdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHN1Y2Nlc3MsXG4gIGVycm9yLFxuICBqc29uLFxuICBjb2xvcnMsXG4gIHNwaW5uZXIsXG4gIGlzSnNvbk1vZGUsXG59IGZyb20gXCIuLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBTZW5kTWVzc2FnZVJlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgdG86IHN0cmluZztcbiAgZnJvbTogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBzZWdtZW50czogbnVtYmVyO1xuICBjcmVkaXRzVXNlZDogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VuZCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTZW5kIGFuIFNNUyBtZXNzYWdlIChzaG9ydGN1dCBmb3IgJ3NtcyBzZW5kJylcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNlbmQgLS10byBcIisxMjM0NTY3ODkwXCIgLS10ZXh0IFwiSGVsbG8hXCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzZW5kIC10IFwiKzEyMzQ1Njc4OTBcIiAtbSBcIk1lZXRpbmcgYXQgM3BtXCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzZW5kIC0tdG8gXCIrMTIzNDU2Nzg5MFwiIC0tdGV4dCBcIkhlbGxvIVwiIC0tanNvbicsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICB0bzogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwidFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUmVjaXBpZW50IHBob25lIG51bWJlciAoRS4xNjQgZm9ybWF0KVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwibVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0ZXh0XCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgICBmcm9tOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJmXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTZW5kZXIgcGhvbmUgbnVtYmVyIChvcHRpb25hbCwgdXNlcyBkZWZhdWx0IGlmIG5vdCBzZXQpXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoU2VuZCk7XG5cbiAgICBjb25zdCBzZW5kU3Bpbm5lciA9IHNwaW5uZXIoXCJTZW5kaW5nIG1lc3NhZ2UuLi5cIik7XG5cbiAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgc2VuZFNwaW5uZXIuc3RhcnQoKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxTZW5kTWVzc2FnZVJlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL3YxL21lc3NhZ2VzXCIsXG4gICAgICAgIHtcbiAgICAgICAgICB0bzogZmxhZ3MudG8sXG4gICAgICAgICAgdGV4dDogZmxhZ3MudGV4dCxcbiAgICAgICAgICAuLi4oZmxhZ3MuZnJvbSAmJiB7IGZyb206IGZsYWdzLmZyb20gfSksXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBzZW5kU3Bpbm5lci5zdG9wKCk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3VjY2VzcyhcIk1lc3NhZ2Ugc2VudFwiLCB7XG4gICAgICAgIFwiTWVzc2FnZSBJRFwiOiBjb2xvcnMuY29kZShyZXNwb25zZS5pZCksXG4gICAgICAgIFRvOiByZXNwb25zZS50byxcbiAgICAgICAgU3RhdHVzOiByZXNwb25zZS5zdGF0dXMgPT09IFwic2VudFwiXG4gICAgICAgICAgPyBjb2xvcnMuc3VjY2VzcyhyZXNwb25zZS5zdGF0dXMpXG4gICAgICAgICAgOiBjb2xvcnMucHJpbWFyeShyZXNwb25zZS5zdGF0dXMpLFxuICAgICAgICBTZWdtZW50czogU3RyaW5nKHJlc3BvbnNlLnNlZ21lbnRzKSxcbiAgICAgICAgQ3JlZGl0czogU3RyaW5nKHJlc3BvbnNlLmNyZWRpdHNVc2VkKSxcbiAgICAgIH0pO1xuXG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIHNlbmRTcGlubmVyLnN0b3AoKTtcblxuICAgICAgaWYgKGVyci5tZXNzYWdlPy5pbmNsdWRlcyhcImluc3VmZmljaWVudF9jcmVkaXRzXCIpKSB7XG4gICAgICAgIGVycm9yKFwiSW5zdWZmaWNpZW50IGNyZWRpdHNcIiwge1xuICAgICAgICAgIGhpbnQ6IGBSdW4gJHtjb2xvcnMuY29kZShcInNlbmRseSBjcmVkaXRzIGJhbGFuY2VcIil9IHRvIGNoZWNrIHlvdXIgYmFsYW5jZWAsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZT8uaW5jbHVkZXMoXCJpbnZhbGlkX3Bob25lXCIpKSB7XG4gICAgICAgIGVycm9yKFwiSW52YWxpZCBwaG9uZSBudW1iZXIgZm9ybWF0XCIsIHtcbiAgICAgICAgICBoaW50OiBcIlVzZSBFLjE2NCBmb3JtYXQ6ICsxMjM0NTY3ODkwXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../lib/base-command.js";
|
|
2
|
+
export default class Status extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
7
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../lib/base-command.js";
|
|
2
|
+
import { apiClient } from "../lib/api-client.js";
|
|
3
|
+
import { colors, json, isJsonMode, formatRelativeTime, } from "../lib/output.js";
|
|
4
|
+
import { getConfigValue } from "../lib/config.js";
|
|
5
|
+
export default class Status extends AuthenticatedCommand {
|
|
6
|
+
static description = "Show account status dashboard with credits, usage, and health";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> status",
|
|
9
|
+
"<%= config.bin %> status --json",
|
|
10
|
+
];
|
|
11
|
+
static flags = {
|
|
12
|
+
...AuthenticatedCommand.baseFlags,
|
|
13
|
+
};
|
|
14
|
+
async run() {
|
|
15
|
+
// Fetch all status data in parallel
|
|
16
|
+
const [credits, messages, webhooks, keys] = await Promise.all([
|
|
17
|
+
apiClient
|
|
18
|
+
.get("/api/v1/account/credits")
|
|
19
|
+
.catch(() => ({ balance: 0, reservedBalance: 0, availableBalance: 0 })),
|
|
20
|
+
apiClient
|
|
21
|
+
.get("/api/v1/messages", {
|
|
22
|
+
limit: 5,
|
|
23
|
+
})
|
|
24
|
+
.catch(() => ({ messages: [], total: 0 })),
|
|
25
|
+
apiClient
|
|
26
|
+
.get("/api/v1/webhooks")
|
|
27
|
+
.catch(() => []),
|
|
28
|
+
apiClient
|
|
29
|
+
.get("/api/v1/account/keys")
|
|
30
|
+
.catch(() => ({ keys: [] })),
|
|
31
|
+
]);
|
|
32
|
+
const email = getConfigValue("email") || "Unknown";
|
|
33
|
+
const apiMode = getConfigValue("environment") || "test";
|
|
34
|
+
if (isJsonMode()) {
|
|
35
|
+
json({
|
|
36
|
+
account: {
|
|
37
|
+
email,
|
|
38
|
+
apiMode,
|
|
39
|
+
},
|
|
40
|
+
credits: {
|
|
41
|
+
balance: credits.balance,
|
|
42
|
+
reserved: credits.reservedBalance,
|
|
43
|
+
available: credits.availableBalance,
|
|
44
|
+
},
|
|
45
|
+
usage: {
|
|
46
|
+
recentMessages: messages.total,
|
|
47
|
+
webhooksConfigured: webhooks.length,
|
|
48
|
+
activeApiKeys: keys.keys?.filter((k) => k.isActive).length || 0,
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Beautiful dashboard output
|
|
54
|
+
console.log();
|
|
55
|
+
console.log(colors.bold(colors.primary(" Sendly Status Dashboard")));
|
|
56
|
+
console.log(colors.dim(" " + "─".repeat(40)));
|
|
57
|
+
console.log();
|
|
58
|
+
// Account Section
|
|
59
|
+
console.log(colors.bold(" Account"));
|
|
60
|
+
console.log(` ${colors.dim("Email:")} ${email}`);
|
|
61
|
+
console.log(` ${colors.dim("API Mode:")} ${apiMode === "test" ? colors.warning("test") + colors.dim(" (sandbox)") : colors.success("live") + colors.dim(" (production)")}`);
|
|
62
|
+
console.log();
|
|
63
|
+
// Credits Section
|
|
64
|
+
console.log(colors.bold(" Credits"));
|
|
65
|
+
const available = credits.availableBalance || 0;
|
|
66
|
+
const creditColor = available > 100
|
|
67
|
+
? colors.success
|
|
68
|
+
: available > 10
|
|
69
|
+
? colors.warning
|
|
70
|
+
: colors.error;
|
|
71
|
+
console.log(` ${colors.dim("Available:")} ${creditColor(available.toLocaleString())} credits`);
|
|
72
|
+
if (credits.reservedBalance > 0) {
|
|
73
|
+
console.log(` ${colors.dim("Reserved:")} ${colors.warning(credits.reservedBalance.toLocaleString())} credits`);
|
|
74
|
+
}
|
|
75
|
+
console.log(` ${colors.dim("Capacity:")} ~${Math.floor(available).toLocaleString()} SMS (US/CA)`);
|
|
76
|
+
console.log();
|
|
77
|
+
// Usage Section
|
|
78
|
+
console.log(colors.bold(" Resources"));
|
|
79
|
+
const activeKeys = keys.keys?.filter((k) => k.isActive).length || 0;
|
|
80
|
+
const activeWebhooks = webhooks.filter((w) => w.is_active).length;
|
|
81
|
+
console.log(` ${colors.dim("API Keys:")} ${activeKeys} active`);
|
|
82
|
+
console.log(` ${colors.dim("Webhooks:")} ${activeWebhooks} configured${webhooks.length > activeWebhooks ? colors.dim(` (${webhooks.length - activeWebhooks} paused)`) : ""}`);
|
|
83
|
+
console.log();
|
|
84
|
+
// Recent Activity
|
|
85
|
+
if (messages.messages && messages.messages.length > 0) {
|
|
86
|
+
console.log(colors.bold(" Recent Messages"));
|
|
87
|
+
messages.messages.slice(0, 3).forEach((msg) => {
|
|
88
|
+
const status = msg.status || "unknown";
|
|
89
|
+
const statusIcon = status === "delivered"
|
|
90
|
+
? colors.success("✓")
|
|
91
|
+
: status === "sent"
|
|
92
|
+
? colors.primary("→")
|
|
93
|
+
: status === "failed"
|
|
94
|
+
? colors.error("✗")
|
|
95
|
+
: colors.dim("○");
|
|
96
|
+
const to = msg.to || "Unknown";
|
|
97
|
+
const time = msg.createdAt
|
|
98
|
+
? formatRelativeTime(msg.createdAt)
|
|
99
|
+
: "recently";
|
|
100
|
+
console.log(` ${statusIcon} ${colors.dim(to.slice(-4).padStart(8, "•"))} ${colors.dim(status.padEnd(10))} ${colors.dim(time)}`);
|
|
101
|
+
});
|
|
102
|
+
console.log();
|
|
103
|
+
}
|
|
104
|
+
// Quick Actions
|
|
105
|
+
console.log(colors.dim(" Quick Actions"));
|
|
106
|
+
console.log(` ${colors.code("sendly sms send")} Send a message`);
|
|
107
|
+
console.log(` ${colors.code("sendly credits balance")} Check credit balance`);
|
|
108
|
+
console.log(` ${colors.code("sendly webhooks list")} View webhooks`);
|
|
109
|
+
console.log();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3N0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBRUosVUFBVSxFQUNWLGtCQUFrQixHQUNuQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQTBCbEQsTUFBTSxDQUFDLE9BQU8sT0FBTyxNQUFPLFNBQVEsb0JBQW9CO0lBQ3RELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLCtEQUErRCxDQUFDO0lBRWxFLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsMEJBQTBCO1FBQzFCLGlDQUFpQztLQUNsQyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztLQUNsQyxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxvQ0FBb0M7UUFDcEMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUM1RCxTQUFTO2lCQUNOLEdBQUcsQ0FJRCx5QkFBeUIsQ0FBQztpQkFDNUIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6RSxTQUFTO2lCQUNOLEdBQUcsQ0FBcUMsa0JBQWtCLEVBQUU7Z0JBQzNELEtBQUssRUFBRSxDQUFDO2FBQ1QsQ0FBQztpQkFDRCxLQUFLLENBQUMsR0FBRyxFQUFFLENB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QUcsR0FBRyxDQUFDLFNBQVM7b0JBQ3hCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO29CQUNuQyxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQ1QsT0FBTyxVQUFVLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDdEgsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxnQkFBZ0I7UUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUNULE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FDNUQsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQ1QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUNwRSxDQUFDO1FBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FDVCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQzVELENBQUM7UUFDRixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgaGVhZGVyLFxuICBrZXlWYWx1ZSxcbiAgY29sb3JzLFxuICBqc29uLFxuICBkaXZpZGVyLFxuICBpc0pzb25Nb2RlLFxuICBmb3JtYXRSZWxhdGl2ZVRpbWUsXG59IGZyb20gXCIuLi9saWIvb3V0cHV0LmpzXCI7XG5pbXBvcnQgeyBnZXRDb25maWdWYWx1ZSB9IGZyb20gXCIuLi9saWIvY29uZmlnLmpzXCI7XG5cbmludGVyZmFjZSBTdGF0dXNSZXNwb25zZSB7XG4gIGFjY291bnQ6IHtcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIHZlcmlmaWVkOiBib29sZWFuO1xuICB9O1xuICBjcmVkaXRzOiB7XG4gICAgYmFsYW5jZTogbnVtYmVyO1xuICAgIHJlc2VydmVkOiBudW1iZXI7XG4gICAgYXZhaWxhYmxlOiBudW1iZXI7XG4gIH07XG4gIHVzYWdlOiB7XG4gICAgbWVzc2FnZXNTZW50VG9kYXk6IG51bWJlcjtcbiAgICBtZXNzYWdlc1NlbnRUaGlzTW9udGg6IG51bWJlcjtcbiAgICB3ZWJob29rc0NvbmZpZ3VyZWQ6IG51bWJlcjtcbiAgICBhY3RpdmVBcGlLZXlzOiBudW1iZXI7XG4gIH07XG4gIGxpbWl0czoge1xuICAgIGRhaWx5TGltaXQ6IG51bWJlcjtcbiAgICBtb250aGx5TGltaXQ6IG51bWJlcjtcbiAgICByYXRlTGltaXQ6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdHVzIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPVxuICAgIFwiU2hvdyBhY2NvdW50IHN0YXR1cyBkYXNoYm9hcmQgd2l0aCBjcmVkaXRzLCB1c2FnZSwgYW5kIGhlYWx0aFwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHN0YXR1c1wiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gc3RhdHVzIC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIEZldGNoIGFsbCBzdGF0dXMgZGF0YSBpbiBwYXJhbGxlbFxuICAgIGNvbnN0IFtjcmVkaXRzLCBtZXNzYWdlcywgd2ViaG9va3MsIGtleXNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgYXBpQ2xpZW50XG4gICAgICAgIC5nZXQ8e1xuICAgICAgICAgIGJhbGFuY2U6IG51bWJlcjtcbiAgICAgICAgICByZXNlcnZlZEJhbGFuY2U6IG51bWJlcjtcbiAgICAgICAgICBhdmFpbGFibGVCYWxhbmNlOiBudW1iZXI7XG4gICAgICAgIH0+KFwiL2FwaS92MS9hY2NvdW50L2NyZWRpdHNcIilcbiAgICAgICAgLmNhdGNoKCgpID0+ICh7IGJhbGFuY2U6IDAsIHJlc2VydmVkQmFsYW5jZTogMCwgYXZhaWxhYmxlQmFsYW5jZTogMCB9KSksXG4gICAgICBhcGlDbGllbnRcbiAgICAgICAgLmdldDx7IG1lc3NhZ2VzOiBhbnlbXTsgdG90YWw6IG51bWJlciB9PihcIi9hcGkvdjEvbWVzc2FnZXNcIiwge1xuICAgICAgICAgIGxpbWl0OiA1LFxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4gKHsgbWVzc2FnZXM6IFtdLCB0b3RhbDogMCB9KSksXG4gICAgICBhcGlDbGllbnRcbiAgICAgICAgLmdldDxhbnlbXT4oXCIvYXBpL3YxL3dlYmhvb2tzXCIpXG4gICAgICAgIC5jYXRjaCgoKSA9PiBbXSksXG4gICAgICBhcGlDbGllbnRcbiAgICAgICAgLmdldDx7IGtleXM6IGFueVtdIH0+KFwiL2FwaS92MS9hY2NvdW50L2tleXNcIilcbiAgICAgICAgLmNhdGNoKCgpID0+ICh7IGtleXM6IFtdIH0pKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IGVtYWlsID0gZ2V0Q29uZmlnVmFsdWUoXCJlbWFpbFwiKSB8fCBcIlVua25vd25cIjtcbiAgICBjb25zdCBhcGlNb2RlID0gZ2V0Q29uZmlnVmFsdWUoXCJlbnZpcm9ubWVudFwiKSB8fCBcInRlc3RcIjtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24oe1xuICAgICAgICBhY2NvdW50OiB7XG4gICAgICAgICAgZW1haWwsXG4gICAgICAgICAgYXBpTW9kZSxcbiAgICAgICAgfSxcbiAgICAgICAgY3JlZGl0czoge1xuICAgICAgICAgIGJhbGFuY2U6IGNyZWRpdHMuYmFsYW5jZSxcbiAgICAgICAgICByZXNlcnZlZDogY3JlZGl0cy5yZXNlcnZlZEJhbGFuY2UsXG4gICAgICAgICAgYXZhaWxhYmxlOiBjcmVkaXRzLmF2YWlsYWJsZUJhbGFuY2UsXG4gICAgICAgIH0sXG4gICAgICAgIHVzYWdlOiB7XG4gICAgICAgICAgcmVjZW50TWVzc2FnZXM6IG1lc3NhZ2VzLnRvdGFsLFxuICAgICAgICAgIHdlYmhvb2tzQ29uZmlndXJlZDogd2ViaG9va3MubGVuZ3RoLFxuICAgICAgICAgIGFjdGl2ZUFwaUtleXM6IGtleXMua2V5cz8uZmlsdGVyKChrOiBhbnkpID0+IGsuaXNBY3RpdmUpLmxlbmd0aCB8fCAwLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQmVhdXRpZnVsIGRhc2hib2FyZCBvdXRwdXRcbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgY29sb3JzLmJvbGQoY29sb3JzLnByaW1hcnkoXCIgIFNlbmRseSBTdGF0dXMgRGFzaGJvYXJkXCIpKSxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCIgIFwiICsgXCLilIBcIi5yZXBlYXQoNDApKSk7XG4gICAgY29uc29sZS5sb2coKTtcblxuICAgIC8vIEFjY291bnQgU2VjdGlvblxuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiICBBY2NvdW50XCIpKTtcbiAgICBjb25zb2xlLmxvZyhgICAgICR7Y29sb3JzLmRpbShcIkVtYWlsOlwiKX0gICAgICAgICR7ZW1haWx9YCk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgICAgICR7Y29sb3JzLmRpbShcIkFQSSBNb2RlOlwiKX0gICAgICR7YXBpTW9kZSA9PT0gXCJ0ZXN0XCIgPyBjb2xvcnMud2FybmluZyhcInRlc3RcIikgKyBjb2xvcnMuZGltKFwiIChzYW5kYm94KVwiKSA6IGNvbG9ycy5zdWNjZXNzKFwibGl2ZVwiKSArIGNvbG9ycy5kaW0oXCIgKHByb2R1Y3Rpb24pXCIpfWAsXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAgLy8gQ3JlZGl0cyBTZWN0aW9uXG4gICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoXCIgIENyZWRpdHNcIikpO1xuICAgIGNvbnN0IGF2YWlsYWJsZSA9IGNyZWRpdHMuYXZhaWxhYmxlQmFsYW5jZSB8fCAwO1xuICAgIGNvbnN0IGNyZWRpdENvbG9yID1cbiAgICAgIGF2YWlsYWJsZSA+IDEwMFxuICAgICAgICA/IGNvbG9ycy5zdWNjZXNzXG4gICAgICAgIDogYXZhaWxhYmxlID4gMTBcbiAgICAgICAgICA/IGNvbG9ycy53YXJuaW5nXG4gICAgICAgICAgOiBjb2xvcnMuZXJyb3I7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgICAgICR7Y29sb3JzLmRpbShcIkF2YWlsYWJsZTpcIil9ICAgICR7Y3JlZGl0Q29sb3IoYXZhaWxhYmxlLnRvTG9jYWxlU3RyaW5nKCkpfSBjcmVkaXRzYCxcbiAgICApO1xuICAgIGlmIChjcmVkaXRzLnJlc2VydmVkQmFsYW5jZSA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgICAgICR7Y29sb3JzLmRpbShcIlJlc2VydmVkOlwiKX0gICAgICR7Y29sb3JzLndhcm5pbmcoY3JlZGl0cy5yZXNlcnZlZEJhbGFuY2UudG9Mb2NhbGVTdHJpbmcoKSl9IGNyZWRpdHNgLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgICAgICR7Y29sb3JzLmRpbShcIkNhcGFjaXR5OlwiKX0gICAgIH4ke01hdGguZmxvb3IoYXZhaWxhYmxlKS50b0xvY2FsZVN0cmluZygpfSBTTVMgKFVTL0NBKWAsXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAgLy8gVXNhZ2UgU2VjdGlvblxuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiICBSZXNvdXJjZXNcIikpO1xuICAgIGNvbnN0IGFjdGl2ZUtleXMgPSBrZXlzLmtleXM/LmZpbHRlcigoazogYW55KSA9PiBrLmlzQWN0aXZlKS5sZW5ndGggfHwgMDtcbiAgICBjb25zdCBhY3RpdmVXZWJob29rcyA9IHdlYmhvb2tzLmZpbHRlcigodzogYW55KSA9PiB3LmlzX2FjdGl2ZSkubGVuZ3RoO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCAgICAke2NvbG9ycy5kaW0oXCJBUEkgS2V5czpcIil9ICAgICAke2FjdGl2ZUtleXN9IGFjdGl2ZWAsXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGAgICAgJHtjb2xvcnMuZGltKFwiV2ViaG9va3M6XCIpfSAgICAgJHthY3RpdmVXZWJob29rc30gY29uZmlndXJlZCR7d2ViaG9va3MubGVuZ3RoID4gYWN0aXZlV2ViaG9va3MgPyBjb2xvcnMuZGltKGAgKCR7d2ViaG9va3MubGVuZ3RoIC0gYWN0aXZlV2ViaG9va3N9IHBhdXNlZClgKSA6IFwiXCJ9YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICAvLyBSZWNlbnQgQWN0aXZpdHlcbiAgICBpZiAobWVzc2FnZXMubWVzc2FnZXMgJiYgbWVzc2FnZXMubWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoXCIgIFJlY2VudCBNZXNzYWdlc1wiKSk7XG4gICAgICBtZXNzYWdlcy5tZXNzYWdlcy5zbGljZSgwLCAzKS5mb3JFYWNoKChtc2c6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBtc2cuc3RhdHVzIHx8IFwidW5rbm93blwiO1xuICAgICAgICBjb25zdCBzdGF0dXNJY29uID1cbiAgICAgICAgICBzdGF0dXMgPT09IFwiZGVsaXZlcmVkXCJcbiAgICAgICAgICAgID8gY29sb3JzLnN1Y2Nlc3MoXCLinJNcIilcbiAgICAgICAgICAgIDogc3RhdHVzID09PSBcInNlbnRcIlxuICAgICAgICAgICAgICA/IGNvbG9ycy5wcmltYXJ5KFwi4oaSXCIpXG4gICAgICAgICAgICAgIDogc3RhdHVzID09PSBcImZhaWxlZFwiXG4gICAgICAgICAgICAgICAgPyBjb2xvcnMuZXJyb3IoXCLinJdcIilcbiAgICAgICAgICAgICAgICA6IGNvbG9ycy5kaW0oXCLil4tcIik7XG4gICAgICAgIGNvbnN0IHRvID0gbXNnLnRvIHx8IFwiVW5rbm93blwiO1xuICAgICAgICBjb25zdCB0aW1lID0gbXNnLmNyZWF0ZWRBdFxuICAgICAgICAgID8gZm9ybWF0UmVsYXRpdmVUaW1lKG1zZy5jcmVhdGVkQXQpXG4gICAgICAgICAgOiBcInJlY2VudGx5XCI7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAgICAgJHtzdGF0dXNJY29ufSAke2NvbG9ycy5kaW0odG8uc2xpY2UoLTQpLnBhZFN0YXJ0KDgsIFwi4oCiXCIpKX0gJHtjb2xvcnMuZGltKHN0YXR1cy5wYWRFbmQoMTApKX0gJHtjb2xvcnMuZGltKHRpbWUpfWAsXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgfVxuXG4gICAgLy8gUXVpY2sgQWN0aW9uc1xuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCIgIFF1aWNrIEFjdGlvbnNcIikpO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCAgICAke2NvbG9ycy5jb2RlKFwic2VuZGx5IHNtcyBzZW5kXCIpfSAgICAgIFNlbmQgYSBtZXNzYWdlYCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCAgICAke2NvbG9ycy5jb2RlKFwic2VuZGx5IGNyZWRpdHMgYmFsYW5jZVwiKX0gQ2hlY2sgY3JlZGl0IGJhbGFuY2VgLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgICAgICR7Y29sb3JzLmNvZGUoXCJzZW5kbHkgd2ViaG9va3MgbGlzdFwiKX0gIFZpZXcgd2ViaG9va3NgLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coKTtcbiAgfVxufVxuIl19
|
|
@@ -5,9 +5,9 @@ import { success, warn, json, colors, codeBlock, isJsonMode, } from "../../lib/o
|
|
|
5
5
|
export default class WebhooksCreate extends AuthenticatedCommand {
|
|
6
6
|
static description = "Create a webhook";
|
|
7
7
|
static examples = [
|
|
8
|
-
|
|
8
|
+
"<%= config.bin %> webhooks create --url https://myapp.com/webhook --events message.delivered",
|
|
9
9
|
'<%= config.bin %> webhooks create --url https://myapp.com/webhook --events message.delivered,message.failed --description "Production webhook"',
|
|
10
|
-
|
|
10
|
+
"<%= config.bin %> webhooks create --url https://webhook.site/abc123 --events message.sent --json",
|
|
11
11
|
];
|
|
12
12
|
static flags = {
|
|
13
13
|
...AuthenticatedCommand.baseFlags,
|
|
@@ -28,7 +28,7 @@ export default class WebhooksCreate extends AuthenticatedCommand {
|
|
|
28
28
|
};
|
|
29
29
|
async run() {
|
|
30
30
|
const { flags } = await this.parse(WebhooksCreate);
|
|
31
|
-
const events = flags.events.split(",").map(e => e.trim());
|
|
31
|
+
const events = flags.events.split(",").map((e) => e.trim());
|
|
32
32
|
const response = await apiClient.post("/api/v1/webhooks", {
|
|
33
33
|
url: flags.url,
|
|
34
34
|
events,
|
|
@@ -43,7 +43,9 @@ export default class WebhooksCreate extends AuthenticatedCommand {
|
|
|
43
43
|
URL: response.url,
|
|
44
44
|
Events: response.events.join(", "),
|
|
45
45
|
...(response.description && { Description: response.description }),
|
|
46
|
-
Status: response.
|
|
46
|
+
Status: response.is_active
|
|
47
|
+
? colors.success("active")
|
|
48
|
+
: colors.warning("inactive"),
|
|
47
49
|
});
|
|
48
50
|
console.log();
|
|
49
51
|
warn("Copy your webhook secret now. You won't be able to see it again!");
|
|
@@ -53,4 +55,4 @@ export default class WebhooksCreate extends AuthenticatedCommand {
|
|
|
53
55
|
console.log(colors.dim("See the docs for signature verification examples."));
|
|
54
56
|
}
|
|
55
57
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3dlYmhvb2tzL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLElBQUksRUFDSixJQUFJLEVBQ0osTUFBTSxFQUNOLFNBQVMsRUFDVCxVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQWE3QixNQUFNLENBQUMsT0FBTyxPQUFPLGNBQWUsU0FBUSxvQkFBb0I7SUFDOUQsTUFBTSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQztJQUV4QyxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDhGQUE4RjtRQUM5RixnSkFBZ0o7UUFDaEosa0dBQWtHO0tBQ25HLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO1FBQ2pDLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2hCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFDRixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNuQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSw4Q0FBOEM7WUFDM0QsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDeEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsNkJBQTZCO1NBQzNDLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFFNUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUNuQyxrQkFBa0IsRUFDbEI7WUFDRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxNQUFNO1lBQ04sR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdELENBQ0YsQ0FBQztRQUVGLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QixFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDZixHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUc7WUFDakIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNsQyxHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxTQUFTO2dCQUN4QixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztTQUMvQixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsa0VBQWtFLENBQUMsQ0FBQztRQUN6RSxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FDUixtRUFBbUUsQ0FDcEUsQ0FDRixDQUFDO1FBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUFDLG1EQUFtRCxDQUFDLENBQ2hFLENBQUM7SUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgd2FybixcbiAganNvbixcbiAgY29sb3JzLFxuICBjb2RlQmxvY2ssXG4gIGlzSnNvbk1vZGUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBDcmVhdGVXZWJob29rUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgZXZlbnRzOiBzdHJpbmdbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHNlY3JldDogc3RyaW5nOyAvLyBPbmx5IHJldHVybmVkIG9uIGNyZWF0aW9uXG4gIHNlY3JldF92ZXJzaW9uOiBudW1iZXI7XG4gIGlzX2FjdGl2ZTogYm9vbGVhbjtcbiAgY3JlYXRlZF9hdDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXZWJob29rc0NyZWF0ZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJDcmVhdGUgYSB3ZWJob29rXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gd2ViaG9va3MgY3JlYXRlIC0tdXJsIGh0dHBzOi8vbXlhcHAuY29tL3dlYmhvb2sgLS1ldmVudHMgbWVzc2FnZS5kZWxpdmVyZWRcIixcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gd2ViaG9va3MgY3JlYXRlIC0tdXJsIGh0dHBzOi8vbXlhcHAuY29tL3dlYmhvb2sgLS1ldmVudHMgbWVzc2FnZS5kZWxpdmVyZWQsbWVzc2FnZS5mYWlsZWQgLS1kZXNjcmlwdGlvbiBcIlByb2R1Y3Rpb24gd2ViaG9va1wiJyxcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHdlYmhvb2tzIGNyZWF0ZSAtLXVybCBodHRwczovL3dlYmhvb2suc2l0ZS9hYmMxMjMgLS1ldmVudHMgbWVzc2FnZS5zZW50IC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgdXJsOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ1XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJXZWJob29rIFVSTCAobXVzdCBiZSBIVFRQUylcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICAgIGV2ZW50czogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXZlbnRzIHRvIGxpc3RlbiBmb3JcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICAgIGRlc2NyaXB0aW9uOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJkXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJEZXNjcmlwdGlvbiBmb3IgdGhlIHdlYmhvb2tcIixcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShXZWJob29rc0NyZWF0ZSk7XG5cbiAgICBjb25zdCBldmVudHMgPSBmbGFncy5ldmVudHMuc3BsaXQoXCIsXCIpLm1hcCgoZSkgPT4gZS50cmltKCkpO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxDcmVhdGVXZWJob29rUmVzcG9uc2U+KFxuICAgICAgXCIvYXBpL3YxL3dlYmhvb2tzXCIsXG4gICAgICB7XG4gICAgICAgIHVybDogZmxhZ3MudXJsLFxuICAgICAgICBldmVudHMsXG4gICAgICAgIC4uLihmbGFncy5kZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uOiBmbGFncy5kZXNjcmlwdGlvbiB9KSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoXCJXZWJob29rIGNyZWF0ZWRcIiwge1xuICAgICAgSUQ6IHJlc3BvbnNlLmlkLFxuICAgICAgVVJMOiByZXNwb25zZS51cmwsXG4gICAgICBFdmVudHM6IHJlc3BvbnNlLmV2ZW50cy5qb2luKFwiLCBcIiksXG4gICAgICAuLi4ocmVzcG9uc2UuZGVzY3JpcHRpb24gJiYgeyBEZXNjcmlwdGlvbjogcmVzcG9uc2UuZGVzY3JpcHRpb24gfSksXG4gICAgICBTdGF0dXM6IHJlc3BvbnNlLmlzX2FjdGl2ZVxuICAgICAgICA/IGNvbG9ycy5zdWNjZXNzKFwiYWN0aXZlXCIpXG4gICAgICAgIDogY29sb3JzLndhcm5pbmcoXCJpbmFjdGl2ZVwiKSxcbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgd2FybihcIkNvcHkgeW91ciB3ZWJob29rIHNlY3JldCBub3cuIFlvdSB3b24ndCBiZSBhYmxlIHRvIHNlZSBpdCBhZ2FpbiFcIik7XG4gICAgY29kZUJsb2NrKHJlc3BvbnNlLnNlY3JldCk7XG5cbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgXCJVc2UgdGhpcyBzZWNyZXQgdG8gdmVyaWZ5IHdlYmhvb2sgc2lnbmF0dXJlcyBpbiB5b3VyIGFwcGxpY2F0aW9uLlwiLFxuICAgICAgKSxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgY29sb3JzLmRpbShcIlNlZSB0aGUgZG9jcyBmb3Igc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBleGFtcGxlcy5cIiksXG4gICAgKTtcbiAgfVxufVxuIl19
|