@sendly/cli 3.8.1 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -1
- package/dist/commands/templates/create.d.ts +12 -0
- package/dist/commands/templates/create.js +65 -0
- package/dist/commands/templates/delete.d.ts +14 -0
- package/dist/commands/templates/delete.js +68 -0
- package/dist/commands/templates/get.d.ts +13 -0
- package/dist/commands/templates/get.js +69 -0
- package/dist/commands/templates/list.d.ts +10 -0
- package/dist/commands/templates/list.js +49 -0
- package/dist/commands/templates/presets.d.ts +10 -0
- package/dist/commands/templates/presets.js +45 -0
- package/dist/commands/templates/publish.d.ts +13 -0
- package/dist/commands/templates/publish.js +57 -0
- package/dist/commands/verify/check.d.ts +14 -0
- package/dist/commands/verify/check.js +86 -0
- package/dist/commands/verify/list.d.ts +11 -0
- package/dist/commands/verify/list.js +74 -0
- package/dist/commands/verify/resend.d.ts +13 -0
- package/dist/commands/verify/resend.js +83 -0
- package/dist/commands/verify/send.d.ts +16 -0
- package/dist/commands/verify/send.js +105 -0
- package/dist/commands/verify/status.d.ts +13 -0
- package/dist/commands/verify/status.js +57 -0
- package/oclif.manifest.json +547 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/SendlyHQ/sendly-cli/main/.github/header.svg" alt="Sendly CLI" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://www.npmjs.com/package/@sendly/cli"><img src="https://img.shields.io/npm/v/@sendly/cli.svg?style=flat-square" alt="npm version" /></a>
|
|
7
|
+
<a href="https://github.com/SendlyHQ/sendly-cli/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@sendly/cli.svg?style=flat-square" alt="license" /></a>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
1
10
|
# @sendly/cli
|
|
2
11
|
|
|
3
12
|
Official command-line interface for the [Sendly](https://sendly.live) SMS API.
|
|
@@ -326,7 +335,7 @@ function verifyWebhook(payload, signature, secret) {
|
|
|
326
335
|
|
|
327
336
|
## Support
|
|
328
337
|
|
|
329
|
-
- [GitHub Issues](https://github.com/
|
|
338
|
+
- [GitHub Issues](https://github.com/SendlyHQ/sendly-cli/issues)
|
|
330
339
|
- Email: support@sendly.live
|
|
331
340
|
|
|
332
341
|
## License
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TemplatesCreate extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
text: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
9
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
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 TemplatesCreate extends AuthenticatedCommand {
|
|
6
|
+
static description = "Create a new SMS template";
|
|
7
|
+
static examples = [
|
|
8
|
+
'<%= config.bin %> templates create --name "My OTP" --text "Your code is {{code}}"',
|
|
9
|
+
'<%= config.bin %> templates create --name "Login" --text "{{code}} is your {{app_name}} login code"',
|
|
10
|
+
];
|
|
11
|
+
static flags = {
|
|
12
|
+
...AuthenticatedCommand.baseFlags,
|
|
13
|
+
name: Flags.string({
|
|
14
|
+
char: "n",
|
|
15
|
+
description: "Template name",
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
text: Flags.string({
|
|
19
|
+
char: "t",
|
|
20
|
+
description: "Message text (use {{code}} and {{app_name}} variables)",
|
|
21
|
+
required: true,
|
|
22
|
+
}),
|
|
23
|
+
};
|
|
24
|
+
async run() {
|
|
25
|
+
const { flags } = await this.parse(TemplatesCreate);
|
|
26
|
+
const createSpinner = spinner("Creating template...");
|
|
27
|
+
if (!isJsonMode()) {
|
|
28
|
+
createSpinner.start();
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const response = await apiClient.post("/api/v1/templates", {
|
|
32
|
+
name: flags.name,
|
|
33
|
+
text: flags.text,
|
|
34
|
+
});
|
|
35
|
+
createSpinner.stop();
|
|
36
|
+
if (isJsonMode()) {
|
|
37
|
+
json(response);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
success("Template created", {
|
|
41
|
+
ID: colors.code(response.id),
|
|
42
|
+
Name: response.name,
|
|
43
|
+
Status: colors.dim(response.status),
|
|
44
|
+
Variables: response.variables
|
|
45
|
+
.map((v) => colors.code(`{{${v.key}}}`))
|
|
46
|
+
.join(", ") || colors.dim("none"),
|
|
47
|
+
});
|
|
48
|
+
console.log();
|
|
49
|
+
console.log(colors.dim(`Publish with: ${colors.code(`sendly templates publish ${response.id}`)}`));
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
createSpinner.stop();
|
|
53
|
+
if (err.message?.includes("1600 characters")) {
|
|
54
|
+
error("Template text too long", {
|
|
55
|
+
hint: "Maximum 1600 characters (10 SMS segments)",
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
throw err;
|
|
60
|
+
}
|
|
61
|
+
this.exit(1);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3RlbXBsYXRlcy9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsSUFBSSxFQUNKLE1BQU0sRUFDTixPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFhN0IsTUFBTSxDQUFDLE9BQU8sT0FBTyxlQUFnQixTQUFRLG9CQUFvQjtJQUMvRCxNQUFNLENBQUMsV0FBVyxHQUFHLDJCQUEyQixDQUFDO0lBRWpELE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsbUZBQW1GO1FBQ25GLHFHQUFxRztLQUN0RyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxlQUFlO1lBQzVCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHdEQUF3RDtZQUNyRSxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXBELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUNuQyxtQkFBbUIsRUFDbkI7Z0JBQ0UsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7YUFDakIsQ0FDRixDQUFDO1lBRUYsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXJCLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNmLE9BQU87WUFDVCxDQUFDO1lBRUQsT0FBTyxDQUFDLGtCQUFrQixFQUFFO2dCQUMxQixFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM1QixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7Z0JBQ25CLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ25DLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztxQkFDMUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7cUJBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQzthQUNwQyxDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQ1IsaUJBQWlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQzFFLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVyQixJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztnQkFDN0MsS0FBSyxDQUFDLHdCQUF3QixFQUFFO29CQUM5QixJQUFJLEVBQUUsMkNBQTJDO2lCQUNsRCxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxHQUFHLENBQUM7WUFDWixDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIGpzb24sXG4gIGNvbG9ycyxcbiAgc3Bpbm5lcixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIFRlbXBsYXRlUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgdmFyaWFibGVzOiBBcnJheTx7IGtleTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGZhbGxiYWNrPzogc3RyaW5nIH0+O1xuICBpc19wcmVzZXQ6IGJvb2xlYW47XG4gIHN0YXR1czogc3RyaW5nO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIGNyZWF0ZWRfYXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVtcGxhdGVzQ3JlYXRlIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkNyZWF0ZSBhIG5ldyBTTVMgdGVtcGxhdGVcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IHRlbXBsYXRlcyBjcmVhdGUgLS1uYW1lIFwiTXkgT1RQXCIgLS10ZXh0IFwiWW91ciBjb2RlIGlzIHt7Y29kZX19XCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiB0ZW1wbGF0ZXMgY3JlYXRlIC0tbmFtZSBcIkxvZ2luXCIgLS10ZXh0IFwie3tjb2RlfX0gaXMgeW91ciB7e2FwcF9uYW1lfX0gbG9naW4gY29kZVwiJyxcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIG5hbWU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcIm5cIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRlbXBsYXRlIG5hbWVcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICAgIHRleHQ6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk1lc3NhZ2UgdGV4dCAodXNlIHt7Y29kZX19IGFuZCB7e2FwcF9uYW1lfX0gdmFyaWFibGVzKVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoVGVtcGxhdGVzQ3JlYXRlKTtcblxuICAgIGNvbnN0IGNyZWF0ZVNwaW5uZXIgPSBzcGlubmVyKFwiQ3JlYXRpbmcgdGVtcGxhdGUuLi5cIik7XG5cbiAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgY3JlYXRlU3Bpbm5lci5zdGFydCgpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PFRlbXBsYXRlUmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvdjEvdGVtcGxhdGVzXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBmbGFncy5uYW1lLFxuICAgICAgICAgIHRleHQ6IGZsYWdzLnRleHQsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBjcmVhdGVTcGlubmVyLnN0b3AoKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzdWNjZXNzKFwiVGVtcGxhdGUgY3JlYXRlZFwiLCB7XG4gICAgICAgIElEOiBjb2xvcnMuY29kZShyZXNwb25zZS5pZCksXG4gICAgICAgIE5hbWU6IHJlc3BvbnNlLm5hbWUsXG4gICAgICAgIFN0YXR1czogY29sb3JzLmRpbShyZXNwb25zZS5zdGF0dXMpLFxuICAgICAgICBWYXJpYWJsZXM6IHJlc3BvbnNlLnZhcmlhYmxlc1xuICAgICAgICAgIC5tYXAoKHYpID0+IGNvbG9ycy5jb2RlKGB7eyR7di5rZXl9fX1gKSlcbiAgICAgICAgICAuam9pbihcIiwgXCIpIHx8IGNvbG9ycy5kaW0oXCJub25lXCIpLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICBgUHVibGlzaCB3aXRoOiAke2NvbG9ycy5jb2RlKGBzZW5kbHkgdGVtcGxhdGVzIHB1Ymxpc2ggJHtyZXNwb25zZS5pZH1gKX1gLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgY3JlYXRlU3Bpbm5lci5zdG9wKCk7XG5cbiAgICAgIGlmIChlcnIubWVzc2FnZT8uaW5jbHVkZXMoXCIxNjAwIGNoYXJhY3RlcnNcIikpIHtcbiAgICAgICAgZXJyb3IoXCJUZW1wbGF0ZSB0ZXh0IHRvbyBsb25nXCIsIHtcbiAgICAgICAgICBoaW50OiBcIk1heGltdW0gMTYwMCBjaGFyYWN0ZXJzICgxMCBTTVMgc2VnbWVudHMpXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TemplatesDelete 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
|
+
force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
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 { success, error, json, colors, spinner, isJsonMode, } from "../../lib/output.js";
|
|
5
|
+
import { confirm } from "@inquirer/prompts";
|
|
6
|
+
export default class TemplatesDelete extends AuthenticatedCommand {
|
|
7
|
+
static description = "Delete a template";
|
|
8
|
+
static examples = [
|
|
9
|
+
"<%= config.bin %> templates delete tpl_xxx",
|
|
10
|
+
"<%= config.bin %> templates delete tpl_xxx --force",
|
|
11
|
+
];
|
|
12
|
+
static args = {
|
|
13
|
+
id: Args.string({
|
|
14
|
+
description: "Template ID",
|
|
15
|
+
required: true,
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
static flags = {
|
|
19
|
+
...AuthenticatedCommand.baseFlags,
|
|
20
|
+
force: Flags.boolean({
|
|
21
|
+
char: "f",
|
|
22
|
+
description: "Skip confirmation",
|
|
23
|
+
default: false,
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
async run() {
|
|
27
|
+
const { args, flags } = await this.parse(TemplatesDelete);
|
|
28
|
+
if (!flags.force && !isJsonMode()) {
|
|
29
|
+
const confirmed = await confirm({
|
|
30
|
+
message: `Delete template ${args.id}?`,
|
|
31
|
+
default: false,
|
|
32
|
+
});
|
|
33
|
+
if (!confirmed) {
|
|
34
|
+
console.log(colors.dim("Cancelled"));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const deleteSpinner = spinner("Deleting template...");
|
|
39
|
+
if (!isJsonMode()) {
|
|
40
|
+
deleteSpinner.start();
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
await apiClient.delete(`/api/v1/templates/${args.id}`);
|
|
44
|
+
deleteSpinner.stop();
|
|
45
|
+
if (isJsonMode()) {
|
|
46
|
+
json({ success: true, id: args.id });
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
success("Template deleted", {
|
|
50
|
+
ID: colors.code(args.id),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
deleteSpinner.stop();
|
|
55
|
+
if (err.message?.includes("preset")) {
|
|
56
|
+
error("Cannot delete preset templates");
|
|
57
|
+
}
|
|
58
|
+
else if (err.message?.includes("not_found")) {
|
|
59
|
+
error("Template not found");
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
throw err;
|
|
63
|
+
}
|
|
64
|
+
this.exit(1);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3RlbXBsYXRlcy9kZWxldGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLElBQUksRUFDSixNQUFNLEVBQ04sT0FBTyxFQUNQLFVBQVUsR0FDWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1QyxNQUFNLENBQUMsT0FBTyxPQUFPLGVBQWdCLFNBQVEsb0JBQW9CO0lBQy9ELE1BQU0sQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUM7SUFFekMsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiw0Q0FBNEM7UUFDNUMsb0RBQW9EO0tBQ3JELENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDZCxXQUFXLEVBQUUsYUFBYTtZQUMxQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNuQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxtQkFBbUI7WUFDaEMsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDO2dCQUM5QixPQUFPLEVBQUUsbUJBQW1CLElBQUksQ0FBQyxFQUFFLEdBQUc7Z0JBQ3RDLE9BQU8sRUFBRSxLQUFLO2FBQ2YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNsQixhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFdkQsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXJCLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLE9BQU87WUFDVCxDQUFDO1lBRUQsT0FBTyxDQUFDLGtCQUFrQixFQUFFO2dCQUMxQixFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2FBQ3pCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVyQixJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQzFDLENBQUM7aUJBQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUM5QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxHQUFHLENBQUM7WUFDWixDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncywgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIGpzb24sXG4gIGNvbG9ycyxcbiAgc3Bpbm5lcixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCB7IGNvbmZpcm0gfSBmcm9tIFwiQGlucXVpcmVyL3Byb21wdHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVtcGxhdGVzRGVsZXRlIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkRlbGV0ZSBhIHRlbXBsYXRlXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gdGVtcGxhdGVzIGRlbGV0ZSB0cGxfeHh4XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB0ZW1wbGF0ZXMgZGVsZXRlIHRwbF94eHggLS1mb3JjZVwiLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIGlkOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJUZW1wbGF0ZSBJRFwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICBmb3JjZTogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBjaGFyOiBcImZcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNraXAgY29uZmlybWF0aW9uXCIsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzLCBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShUZW1wbGF0ZXNEZWxldGUpO1xuXG4gICAgaWYgKCFmbGFncy5mb3JjZSAmJiAhaXNKc29uTW9kZSgpKSB7XG4gICAgICBjb25zdCBjb25maXJtZWQgPSBhd2FpdCBjb25maXJtKHtcbiAgICAgICAgbWVzc2FnZTogYERlbGV0ZSB0ZW1wbGF0ZSAke2FyZ3MuaWR9P2AsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghY29uZmlybWVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJDYW5jZWxsZWRcIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGVsZXRlU3Bpbm5lciA9IHNwaW5uZXIoXCJEZWxldGluZyB0ZW1wbGF0ZS4uLlwiKTtcblxuICAgIGlmICghaXNKc29uTW9kZSgpKSB7XG4gICAgICBkZWxldGVTcGlubmVyLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGFwaUNsaWVudC5kZWxldGUoYC9hcGkvdjEvdGVtcGxhdGVzLyR7YXJncy5pZH1gKTtcblxuICAgICAgZGVsZXRlU3Bpbm5lci5zdG9wKCk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbih7IHN1Y2Nlc3M6IHRydWUsIGlkOiBhcmdzLmlkIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHN1Y2Nlc3MoXCJUZW1wbGF0ZSBkZWxldGVkXCIsIHtcbiAgICAgICAgSUQ6IGNvbG9ycy5jb2RlKGFyZ3MuaWQpLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGRlbGV0ZVNwaW5uZXIuc3RvcCgpO1xuXG4gICAgICBpZiAoZXJyLm1lc3NhZ2U/LmluY2x1ZGVzKFwicHJlc2V0XCIpKSB7XG4gICAgICAgIGVycm9yKFwiQ2Fubm90IGRlbGV0ZSBwcmVzZXQgdGVtcGxhdGVzXCIpO1xuICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZT8uaW5jbHVkZXMoXCJub3RfZm91bmRcIikpIHtcbiAgICAgICAgZXJyb3IoXCJUZW1wbGF0ZSBub3QgZm91bmRcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TemplatesGet 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,69 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { success, json, colors, spinner, isJsonMode } from "../../lib/output.js";
|
|
5
|
+
export default class TemplatesGet extends AuthenticatedCommand {
|
|
6
|
+
static description = "Get template details";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> templates get tpl_xxx",
|
|
9
|
+
"<%= config.bin %> templates get tpl_preset_2fa",
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
id: Args.string({
|
|
13
|
+
description: "Template ID",
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
static flags = {
|
|
18
|
+
...AuthenticatedCommand.baseFlags,
|
|
19
|
+
};
|
|
20
|
+
async run() {
|
|
21
|
+
const { args } = await this.parse(TemplatesGet);
|
|
22
|
+
const getSpinner = spinner("Fetching template...");
|
|
23
|
+
if (!isJsonMode()) {
|
|
24
|
+
getSpinner.start();
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const response = await apiClient.get(`/api/v1/templates/${args.id}`);
|
|
28
|
+
getSpinner.stop();
|
|
29
|
+
if (isJsonMode()) {
|
|
30
|
+
json(response);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const statusDisplay = response.is_preset
|
|
34
|
+
? colors.primary("preset")
|
|
35
|
+
: response.status === "published"
|
|
36
|
+
? colors.success("published")
|
|
37
|
+
: colors.dim("draft");
|
|
38
|
+
success("Template details", {
|
|
39
|
+
ID: colors.code(response.id),
|
|
40
|
+
Name: response.name,
|
|
41
|
+
Type: statusDisplay,
|
|
42
|
+
Version: String(response.version),
|
|
43
|
+
...(response.preset_slug && { Slug: response.preset_slug }),
|
|
44
|
+
});
|
|
45
|
+
console.log();
|
|
46
|
+
console.log(colors.bold("Message Text:"));
|
|
47
|
+
console.log(colors.dim(" " + response.text));
|
|
48
|
+
if (response.variables.length > 0) {
|
|
49
|
+
console.log();
|
|
50
|
+
console.log(colors.bold("Variables:"));
|
|
51
|
+
for (const v of response.variables) {
|
|
52
|
+
const fallback = v.fallback
|
|
53
|
+
? ` (default: ${colors.dim(String(v.fallback))})`
|
|
54
|
+
: "";
|
|
55
|
+
console.log(` ${colors.code(`{{${v.key}}}`)} - ${v.type}${fallback}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (!response.is_preset && response.status === "draft") {
|
|
59
|
+
console.log();
|
|
60
|
+
console.log(colors.dim(`Publish with: ${colors.code(`sendly templates publish ${response.id}`)}`));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
getSpinner.stop();
|
|
65
|
+
throw err;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3RlbXBsYXRlcy9nZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQWdCakYsTUFBTSxDQUFDLE9BQU8sT0FBTyxZQUFhLFNBQVEsb0JBQW9CO0lBQzVELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUM7SUFFNUMsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQix5Q0FBeUM7UUFDekMsZ0RBQWdEO0tBQ2pELENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDZCxXQUFXLEVBQUUsYUFBYTtZQUMxQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztLQUNsQyxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWhELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUNsQyxxQkFBcUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUMvQixDQUFDO1lBRUYsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRWxCLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNmLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLFNBQVM7Z0JBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssV0FBVztvQkFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO29CQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUUxQixPQUFPLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzFCLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtnQkFDbkIsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLE9BQU8sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDakMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQzVELENBQUMsQ0FBQztZQUVILE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFOUMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDbkMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVE7d0JBQ3pCLENBQUMsQ0FBQyxjQUFjLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHO3dCQUNqRCxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RSxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ3ZELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQ1IsaUJBQWlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQzFFLENBQ0YsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztZQUNsQixVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsgc3VjY2VzcywganNvbiwgY29sb3JzLCBzcGlubmVyLCBpc0pzb25Nb2RlIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIFRlbXBsYXRlUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgdmFyaWFibGVzOiBBcnJheTx7IGtleTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGZhbGxiYWNrPzogc3RyaW5nIH0+O1xuICBpc19wcmVzZXQ6IGJvb2xlYW47XG4gIHByZXNldF9zbHVnOiBzdHJpbmcgfCBudWxsO1xuICBzdGF0dXM6IHN0cmluZztcbiAgdmVyc2lvbjogbnVtYmVyO1xuICBwdWJsaXNoZWRfYXQ6IHN0cmluZyB8IG51bGw7XG4gIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgdXBkYXRlZF9hdDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZW1wbGF0ZXNHZXQgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiR2V0IHRlbXBsYXRlIGRldGFpbHNcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB0ZW1wbGF0ZXMgZ2V0IHRwbF94eHhcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHRlbXBsYXRlcyBnZXQgdHBsX3ByZXNldF8yZmFcIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiVGVtcGxhdGUgSURcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShUZW1wbGF0ZXNHZXQpO1xuXG4gICAgY29uc3QgZ2V0U3Bpbm5lciA9IHNwaW5uZXIoXCJGZXRjaGluZyB0ZW1wbGF0ZS4uLlwiKTtcblxuICAgIGlmICghaXNKc29uTW9kZSgpKSB7XG4gICAgICBnZXRTcGlubmVyLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LmdldDxUZW1wbGF0ZVJlc3BvbnNlPihcbiAgICAgICAgYC9hcGkvdjEvdGVtcGxhdGVzLyR7YXJncy5pZH1gLFxuICAgICAgKTtcblxuICAgICAgZ2V0U3Bpbm5lci5zdG9wKCk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RhdHVzRGlzcGxheSA9IHJlc3BvbnNlLmlzX3ByZXNldFxuICAgICAgICA/IGNvbG9ycy5wcmltYXJ5KFwicHJlc2V0XCIpXG4gICAgICAgIDogcmVzcG9uc2Uuc3RhdHVzID09PSBcInB1Ymxpc2hlZFwiXG4gICAgICAgICAgPyBjb2xvcnMuc3VjY2VzcyhcInB1Ymxpc2hlZFwiKVxuICAgICAgICAgIDogY29sb3JzLmRpbShcImRyYWZ0XCIpO1xuXG4gICAgICBzdWNjZXNzKFwiVGVtcGxhdGUgZGV0YWlsc1wiLCB7XG4gICAgICAgIElEOiBjb2xvcnMuY29kZShyZXNwb25zZS5pZCksXG4gICAgICAgIE5hbWU6IHJlc3BvbnNlLm5hbWUsXG4gICAgICAgIFR5cGU6IHN0YXR1c0Rpc3BsYXksXG4gICAgICAgIFZlcnNpb246IFN0cmluZyhyZXNwb25zZS52ZXJzaW9uKSxcbiAgICAgICAgLi4uKHJlc3BvbnNlLnByZXNldF9zbHVnICYmIHsgU2x1ZzogcmVzcG9uc2UucHJlc2V0X3NsdWcgfSksXG4gICAgICB9KTtcblxuICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiTWVzc2FnZSBUZXh0OlwiKSk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiICBcIiArIHJlc3BvbnNlLnRleHQpKTtcblxuICAgICAgaWYgKHJlc3BvbnNlLnZhcmlhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiVmFyaWFibGVzOlwiKSk7XG4gICAgICAgIGZvciAoY29uc3QgdiBvZiByZXNwb25zZS52YXJpYWJsZXMpIHtcbiAgICAgICAgICBjb25zdCBmYWxsYmFjayA9IHYuZmFsbGJhY2tcbiAgICAgICAgICAgID8gYCAoZGVmYXVsdDogJHtjb2xvcnMuZGltKFN0cmluZyh2LmZhbGxiYWNrKSl9KWBcbiAgICAgICAgICAgIDogXCJcIjtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICAke2NvbG9ycy5jb2RlKGB7eyR7di5rZXl9fX1gKX0gLSAke3YudHlwZX0ke2ZhbGxiYWNrfWApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVzcG9uc2UuaXNfcHJlc2V0ICYmIHJlc3BvbnNlLnN0YXR1cyA9PT0gXCJkcmFmdFwiKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICBgUHVibGlzaCB3aXRoOiAke2NvbG9ycy5jb2RlKGBzZW5kbHkgdGVtcGxhdGVzIHB1Ymxpc2ggJHtyZXNwb25zZS5pZH1gKX1gLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGdldFNwaW5uZXIuc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TemplatesList 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,49 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
3
|
+
import { json, colors, spinner, isJsonMode, table } from "../../lib/output.js";
|
|
4
|
+
export default class TemplatesList extends AuthenticatedCommand {
|
|
5
|
+
static description = "List your SMS templates";
|
|
6
|
+
static examples = [
|
|
7
|
+
"<%= config.bin %> templates list",
|
|
8
|
+
"<%= config.bin %> templates list --json",
|
|
9
|
+
];
|
|
10
|
+
static flags = {
|
|
11
|
+
...AuthenticatedCommand.baseFlags,
|
|
12
|
+
};
|
|
13
|
+
async run() {
|
|
14
|
+
await this.parse(TemplatesList);
|
|
15
|
+
const listSpinner = spinner("Fetching templates...");
|
|
16
|
+
if (!isJsonMode()) {
|
|
17
|
+
listSpinner.start();
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const response = await apiClient.get("/api/v1/templates");
|
|
21
|
+
listSpinner.stop();
|
|
22
|
+
if (isJsonMode()) {
|
|
23
|
+
json(response);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (response.templates.length === 0) {
|
|
27
|
+
console.log(colors.dim("No templates found."));
|
|
28
|
+
console.log(colors.dim(`View presets with: ${colors.code("sendly templates presets")}`));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const rows = response.templates.map((t) => ({
|
|
32
|
+
...t,
|
|
33
|
+
typeDisplay: t.is_preset ? colors.primary("preset") : t.status === "published" ? colors.success("published") : colors.dim("draft"),
|
|
34
|
+
}));
|
|
35
|
+
table(rows, [
|
|
36
|
+
{ header: "ID", key: "id", width: 20, formatter: (v) => colors.code(String(v).slice(0, 16) + "...") },
|
|
37
|
+
{ header: "Name", key: "name", width: 20 },
|
|
38
|
+
{ header: "Type", key: "typeDisplay", width: 12 },
|
|
39
|
+
{ header: "Ver", key: "version", width: 5 },
|
|
40
|
+
{ header: "Text", key: "text", width: 40, formatter: (v) => String(v).length > 40 ? String(v).slice(0, 37) + "..." : String(v) },
|
|
41
|
+
]);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
listSpinner.stop();
|
|
45
|
+
throw err;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy90ZW1wbGF0ZXMvbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQWlCL0UsTUFBTSxDQUFDLE9BQU8sT0FBTyxhQUFjLFNBQVEsb0JBQW9CO0lBQzdELE1BQU0sQ0FBQyxXQUFXLEdBQUcseUJBQXlCLENBQUM7SUFFL0MsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQixrQ0FBa0M7UUFDbEMseUNBQXlDO0tBQzFDLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVoQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNsQixXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBZSxtQkFBbUIsQ0FBQyxDQUFDO1lBRXhFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVuQixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDZixPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FDUixzQkFBc0IsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQ2hFLENBQ0YsQ0FBQztnQkFDRixPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQyxHQUFHLENBQUM7Z0JBQ0osV0FBVyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQzthQUNuSSxDQUFDLENBQUMsQ0FBQztZQUVKLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ1YsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7Z0JBQzFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7Z0JBQ2pELEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7Z0JBQzNDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDakksQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7WUFDbEIsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25CLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7IGpzb24sIGNvbG9ycywgc3Bpbm5lciwgaXNKc29uTW9kZSwgdGFibGUgfSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5pbnRlcmZhY2UgVGVtcGxhdGUge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgaXNfcHJlc2V0OiBib29sZWFuO1xuICBwcmVzZXRfc2x1Zzogc3RyaW5nIHwgbnVsbDtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgY3JlYXRlZF9hdDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTGlzdFJlc3BvbnNlIHtcbiAgdGVtcGxhdGVzOiBUZW1wbGF0ZVtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZW1wbGF0ZXNMaXN0IGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkxpc3QgeW91ciBTTVMgdGVtcGxhdGVzXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gdGVtcGxhdGVzIGxpc3RcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHRlbXBsYXRlcyBsaXN0IC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucGFyc2UoVGVtcGxhdGVzTGlzdCk7XG5cbiAgICBjb25zdCBsaXN0U3Bpbm5lciA9IHNwaW5uZXIoXCJGZXRjaGluZyB0ZW1wbGF0ZXMuLi5cIik7XG5cbiAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgbGlzdFNwaW5uZXIuc3RhcnQoKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQuZ2V0PExpc3RSZXNwb25zZT4oXCIvYXBpL3YxL3RlbXBsYXRlc1wiKTtcblxuICAgICAgbGlzdFNwaW5uZXIuc3RvcCgpO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNwb25zZS50ZW1wbGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJObyB0ZW1wbGF0ZXMgZm91bmQuXCIpKTtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgIGBWaWV3IHByZXNldHMgd2l0aDogJHtjb2xvcnMuY29kZShcInNlbmRseSB0ZW1wbGF0ZXMgcHJlc2V0c1wiKX1gLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgcm93cyA9IHJlc3BvbnNlLnRlbXBsYXRlcy5tYXAoKHQpID0+ICh7XG4gICAgICAgIC4uLnQsXG4gICAgICAgIHR5cGVEaXNwbGF5OiB0LmlzX3ByZXNldCA/IGNvbG9ycy5wcmltYXJ5KFwicHJlc2V0XCIpIDogdC5zdGF0dXMgPT09IFwicHVibGlzaGVkXCIgPyBjb2xvcnMuc3VjY2VzcyhcInB1Ymxpc2hlZFwiKSA6IGNvbG9ycy5kaW0oXCJkcmFmdFwiKSxcbiAgICAgIH0pKTtcblxuICAgICAgdGFibGUocm93cywgW1xuICAgICAgICB7IGhlYWRlcjogXCJJRFwiLCBrZXk6IFwiaWRcIiwgd2lkdGg6IDIwLCBmb3JtYXR0ZXI6ICh2KSA9PiBjb2xvcnMuY29kZShTdHJpbmcodikuc2xpY2UoMCwgMTYpICsgXCIuLi5cIikgfSxcbiAgICAgICAgeyBoZWFkZXI6IFwiTmFtZVwiLCBrZXk6IFwibmFtZVwiLCB3aWR0aDogMjAgfSxcbiAgICAgICAgeyBoZWFkZXI6IFwiVHlwZVwiLCBrZXk6IFwidHlwZURpc3BsYXlcIiwgd2lkdGg6IDEyIH0sXG4gICAgICAgIHsgaGVhZGVyOiBcIlZlclwiLCBrZXk6IFwidmVyc2lvblwiLCB3aWR0aDogNSB9LFxuICAgICAgICB7IGhlYWRlcjogXCJUZXh0XCIsIGtleTogXCJ0ZXh0XCIsIHdpZHRoOiA0MCwgZm9ybWF0dGVyOiAodikgPT4gU3RyaW5nKHYpLmxlbmd0aCA+IDQwID8gU3RyaW5nKHYpLnNsaWNlKDAsIDM3KSArIFwiLi4uXCIgOiBTdHJpbmcodikgfSxcbiAgICAgIF0pO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBsaXN0U3Bpbm5lci5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TemplatesPresets 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,45 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
3
|
+
import { json, colors, spinner, isJsonMode } from "../../lib/output.js";
|
|
4
|
+
export default class TemplatesPresets extends AuthenticatedCommand {
|
|
5
|
+
static description = "List available preset templates";
|
|
6
|
+
static examples = [
|
|
7
|
+
"<%= config.bin %> templates presets",
|
|
8
|
+
"<%= config.bin %> templates presets --json",
|
|
9
|
+
];
|
|
10
|
+
static flags = {
|
|
11
|
+
...AuthenticatedCommand.baseFlags,
|
|
12
|
+
};
|
|
13
|
+
async run() {
|
|
14
|
+
await this.parse(TemplatesPresets);
|
|
15
|
+
const listSpinner = spinner("Fetching preset templates...");
|
|
16
|
+
if (!isJsonMode()) {
|
|
17
|
+
listSpinner.start();
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const response = await apiClient.get("/api/v1/templates/presets", {}, false);
|
|
21
|
+
listSpinner.stop();
|
|
22
|
+
if (isJsonMode()) {
|
|
23
|
+
json(response);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
console.log(colors.bold("\nAvailable Preset Templates\n"));
|
|
27
|
+
console.log(colors.dim("Use these directly with verify send or clone to customize.\n"));
|
|
28
|
+
for (const template of response.templates) {
|
|
29
|
+
console.log(colors.bold(template.name));
|
|
30
|
+
console.log(` ID: ${colors.code(template.id)}`);
|
|
31
|
+
console.log(` Slug: ${colors.primary(template.preset_slug)}`);
|
|
32
|
+
console.log(` Text: ${colors.dim(template.text)}`);
|
|
33
|
+
console.log(` Variables: ${template.variables.map((v) => colors.code(`{{${v.key}}}`)).join(", ")}`);
|
|
34
|
+
console.log();
|
|
35
|
+
}
|
|
36
|
+
console.log(colors.dim("Usage example:"));
|
|
37
|
+
console.log(colors.code(' sendly verify send --to "+1234567890" --template tpl_preset_2fa'));
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
listSpinner.stop();
|
|
41
|
+
throw err;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy90ZW1wbGF0ZXMvcHJlc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBUyxNQUFNLHFCQUFxQixDQUFDO0FBZS9FLE1BQU0sQ0FBQyxPQUFPLE9BQU8sZ0JBQWlCLFNBQVEsb0JBQW9CO0lBQ2hFLE1BQU0sQ0FBQyxXQUFXLEdBQUcsaUNBQWlDLENBQUM7SUFFdkQsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQixxQ0FBcUM7UUFDckMsNENBQTRDO0tBQzdDLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUNsQywyQkFBMkIsRUFDM0IsRUFBRSxFQUNGLEtBQUssQ0FDTixDQUFDO1lBRUYsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRW5CLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNmLE9BQU87WUFDVCxDQUFDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztZQUMzRCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsOERBQThELENBQUMsQ0FDM0UsQ0FBQztZQUVGLEtBQUssTUFBTSxRQUFRLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELE9BQU8sQ0FBQyxHQUFHLENBQ1QsZ0JBQWdCLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDeEYsQ0FBQztnQkFDRixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDaEIsQ0FBQztZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsSUFBSSxDQUNULG1FQUFtRSxDQUNwRSxDQUNGLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztZQUNsQixXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgY29sb3JzLCBzcGlubmVyLCBpc0pzb25Nb2RlLCB0YWJsZSB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBQcmVzZXRUZW1wbGF0ZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdGV4dDogc3RyaW5nO1xuICBwcmVzZXRfc2x1Zzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB2YXJpYWJsZXM6IEFycmF5PHsga2V5OiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgZmFsbGJhY2s/OiBzdHJpbmcgfT47XG59XG5cbmludGVyZmFjZSBQcmVzZXRzUmVzcG9uc2Uge1xuICB0ZW1wbGF0ZXM6IFByZXNldFRlbXBsYXRlW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbXBsYXRlc1ByZXNldHMgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiTGlzdCBhdmFpbGFibGUgcHJlc2V0IHRlbXBsYXRlc1wiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHRlbXBsYXRlcyBwcmVzZXRzXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB0ZW1wbGF0ZXMgcHJlc2V0cyAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnBhcnNlKFRlbXBsYXRlc1ByZXNldHMpO1xuXG4gICAgY29uc3QgbGlzdFNwaW5uZXIgPSBzcGlubmVyKFwiRmV0Y2hpbmcgcHJlc2V0IHRlbXBsYXRlcy4uLlwiKTtcblxuICAgIGlmICghaXNKc29uTW9kZSgpKSB7XG4gICAgICBsaXN0U3Bpbm5lci5zdGFydCgpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8UHJlc2V0c1Jlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL3YxL3RlbXBsYXRlcy9wcmVzZXRzXCIsXG4gICAgICAgIHt9LFxuICAgICAgICBmYWxzZSwgLy8gTm8gYXV0aCByZXF1aXJlZFxuICAgICAgKTtcblxuICAgICAgbGlzdFNwaW5uZXIuc3RvcCgpO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiXFxuQXZhaWxhYmxlIFByZXNldCBUZW1wbGF0ZXNcXG5cIikpO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9ycy5kaW0oXCJVc2UgdGhlc2UgZGlyZWN0bHkgd2l0aCB2ZXJpZnkgc2VuZCBvciBjbG9uZSB0byBjdXN0b21pemUuXFxuXCIpLFxuICAgICAgKTtcblxuICAgICAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiByZXNwb25zZS50ZW1wbGF0ZXMpIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQodGVtcGxhdGUubmFtZSkpO1xuICAgICAgICBjb25zb2xlLmxvZyhgICBJRDogJHtjb2xvcnMuY29kZSh0ZW1wbGF0ZS5pZCl9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgIFNsdWc6ICR7Y29sb3JzLnByaW1hcnkodGVtcGxhdGUucHJlc2V0X3NsdWcpfWApO1xuICAgICAgICBjb25zb2xlLmxvZyhgICBUZXh0OiAke2NvbG9ycy5kaW0odGVtcGxhdGUudGV4dCl9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAgIFZhcmlhYmxlczogJHt0ZW1wbGF0ZS52YXJpYWJsZXMubWFwKCh2KSA9PiBjb2xvcnMuY29kZShge3ske3Yua2V5fX19YCkpLmpvaW4oXCIsIFwiKX1gLFxuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiVXNhZ2UgZXhhbXBsZTpcIikpO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9ycy5jb2RlKFxuICAgICAgICAgICcgIHNlbmRseSB2ZXJpZnkgc2VuZCAtLXRvIFwiKzEyMzQ1Njc4OTBcIiAtLXRlbXBsYXRlIHRwbF9wcmVzZXRfMmZhJyxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGxpc3RTcGlubmVyLnN0b3AoKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TemplatesPublish 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,57 @@
|
|
|
1
|
+
import { Args } 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 TemplatesPublish extends AuthenticatedCommand {
|
|
6
|
+
static description = "Publish a draft template (locks it for use)";
|
|
7
|
+
static examples = ["<%= config.bin %> templates publish tpl_xxx"];
|
|
8
|
+
static args = {
|
|
9
|
+
id: Args.string({
|
|
10
|
+
description: "Template ID",
|
|
11
|
+
required: true,
|
|
12
|
+
}),
|
|
13
|
+
};
|
|
14
|
+
static flags = {
|
|
15
|
+
...AuthenticatedCommand.baseFlags,
|
|
16
|
+
};
|
|
17
|
+
async run() {
|
|
18
|
+
const { args } = await this.parse(TemplatesPublish);
|
|
19
|
+
const publishSpinner = spinner("Publishing template...");
|
|
20
|
+
if (!isJsonMode()) {
|
|
21
|
+
publishSpinner.start();
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const response = await apiClient.post(`/api/v1/templates/${args.id}/publish`);
|
|
25
|
+
publishSpinner.stop();
|
|
26
|
+
if (isJsonMode()) {
|
|
27
|
+
json(response);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
success("Template published", {
|
|
31
|
+
ID: colors.code(response.id),
|
|
32
|
+
Name: response.name,
|
|
33
|
+
Status: colors.success(response.status),
|
|
34
|
+
"Published At": new Date(response.published_at).toLocaleString(),
|
|
35
|
+
});
|
|
36
|
+
console.log();
|
|
37
|
+
console.log(colors.dim(`Use with: ${colors.code(`sendly verify send --to "+1234567890" --template ${response.id}`)}`));
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
publishSpinner.stop();
|
|
41
|
+
if (err.message?.includes("already published")) {
|
|
42
|
+
error("Template already published");
|
|
43
|
+
}
|
|
44
|
+
else if (err.message?.includes("preset")) {
|
|
45
|
+
error("Cannot publish preset templates");
|
|
46
|
+
}
|
|
47
|
+
else if (err.message?.includes("not_found")) {
|
|
48
|
+
error("Template not found");
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
throw err;
|
|
52
|
+
}
|
|
53
|
+
this.exit(1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy90ZW1wbGF0ZXMvcHVibGlzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxJQUFJLEVBQ0osTUFBTSxFQUNOLE9BQU8sRUFDUCxVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQVc3QixNQUFNLENBQUMsT0FBTyxPQUFPLGdCQUFpQixTQUFRLG9CQUFvQjtJQUNoRSxNQUFNLENBQUMsV0FBVyxHQUFHLDZDQUE2QyxDQUFDO0lBRW5FLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBRWxFLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNkLFdBQVcsRUFBRSxhQUFhO1lBQzFCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVwRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNsQixjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDbkMscUJBQXFCLElBQUksQ0FBQyxFQUFFLFVBQVUsQ0FDdkMsQ0FBQztZQUVGLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUV0QixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDZixPQUFPO1lBQ1QsQ0FBQztZQUVELE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtnQkFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2dCQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxjQUFjLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLGNBQWMsRUFBRTthQUNqRSxDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQ1IsYUFBYSxNQUFNLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUM5RixDQUNGLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztZQUNsQixjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFdEIsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7aUJBQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUMzQyxDQUFDO2lCQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDOUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIGpzb24sXG4gIGNvbG9ycyxcbiAgc3Bpbm5lcixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIFRlbXBsYXRlUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgcHVibGlzaGVkX2F0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbXBsYXRlc1B1Ymxpc2ggZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiUHVibGlzaCBhIGRyYWZ0IHRlbXBsYXRlIChsb2NrcyBpdCBmb3IgdXNlKVwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcIjwlPSBjb25maWcuYmluICU+IHRlbXBsYXRlcyBwdWJsaXNoIHRwbF94eHhcIl07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgaWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRlbXBsYXRlIElEXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoVGVtcGxhdGVzUHVibGlzaCk7XG5cbiAgICBjb25zdCBwdWJsaXNoU3Bpbm5lciA9IHNwaW5uZXIoXCJQdWJsaXNoaW5nIHRlbXBsYXRlLi4uXCIpO1xuXG4gICAgaWYgKCFpc0pzb25Nb2RlKCkpIHtcbiAgICAgIHB1Ymxpc2hTcGlubmVyLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8VGVtcGxhdGVSZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL3YxL3RlbXBsYXRlcy8ke2FyZ3MuaWR9L3B1Ymxpc2hgLFxuICAgICAgKTtcblxuICAgICAgcHVibGlzaFNwaW5uZXIuc3RvcCgpO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHN1Y2Nlc3MoXCJUZW1wbGF0ZSBwdWJsaXNoZWRcIiwge1xuICAgICAgICBJRDogY29sb3JzLmNvZGUocmVzcG9uc2UuaWQpLFxuICAgICAgICBOYW1lOiByZXNwb25zZS5uYW1lLFxuICAgICAgICBTdGF0dXM6IGNvbG9ycy5zdWNjZXNzKHJlc3BvbnNlLnN0YXR1cyksXG4gICAgICAgIFwiUHVibGlzaGVkIEF0XCI6IG5ldyBEYXRlKHJlc3BvbnNlLnB1Ymxpc2hlZF9hdCkudG9Mb2NhbGVTdHJpbmcoKSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgYFVzZSB3aXRoOiAke2NvbG9ycy5jb2RlKGBzZW5kbHkgdmVyaWZ5IHNlbmQgLS10byBcIisxMjM0NTY3ODkwXCIgLS10ZW1wbGF0ZSAke3Jlc3BvbnNlLmlkfWApfWAsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBwdWJsaXNoU3Bpbm5lci5zdG9wKCk7XG5cbiAgICAgIGlmIChlcnIubWVzc2FnZT8uaW5jbHVkZXMoXCJhbHJlYWR5IHB1Ymxpc2hlZFwiKSkge1xuICAgICAgICBlcnJvcihcIlRlbXBsYXRlIGFscmVhZHkgcHVibGlzaGVkXCIpO1xuICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZT8uaW5jbHVkZXMoXCJwcmVzZXRcIikpIHtcbiAgICAgICAgZXJyb3IoXCJDYW5ub3QgcHVibGlzaCBwcmVzZXQgdGVtcGxhdGVzXCIpO1xuICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZT8uaW5jbHVkZXMoXCJub3RfZm91bmRcIikpIHtcbiAgICAgICAgZXJyb3IoXCJUZW1wbGF0ZSBub3QgZm91bmRcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class VerifyCheck 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
|
+
code: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|