@sendly/cli 3.36.0 → 3.37.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.
Files changed (43) hide show
  1. package/README.md +204 -1
  2. package/dist/commands/10dlc/assignments/list.d.ts +10 -0
  3. package/dist/commands/10dlc/assignments/list.js +67 -0
  4. package/dist/commands/10dlc/brands/create.d.ts +25 -0
  5. package/dist/commands/10dlc/brands/create.js +89 -0
  6. package/dist/commands/10dlc/brands/get.d.ts +13 -0
  7. package/dist/commands/10dlc/brands/get.js +63 -0
  8. package/dist/commands/10dlc/brands/list.d.ts +10 -0
  9. package/dist/commands/10dlc/brands/list.js +63 -0
  10. package/dist/commands/10dlc/campaigns/assign.d.ts +14 -0
  11. package/dist/commands/10dlc/campaigns/assign.js +64 -0
  12. package/dist/commands/10dlc/campaigns/create.d.ts +24 -0
  13. package/dist/commands/10dlc/campaigns/create.js +118 -0
  14. package/dist/commands/10dlc/campaigns/get.d.ts +13 -0
  15. package/dist/commands/10dlc/campaigns/get.js +84 -0
  16. package/dist/commands/10dlc/campaigns/list.d.ts +10 -0
  17. package/dist/commands/10dlc/campaigns/list.js +70 -0
  18. package/dist/commands/10dlc/qualify.d.ts +14 -0
  19. package/dist/commands/10dlc/qualify.js +56 -0
  20. package/dist/commands/keys/rotate.js +7 -12
  21. package/dist/commands/links/create.d.ts +24 -0
  22. package/dist/commands/links/create.js +71 -0
  23. package/dist/commands/links/disable.d.ts +21 -0
  24. package/dist/commands/links/disable.js +55 -0
  25. package/dist/commands/links/list.d.ts +19 -0
  26. package/dist/commands/links/list.js +85 -0
  27. package/dist/commands/numbers/buy.js +15 -1
  28. package/dist/commands/numbers/get.d.ts +20 -0
  29. package/dist/commands/numbers/get.js +52 -0
  30. package/dist/commands/numbers/list.js +18 -1
  31. package/dist/commands/numbers/release.d.ts +23 -0
  32. package/dist/commands/numbers/release.js +67 -0
  33. package/dist/commands/numbers/update.d.ts +25 -0
  34. package/dist/commands/numbers/update.js +70 -0
  35. package/dist/commands/sms/group.d.ts +25 -0
  36. package/dist/commands/sms/group.js +164 -0
  37. package/dist/commands/sms/upload-media.d.ts +1 -1
  38. package/dist/commands/sms/upload-media.js +4 -4
  39. package/dist/commands/templates/enhance.js +3 -3
  40. package/dist/commands/upgrade.d.ts +1 -16
  41. package/dist/commands/upgrade.js +131 -38
  42. package/oclif.manifest.json +3964 -2966
  43. package/package.json +16 -1
@@ -0,0 +1,67 @@
1
+ import { Args, Flags } from "@oclif/core";
2
+ import inquirer from "inquirer";
3
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
4
+ import { apiClient } from "../../lib/api-client.js";
5
+ import { success, info, json, colors, isJsonMode } from "../../lib/output.js";
6
+ /**
7
+ * `sendly numbers release <id>` — give up a number you own. A live paid
8
+ * purchase is scheduled to release at the end of the current billing period
9
+ * (undo with `sendly numbers update <id> --keep`); anything else is released at
10
+ * the carrier immediately.
11
+ *
12
+ * Wraps `DELETE /api/v1/numbers/:id`. Prompts for confirmation unless --yes is
13
+ * passed. Returns 404 when the id isn't one of your numbers.
14
+ */
15
+ export default class NumbersRelease extends AuthenticatedCommand {
16
+ static description = "Release a number you own (paid purchases release at period end, others immediately)";
17
+ static examples = [
18
+ "<%= config.bin %> numbers release num_abc123",
19
+ "<%= config.bin %> numbers release num_abc123 --yes",
20
+ "<%= config.bin %> numbers release num_abc123 --json",
21
+ ];
22
+ static args = {
23
+ id: Args.string({
24
+ description: "Phone number ID (from `sendly numbers list`)",
25
+ required: true,
26
+ }),
27
+ };
28
+ static flags = {
29
+ ...AuthenticatedCommand.baseFlags,
30
+ yes: Flags.boolean({
31
+ char: "y",
32
+ description: "Skip confirmation prompt",
33
+ default: false,
34
+ }),
35
+ };
36
+ async run() {
37
+ const { args, flags } = await this.parse(NumbersRelease);
38
+ if (!flags.yes && !isJsonMode() && process.stdin.isTTY) {
39
+ const { confirm } = await inquirer.prompt([
40
+ {
41
+ type: "confirm",
42
+ name: "confirm",
43
+ message: `Release ${colors.code(args.id)}? Paid numbers release at the end of the billing period; everything else releases immediately.`,
44
+ default: false,
45
+ },
46
+ ]);
47
+ if (!confirm) {
48
+ info("Release cancelled");
49
+ return;
50
+ }
51
+ }
52
+ const response = await apiClient.delete(`/api/v1/numbers/${encodeURIComponent(args.id)}`);
53
+ if (isJsonMode()) {
54
+ json(response);
55
+ return;
56
+ }
57
+ if (response.scheduled && response.scheduledReleaseAt) {
58
+ success("Number scheduled for release", {
59
+ Releases: new Date(response.scheduledReleaseAt).toLocaleDateString(),
60
+ Note: `It stays active until then. Undo with: sendly numbers update ${args.id} --keep`,
61
+ });
62
+ return;
63
+ }
64
+ success("Number released");
65
+ }
66
+ }
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9udW1iZXJzL3JlbGVhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBUTlFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxjQUFlLFNBQVEsb0JBQW9CO0lBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLHFGQUFxRixDQUFDO0lBRXhGLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsOENBQThDO1FBQzlDLG9EQUFvRDtRQUNwRCxxREFBcUQ7S0FDdEQsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNkLFdBQVcsRUFBRSw4Q0FBOEM7WUFDM0QsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsMEJBQTBCO1lBQ3ZDLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXpELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2RCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUN4QztvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixJQUFJLEVBQUUsU0FBUztvQkFDZixPQUFPLEVBQUUsV0FBVyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0dBQWdHO29CQUN4SSxPQUFPLEVBQUUsS0FBSztpQkFDZjthQUNGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDMUIsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUNyQyxtQkFBbUIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ2pELENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdEQsT0FBTyxDQUFDLDhCQUE4QixFQUFFO2dCQUN0QyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3BFLElBQUksRUFBRSxnRUFBZ0UsSUFBSSxDQUFDLEVBQUUsU0FBUzthQUN2RixDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IGlucXVpcmVyIGZyb20gXCJpbnF1aXJlclwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBzdWNjZXNzLCBpbmZvLCBqc29uLCBjb2xvcnMsIGlzSnNvbk1vZGUgfSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5pbnRlcmZhY2UgUmVsZWFzZVJlc3BvbnNlIHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgc2NoZWR1bGVkPzogYm9vbGVhbjtcbiAgc2NoZWR1bGVkUmVsZWFzZUF0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIGBzZW5kbHkgbnVtYmVycyByZWxlYXNlIDxpZD5gIOKAlCBnaXZlIHVwIGEgbnVtYmVyIHlvdSBvd24uIEEgbGl2ZSBwYWlkXG4gKiBwdXJjaGFzZSBpcyBzY2hlZHVsZWQgdG8gcmVsZWFzZSBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJpbGxpbmcgcGVyaW9kXG4gKiAodW5kbyB3aXRoIGBzZW5kbHkgbnVtYmVycyB1cGRhdGUgPGlkPiAtLWtlZXBgKTsgYW55dGhpbmcgZWxzZSBpcyByZWxlYXNlZCBhdFxuICogdGhlIGNhcnJpZXIgaW1tZWRpYXRlbHkuXG4gKlxuICogV3JhcHMgYERFTEVURSAvYXBpL3YxL251bWJlcnMvOmlkYC4gUHJvbXB0cyBmb3IgY29uZmlybWF0aW9uIHVubGVzcyAtLXllcyBpc1xuICogcGFzc2VkLiBSZXR1cm5zIDQwNCB3aGVuIHRoZSBpZCBpc24ndCBvbmUgb2YgeW91ciBudW1iZXJzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOdW1iZXJzUmVsZWFzZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIlJlbGVhc2UgYSBudW1iZXIgeW91IG93biAocGFpZCBwdXJjaGFzZXMgcmVsZWFzZSBhdCBwZXJpb2QgZW5kLCBvdGhlcnMgaW1tZWRpYXRlbHkpXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gbnVtYmVycyByZWxlYXNlIG51bV9hYmMxMjNcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IG51bWJlcnMgcmVsZWFzZSBudW1fYWJjMTIzIC0teWVzXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBudW1iZXJzIHJlbGVhc2UgbnVtX2FiYzEyMyAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiUGhvbmUgbnVtYmVyIElEIChmcm9tIGBzZW5kbHkgbnVtYmVycyBsaXN0YClcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgeWVzOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGNoYXI6IFwieVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiU2tpcCBjb25maXJtYXRpb24gcHJvbXB0XCIsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzLCBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShOdW1iZXJzUmVsZWFzZSk7XG5cbiAgICBpZiAoIWZsYWdzLnllcyAmJiAhaXNKc29uTW9kZSgpICYmIHByb2Nlc3Muc3RkaW4uaXNUVFkpIHtcbiAgICAgIGNvbnN0IHsgY29uZmlybSB9ID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY29uZmlybVwiLFxuICAgICAgICAgIG5hbWU6IFwiY29uZmlybVwiLFxuICAgICAgICAgIG1lc3NhZ2U6IGBSZWxlYXNlICR7Y29sb3JzLmNvZGUoYXJncy5pZCl9PyBQYWlkIG51bWJlcnMgcmVsZWFzZSBhdCB0aGUgZW5kIG9mIHRoZSBiaWxsaW5nIHBlcmlvZDsgZXZlcnl0aGluZyBlbHNlIHJlbGVhc2VzIGltbWVkaWF0ZWx5LmAsXG4gICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICAgIGlmICghY29uZmlybSkge1xuICAgICAgICBpbmZvKFwiUmVsZWFzZSBjYW5jZWxsZWRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5kZWxldGU8UmVsZWFzZVJlc3BvbnNlPihcbiAgICAgIGAvYXBpL3YxL251bWJlcnMvJHtlbmNvZGVVUklDb21wb25lbnQoYXJncy5pZCl9YCxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLnNjaGVkdWxlZCAmJiByZXNwb25zZS5zY2hlZHVsZWRSZWxlYXNlQXQpIHtcbiAgICAgIHN1Y2Nlc3MoXCJOdW1iZXIgc2NoZWR1bGVkIGZvciByZWxlYXNlXCIsIHtcbiAgICAgICAgUmVsZWFzZXM6IG5ldyBEYXRlKHJlc3BvbnNlLnNjaGVkdWxlZFJlbGVhc2VBdCkudG9Mb2NhbGVEYXRlU3RyaW5nKCksXG4gICAgICAgIE5vdGU6IGBJdCBzdGF5cyBhY3RpdmUgdW50aWwgdGhlbi4gVW5kbyB3aXRoOiBzZW5kbHkgbnVtYmVycyB1cGRhdGUgJHthcmdzLmlkfSAtLWtlZXBgLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VjY2VzcyhcIk51bWJlciByZWxlYXNlZFwiKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,25 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ /**
3
+ * `sendly numbers update <id>` — mutate a number you own. Two mutations are
4
+ * supported today:
5
+ * --default make this the workspace default sender (the number must be
6
+ * active; the previous default is cleared atomically)
7
+ * --keep cancel a scheduled period-end release and keep the number
8
+ *
9
+ * Wraps `PATCH /api/v1/numbers/:id`. At least one of --default / --keep is
10
+ * required. Returns the full number record.
11
+ */
12
+ export default class NumbersUpdate extends AuthenticatedCommand {
13
+ static description: string;
14
+ static examples: string[];
15
+ static args: {
16
+ id: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
17
+ };
18
+ static flags: {
19
+ default: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
20
+ keep: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
21
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
22
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
23
+ };
24
+ run(): Promise<void>;
25
+ }
@@ -0,0 +1,70 @@
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, formatStatus, isJsonMode, } from "../../lib/output.js";
5
+ /**
6
+ * `sendly numbers update <id>` — mutate a number you own. Two mutations are
7
+ * supported today:
8
+ * --default make this the workspace default sender (the number must be
9
+ * active; the previous default is cleared atomically)
10
+ * --keep cancel a scheduled period-end release and keep the number
11
+ *
12
+ * Wraps `PATCH /api/v1/numbers/:id`. At least one of --default / --keep is
13
+ * required. Returns the full number record.
14
+ */
15
+ export default class NumbersUpdate extends AuthenticatedCommand {
16
+ static description = "Update a number you own: make it the default sender (--default) or cancel a scheduled release (--keep)";
17
+ static examples = [
18
+ "<%= config.bin %> numbers update num_abc123 --default",
19
+ "<%= config.bin %> numbers update num_abc123 --keep",
20
+ "<%= config.bin %> numbers update num_abc123 --default --json",
21
+ ];
22
+ static args = {
23
+ id: Args.string({
24
+ description: "Phone number ID (from `sendly numbers list`)",
25
+ required: true,
26
+ }),
27
+ };
28
+ static flags = {
29
+ ...AuthenticatedCommand.baseFlags,
30
+ default: Flags.boolean({
31
+ char: "d",
32
+ description: "Make this the workspace default sender (must be active)",
33
+ default: false,
34
+ }),
35
+ keep: Flags.boolean({
36
+ char: "k",
37
+ description: "Cancel a scheduled release and keep the number",
38
+ default: false,
39
+ }),
40
+ };
41
+ async run() {
42
+ const { args, flags } = await this.parse(NumbersUpdate);
43
+ const body = {};
44
+ if (flags.default)
45
+ body.isDefault = true;
46
+ if (flags.keep)
47
+ body.pendingCancellation = false;
48
+ if (Object.keys(body).length === 0) {
49
+ error("Nothing to update", {
50
+ hint: "Pass --default to make it the default sender, or --keep to cancel a scheduled release.",
51
+ });
52
+ this.exit(1);
53
+ }
54
+ const number = await apiClient.patch(`/api/v1/numbers/${encodeURIComponent(args.id)}`, body);
55
+ if (isJsonMode()) {
56
+ json(number);
57
+ return;
58
+ }
59
+ success("Number updated", {
60
+ ID: number.id,
61
+ Number: colors.code(number.phoneNumber),
62
+ Status: formatStatus(number.status),
63
+ Default: number.isDefault ? colors.success("yes") : "no",
64
+ "Pending release": number.pendingCancellation
65
+ ? colors.warning("yes")
66
+ : "no",
67
+ });
68
+ }
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL251bWJlcnMvdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxJQUFJLEVBQ0osTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQWdCN0I7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxhQUFjLFNBQVEsb0JBQW9CO0lBQzdELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLHdHQUF3RyxDQUFDO0lBRTNHLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsdURBQXVEO1FBQ3ZELG9EQUFvRDtRQUNwRCw4REFBOEQ7S0FDL0QsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNkLFdBQVcsRUFBRSw4Q0FBOEM7WUFDM0QsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDckIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUseURBQXlEO1lBQ3RFLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztRQUNGLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2xCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLGdEQUFnRDtZQUM3RCxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RCxNQUFNLElBQUksR0FBNEIsRUFBRSxDQUFDO1FBQ3pDLElBQUksS0FBSyxDQUFDLE9BQU87WUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN6QyxJQUFJLEtBQUssQ0FBQyxJQUFJO1lBQUUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUVqRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtnQkFDekIsSUFBSSxFQUFFLHdGQUF3RjthQUMvRixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FDbEMsbUJBQW1CLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUNoRCxJQUFJLENBQ0wsQ0FBQztRQUVGLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDYixPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDYixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQ3ZDLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUN4RCxpQkFBaUIsRUFBRSxNQUFNLENBQUMsbUJBQW1CO2dCQUMzQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZCLENBQUMsQ0FBQyxJQUFJO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MsIEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHN1Y2Nlc3MsXG4gIGVycm9yLFxuICBqc29uLFxuICBjb2xvcnMsXG4gIGZvcm1hdFN0YXR1cyxcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIE93bmVkTnVtYmVyIHtcbiAgaWQ6IHN0cmluZztcbiAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBjb3VudHJ5Q29kZTogc3RyaW5nO1xuICBwaG9uZU51bWJlclR5cGU6IHN0cmluZztcbiAgbW9udGhseUNvc3RDZW50czogbnVtYmVyO1xuICBpc0RlZmF1bHQ/OiBib29sZWFuO1xuICByZXF1aXJlbWVudHNTdWJtaXR0ZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgcGVuZGluZ0NhbmNlbGxhdGlvbjogYm9vbGVhbjtcbiAgc2NoZWR1bGVkUmVsZWFzZUF0OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKipcbiAqIGBzZW5kbHkgbnVtYmVycyB1cGRhdGUgPGlkPmAg4oCUIG11dGF0ZSBhIG51bWJlciB5b3Ugb3duLiBUd28gbXV0YXRpb25zIGFyZVxuICogc3VwcG9ydGVkIHRvZGF5OlxuICogICAtLWRlZmF1bHQgICBtYWtlIHRoaXMgdGhlIHdvcmtzcGFjZSBkZWZhdWx0IHNlbmRlciAodGhlIG51bWJlciBtdXN0IGJlXG4gKiAgICAgICAgICAgICAgIGFjdGl2ZTsgdGhlIHByZXZpb3VzIGRlZmF1bHQgaXMgY2xlYXJlZCBhdG9taWNhbGx5KVxuICogICAtLWtlZXAgICAgICBjYW5jZWwgYSBzY2hlZHVsZWQgcGVyaW9kLWVuZCByZWxlYXNlIGFuZCBrZWVwIHRoZSBudW1iZXJcbiAqXG4gKiBXcmFwcyBgUEFUQ0ggL2FwaS92MS9udW1iZXJzLzppZGAuIEF0IGxlYXN0IG9uZSBvZiAtLWRlZmF1bHQgLyAtLWtlZXAgaXNcbiAqIHJlcXVpcmVkLiBSZXR1cm5zIHRoZSBmdWxsIG51bWJlciByZWNvcmQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnNVcGRhdGUgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJVcGRhdGUgYSBudW1iZXIgeW91IG93bjogbWFrZSBpdCB0aGUgZGVmYXVsdCBzZW5kZXIgKC0tZGVmYXVsdCkgb3IgY2FuY2VsIGEgc2NoZWR1bGVkIHJlbGVhc2UgKC0ta2VlcClcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBudW1iZXJzIHVwZGF0ZSBudW1fYWJjMTIzIC0tZGVmYXVsdFwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gbnVtYmVycyB1cGRhdGUgbnVtX2FiYzEyMyAtLWtlZXBcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IG51bWJlcnMgdXBkYXRlIG51bV9hYmMxMjMgLS1kZWZhdWx0IC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIGlkOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJQaG9uZSBudW1iZXIgSUQgKGZyb20gYHNlbmRseSBudW1iZXJzIGxpc3RgKVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICBkZWZhdWx0OiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGNoYXI6IFwiZFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWFrZSB0aGlzIHRoZSB3b3Jrc3BhY2UgZGVmYXVsdCBzZW5kZXIgKG11c3QgYmUgYWN0aXZlKVwiLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gICAga2VlcDogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBjaGFyOiBcImtcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNhbmNlbCBhIHNjaGVkdWxlZCByZWxlYXNlIGFuZCBrZWVwIHRoZSBudW1iZXJcIixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MsIGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKE51bWJlcnNVcGRhdGUpO1xuXG4gICAgY29uc3QgYm9keTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBpZiAoZmxhZ3MuZGVmYXVsdCkgYm9keS5pc0RlZmF1bHQgPSB0cnVlO1xuICAgIGlmIChmbGFncy5rZWVwKSBib2R5LnBlbmRpbmdDYW5jZWxsYXRpb24gPSBmYWxzZTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhib2R5KS5sZW5ndGggPT09IDApIHtcbiAgICAgIGVycm9yKFwiTm90aGluZyB0byB1cGRhdGVcIiwge1xuICAgICAgICBoaW50OiBcIlBhc3MgLS1kZWZhdWx0IHRvIG1ha2UgaXQgdGhlIGRlZmF1bHQgc2VuZGVyLCBvciAtLWtlZXAgdG8gY2FuY2VsIGEgc2NoZWR1bGVkIHJlbGVhc2UuXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBudW1iZXIgPSBhd2FpdCBhcGlDbGllbnQucGF0Y2g8T3duZWROdW1iZXI+KFxuICAgICAgYC9hcGkvdjEvbnVtYmVycy8ke2VuY29kZVVSSUNvbXBvbmVudChhcmdzLmlkKX1gLFxuICAgICAgYm9keSxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihudW1iZXIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoXCJOdW1iZXIgdXBkYXRlZFwiLCB7XG4gICAgICBJRDogbnVtYmVyLmlkLFxuICAgICAgTnVtYmVyOiBjb2xvcnMuY29kZShudW1iZXIucGhvbmVOdW1iZXIpLFxuICAgICAgU3RhdHVzOiBmb3JtYXRTdGF0dXMobnVtYmVyLnN0YXR1cyksXG4gICAgICBEZWZhdWx0OiBudW1iZXIuaXNEZWZhdWx0ID8gY29sb3JzLnN1Y2Nlc3MoXCJ5ZXNcIikgOiBcIm5vXCIsXG4gICAgICBcIlBlbmRpbmcgcmVsZWFzZVwiOiBudW1iZXIucGVuZGluZ0NhbmNlbGxhdGlvblxuICAgICAgICA/IGNvbG9ycy53YXJuaW5nKFwieWVzXCIpXG4gICAgICAgIDogXCJub1wiLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ /**
3
+ * `sendly sms group` — send a group MMS to 2-8 recipients (US/Canada only).
4
+ *
5
+ * Wraps `POST /api/v1/messages/group`. Every recipient sees the others and
6
+ * replies fan out to the whole group. Group messaging is an A2P 10DLC
7
+ * capability, so the sending number must be an MMS-enabled, 10DLC-registered
8
+ * number you own — omit `--from` to use your workspace's default sender.
9
+ * Gated behind `group_mms` / `enable_mms` on the server; without the flag the
10
+ * server returns 403 and this command surfaces it.
11
+ */
12
+ export default class SmsGroup extends AuthenticatedCommand {
13
+ static description: string;
14
+ static examples: string[];
15
+ static flags: {
16
+ to: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
17
+ text: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
18
+ from: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
19
+ type: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
20
+ "media-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
21
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
22
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
23
+ };
24
+ run(): Promise<void>;
25
+ }
@@ -0,0 +1,164 @@
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, spinner, colors, formatStatus, json, isJsonMode, } from "../../lib/output.js";
5
+ import inquirer from "inquirer";
6
+ /**
7
+ * `sendly sms group` — send a group MMS to 2-8 recipients (US/Canada only).
8
+ *
9
+ * Wraps `POST /api/v1/messages/group`. Every recipient sees the others and
10
+ * replies fan out to the whole group. Group messaging is an A2P 10DLC
11
+ * capability, so the sending number must be an MMS-enabled, 10DLC-registered
12
+ * number you own — omit `--from` to use your workspace's default sender.
13
+ * Gated behind `group_mms` / `enable_mms` on the server; without the flag the
14
+ * server returns 403 and this command surfaces it.
15
+ */
16
+ export default class SmsGroup extends AuthenticatedCommand {
17
+ static description = "Send a group MMS to 2-8 recipients (US/Canada only). Everyone sees the group and replies fan out to all participants.";
18
+ static examples = [
19
+ '<%= config.bin %> sms group --to +14155551234,+14155555678 --text "Team sync at noon?"',
20
+ '<%= config.bin %> sms group --to +14155551234,+14155555678 --media-url https://example.com/flyer.jpg',
21
+ '<%= config.bin %> sms group --to +14155551234,+14155555678 --text "Hi all" --from "+15551234567"',
22
+ '<%= config.bin %> sms group --to +14155551234,+14155555678 --text "Sale!" --type marketing',
23
+ '<%= config.bin %> sms group --to +14155551234,+14155555678 --text "Hi all" --json',
24
+ ];
25
+ static flags = {
26
+ ...AuthenticatedCommand.baseFlags,
27
+ to: Flags.string({
28
+ char: "t",
29
+ description: "Comma-separated recipient phone numbers (2-8, E.164 format, US/CA only)",
30
+ }),
31
+ text: Flags.string({
32
+ char: "m",
33
+ description: "Message text (optional when --media-url is provided)",
34
+ }),
35
+ from: Flags.string({
36
+ char: "f",
37
+ description: "Sender ID or phone number (MMS-enabled 10DLC number you own)",
38
+ }),
39
+ type: Flags.string({
40
+ description: "Message type: transactional (default) or marketing. Marketing applies quiet-hours rules.",
41
+ options: ["marketing", "transactional"],
42
+ }),
43
+ "media-url": Flags.string({
44
+ description: "Media URL to attach (MMS). Can be specified multiple times.",
45
+ multiple: true,
46
+ }),
47
+ };
48
+ async run() {
49
+ const { flags } = await this.parse(SmsGroup);
50
+ const mediaUrls = flags["media-url"];
51
+ const hasMedia = mediaUrls && mediaUrls.length > 0;
52
+ let rawTo = flags.to;
53
+ let text = flags.text;
54
+ if (!rawTo) {
55
+ if (process.stdin.isTTY) {
56
+ const answers = await inquirer.prompt([
57
+ {
58
+ type: "input",
59
+ name: "to",
60
+ message: "Recipient phone numbers (comma-separated, 2-8):",
61
+ validate: (input) => {
62
+ if (!input.trim())
63
+ return "At least 2 recipients are required";
64
+ return true;
65
+ },
66
+ },
67
+ ]);
68
+ rawTo = answers.to;
69
+ }
70
+ else {
71
+ error("Missing required flag: --to", {
72
+ hint: "Use --to +14155551234,+14155555678",
73
+ });
74
+ this.exit(1);
75
+ }
76
+ }
77
+ const to = rawTo
78
+ .split(",")
79
+ .map((p) => p.trim())
80
+ .filter((p) => p.length > 0)
81
+ .map((p) => (p.startsWith("+") ? p : `+${p}`));
82
+ if (to.length < 2) {
83
+ error("Group messaging requires at least 2 recipients", {
84
+ hint: "Pass 2-8 numbers: --to +14155551234,+14155555678",
85
+ });
86
+ this.exit(1);
87
+ }
88
+ if (to.length > 8) {
89
+ error("Group messaging supports at most 8 recipients");
90
+ this.exit(1);
91
+ }
92
+ for (const recipient of to) {
93
+ if (!/^\+[1-9]\d{1,14}$/.test(recipient)) {
94
+ error(`Invalid phone number: ${recipient}`, {
95
+ hint: "Use E.164 format: +14155551234",
96
+ });
97
+ this.exit(1);
98
+ }
99
+ }
100
+ if (!text && !hasMedia) {
101
+ if (process.stdin.isTTY) {
102
+ const answers = await inquirer.prompt([
103
+ {
104
+ type: "input",
105
+ name: "text",
106
+ message: "Message text:",
107
+ validate: (input) => {
108
+ if (!input.trim())
109
+ return "Message text cannot be empty";
110
+ return true;
111
+ },
112
+ },
113
+ ]);
114
+ text = answers.text;
115
+ }
116
+ else {
117
+ error("Either --text or --media-url is required");
118
+ this.exit(1);
119
+ }
120
+ }
121
+ if (text && !text.trim()) {
122
+ error("Message text cannot be empty");
123
+ this.exit(1);
124
+ }
125
+ const spin = spinner(`Sending group MMS to ${to.length} recipients...`);
126
+ spin.start();
127
+ try {
128
+ const response = await apiClient.post("/api/v1/messages/group", {
129
+ to,
130
+ ...(text && { text }),
131
+ ...(flags.from && { from: flags.from }),
132
+ ...(hasMedia && { mediaUrls }),
133
+ ...(flags.type && { messageType: flags.type }),
134
+ });
135
+ spin.stop();
136
+ if (isJsonMode()) {
137
+ json(response);
138
+ return;
139
+ }
140
+ success("Group MMS sent", {
141
+ ID: response.id,
142
+ Recipients: response.to.length,
143
+ Status: formatStatus(response.status),
144
+ ...(response.group_message_id && {
145
+ "Group ID": response.group_message_id,
146
+ }),
147
+ ...(hasMedia && {
148
+ Media: `${mediaUrls.length} attachment${mediaUrls.length > 1 ? "s" : ""}`,
149
+ }),
150
+ ...(response.simulated && { Simulated: "yes" }),
151
+ });
152
+ if (!isJsonMode()) {
153
+ for (const recipient of response.to) {
154
+ console.log(` ${colors.dim("To:")} ${colors.code(recipient)}`);
155
+ }
156
+ }
157
+ }
158
+ catch (err) {
159
+ spin.stop();
160
+ throw err;
161
+ }
162
+ }
163
+ }
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc21zL2dyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sWUFBWSxFQUNaLElBQUksRUFDSixVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFVaEM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxRQUFTLFNBQVEsb0JBQW9CO0lBQ3hELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLHVIQUF1SCxDQUFDO0lBRTFILE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsd0ZBQXdGO1FBQ3hGLHNHQUFzRztRQUN0RyxrR0FBa0c7UUFDbEcsNEZBQTRGO1FBQzVGLG1GQUFtRjtLQUNwRixDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUNULHlFQUF5RTtTQUM1RSxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsc0RBQXNEO1NBQ3BFLENBQUM7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSw4REFBOEQ7U0FDNUUsQ0FB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QixLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIHNwaW5uZXIsXG4gIGNvbG9ycyxcbiAgZm9ybWF0U3RhdHVzLFxuICBqc29uLFxuICBpc0pzb25Nb2RlLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IGlucXVpcmVyIGZyb20gXCJpbnF1aXJlclwiO1xuXG5pbnRlcmZhY2UgR3JvdXBNZXNzYWdlUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgdG86IHN0cmluZ1tdO1xuICBncm91cF9tZXNzYWdlX2lkPzogc3RyaW5nO1xuICBzaW11bGF0ZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIGBzZW5kbHkgc21zIGdyb3VwYCDigJQgc2VuZCBhIGdyb3VwIE1NUyB0byAyLTggcmVjaXBpZW50cyAoVVMvQ2FuYWRhIG9ubHkpLlxuICpcbiAqIFdyYXBzIGBQT1NUIC9hcGkvdjEvbWVzc2FnZXMvZ3JvdXBgLiBFdmVyeSByZWNpcGllbnQgc2VlcyB0aGUgb3RoZXJzIGFuZFxuICogcmVwbGllcyBmYW4gb3V0IHRvIHRoZSB3aG9sZSBncm91cC4gR3JvdXAgbWVzc2FnaW5nIGlzIGFuIEEyUCAxMERMQ1xuICogY2FwYWJpbGl0eSwgc28gdGhlIHNlbmRpbmcgbnVtYmVyIG11c3QgYmUgYW4gTU1TLWVuYWJsZWQsIDEwRExDLXJlZ2lzdGVyZWRcbiAqIG51bWJlciB5b3Ugb3duIOKAlCBvbWl0IGAtLWZyb21gIHRvIHVzZSB5b3VyIHdvcmtzcGFjZSdzIGRlZmF1bHQgc2VuZGVyLlxuICogR2F0ZWQgYmVoaW5kIGBncm91cF9tbXNgIC8gYGVuYWJsZV9tbXNgIG9uIHRoZSBzZXJ2ZXI7IHdpdGhvdXQgdGhlIGZsYWcgdGhlXG4gKiBzZXJ2ZXIgcmV0dXJucyA0MDMgYW5kIHRoaXMgY29tbWFuZCBzdXJmYWNlcyBpdC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU21zR3JvdXAgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJTZW5kIGEgZ3JvdXAgTU1TIHRvIDItOCByZWNpcGllbnRzIChVUy9DYW5hZGEgb25seSkuIEV2ZXJ5b25lIHNlZXMgdGhlIGdyb3VwIGFuZCByZXBsaWVzIGZhbiBvdXQgdG8gYWxsIHBhcnRpY2lwYW50cy5cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBncm91cCAtLXRvICsxNDE1NTU1MTIzNCwrMTQxNTU1NTU2NzggLS10ZXh0IFwiVGVhbSBzeW5jIGF0IG5vb24/XCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgZ3JvdXAgLS10byArMTQxNTU1NTEyMzQsKzE0MTU1NTU1Njc4IC0tbWVkaWEtdXJsIGh0dHBzOi8vZXhhbXBsZS5jb20vZmx5ZXIuanBnJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIGdyb3VwIC0tdG8gKzE0MTU1NTUxMjM0LCsxNDE1NTU1NTY3OCAtLXRleHQgXCJIaSBhbGxcIiAtLWZyb20gXCIrMTU1NTEyMzQ1NjdcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBncm91cCAtLXRvICsxNDE1NTU1MTIzNCwrMTQxNTU1NTU2NzggLS10ZXh0IFwiU2FsZSFcIiAtLXR5cGUgbWFya2V0aW5nJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIGdyb3VwIC0tdG8gKzE0MTU1NTUxMjM0LCsxNDE1NTU1NTY3OCAtLXRleHQgXCJIaSBhbGxcIiAtLWpzb24nLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgdG86IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInRcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkNvbW1hLXNlcGFyYXRlZCByZWNpcGllbnQgcGhvbmUgbnVtYmVycyAoMi04LCBFLjE2NCBmb3JtYXQsIFVTL0NBIG9ubHkpXCIsXG4gICAgfSksXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwibVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0ZXh0IChvcHRpb25hbCB3aGVuIC0tbWVkaWEtdXJsIGlzIHByb3ZpZGVkKVwiLFxuICAgIH0pLFxuICAgIGZyb206IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImZcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNlbmRlciBJRCBvciBwaG9uZSBudW1iZXIgKE1NUy1lbmFibGVkIDEwRExDIG51bWJlciB5b3Ugb3duKVwiLFxuICAgIH0pLFxuICAgIHR5cGU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJNZXNzYWdlIHR5cGU6IHRyYW5zYWN0aW9uYWwgKGRlZmF1bHQpIG9yIG1hcmtldGluZy4gTWFya2V0aW5nIGFwcGxpZXMgcXVpZXQtaG91cnMgcnVsZXMuXCIsXG4gICAgICBvcHRpb25zOiBbXCJtYXJrZXRpbmdcIiwgXCJ0cmFuc2FjdGlvbmFsXCJdLFxuICAgIH0pLFxuICAgIFwibWVkaWEtdXJsXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJNZWRpYSBVUkwgdG8gYXR0YWNoIChNTVMpLiBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLlwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoU21zR3JvdXApO1xuICAgIGNvbnN0IG1lZGlhVXJscyA9IGZsYWdzW1wibWVkaWEtdXJsXCJdO1xuICAgIGNvbnN0IGhhc01lZGlhID0gbWVkaWFVcmxzICYmIG1lZGlhVXJscy5sZW5ndGggPiAwO1xuXG4gICAgbGV0IHJhd1RvID0gZmxhZ3MudG87XG4gICAgbGV0IHRleHQgPSBmbGFncy50ZXh0O1xuXG4gICAgaWYgKCFyYXdUbykge1xuICAgICAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkpIHtcbiAgICAgICAgY29uc3QgYW5zd2VycyA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgICAgICAgbmFtZTogXCJ0b1wiLFxuICAgICAgICAgICAgbWVzc2FnZTogXCJSZWNpcGllbnQgcGhvbmUgbnVtYmVycyAoY29tbWEtc2VwYXJhdGVkLCAyLTgpOlwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQudHJpbSgpKSByZXR1cm4gXCJBdCBsZWFzdCAyIHJlY2lwaWVudHMgYXJlIHJlcXVpcmVkXCI7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgcmF3VG8gPSBhbnN3ZXJzLnRvO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkIGZsYWc6IC0tdG9cIiwge1xuICAgICAgICAgIGhpbnQ6IFwiVXNlIC0tdG8gKzE0MTU1NTUxMjM0LCsxNDE1NTU1NTY3OFwiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHRvID0gcmF3VG8hXG4gICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAubWFwKChwKSA9PiBwLnRyaW0oKSlcbiAgICAgIC5maWx0ZXIoKHApID0+IHAubGVuZ3RoID4gMClcbiAgICAgIC5tYXAoKHApID0+IChwLnN0YXJ0c1dpdGgoXCIrXCIpID8gcCA6IGArJHtwfWApKTtcblxuICAgIGlmICh0by5sZW5ndGggPCAyKSB7XG4gICAgICBlcnJvcihcIkdyb3VwIG1lc3NhZ2luZyByZXF1aXJlcyBhdCBsZWFzdCAyIHJlY2lwaWVudHNcIiwge1xuICAgICAgICBoaW50OiBcIlBhc3MgMi04IG51bWJlcnM6IC0tdG8gKzE0MTU1NTUxMjM0LCsxNDE1NTU1NTY3OFwiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKHRvLmxlbmd0aCA+IDgpIHtcbiAgICAgIGVycm9yKFwiR3JvdXAgbWVzc2FnaW5nIHN1cHBvcnRzIGF0IG1vc3QgOCByZWNpcGllbnRzXCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcmVjaXBpZW50IG9mIHRvKSB7XG4gICAgICBpZiAoIS9eXFwrWzEtOV1cXGR7MSwxNH0kLy50ZXN0KHJlY2lwaWVudCkpIHtcbiAgICAgICAgZXJyb3IoYEludmFsaWQgcGhvbmUgbnVtYmVyOiAke3JlY2lwaWVudH1gLCB7XG4gICAgICAgICAgaGludDogXCJVc2UgRS4xNjQgZm9ybWF0OiArMTQxNTU1NTEyMzRcIixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRleHQgJiYgIWhhc01lZGlhKSB7XG4gICAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICAgICAgICBuYW1lOiBcInRleHRcIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiTWVzc2FnZSB0ZXh0OlwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQudHJpbSgpKSByZXR1cm4gXCJNZXNzYWdlIHRleHQgY2Fubm90IGJlIGVtcHR5XCI7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgdGV4dCA9IGFuc3dlcnMudGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiRWl0aGVyIC0tdGV4dCBvciAtLW1lZGlhLXVybCBpcyByZXF1aXJlZFwiKTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0ZXh0ICYmICF0ZXh0LnRyaW0oKSkge1xuICAgICAgZXJyb3IoXCJNZXNzYWdlIHRleHQgY2Fubm90IGJlIGVtcHR5XCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKGBTZW5kaW5nIGdyb3VwIE1NUyB0byAke3RvLmxlbmd0aH0gcmVjaXBpZW50cy4uLmApO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PEdyb3VwTWVzc2FnZVJlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL3YxL21lc3NhZ2VzL2dyb3VwXCIsXG4gICAgICAgIHtcbiAgICAgICAgICB0byxcbiAgICAgICAgICAuLi4odGV4dCAmJiB7IHRleHQgfSksXG4gICAgICAgICAgLi4uKGZsYWdzLmZyb20gJiYgeyBmcm9tOiBmbGFncy5mcm9tIH0pLFxuICAgICAgICAgIC4uLihoYXNNZWRpYSAmJiB7IG1lZGlhVXJscyB9KSxcbiAgICAgICAgICAuLi4oZmxhZ3MudHlwZSAmJiB7IG1lc3NhZ2VUeXBlOiBmbGFncy50eXBlIH0pLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgc3Bpbi5zdG9wKCk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3VjY2VzcyhcIkdyb3VwIE1NUyBzZW50XCIsIHtcbiAgICAgICAgSUQ6IHJlc3BvbnNlLmlkLFxuICAgICAgICBSZWNpcGllbnRzOiByZXNwb25zZS50by5sZW5ndGgsXG4gICAgICAgIFN0YXR1czogZm9ybWF0U3RhdHVzKHJlc3BvbnNlLnN0YXR1cyksXG4gICAgICAgIC4uLihyZXNwb25zZS5ncm91cF9tZXNzYWdlX2lkICYmIHtcbiAgICAgICAgICBcIkdyb3VwIElEXCI6IHJlc3BvbnNlLmdyb3VwX21lc3NhZ2VfaWQsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4oaGFzTWVkaWEgJiYge1xuICAgICAgICAgIE1lZGlhOiBgJHttZWRpYVVybHMubGVuZ3RofSBhdHRhY2htZW50JHttZWRpYVVybHMubGVuZ3RoID4gMSA/IFwic1wiIDogXCJcIn1gLFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHJlc3BvbnNlLnNpbXVsYXRlZCAmJiB7IFNpbXVsYXRlZDogXCJ5ZXNcIiB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHJlY2lwaWVudCBvZiByZXNwb25zZS50bykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgICR7Y29sb3JzLmRpbShcIlRvOlwiKX0gJHtjb2xvcnMuY29kZShyZWNpcGllbnQpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzcGluLnN0b3AoKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -3,7 +3,7 @@ import { AuthenticatedCommand } from "../../lib/base-command.js";
3
3
  * `sendly sms upload-media <file>` — upload an image for MMS.
4
4
  *
5
5
  * Wraps `POST /api/v1/media`. Returns a public URL the caller passes as
6
- * `--media` to `sms send` / `sms batch`. Flag-gated behind `enable_mms`
6
+ * `--media-url` to `sms send`. Flag-gated behind `enable_mms`
7
7
  * on the server — if your account doesn't have MMS, the server returns
8
8
  * 403 and this command surfaces it.
9
9
  */
@@ -9,12 +9,12 @@ const ALLOWED_EXTS = [".jpg", ".jpeg", ".png", ".gif"];
9
9
  * `sendly sms upload-media <file>` — upload an image for MMS.
10
10
  *
11
11
  * Wraps `POST /api/v1/media`. Returns a public URL the caller passes as
12
- * `--media` to `sms send` / `sms batch`. Flag-gated behind `enable_mms`
12
+ * `--media-url` to `sms send`. Flag-gated behind `enable_mms`
13
13
  * on the server — if your account doesn't have MMS, the server returns
14
14
  * 403 and this command surfaces it.
15
15
  */
16
16
  export default class SmsUploadMedia extends AuthenticatedCommand {
17
- static description = "Upload a JPEG/PNG/GIF image for MMS and get back a public URL to pass to `sms send --media`. Requires MMS to be enabled for your account.";
17
+ static description = "Upload a JPEG/PNG/GIF image for MMS and get back a public URL to pass to `sms send --media-url`. Requires MMS to be enabled for your account.";
18
18
  static examples = [
19
19
  "<%= config.bin %> sms upload-media ./promo.jpg",
20
20
  "<%= config.bin %> sms upload-media ./animated.gif --json",
@@ -69,7 +69,7 @@ export default class SmsUploadMedia extends AuthenticatedCommand {
69
69
  console.log();
70
70
  console.log(colors.dim(" Send an MMS with this image:"));
71
71
  console.log(" " +
72
- colors.code(`sendly sms send --to +15551234567 --text "Hi" --media "${resp.url}"`));
72
+ colors.code(`sendly sms send --to +15551234567 --text "Hi" --media-url "${resp.url}"`));
73
73
  }
74
74
  }
75
75
  function formatBytes(n) {
@@ -79,4 +79,4 @@ function formatBytes(n) {
79
79
  return `${(n / 1024).toFixed(1)} KB`;
80
80
  return `${(n / (1024 * 1024)).toFixed(1)} MB`;
81
81
  }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLW1lZGlhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3Ntcy91cGxvYWQtbWVkaWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsSUFBSSxFQUNKLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxHQUVOLE1BQU0scUJBQXFCLENBQUM7QUFTN0IsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUV2RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxjQUFlLFNBQVEsb0JBQW9CO0lBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLDJJQUEySSxDQUFDO0lBRTlJLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsZ0RBQWdEO1FBQ2hELDBEQUEwRDtLQUMzRCxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2hCLFdBQVcsRUFBRSw0Q0FBNEM7WUFDekQsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsY0FBYyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDM0IsV0FBVyxFQUFFLGlDQUFpQztTQUMvQyxDQUFDO0tBQ0gsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM3QixLQUFLLENBQUMsbUJBQW1CLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUNILCtCQUErQixHQUFHLHFDQUFxQyxDQUN4RSxDQUFDO1lBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekMsTUFBTSxRQUFRLEdBQ1osS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUNyQixDQUFDLEdBQUcsS0FBSyxNQUFNO2dCQUNiLENBQUMsQ0FBQyxXQUFXO2dCQUNiLENBQUMsQ0FBQyxHQUFHLEtBQUssTUFBTTtvQkFDZCxDQUFDLENBQUMsV0FBVztvQkFDYixDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxTQUFTLENBQUMsVUFBVSxDQUNyQyxlQUFlLEVBQ2Y7WUFDRSxNQUFNO1lBQ04sUUFBUTtZQUNSLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQ0YsQ0FBQztRQUVGLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDWCxPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDaEMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ2xDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7UUFDMUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNO1lBQ0osTUFBTSxDQUFDLElBQUksQ0FDVCwwREFBMEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUN0RSxDQUNKLENBQUM7SUFDSixDQUFDOztBQUdILFNBQVMsV0FBVyxDQUFDLENBQVM7SUFDNUIsSUFBSSxDQUFDLEdBQUcsSUFBSTtRQUFFLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztJQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSTtRQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMxRCxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncywgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAganNvbixcbiAgaXNKc29uTW9kZSxcbiAgY29sb3JzLFxuICBlcnJvcixcbiAga2V5VmFsdWUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBNZWRpYVVwbG9hZFJlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIHNpemVCeXRlczogbnVtYmVyO1xufVxuXG5jb25zdCBBTExPV0VEX0VYVFMgPSBbXCIuanBnXCIsIFwiLmpwZWdcIiwgXCIucG5nXCIsIFwiLmdpZlwiXTtcblxuLyoqXG4gKiBgc2VuZGx5IHNtcyB1cGxvYWQtbWVkaWEgPGZpbGU+YCDigJQgdXBsb2FkIGFuIGltYWdlIGZvciBNTVMuXG4gKlxuICogV3JhcHMgYFBPU1QgL2FwaS92MS9tZWRpYWAuIFJldHVybnMgYSBwdWJsaWMgVVJMIHRoZSBjYWxsZXIgcGFzc2VzIGFzXG4gKiBgLS1tZWRpYWAgdG8gYHNtcyBzZW5kYCAvIGBzbXMgYmF0Y2hgLiBGbGFnLWdhdGVkIGJlaGluZCBgZW5hYmxlX21tc2BcbiAqIG9uIHRoZSBzZXJ2ZXIg4oCUIGlmIHlvdXIgYWNjb3VudCBkb2Vzbid0IGhhdmUgTU1TLCB0aGUgc2VydmVyIHJldHVybnNcbiAqIDQwMyBhbmQgdGhpcyBjb21tYW5kIHN1cmZhY2VzIGl0LlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXNVcGxvYWRNZWRpYSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIlVwbG9hZCBhIEpQRUcvUE5HL0dJRiBpbWFnZSBmb3IgTU1TIGFuZCBnZXQgYmFjayBhIHB1YmxpYyBVUkwgdG8gcGFzcyB0byBgc21zIHNlbmQgLS1tZWRpYWAuIFJlcXVpcmVzIE1NUyB0byBiZSBlbmFibGVkIGZvciB5b3VyIGFjY291bnQuXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gc21zIHVwbG9hZC1tZWRpYSAuL3Byb21vLmpwZ1wiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gc21zIHVwbG9hZC1tZWRpYSAuL2FuaW1hdGVkLmdpZiAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBmaWxlOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJQYXRoIHRvIHRoZSBpbWFnZSBmaWxlIChKUEVHLCBQTkcsIG9yIEdJRilcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgXCJjb250ZW50LXR5cGVcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk92ZXJyaWRlIHRoZSBkZXRlY3RlZCBtaW1lIHR5cGVcIixcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzLCBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShTbXNVcGxvYWRNZWRpYSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShhcmdzLmZpbGUpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgIGVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtmaWxlUGF0aH1gKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZVBhdGgpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKCFBTExPV0VEX0VYVFMuaW5jbHVkZXMoZXh0KSkge1xuICAgICAgZXJyb3IoXG4gICAgICAgIGBVbnN1cHBvcnRlZCBmaWxlIGV4dGVuc2lvbiAnJHtleHR9Jy4gTU1TIHN1cHBvcnRzIEpQRUcsIFBORywgYW5kIEdJRi5gLFxuICAgICAgKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgpO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XG5cbiAgICBjb25zdCBkZXRlY3RlZCA9XG4gICAgICBmbGFnc1tcImNvbnRlbnQtdHlwZVwiXSA/P1xuICAgICAgKGV4dCA9PT0gXCIucG5nXCJcbiAgICAgICAgPyBcImltYWdlL3BuZ1wiXG4gICAgICAgIDogZXh0ID09PSBcIi5naWZcIlxuICAgICAgICAgID8gXCJpbWFnZS9naWZcIlxuICAgICAgICAgIDogXCJpbWFnZS9qcGVnXCIpO1xuXG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGFwaUNsaWVudC51cGxvYWRGaWxlPE1lZGlhVXBsb2FkUmVzcG9uc2U+KFxuICAgICAgXCIvYXBpL3YxL21lZGlhXCIsXG4gICAgICB7XG4gICAgICAgIGJ1ZmZlcixcbiAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgIG1pbWV0eXBlOiBkZXRlY3RlZCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzcCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VjY2VzcyhcIk1lZGlhIHVwbG9hZGVkXCIsIHtcbiAgICAgIElEOiByZXNwLmlkLFxuICAgICAgVVJMOiByZXNwLnVybCxcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IHJlc3AuY29udGVudFR5cGUsXG4gICAgICBTaXplOiBmb3JtYXRCeXRlcyhyZXNwLnNpemVCeXRlcyksXG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiICBTZW5kIGFuIE1NUyB3aXRoIHRoaXMgaW1hZ2U6XCIpKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIFwiICAgIFwiICtcbiAgICAgICAgY29sb3JzLmNvZGUoXG4gICAgICAgICAgYHNlbmRseSBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJIaVwiIC0tbWVkaWEgXCIke3Jlc3AudXJsfVwiYCxcbiAgICAgICAgKSxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEJ5dGVzKG46IG51bWJlcik6IHN0cmluZyB7XG4gIGlmIChuIDwgMTAyNCkgcmV0dXJuIGAke259IEJgO1xuICBpZiAobiA8IDEwMjQgKiAxMDI0KSByZXR1cm4gYCR7KG4gLyAxMDI0KS50b0ZpeGVkKDEpfSBLQmA7XG4gIHJldHVybiBgJHsobiAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMSl9IE1CYDtcbn1cbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLW1lZGlhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3Ntcy91cGxvYWQtbWVkaWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsSUFBSSxFQUNKLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxHQUVOLE1BQU0scUJBQXFCLENBQUM7QUFTN0IsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUV2RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxjQUFlLFNBQVEsb0JBQW9CO0lBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLCtJQUErSSxDQUFDO0lBRWxKLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsZ0RBQWdEO1FBQ2hELDBEQUEwRDtLQUMzRCxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2hCLFdBQVcsRUFBRSw0Q0FBNEM7WUFDekQsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsY0FBYyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDM0IsV0FBVyxFQUFFLGlDQUFpQztTQUMvQyxDQUFDO0tBQ0gsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM3QixLQUFLLENBQUMsbUJBQW1CLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUNILCtCQUErQixHQUFHLHFDQUFxQyxDQUN4RSxDQUFDO1lBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekMsTUFBTSxRQUFRLEdBQ1osS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUNyQixDQUFDLEdBQUcsS0FBSyxNQUFNO2dCQUNiLENBQUMsQ0FBQyxXQUFXO2dCQUNiLENBQUMsQ0FBQyxHQUFHLEtBQUssTUFBTTtvQkFDZCxDQUFDLENBQUMsV0FBVztvQkFDYixDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxTQUFTLENBQUMsVUFBVSxDQUNyQyxlQUFlLEVBQ2Y7WUFDRSxNQUFNO1lBQ04sUUFBUTtZQUNSLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQ0YsQ0FBQztRQUVGLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDWCxPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDaEMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ2xDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7UUFDMUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNO1lBQ0osTUFBTSxDQUFDLElBQUksQ0FDVCw4REFBOEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUMxRSxDQUNKLENBQUM7SUFDSixDQUFDOztBQUdILFNBQVMsV0FBVyxDQUFDLENBQVM7SUFDNUIsSUFBSSxDQUFDLEdBQUcsSUFBSTtRQUFFLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztJQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSTtRQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMxRCxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncywgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAganNvbixcbiAgaXNKc29uTW9kZSxcbiAgY29sb3JzLFxuICBlcnJvcixcbiAga2V5VmFsdWUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBNZWRpYVVwbG9hZFJlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIHNpemVCeXRlczogbnVtYmVyO1xufVxuXG5jb25zdCBBTExPV0VEX0VYVFMgPSBbXCIuanBnXCIsIFwiLmpwZWdcIiwgXCIucG5nXCIsIFwiLmdpZlwiXTtcblxuLyoqXG4gKiBgc2VuZGx5IHNtcyB1cGxvYWQtbWVkaWEgPGZpbGU+YCDigJQgdXBsb2FkIGFuIGltYWdlIGZvciBNTVMuXG4gKlxuICogV3JhcHMgYFBPU1QgL2FwaS92MS9tZWRpYWAuIFJldHVybnMgYSBwdWJsaWMgVVJMIHRoZSBjYWxsZXIgcGFzc2VzIGFzXG4gKiBgLS1tZWRpYS11cmxgIHRvIGBzbXMgc2VuZGAuIEZsYWctZ2F0ZWQgYmVoaW5kIGBlbmFibGVfbW1zYFxuICogb24gdGhlIHNlcnZlciDigJQgaWYgeW91ciBhY2NvdW50IGRvZXNuJ3QgaGF2ZSBNTVMsIHRoZSBzZXJ2ZXIgcmV0dXJuc1xuICogNDAzIGFuZCB0aGlzIGNvbW1hbmQgc3VyZmFjZXMgaXQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNtc1VwbG9hZE1lZGlhIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPVxuICAgIFwiVXBsb2FkIGEgSlBFRy9QTkcvR0lGIGltYWdlIGZvciBNTVMgYW5kIGdldCBiYWNrIGEgcHVibGljIFVSTCB0byBwYXNzIHRvIGBzbXMgc2VuZCAtLW1lZGlhLXVybGAuIFJlcXVpcmVzIE1NUyB0byBiZSBlbmFibGVkIGZvciB5b3VyIGFjY291bnQuXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gc21zIHVwbG9hZC1tZWRpYSAuL3Byb21vLmpwZ1wiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gc21zIHVwbG9hZC1tZWRpYSAuL2FuaW1hdGVkLmdpZiAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBmaWxlOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJQYXRoIHRvIHRoZSBpbWFnZSBmaWxlIChKUEVHLCBQTkcsIG9yIEdJRilcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgXCJjb250ZW50LXR5cGVcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk92ZXJyaWRlIHRoZSBkZXRlY3RlZCBtaW1lIHR5cGVcIixcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzLCBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShTbXNVcGxvYWRNZWRpYSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShhcmdzLmZpbGUpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgIGVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtmaWxlUGF0aH1gKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZVBhdGgpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKCFBTExPV0VEX0VYVFMuaW5jbHVkZXMoZXh0KSkge1xuICAgICAgZXJyb3IoXG4gICAgICAgIGBVbnN1cHBvcnRlZCBmaWxlIGV4dGVuc2lvbiAnJHtleHR9Jy4gTU1TIHN1cHBvcnRzIEpQRUcsIFBORywgYW5kIEdJRi5gLFxuICAgICAgKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgpO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XG5cbiAgICBjb25zdCBkZXRlY3RlZCA9XG4gICAgICBmbGFnc1tcImNvbnRlbnQtdHlwZVwiXSA/P1xuICAgICAgKGV4dCA9PT0gXCIucG5nXCJcbiAgICAgICAgPyBcImltYWdlL3BuZ1wiXG4gICAgICAgIDogZXh0ID09PSBcIi5naWZcIlxuICAgICAgICAgID8gXCJpbWFnZS9naWZcIlxuICAgICAgICAgIDogXCJpbWFnZS9qcGVnXCIpO1xuXG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGFwaUNsaWVudC51cGxvYWRGaWxlPE1lZGlhVXBsb2FkUmVzcG9uc2U+KFxuICAgICAgXCIvYXBpL3YxL21lZGlhXCIsXG4gICAgICB7XG4gICAgICAgIGJ1ZmZlcixcbiAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgIG1pbWV0eXBlOiBkZXRlY3RlZCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzcCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VjY2VzcyhcIk1lZGlhIHVwbG9hZGVkXCIsIHtcbiAgICAgIElEOiByZXNwLmlkLFxuICAgICAgVVJMOiByZXNwLnVybCxcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IHJlc3AuY29udGVudFR5cGUsXG4gICAgICBTaXplOiBmb3JtYXRCeXRlcyhyZXNwLnNpemVCeXRlcyksXG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiICBTZW5kIGFuIE1NUyB3aXRoIHRoaXMgaW1hZ2U6XCIpKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIFwiICAgIFwiICtcbiAgICAgICAgY29sb3JzLmNvZGUoXG4gICAgICAgICAgYHNlbmRseSBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJIaVwiIC0tbWVkaWEtdXJsIFwiJHtyZXNwLnVybH1cImAsXG4gICAgICAgICksXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRCeXRlcyhuOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAobiA8IDEwMjQpIHJldHVybiBgJHtufSBCYDtcbiAgaWYgKG4gPCAxMDI0ICogMTAyNCkgcmV0dXJuIGAkeyhuIC8gMTAyNCkudG9GaXhlZCgxKX0gS0JgO1xuICByZXR1cm4gYCR7KG4gLyAoMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDEpfSBNQmA7XG59XG4iXX0=
@@ -51,8 +51,8 @@ export default class TemplatesEnhance extends AuthenticatedCommand {
51
51
  process.stdin.on("end", () => resolve(buf.trim()));
52
52
  });
53
53
  }
54
- if (!text && !flags["message-type"]) {
55
- error("Provide text via --text, --file, positional arg, or stdin (or at least --message-type for a template suggestion).");
54
+ if (!text) {
55
+ error("Provide text to enhance via --text, --file, a positional arg, or stdin.");
56
56
  this.exit(1);
57
57
  }
58
58
  const resp = await apiClient.post("/api/v1/ai/enhance", {
@@ -74,4 +74,4 @@ export default class TemplatesEnhance extends AuthenticatedCommand {
74
74
  }
75
75
  }
76
76
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5oYW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy90ZW1wbGF0ZXMvZW5oYW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCxJQUFJLEVBQ0osVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLEtBQUssR0FDTixNQUFNLHFCQUFxQixDQUFDO0FBTzdCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxnQkFBaUIsU0FBUSxvQkFBb0I7SUFDaEUsTUFBTSxDQUFDLFdBQVcsR0FDaEIseUhBQXlILENBQUM7SUFFNUgsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiwwRUFBMEU7UUFDMUUsaUZBQWlGO1FBQ2pGLDhGQUE4RjtLQUMvRixDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2hCLFdBQVcsRUFBRSwwREFBMEQ7WUFDdkUsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO1FBQ2pDLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSx5QkFBeUI7U0FDdkMsQ0FBQztRQUNGLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSxvQ0FBb0M7U0FDbEQsQ0FBQztRQUNGLGNBQWMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNCLFdBQVcsRUFDVCxrR0FBa0c7U0FDckcsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFM0QsSUFBSSxJQUFJLEdBQXVCLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QixJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BELENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxLQUFLLENBQ0gsbUhBQW1ILENBQ3BILENBQUM7WUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDL0Isb0JBQW9CLEVBQ3BCO1lBQ0UsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ2hCLFdBQVcsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDO1NBQ25DLENBQ0YsQ0FBQztRQUVGLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDWCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QyxPQUFPLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUNsRSxDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MsIEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQge1xuICBzdWNjZXNzLFxuICBqc29uLFxuICBpc0pzb25Nb2RlLFxuICBjb2xvcnMsXG4gIGhlYWRlcixcbiAgaW5mbyxcbiAgZXJyb3IsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBFbmhhbmNlUmVzcG9uc2Uge1xuICBlbmhhbmNlZDogc3RyaW5nO1xuICBleHBsYW5hdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIGBzZW5kbHkgdGVtcGxhdGVzIGVuaGFuY2VgIOKAlCBBSSByZXdyaXRlIGEgbWVzc2FnZSB0ZW1wbGF0ZSBmb3JcbiAqIGNvbXBsaWFuY2UvY2xhcml0eS9jb252ZXJzaW9ucy5cbiAqXG4gKiBXcmFwcyBgUE9TVCAvYXBpL3YxL2FpL2VuaGFuY2VgIChmbGFnLWdhdGVkIGJlaGluZCBgYWlfY2xhc3NpZmljYXRpb25gXG4gKiBvbiB0aGUgc2VydmVyIOKAlCBpZiB5b3VyIGFjY291bnQgZG9lc24ndCBoYXZlIHRoZSBmbGFnLCB0aGUgc2VydmVyXG4gKiByZXR1cm5zIDQwNCBhbmQgdGhpcyBjb21tYW5kIHN1cmZhY2VzIGl0KS4gQWNjZXB0cyB0ZXh0IGRpcmVjdGx5IHZpYVxuICogYC0tdGV4dGAsIGZyb20gYSBmaWxlIHZpYSBgLS1maWxlYCwgb3IgcGlwZWQgb24gc3RkaW4uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbXBsYXRlc0VuaGFuY2UgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJBSS1lbmhhbmNlIGEgbWVzc2FnZSB0ZW1wbGF0ZSBmb3IgY2xhcml0eSwgY29tcGxpYW5jZSwgYW5kIHNlbmQtcmVhZGluZXNzLiBSZXR1cm5zIHRoZSByZXdyaXR0ZW4gdGV4dCArIGFuIGV4cGxhbmF0aW9uLlwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gdGVtcGxhdGVzIGVuaGFuY2UgLS10ZXh0IFwiaGV5IGNvbWUgY2hlY2sgb3V0IG91ciBzYWxlXCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiB0ZW1wbGF0ZXMgZW5oYW5jZSAtLWZpbGUgLi9kcmFmdC50eHQgLS1tZXNzYWdlLXR5cGUgbWFya2V0aW5nJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gZWNobyBcInlvdXIgc2FsZSBtc2dcIiB8IHNlbmRseSB0ZW1wbGF0ZXMgZW5oYW5jZSAtLW1lc3NhZ2UtdHlwZSBwcm9tb3Rpb25hbCcsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgdGV4dDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0ZXh0IHRvIGVuaGFuY2UgKGFsdGVybmF0aXZlIHRvIC0tdGV4dCAvIC0tZmlsZSlcIixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHRleHQ6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJNZXNzYWdlIHRleHQgdG8gZW5oYW5jZVwiLFxuICAgIH0pLFxuICAgIGZpbGU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJSZWFkIG1lc3NhZ2UgdGV4dCBmcm9tIGEgZmlsZSBwYXRoXCIsXG4gICAgfSksXG4gICAgXCJtZXNzYWdlLXR5cGVcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkhpbnQgdGhlIGtpbmQgb2YgbWVzc2FnZSAoZS5nLiBtYXJrZXRpbmcsIHRyYW5zYWN0aW9uYWwsIG5vdGlmaWNhdGlvbikgZm9yIHRhcmdldGVkIGVuaGFuY2VtZW50c1wiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MsIGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFRlbXBsYXRlc0VuaGFuY2UpO1xuXG4gICAgbGV0IHRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGZsYWdzLnRleHQgPz8gYXJncy50ZXh0O1xuICAgIGlmICghdGV4dCAmJiBmbGFncy5maWxlKSB7XG4gICAgICB0ZXh0ID0gZnMucmVhZEZpbGVTeW5jKGZsYWdzLmZpbGUsIFwidXRmOFwiKS50cmltKCk7XG4gICAgfVxuICAgIGlmICghdGV4dCAmJiAhcHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgdGV4dCA9IGF3YWl0IG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgbGV0IGJ1ZiA9IFwiXCI7XG4gICAgICAgIHByb2Nlc3Muc3RkaW4uc2V0RW5jb2RpbmcoXCJ1dGY4XCIpO1xuICAgICAgICBwcm9jZXNzLnN0ZGluLm9uKFwiZGF0YVwiLCAoYykgPT4gKGJ1ZiArPSBjKSk7XG4gICAgICAgIHByb2Nlc3Muc3RkaW4ub24oXCJlbmRcIiwgKCkgPT4gcmVzb2x2ZShidWYudHJpbSgpKSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXRleHQgJiYgIWZsYWdzW1wibWVzc2FnZS10eXBlXCJdKSB7XG4gICAgICBlcnJvcihcbiAgICAgICAgXCJQcm92aWRlIHRleHQgdmlhIC0tdGV4dCwgLS1maWxlLCBwb3NpdGlvbmFsIGFyZywgb3Igc3RkaW4gKG9yIGF0IGxlYXN0IC0tbWVzc2FnZS10eXBlIGZvciBhIHRlbXBsYXRlIHN1Z2dlc3Rpb24pLlwiLFxuICAgICAgKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8RW5oYW5jZVJlc3BvbnNlPihcbiAgICAgIFwiL2FwaS92MS9haS9lbmhhbmNlXCIsXG4gICAgICB7XG4gICAgICAgIHRleHQ6IHRleHQgPz8gXCJcIixcbiAgICAgICAgbWVzc2FnZVR5cGU6IGZsYWdzW1wibWVzc2FnZS10eXBlXCJdLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBoZWFkZXIoXCJFbmhhbmNlZCB0ZXh0XCIpO1xuICAgIGNvbnNvbGUubG9nKFwiICBcIiArIChyZXNwLmVuaGFuY2VkIHx8IGNvbG9ycy5kaW0oXCIobm8gY2hhbmdlKVwiKSkpO1xuICAgIGlmIChyZXNwLmV4cGxhbmF0aW9uKSB7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgaW5mbyhyZXNwLmV4cGxhbmF0aW9uKTtcbiAgICB9XG4gICAgaWYgKCFyZXNwLmVuaGFuY2VkIHx8IHJlc3AuZW5oYW5jZWQgPT09IHRleHQpIHtcbiAgICAgIHN1Y2Nlc3MoXCJObyBlbmhhbmNlbWVudCBzdWdnZXN0ZWQg4oCUIG9yaWdpbmFsIHRleHQgbG9va3MgZ29vZC5cIik7XG4gICAgfVxuICB9XG59XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5oYW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy90ZW1wbGF0ZXMvZW5oYW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCxJQUFJLEVBQ0osVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLEtBQUssR0FDTixNQUFNLHFCQUFxQixDQUFDO0FBTzdCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxnQkFBaUIsU0FBUSxvQkFBb0I7SUFDaEUsTUFBTSxDQUFDLFdBQVcsR0FDaEIseUhBQXlILENBQUM7SUFFNUgsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiwwRUFBMEU7UUFDMUUsaUZBQWlGO1FBQ2pGLDhGQUE4RjtLQUMvRixDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2hCLFdBQVcsRUFBRSwwREFBMEQ7WUFDdkUsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO1FBQ2pDLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSx5QkFBeUI7U0FDdkMsQ0FBQztRQUNGLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSxvQ0FBb0M7U0FDbEQsQ0FBQztRQUNGLGNBQWMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNCLFdBQVcsRUFDVCxrR0FBa0c7U0FDckcsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFM0QsSUFBSSxJQUFJLEdBQXVCLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QixJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BELENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FDSCx5RUFBeUUsQ0FDMUUsQ0FBQztZQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUMvQixvQkFBb0IsRUFDcEI7WUFDRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUM7U0FDbkMsQ0FDRixDQUFDO1FBRUYsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncywgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHN1Y2Nlc3MsXG4gIGpzb24sXG4gIGlzSnNvbk1vZGUsXG4gIGNvbG9ycyxcbiAgaGVhZGVyLFxuICBpbmZvLFxuICBlcnJvcixcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIEVuaGFuY2VSZXNwb25zZSB7XG4gIGVuaGFuY2VkOiBzdHJpbmc7XG4gIGV4cGxhbmF0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogYHNlbmRseSB0ZW1wbGF0ZXMgZW5oYW5jZWAg4oCUIEFJIHJld3JpdGUgYSBtZXNzYWdlIHRlbXBsYXRlIGZvclxuICogY29tcGxpYW5jZS9jbGFyaXR5L2NvbnZlcnNpb25zLlxuICpcbiAqIFdyYXBzIGBQT1NUIC9hcGkvdjEvYWkvZW5oYW5jZWAgKGZsYWctZ2F0ZWQgYmVoaW5kIGBhaV9jbGFzc2lmaWNhdGlvbmBcbiAqIG9uIHRoZSBzZXJ2ZXIg4oCUIGlmIHlvdXIgYWNjb3VudCBkb2Vzbid0IGhhdmUgdGhlIGZsYWcsIHRoZSBzZXJ2ZXJcbiAqIHJldHVybnMgNDA0IGFuZCB0aGlzIGNvbW1hbmQgc3VyZmFjZXMgaXQpLiBBY2NlcHRzIHRleHQgZGlyZWN0bHkgdmlhXG4gKiBgLS10ZXh0YCwgZnJvbSBhIGZpbGUgdmlhIGAtLWZpbGVgLCBvciBwaXBlZCBvbiBzdGRpbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVtcGxhdGVzRW5oYW5jZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIkFJLWVuaGFuY2UgYSBtZXNzYWdlIHRlbXBsYXRlIGZvciBjbGFyaXR5LCBjb21wbGlhbmNlLCBhbmQgc2VuZC1yZWFkaW5lc3MuIFJldHVybnMgdGhlIHJld3JpdHRlbiB0ZXh0ICsgYW4gZXhwbGFuYXRpb24uXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiB0ZW1wbGF0ZXMgZW5oYW5jZSAtLXRleHQgXCJoZXkgY29tZSBjaGVjayBvdXQgb3VyIHNhbGVcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHRlbXBsYXRlcyBlbmhhbmNlIC0tZmlsZSAuL2RyYWZ0LnR4dCAtLW1lc3NhZ2UtdHlwZSBtYXJrZXRpbmcnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBlY2hvIFwieW91ciBzYWxlIG1zZ1wiIHwgc2VuZGx5IHRlbXBsYXRlcyBlbmhhbmNlIC0tbWVzc2FnZS10eXBlIHByb21vdGlvbmFsJyxcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICB0ZXh0OiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJNZXNzYWdlIHRleHQgdG8gZW5oYW5jZSAoYWx0ZXJuYXRpdmUgdG8gLS10ZXh0IC8gLS1maWxlKVwiLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk1lc3NhZ2UgdGV4dCB0byBlbmhhbmNlXCIsXG4gICAgfSksXG4gICAgZmlsZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJlYWQgbWVzc2FnZSB0ZXh0IGZyb20gYSBmaWxlIHBhdGhcIixcbiAgICB9KSxcbiAgICBcIm1lc3NhZ2UtdHlwZVwiOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiSGludCB0aGUga2luZCBvZiBtZXNzYWdlIChlLmcuIG1hcmtldGluZywgdHJhbnNhY3Rpb25hbCwgbm90aWZpY2F0aW9uKSBmb3IgdGFyZ2V0ZWQgZW5oYW5jZW1lbnRzXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoVGVtcGxhdGVzRW5oYW5jZSk7XG5cbiAgICBsZXQgdGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkID0gZmxhZ3MudGV4dCA/PyBhcmdzLnRleHQ7XG4gICAgaWYgKCF0ZXh0ICYmIGZsYWdzLmZpbGUpIHtcbiAgICAgIHRleHQgPSBmcy5yZWFkRmlsZVN5bmMoZmxhZ3MuZmlsZSwgXCJ1dGY4XCIpLnRyaW0oKTtcbiAgICB9XG4gICAgaWYgKCF0ZXh0ICYmICFwcm9jZXNzLnN0ZGluLmlzVFRZKSB7XG4gICAgICB0ZXh0ID0gYXdhaXQgbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICBsZXQgYnVmID0gXCJcIjtcbiAgICAgICAgcHJvY2Vzcy5zdGRpbi5zZXRFbmNvZGluZyhcInV0ZjhcIik7XG4gICAgICAgIHByb2Nlc3Muc3RkaW4ub24oXCJkYXRhXCIsIChjKSA9PiAoYnVmICs9IGMpKTtcbiAgICAgICAgcHJvY2Vzcy5zdGRpbi5vbihcImVuZFwiLCAoKSA9PiByZXNvbHZlKGJ1Zi50cmltKCkpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdGV4dCkge1xuICAgICAgZXJyb3IoXG4gICAgICAgIFwiUHJvdmlkZSB0ZXh0IHRvIGVuaGFuY2UgdmlhIC0tdGV4dCwgLS1maWxlLCBhIHBvc2l0aW9uYWwgYXJnLCBvciBzdGRpbi5cIixcbiAgICAgICk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PEVuaGFuY2VSZXNwb25zZT4oXG4gICAgICBcIi9hcGkvdjEvYWkvZW5oYW5jZVwiLFxuICAgICAge1xuICAgICAgICB0ZXh0OiB0ZXh0ID8/IFwiXCIsXG4gICAgICAgIG1lc3NhZ2VUeXBlOiBmbGFnc1tcIm1lc3NhZ2UtdHlwZVwiXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzcCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaGVhZGVyKFwiRW5oYW5jZWQgdGV4dFwiKTtcbiAgICBjb25zb2xlLmxvZyhcIiAgXCIgKyAocmVzcC5lbmhhbmNlZCB8fCBjb2xvcnMuZGltKFwiKG5vIGNoYW5nZSlcIikpKTtcbiAgICBpZiAocmVzcC5leHBsYW5hdGlvbikge1xuICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgIGluZm8ocmVzcC5leHBsYW5hdGlvbik7XG4gICAgfVxuICAgIGlmICghcmVzcC5lbmhhbmNlZCB8fCByZXNwLmVuaGFuY2VkID09PSB0ZXh0KSB7XG4gICAgICBzdWNjZXNzKFwiTm8gZW5oYW5jZW1lbnQgc3VnZ2VzdGVkIOKAlCBvcmlnaW5hbCB0ZXh0IGxvb2tzIGdvb2QuXCIpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,20 +1,4 @@
1
1
  import { Command } from "@oclif/core";
2
- /**
3
- * `sendly upgrade` — bring the CLI up to the latest version.
4
- *
5
- * Detects the install path (Homebrew vs npm-global vs unknown) and
6
- * executes the matching package-manager upgrade command. If the install
7
- * path is unknown we print both options for the user to pick.
8
- *
9
- * The `--check` flag does a dry-run: prints what would happen without
10
- * executing anything. Useful in restricted shells where we don't want
11
- * to trigger a brew/npm run accidentally.
12
- *
13
- * The unattended in-band update banner that prompts users to run this
14
- * comes from the `@oclif/plugin-warn-if-update-available` plugin wired
15
- * in package.json; this command is the companion action for that
16
- * banner.
17
- */
18
2
  export default class Upgrade extends Command {
19
3
  static description: string;
20
4
  static examples: string[];
@@ -22,4 +6,5 @@ export default class Upgrade extends Command {
22
6
  check: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
23
7
  };
24
8
  run(): Promise<void>;
9
+ private renderSuccess;
25
10
  }