@sendly/cli 3.12.2 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/commands/campaigns/cancel.d.ts +13 -0
  2. package/dist/commands/campaigns/cancel.js +34 -0
  3. package/dist/commands/campaigns/create.d.ts +14 -0
  4. package/dist/commands/campaigns/create.js +63 -0
  5. package/dist/commands/campaigns/delete.d.ts +14 -0
  6. package/dist/commands/campaigns/delete.js +63 -0
  7. package/dist/commands/campaigns/get.d.ts +13 -0
  8. package/dist/commands/campaigns/get.js +91 -0
  9. package/dist/commands/campaigns/list.d.ts +13 -0
  10. package/dist/commands/campaigns/list.js +116 -0
  11. package/dist/commands/campaigns/preview.d.ts +13 -0
  12. package/dist/commands/campaigns/preview.js +60 -0
  13. package/dist/commands/campaigns/schedule.d.ts +15 -0
  14. package/dist/commands/campaigns/schedule.js +59 -0
  15. package/dist/commands/campaigns/send.d.ts +14 -0
  16. package/dist/commands/campaigns/send.js +78 -0
  17. package/dist/commands/contacts/create.d.ts +13 -0
  18. package/dist/commands/contacts/create.js +48 -0
  19. package/dist/commands/contacts/delete.d.ts +14 -0
  20. package/dist/commands/contacts/delete.js +52 -0
  21. package/dist/commands/contacts/get.d.ts +13 -0
  22. package/dist/commands/contacts/get.js +51 -0
  23. package/dist/commands/contacts/list.d.ts +14 -0
  24. package/dist/commands/contacts/list.js +101 -0
  25. package/dist/commands/contacts/lists/add.d.ts +14 -0
  26. package/dist/commands/contacts/lists/add.js +40 -0
  27. package/dist/commands/contacts/lists/create.d.ts +12 -0
  28. package/dist/commands/contacts/lists/create.js +40 -0
  29. package/dist/commands/contacts/lists/delete.d.ts +14 -0
  30. package/dist/commands/contacts/lists/delete.js +52 -0
  31. package/dist/commands/contacts/lists/index.d.ts +10 -0
  32. package/dist/commands/contacts/lists/index.js +68 -0
  33. package/dist/commands/contacts/lists/remove.d.ts +14 -0
  34. package/dist/commands/contacts/lists/remove.js +36 -0
  35. package/dist/commands/keys/get.d.ts +13 -0
  36. package/dist/commands/keys/get.js +53 -0
  37. package/dist/commands/keys/rename.d.ts +14 -0
  38. package/dist/commands/keys/rename.js +53 -0
  39. package/dist/commands/keys/rotate.d.ts +15 -0
  40. package/dist/commands/keys/rotate.js +82 -0
  41. package/dist/commands/keys/usage.d.ts +13 -0
  42. package/dist/commands/keys/usage.js +102 -0
  43. package/dist/commands/templates/clone.d.ts +14 -0
  44. package/dist/commands/templates/clone.js +45 -0
  45. package/dist/commands/verify/list.d.ts +3 -0
  46. package/dist/commands/verify/list.js +31 -5
  47. package/dist/lib/api-client.d.ts +9 -2
  48. package/dist/lib/api-client.js +31 -7
  49. package/dist/lib/base-command.js +31 -4
  50. package/dist/lib/output.d.ts +4 -2
  51. package/dist/lib/output.js +19 -6
  52. package/package.json +1 -1
@@ -5,7 +5,7 @@
5
5
  import { Command, Flags } from "@oclif/core";
6
6
  import { setOutputFormat, setQuietMode, error } from "./output.js";
7
7
  import { isAuthenticated } from "./config.js";
8
- import { ApiError, AuthenticationError, ApiKeyRequiredError, } from "./api-client.js";
8
+ import { ApiError, AuthenticationError, ApiKeyRequiredError, RateLimitError, InsufficientCreditsError, NotFoundError, ValidationError, } from "./api-client.js";
9
9
  export class BaseCommand extends Command {
10
10
  static baseFlags = {
11
11
  json: Flags.boolean({
@@ -36,14 +36,41 @@ export class BaseCommand extends Command {
36
36
  this.exit(1);
37
37
  }
38
38
  if (err instanceof AuthenticationError) {
39
- error("Not authenticated", {
40
- hint: "Run 'sendly login' to authenticate",
39
+ error(err.message, {
40
+ hint: err.hint,
41
+ });
42
+ this.exit(1);
43
+ }
44
+ if (err instanceof RateLimitError) {
45
+ error(err.message, {
46
+ "Retry after": `${err.retryAfter} seconds`,
47
+ hint: err.hint,
48
+ });
49
+ this.exit(1);
50
+ }
51
+ if (err instanceof InsufficientCreditsError) {
52
+ error(err.message, {
53
+ hint: err.hint,
54
+ });
55
+ this.exit(1);
56
+ }
57
+ if (err instanceof NotFoundError) {
58
+ error(err.message, {
59
+ hint: err.hint,
60
+ });
61
+ this.exit(1);
62
+ }
63
+ if (err instanceof ValidationError) {
64
+ error(err.message, {
65
+ hint: err.hint,
66
+ ...(err.details || {}),
41
67
  });
42
68
  this.exit(1);
43
69
  }
44
70
  if (err instanceof ApiError) {
45
71
  error(err.message, {
46
72
  code: err.code,
73
+ ...(err.hint && { hint: err.hint }),
47
74
  ...(err.details || {}),
48
75
  });
49
76
  this.exit(1);
@@ -63,4 +90,4 @@ export class AuthenticatedCommand extends BaseCommand {
63
90
  this.requireAuth();
64
91
  }
65
92
  }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21tYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9iYXNlLWNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUNMLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsbUJBQW1CLEdBQ3BCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsTUFBTSxPQUFnQixXQUFZLFNBQVEsT0FBTztJQUMvQyxNQUFNLENBQUMsU0FBUyxHQUFHO1FBQ2pCLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2xCLFdBQVcsRUFBRSx1QkFBdUI7WUFDcEMsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO1FBQ0YsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDbkIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsZ0JBQWdCO1lBQzdCLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNsQixNQUFNLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFpQyxDQUFDLENBQUM7UUFFM0UsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBVTtRQUM5QixJQUFJLEdBQUcsWUFBWSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3ZDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFO2dCQUNqQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7YUFDZixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksR0FBRyxZQUFZLG1CQUFtQixFQUFFLENBQUM7WUFDdkMsS0FBSyxDQUFDLG1CQUFtQixFQUFFO2dCQUN6QixJQUFJLEVBQUUsb0NBQW9DO2FBQzNDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxHQUFHLFlBQVksUUFBUSxFQUFFLENBQUM7WUFDNUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtnQkFDZCxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7YUFDdkIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDZixDQUFDO0lBRVMsV0FBVztRQUNuQixJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQzs7QUFHSCxNQUFNLE9BQWdCLG9CQUFxQixTQUFRLFdBQVc7SUFDbEQsS0FBSyxDQUFDLElBQUk7UUFDbEIsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQmFzZSBDb21tYW5kIGNsYXNzIGZvciBhbGwgU2VuZGx5IENMSSBjb21tYW5kc1xuICogUHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxpdHkgYW5kIGZsYWdzXG4gKi9cblxuaW1wb3J0IHsgQ29tbWFuZCwgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IHNldE91dHB1dEZvcm1hdCwgc2V0UXVpZXRNb2RlLCBlcnJvciB9IGZyb20gXCIuL291dHB1dC5qc1wiO1xuaW1wb3J0IHsgaXNBdXRoZW50aWNhdGVkIH0gZnJvbSBcIi4vY29uZmlnLmpzXCI7XG5pbXBvcnQge1xuICBBcGlFcnJvcixcbiAgQXV0aGVudGljYXRpb25FcnJvcixcbiAgQXBpS2V5UmVxdWlyZWRFcnJvcixcbn0gZnJvbSBcIi4vYXBpLWNsaWVudC5qc1wiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIGJhc2VGbGFncyA9IHtcbiAgICBqc29uOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk91dHB1dCBpbiBKU09OIGZvcm1hdFwiLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gICAgcXVpZXQ6IEZsYWdzLmJvb2xlYW4oe1xuICAgICAgY2hhcjogXCJxXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJNaW5pbWFsIG91dHB1dFwiLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gIH07XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIuaW5pdCgpO1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgQmFzZUNvbW1hbmQpO1xuXG4gICAgaWYgKGZsYWdzLmpzb24pIHtcbiAgICAgIHNldE91dHB1dEZvcm1hdChcImpzb25cIik7XG4gICAgfVxuICAgIGlmIChmbGFncy5xdWlldCkge1xuICAgICAgc2V0UXVpZXRNb2RlKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjYXRjaChlcnI6IEVycm9yKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEFwaUtleVJlcXVpcmVkRXJyb3IpIHtcbiAgICAgIGVycm9yKGVyci5tZXNzYWdlLCB7XG4gICAgICAgIGhpbnQ6IGVyci5oaW50LFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEF1dGhlbnRpY2F0aW9uRXJyb3IpIHtcbiAgICAgIGVycm9yKFwiTm90IGF1dGhlbnRpY2F0ZWRcIiwge1xuICAgICAgICBoaW50OiBcIlJ1biAnc2VuZGx5IGxvZ2luJyB0byBhdXRoZW50aWNhdGVcIixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBBcGlFcnJvcikge1xuICAgICAgZXJyb3IoZXJyLm1lc3NhZ2UsIHtcbiAgICAgICAgY29kZTogZXJyLmNvZGUsXG4gICAgICAgIC4uLihlcnIuZGV0YWlscyB8fCB7fSksXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBlcnJvcihlcnIubWVzc2FnZSk7XG4gICAgdGhpcy5leGl0KDEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlcXVpcmVBdXRoKCk6IHZvaWQge1xuICAgIGlmICghaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoZW50aWNhdGVkQ29tbWFuZCBleHRlbmRzIEJhc2VDb21tYW5kIHtcbiAgcHJvdGVjdGVkIGFzeW5jIGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIuaW5pdCgpO1xuICAgIHRoaXMucmVxdWlyZUF1dGgoKTtcbiAgfVxufVxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21tYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9iYXNlLWNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUNMLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsYUFBYSxFQUNiLGVBQWUsR0FDaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixNQUFNLE9BQWdCLFdBQVksU0FBUSxPQUFPO0lBQy9DLE1BQU0sQ0FBQyxTQUFTLEdBQUc7UUFDakIsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDbEIsV0FBVyxFQUFFLHVCQUF1QjtZQUNwQyxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7UUFDRixLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNuQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2xCLE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQWlDLENBQUMsQ0FBQztRQUUzRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMs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LENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYXNlIENvbW1hbmQgY2xhc3MgZm9yIGFsbCBTZW5kbHkgQ0xJIGNvbW1hbmRzXG4gKiBQcm92aWRlcyBjb21tb24gZnVuY3Rpb25hbGl0eSBhbmQgZmxhZ3NcbiAqL1xuXG5pbXBvcnQgeyBDb21tYW5kLCBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgc2V0T3V0cHV0Rm9ybWF0LCBzZXRRdWlldE1vZGUsIGVycm9yIH0gZnJvbSBcIi4vb3V0cHV0LmpzXCI7XG5pbXBvcnQgeyBpc0F1dGhlbnRpY2F0ZWQgfSBmcm9tIFwiLi9jb25maWcuanNcIjtcbmltcG9ydCB7XG4gIEFwaUVycm9yLFxuICBBdXRoZW50aWNhdGlvbkVycm9yLFxuICBBcGlLZXlSZXF1aXJlZEVycm9yLFxuICBSYXRlTGltaXRFcnJvcixcbiAgSW5zdWZmaWNpZW50Q3JlZGl0c0Vycm9yLFxuICBOb3RGb3VuZEVycm9yLFxuICBWYWxpZGF0aW9uRXJyb3IsXG59IGZyb20gXCIuL2FwaS1jbGllbnQuanNcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gIHN0YXRpYyBiYXNlRmxhZ3MgPSB7XG4gICAganNvbjogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBkZXNjcmlwdGlvbjogXCJPdXRwdXQgaW4gSlNPTiBmb3JtYXRcIixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pLFxuICAgIHF1aWV0OiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGNoYXI6IFwicVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWluaW1hbCBvdXRwdXRcIixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pLFxuICB9O1xuXG4gIHByb3RlY3RlZCBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLmluaXQoKTtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEJhc2VDb21tYW5kKTtcblxuICAgIGlmIChmbGFncy5qc29uKSB7XG4gICAgICBzZXRPdXRwdXRGb3JtYXQoXCJqc29uXCIpO1xuICAgIH1cbiAgICBpZiAoZmxhZ3MucXVpZXQpIHtcbiAgICAgIHNldFF1aWV0TW9kZSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY2F0Y2goZXJyOiBFcnJvcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBBcGlLZXlSZXF1aXJlZEVycm9yKSB7XG4gICAgICBlcnJvcihlcnIubWVzc2FnZSwge1xuICAgICAgICBoaW50OiBlcnIuaGludCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBBdXRoZW50aWNhdGlvbkVycm9yKSB7XG4gICAgICBlcnJvcihlcnIubWVzc2FnZSwge1xuICAgICAgICBoaW50OiBlcnIuaGludCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBSYXRlTGltaXRFcnJvcikge1xuICAgICAgZXJyb3IoZXJyLm1lc3NhZ2UsIHtcbiAgICAgICAgXCJSZXRyeSBhZnRlclwiOiBgJHtlcnIucmV0cnlBZnRlcn0gc2Vjb25kc2AsXG4gICAgICAgIGhpbnQ6IGVyci5oaW50LFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEluc3VmZmljaWVudENyZWRpdHNFcnJvcikge1xuICAgICAgZXJyb3IoZXJyLm1lc3NhZ2UsIHtcbiAgICAgICAgaGludDogZXJyLmhpbnQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikge1xuICAgICAgZXJyb3IoZXJyLm1lc3NhZ2UsIHtcbiAgICAgICAgaGludDogZXJyLmhpbnQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICBlcnJvcihlcnIubWVzc2FnZSwge1xuICAgICAgICBoaW50OiBlcnIuaGludCxcbiAgICAgICAgLi4uKGVyci5kZXRhaWxzIHx8IHt9KSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBBcGlFcnJvcikge1xuICAgICAgZXJyb3IoZXJyLm1lc3NhZ2UsIHtcbiAgICAgICAgY29kZTogZXJyLmNvZGUsXG4gICAgICAgIC4uLihlcnIuaGludCAmJiB7IGhpbnQ6IGVyci5oaW50IH0pLFxuICAgICAgICAuLi4oZXJyLmRldGFpbHMgfHwge30pLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgZXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgIHRoaXMuZXhpdCgxKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXF1aXJlQXV0aCgpOiB2b2lkIHtcbiAgICBpZiAoIWlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgICB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcigpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXV0aGVudGljYXRlZENvbW1hbmQgZXh0ZW5kcyBCYXNlQ29tbWFuZCB7XG4gIHByb3RlY3RlZCBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLmluaXQoKTtcbiAgICB0aGlzLnJlcXVpcmVBdXRoKCk7XG4gIH1cbn1cbiJdfQ==
@@ -18,6 +18,7 @@ export declare const colors: {
18
18
  dim: import("chalk").ChalkInstance;
19
19
  bold: import("chalk").ChalkInstance;
20
20
  code: import("chalk").ChalkInstance;
21
+ highlight: import("chalk").ChalkInstance;
21
22
  };
22
23
  export declare function success(message: string, data?: Record<string, unknown>): void;
23
24
  export declare function error(message: string, details?: Record<string, unknown>): void;
@@ -28,7 +29,7 @@ export interface TableColumn {
28
29
  header: string;
29
30
  key: string;
30
31
  width?: number;
31
- formatter?: (value: unknown) => string;
32
+ formatter?: (value: unknown, row?: Record<string, any>) => string;
32
33
  }
33
34
  export declare function table(data: Array<Record<string, any>>, columns: TableColumn[]): void;
34
35
  export declare function spinner(text: string): Ora;
@@ -39,5 +40,6 @@ export declare function formatCredits(credits: number): string;
39
40
  export declare function formatPhone(phone: string): string;
40
41
  export declare function header(title: string): void;
41
42
  export declare function divider(): void;
42
- export declare function keyValue(data: Record<string, unknown>): void;
43
+ export declare function keyValue(data: Record<string, unknown> | Array<[string, string | number]>): void;
44
+ export declare function detail(title: string, data: Record<string, unknown>): void;
43
45
  export declare function codeBlock(code: string, language?: string): void;
@@ -32,6 +32,7 @@ export const colors = {
32
32
  dim: chalk.dim,
33
33
  bold: chalk.bold,
34
34
  code: chalk.cyan,
35
+ highlight: chalk.bold.hex("#F59E0B"),
35
36
  };
36
37
  // Success output
37
38
  export function success(message, data) {
@@ -105,7 +106,7 @@ export function table(data, columns) {
105
106
  t.push(columns.map((col) => {
106
107
  const value = row[col.key];
107
108
  if (col.formatter) {
108
- return col.formatter(value);
109
+ return col.formatter(value, row);
109
110
  }
110
111
  return String(value ?? "-");
111
112
  }));
@@ -195,18 +196,30 @@ export function divider() {
195
196
  return;
196
197
  console.log();
197
198
  }
198
- // Key-value display
199
+ // Key-value display - accepts Record or array of [key, value] tuples
199
200
  export function keyValue(data) {
201
+ const entries = Array.isArray(data) ? data : Object.entries(data);
200
202
  if (isJsonMode()) {
201
- console.log(JSON.stringify(data, null, 2));
203
+ const obj = Array.isArray(data) ? Object.fromEntries(data) : data;
204
+ console.log(JSON.stringify(obj, null, 2));
202
205
  return;
203
206
  }
204
- const maxKeyLength = Math.max(...Object.keys(data).map((k) => k.length));
205
- Object.entries(data).forEach(([key, value]) => {
207
+ const maxKeyLength = Math.max(...entries.map(([k]) => k.length));
208
+ entries.forEach(([key, value]) => {
206
209
  const paddedKey = key.padEnd(maxKeyLength);
207
210
  console.log(` ${colors.dim(paddedKey)} ${value}`);
208
211
  });
209
212
  }
213
+ // Detail view with title and key-value pairs
214
+ export function detail(title, data) {
215
+ if (isJsonMode()) {
216
+ console.log(JSON.stringify({ title, ...data }, null, 2));
217
+ return;
218
+ }
219
+ console.log(colors.bold(title));
220
+ console.log();
221
+ keyValue(data);
222
+ }
210
223
  // Code block
211
224
  export function codeBlock(code, language) {
212
225
  if (isJsonMode()) {
@@ -219,4 +232,4 @@ export function codeBlock(code, language) {
219
232
  console.log(colors.dim("```"));
220
233
  console.log();
221
234
  }
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9vdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEdBQWlCLE1BQU0sS0FBSyxDQUFDO0FBS3BDLElBQUksYUFBYSxHQUFpQixPQUFPLENBQUM7QUFDMUMsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBRXRCLE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBb0I7SUFDbEQsYUFBYSxHQUFHLE1BQU0sQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFjO0lBQ3pDLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVTtJQUN4QixPQUFPLGFBQWEsS0FBSyxNQUFNLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXO0lBQ3pCLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTO0FBQ1QsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLDhCQUE4QjtJQUM3RCxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUs7SUFDcEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHO0lBQ2hCLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTTtJQUNyQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7SUFDaEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO0lBQ2QsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO0lBQ2hCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtDQUNqQixD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LEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPdXRwdXQgRm9ybWF0dGluZyBVdGlsaXRpZXNcbiAqIEhhbmRsZXMgaHVtYW4tcmVhZGFibGUgYW5kIEpTT04gb3V0cHV0IG1vZGVzXG4gKi9cblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IFRhYmxlIGZyb20gXCJjbGktdGFibGUzXCI7XG5pbXBvcnQgb3JhLCB7IHR5cGUgT3JhIH0gZnJvbSBcIm9yYVwiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnVmFsdWUgfSBmcm9tIFwiLi9jb25maWcuanNcIjtcblxuZXhwb3J0IHR5cGUgT3V0cHV0Rm9ybWF0ID0gXCJodW1hblwiIHwgXCJqc29uXCI7XG5cbmxldCBjdXJyZW50Rm9ybWF0OiBPdXRwdXRGb3JtYXQgPSBcImh1bWFuXCI7XG5sZXQgcXVpZXRNb2RlID0gZmFsc2U7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRPdXRwdXRGb3JtYXQoZm9ybWF0OiBPdXRwdXRGb3JtYXQpOiB2b2lkIHtcbiAgY3VycmVudEZvcm1hdCA9IGZvcm1hdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFF1aWV0TW9kZShxdWlldDogYm9vbGVhbik6IHZvaWQge1xuICBxdWlldE1vZGUgPSBxdWlldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE91dHB1dEZvcm1hdCgpOiBPdXRwdXRGb3JtYXQge1xuICByZXR1cm4gY3VycmVudEZvcm1hdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSnNvbk1vZGUoKTogYm9vbGVhbiB7XG4gIHJldHVybiBjdXJyZW50Rm9ybWF0ID09PSBcImpzb25cIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUXVpZXRNb2RlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gcXVpZXRNb2RlO1xufVxuXG4vLyBDb2xvcnNcbmV4cG9ydCBjb25zdCBjb2xvcnMgPSB7XG4gIHByaW1hcnk6IGNoYWxrLmhleChcIiNGNTlFMEJcIiksIC8vIEFtYmVyL09yYW5nZSAtIFNlbmRseSBicmFuZFxuICBzdWNjZXNzOiBjaGFsay5ncmVlbixcbiAgZXJyb3I6IGNoYWxrLnJlZCxcbiAgd2FybmluZzogY2hhbGsueWVsbG93LFxuICBpbmZvOiBjaGFsay5ibHVlLFxuICBkaW06IGNoYWxrLmRpbSxcbiAgYm9sZDogY2hhbGsuYm9sZCxcbiAgY29kZTogY2hhbGsuY3lhbixcbn07XG5cbi8vIFN1Y2Nlc3Mgb3V0cHV0XG5leHBvcnQgZnVuY3Rpb24gc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyBzdWNjZXNzOiB0cnVlLCBtZXNzYWdlLCAuLi5kYXRhIH0sIG51bGwsIDIpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocXVpZXRNb2RlKSB7XG4gICAgaWYgKGRhdGE/LmlkKSBjb25zb2xlLmxvZyhkYXRhLmlkKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zb2xlLmxvZyhgJHtjb2xvcnMuc3VjY2VzcyhcIuKck1wiKX0gJHttZXNzYWdlfWApO1xuICBpZiAoZGF0YSkge1xuICAgIE9iamVjdC5lbnRyaWVzKGRhdGEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coYCAgJHtjb2xvcnMuZGltKGtleSArIFwiOlwiKX0gJHt2YWx1ZX1gKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyBFcnJvciBvdXRwdXRcbmV4cG9ydCBmdW5jdGlvbiBlcnJvcihcbiAgbWVzc2FnZTogc3RyaW5nLFxuICBkZXRhaWxzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiB2b2lkIHtcbiAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IGVycm9yOiB0cnVlLCBtZXNzYWdlLCAuLi5kZXRhaWxzIH0sIG51bGwsIDIpLFxuICAgICk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc29sZS5lcnJvcihgJHtjb2xvcnMuZXJyb3IoXCLinJdcIil9ICR7bWVzc2FnZX1gKTtcbiAgaWYgKGRldGFpbHMgJiYgIXF1aWV0TW9kZSkge1xuICAgIE9iamVjdC5lbnRyaWVzKGRldGFpbHMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihgICAke2NvbG9ycy5kaW0oa2V5ICsgXCI6XCIpfSAke3ZhbHVlfWApO1xuICAgIH0pO1xuICB9XG59XG5cbi8vIFdhcm5pbmcgb3V0cHV0XG5leHBvcnQgZnVuY3Rpb24gd2FybihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGlzSnNvbk1vZGUoKSkgcmV0dXJuO1xuICBpZiAocXVpZXRNb2RlKSByZXR1cm47XG4gIGNvbnNvbGUubG9nKGAke2NvbG9ycy53YXJuaW5nKFwi4pqgXCIpfSAke21lc3NhZ2V9YCk7XG59XG5cbi8vIEluZm8gb3V0cHV0XG5leHBvcnQgZnVuY3Rpb24gaW5mbyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGlzSnNvbk1vZGUoKSkgcmV0dXJuO1xuICBpZiAocXVpZXRNb2RlKSByZXR1cm47XG4gIGNvbnNvbGUubG9nKGAke2NvbG9ycy5pbmZvKFwi4oS5XCIpfSAke21lc3NhZ2V9YCk7XG59XG5cbi8vIFByaW50IHJhdyBKU09OXG5leHBvcnQgZnVuY3Rpb24ganNvbihkYXRhOiB1bmtub3duKTogdm9pZCB7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpKTtcbn1cblxuLy8gUHJpbnQgYSB0YWJsZVxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbHVtbiB7XG4gIGhlYWRlcjogc3RyaW5nO1xuICBrZXk6IHN0cmluZztcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGZvcm1hdHRlcj86ICh2YWx1ZTogdW5rbm93bikgPT4gc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGUoXG4gIGRhdGE6IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+LFxuICBjb2x1bW5zOiBUYWJsZUNvbHVtbltdLFxuKTogdm9pZCB7XG4gIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgaW5mbyhcIk5vIGRhdGEgdG8gZGlzcGxheVwiKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB0ID0gbmV3IFRhYmxlKHtcbiAgICBoZWFkOiBjb2x1bW5zLm1hcCgoYykgPT4gY29sb3JzLmJvbGQoYy5oZWFkZXIpKSxcbiAgICBzdHlsZToge1xuICAgICAgaGVhZDogW10sXG4gICAgICBib3JkZXI6IFtdLFxuICAgIH0sXG4gICAgY29sV2lkdGhzOiBjb2x1bW5zLm1hcCgoYykgPT4gYy53aWR0aCA/PyBudWxsKSxcbiAgfSk7XG5cbiAgZGF0YS5mb3JFYWNoKChyb3cpID0+IHtcbiAgICB0LnB1c2goXG4gICAgICBjb2x1bW5zLm1hcCgoY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcm93W2NvbC5rZXldO1xuICAgICAgICBpZiAoY29sLmZvcm1hdHRlcikge1xuICAgICAgICAgIHJldHVybiBjb2wuZm9ybWF0dGVyKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlID8/IFwiLVwiKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH0pO1xuXG4gIGNvbnNvbGUubG9nKHQudG9TdHJpbmcoKSk7XG59XG5cbi8vIFNwaW5uZXIgZm9yIGxvbmcgb3BlcmF0aW9uc1xuZXhwb3J0IGZ1bmN0aW9uIHNwaW5uZXIodGV4dDogc3RyaW5nKTogT3JhIHtcbiAgaWYgKGlzSnNvbk1vZGUoKSB8fCBxdWlldE1vZGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6ICgpID0+ICh7IHN0b3A6ICgpID0+IHt9LCBzdWNjZWVkOiAoKSA9PiB7fSwgZmFpbDogKCkgPT4ge30gfSksXG4gICAgICBzdG9wOiAoKSA9PiB7fSxcbiAgICAgIHN1Y2NlZWQ6ICgpID0+IHt9LFxuICAgICAgZmFpbDogKCkgPT4ge30sXG4gICAgfSBhcyB1bmtub3duIGFzIE9yYTtcbiAgfVxuXG4gIHJldHVybiBvcmEoe1xuICAgIHRleHQsXG4gICAgY29sb3I6IFwieWVsbG93XCIsXG4gICAgc3Bpbm5lcjogXCJkb3RzXCIsXG4gIH0pO1xufVxuXG4vLyBTdGF0dXMgZm9ybWF0dGVyc1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoc3RhdHVzLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlIFwiZGVsaXZlcmVkXCI6XG4gICAgY2FzZSBcInN1Y2Nlc3NcIjpcbiAgICBjYXNlIFwiYWN0aXZlXCI6XG4gICAgY2FzZSBcInZlcmlmaWVkXCI6XG4gICAgICByZXR1cm4gY29sb3JzLnN1Y2Nlc3Moc3RhdHVzKTtcbiAgICBjYXNlIFwiZmFpbGVkXCI6XG4gICAgY2FzZSBcImVycm9yXCI6XG4gICAgY2FzZSBcInJldm9rZWRcIjpcbiAgICBjYXNlIFwicmVqZWN0ZWRcIjpcbiAgICAgIHJldHVybiBjb2xvcnMuZXJyb3Ioc3RhdHVzKTtcbiAgICBjYXNlIFwicXVldWVkXCI6XG4gICAgY2FzZSBcInBlbmRpbmdcIjpcbiAgICBjYXNlIFwicHJvY2Vzc2luZ1wiOlxuICAgICAgcmV0dXJuIGNvbG9ycy53YXJuaW5nKHN0YXR1cyk7XG4gICAgY2FzZSBcInNlbnRcIjpcbiAgICAgIHJldHVybiBjb2xvcnMuaW5mbyhzdGF0dXMpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdHVzO1xuICB9XG59XG5cbi8vIEZvcm1hdCBkYXRlXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xuICByZXR1cm4gZC50b0xvY2FsZVN0cmluZygpO1xufVxuXG4vLyBGb3JtYXQgcmVsYXRpdmUgdGltZVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlVGltZShkYXRlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBkaWZmID0gbm93LmdldFRpbWUoKSAtIGQuZ2V0VGltZSgpO1xuXG4gIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKGRpZmYgLyAxMDAwKTtcbiAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKG1pbnV0ZXMgLyA2MCk7XG4gIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKGhvdXJzIC8gMjQpO1xuXG4gIGlmIChkYXlzID4gMCkgcmV0dXJuIGAke2RheXN9ZCBhZ29gO1xuICBpZiAoaG91cnMgPiAwKSByZXR1cm4gYCR7aG91cnN9aCBhZ29gO1xuICBpZiAobWludXRlcyA+IDApIHJldHVybiBgJHttaW51dGVzfW0gYWdvYDtcbiAgcmV0dXJuIGAke3NlY29uZHN9cyBhZ29gO1xufVxuXG4vLyBGb3JtYXQgY3JlZGl0c1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdENyZWRpdHMoY3JlZGl0czogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke2NyZWRpdHMudG9Mb2NhbGVTdHJpbmcoKX0gY3JlZGl0c2A7XG59XG5cbi8vIEZvcm1hdCBwaG9uZSBudW1iZXJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQaG9uZShwaG9uZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbG9ycy5jb2RlKHBob25lKTtcbn1cblxuLy8gSGVhZGVyIGZvciBjb21tYW5kc1xuZXhwb3J0IGZ1bmN0aW9uIGhlYWRlcih0aXRsZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChpc0pzb25Nb2RlKCkgfHwgcXVpZXRNb2RlKSByZXR1cm47XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKGNvbG9ycy5wcmltYXJ5KHRpdGxlKSkpO1xuICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwi4pSAXCIucmVwZWF0KDQwKSkpO1xufVxuXG4vLyBEaXZpZGVyXG5leHBvcnQgZnVuY3Rpb24gZGl2aWRlcigpOiB2b2lkIHtcbiAgaWYgKGlzSnNvbk1vZGUoKSB8fCBxdWlldE1vZGUpIHJldHVybjtcbiAgY29uc29sZS5sb2coKTtcbn1cblxuLy8gS2V5LXZhbHVlIGRpc3BsYXlcbmV4cG9ydCBmdW5jdGlvbiBrZXlWYWx1ZShkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG1heEtleUxlbmd0aCA9IE1hdGgubWF4KC4uLk9iamVjdC5rZXlzKGRhdGEpLm1hcCgoaykgPT4gay5sZW5ndGgpKTtcblxuICBPYmplY3QuZW50cmllcyhkYXRhKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBjb25zdCBwYWRkZWRLZXkgPSBrZXkucGFkRW5kKG1heEtleUxlbmd0aCk7XG4gICAgY29uc29sZS5sb2coYCAgJHtjb2xvcnMuZGltKHBhZGRlZEtleSl9ICAke3ZhbHVlfWApO1xuICB9KTtcbn1cblxuLy8gQ29kZSBibG9ja1xuZXhwb3J0IGZ1bmN0aW9uIGNvZGVCbG9jayhjb2RlOiBzdHJpbmcsIGxhbmd1YWdlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IGNvZGUsIGxhbmd1YWdlIH0sIG51bGwsIDIpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiYGBgXCIgKyAobGFuZ3VhZ2UgfHwgXCJcIikpKTtcbiAgY29uc29sZS5sb2coY29sb3JzLmNvZGUoY29kZSkpO1xuICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiYGBgXCIpKTtcbiAgY29uc29sZS5sb2coKTtcbn1cbiJdfQ==
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9vdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEdBQWlCLE1BQU0sS0FBSyxDQUFDO0FBS3BDLElBQUksYUFBYSxHQUFpQixPQUFPLENBQUM7QUFDMUMsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBRXRCLE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBb0I7SUFDbEQsYUFBYSxHQUFHLE1BQU0sQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFjO0lBQ3pDLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVTtJQUN4QixPQUFPLGFBQWEsS0FBSyxNQUFNLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXO0lBQ3pCLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTO0FBQ1QsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLDhCQUE4QjtJQUM3RCxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUs7SUFDcEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHO0lBQ2hCLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTTtJQUNyQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7SUFDaEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO0lBQ2QsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO0lBQ2hCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtJQUNoQixT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QUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxPQUFPO0lBQ1QsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQixDQUFDO0FBRUQsYUFBYTtBQUNiLE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBWSxFQUFFLFFBQWlCO0lBQ3ZELElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsT0FBTztJQUNULENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT3V0cHV0IEZvcm1hdHRpbmcgVXRpbGl0aWVzXG4gKiBIYW5kbGVzIGh1bWFuLXJlYWRhYmxlIGFuZCBKU09OIG91dHB1dCBtb2Rlc1xuICovXG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCBUYWJsZSBmcm9tIFwiY2xpLXRhYmxlM1wiO1xuaW1wb3J0IG9yYSwgeyB0eXBlIE9yYSB9IGZyb20gXCJvcmFcIjtcbmltcG9ydCB7IGdldENvbmZpZ1ZhbHVlIH0gZnJvbSBcIi4vY29uZmlnLmpzXCI7XG5cbmV4cG9ydCB0eXBlIE91dHB1dEZvcm1hdCA9IFwiaHVtYW5cIiB8IFwianNvblwiO1xuXG5sZXQgY3VycmVudEZvcm1hdDogT3V0cHV0Rm9ybWF0ID0gXCJodW1hblwiO1xubGV0IHF1aWV0TW9kZSA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0T3V0cHV0Rm9ybWF0KGZvcm1hdDogT3V0cHV0Rm9ybWF0KTogdm9pZCB7XG4gIGN1cnJlbnRGb3JtYXQgPSBmb3JtYXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRRdWlldE1vZGUocXVpZXQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgcXVpZXRNb2RlID0gcXVpZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPdXRwdXRGb3JtYXQoKTogT3V0cHV0Rm9ybWF0IHtcbiAgcmV0dXJuIGN1cnJlbnRGb3JtYXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0pzb25Nb2RlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY3VycmVudEZvcm1hdCA9PT0gXCJqc29uXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1F1aWV0TW9kZSgpOiBib29sZWFuIHtcbiAgcmV0dXJuIHF1aWV0TW9kZTtcbn1cblxuLy8gQ29sb3JzXG5leHBvcnQgY29uc3QgY29sb3JzID0ge1xuICBwcmltYXJ5OiBjaGFsay5oZXgoXCIjRjU5RTBCXCIpLCAvLyBBbWJlci9PcmFuZ2UgLSBTZW5kbHkgYnJhbmRcbiAgc3VjY2VzczogY2hhbGsuZ3JlZW4sXG4gIGVycm9yOiBjaGFsay5yZWQsXG4gIHdhcm5pbmc6IGNoYWxrLnllbGxvdyxcbiAgaW5mbzogY2hhbGsuYmx1ZSxcbiAgZGltOiBjaGFsay5kaW0sXG4gIGJvbGQ6IGNoYWxrLmJvbGQsXG4gIGNvZGU6IGNoYWxrLmN5YW4sXG4gIGhpZ2hsaWdodDogY2hhbGsuYm9sZC5oZXgoXCIjRjU5RTBCXCIpLFxufTtcblxuLy8gU3VjY2VzcyBvdXRwdXRcbmV4cG9ydCBmdW5jdGlvbiBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2UsIC4uLmRhdGEgfSwgbnVsbCwgMikpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChxdWlldE1vZGUpIHtcbiAgICBpZiAoZGF0YT8uaWQpIGNvbnNvbGUubG9nKGRhdGEuaWQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKGAke2NvbG9ycy5zdWNjZXNzKFwi4pyTXCIpfSAke21lc3NhZ2V9YCk7XG4gIGlmIChkYXRhKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoZGF0YSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhgICAke2NvbG9ycy5kaW0oa2V5ICsgXCI6XCIpfSAke3ZhbHVlfWApO1xuICAgIH0pO1xuICB9XG59XG5cbi8vIEVycm9yIG91dHB1dFxuZXhwb3J0IGZ1bmN0aW9uIGVycm9yKFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IHZvaWQge1xuICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IHRydWUsIG1lc3NhZ2UsIC4uLmRldGFpbHMgfSwgbnVsbCwgMiksXG4gICAgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zb2xlLmVycm9yKGAke2NvbG9ycy5lcnJvcihcIuKcl1wiKX0gJHttZXNzYWdlfWApO1xuICBpZiAoZGV0YWlscyAmJiAhcXVpZXRNb2RlKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoZGV0YWlscykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGAgICR7Y29sb3JzLmRpbShrZXkgKyBcIjpcIil9ICR7dmFsdWV9YCk7XG4gICAgfSk7XG4gIH1cbn1cblxuLy8gV2FybmluZyBvdXRwdXRcbmV4cG9ydCBmdW5jdGlvbiB3YXJuKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoaXNKc29uTW9kZSgpKSByZXR1cm47XG4gIGlmIChxdWlldE1vZGUpIHJldHVybjtcbiAgY29uc29sZS5sb2coYCR7Y29sb3JzLndhcm5pbmcoXCLimqBcIil9ICR7bWVzc2FnZX1gKTtcbn1cblxuLy8gSW5mbyBvdXRwdXRcbmV4cG9ydCBmdW5jdGlvbiBpbmZvKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoaXNKc29uTW9kZSgpKSByZXR1cm47XG4gIGlmIChxdWlldE1vZGUpIHJldHVybjtcbiAgY29uc29sZS5sb2coYCR7Y29sb3JzLmluZm8oXCLihLlcIil9ICR7bWVzc2FnZX1gKTtcbn1cblxuLy8gUHJpbnQgcmF3IEpTT05cbmV4cG9ydCBmdW5jdGlvbiBqc29uKGRhdGE6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikpO1xufVxuXG4vLyBQcmludCBhIHRhYmxlXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1uIHtcbiAgaGVhZGVyOiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xuICB3aWR0aD86IG51bWJlcjtcbiAgZm9ybWF0dGVyPzogKHZhbHVlOiB1bmtub3duLCByb3c/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZShcbiAgZGF0YTogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4sXG4gIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10sXG4pOiB2b2lkIHtcbiAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICBpbmZvKFwiTm8gZGF0YSB0byBkaXNwbGF5XCIpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHQgPSBuZXcgVGFibGUoe1xuICAgIGhlYWQ6IGNvbHVtbnMubWFwKChjKSA9PiBjb2xvcnMuYm9sZChjLmhlYWRlcikpLFxuICAgIHN0eWxlOiB7XG4gICAgICBoZWFkOiBbXSxcbiAgICAgIGJvcmRlcjogW10sXG4gICAgfSxcbiAgICBjb2xXaWR0aHM6IGNvbHVtbnMubWFwKChjKSA9PiBjLndpZHRoID8/IG51bGwpLFxuICB9KTtcblxuICBkYXRhLmZvckVhY2goKHJvdykgPT4ge1xuICAgIHQucHVzaChcbiAgICAgIGNvbHVtbnMubWFwKChjb2wpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByb3dbY29sLmtleV07XG4gICAgICAgIGlmIChjb2wuZm9ybWF0dGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbC5mb3JtYXR0ZXIodmFsdWUsIHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSA/PyBcIi1cIik7XG4gICAgICB9KSxcbiAgICApO1xuICB9KTtcblxuICBjb25zb2xlLmxvZyh0LnRvU3RyaW5nKCkpO1xufVxuXG4vLyBTcGlubmVyIGZvciBsb25nIG9wZXJhdGlvbnNcbmV4cG9ydCBmdW5jdGlvbiBzcGlubmVyKHRleHQ6IHN0cmluZyk6IE9yYSB7XG4gIGlmIChpc0pzb25Nb2RlKCkgfHwgcXVpZXRNb2RlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiAoKSA9PiAoeyBzdG9wOiAoKSA9PiB7fSwgc3VjY2VlZDogKCkgPT4ge30sIGZhaWw6ICgpID0+IHt9IH0pLFxuICAgICAgc3RvcDogKCkgPT4ge30sXG4gICAgICBzdWNjZWVkOiAoKSA9PiB7fSxcbiAgICAgIGZhaWw6ICgpID0+IHt9LFxuICAgIH0gYXMgdW5rbm93biBhcyBPcmE7XG4gIH1cblxuICByZXR1cm4gb3JhKHtcbiAgICB0ZXh0LFxuICAgIGNvbG9yOiBcInllbGxvd1wiLFxuICAgIHNwaW5uZXI6IFwiZG90c1wiLFxuICB9KTtcbn1cblxuLy8gU3RhdHVzIGZvcm1hdHRlcnNcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTdGF0dXMoc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHN0YXR1cy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSBcImRlbGl2ZXJlZFwiOlxuICAgIGNhc2UgXCJzdWNjZXNzXCI6XG4gICAgY2FzZSBcImFjdGl2ZVwiOlxuICAgIGNhc2UgXCJ2ZXJpZmllZFwiOlxuICAgICAgcmV0dXJuIGNvbG9ycy5zdWNjZXNzKHN0YXR1cyk7XG4gICAgY2FzZSBcImZhaWxlZFwiOlxuICAgIGNhc2UgXCJlcnJvclwiOlxuICAgIGNhc2UgXCJyZXZva2VkXCI6XG4gICAgY2FzZSBcInJlamVjdGVkXCI6XG4gICAgICByZXR1cm4gY29sb3JzLmVycm9yKHN0YXR1cyk7XG4gICAgY2FzZSBcInF1ZXVlZFwiOlxuICAgIGNhc2UgXCJwZW5kaW5nXCI6XG4gICAgY2FzZSBcInByb2Nlc3NpbmdcIjpcbiAgICAgIHJldHVybiBjb2xvcnMud2FybmluZyhzdGF0dXMpO1xuICAgIGNhc2UgXCJzZW50XCI6XG4gICAgICByZXR1cm4gY29sb3JzLmluZm8oc3RhdHVzKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXR1cztcbiAgfVxufVxuXG4vLyBGb3JtYXQgZGF0ZVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgcmV0dXJuIGQudG9Mb2NhbGVTdHJpbmcoKTtcbn1cblxuLy8gRm9ybWF0IHJlbGF0aXZlIHRpbWVcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRSZWxhdGl2ZVRpbWUoZGF0ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgZGlmZiA9IG5vdy5nZXRUaW1lKCkgLSBkLmdldFRpbWUoKTtcblxuICBjb25zdCBzZWNvbmRzID0gTWF0aC5mbG9vcihkaWZmIC8gMTAwMCk7XG4gIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG4gIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihtaW51dGVzIC8gNjApO1xuICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihob3VycyAvIDI0KTtcblxuICBpZiAoZGF5cyA+IDApIHJldHVybiBgJHtkYXlzfWQgYWdvYDtcbiAgaWYgKGhvdXJzID4gMCkgcmV0dXJuIGAke2hvdXJzfWggYWdvYDtcbiAgaWYgKG1pbnV0ZXMgPiAwKSByZXR1cm4gYCR7bWludXRlc31tIGFnb2A7XG4gIHJldHVybiBgJHtzZWNvbmRzfXMgYWdvYDtcbn1cblxuLy8gRm9ybWF0IGNyZWRpdHNcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRDcmVkaXRzKGNyZWRpdHM6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgJHtjcmVkaXRzLnRvTG9jYWxlU3RyaW5nKCl9IGNyZWRpdHNgO1xufVxuXG4vLyBGb3JtYXQgcGhvbmUgbnVtYmVyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UGhvbmUocGhvbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjb2xvcnMuY29kZShwaG9uZSk7XG59XG5cbi8vIEhlYWRlciBmb3IgY29tbWFuZHNcbmV4cG9ydCBmdW5jdGlvbiBoZWFkZXIodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoaXNKc29uTW9kZSgpIHx8IHF1aWV0TW9kZSkgcmV0dXJuO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChjb2xvcnMucHJpbWFyeSh0aXRsZSkpKTtcbiAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIuKUgFwiLnJlcGVhdCg0MCkpKTtcbn1cblxuLy8gRGl2aWRlclxuZXhwb3J0IGZ1bmN0aW9uIGRpdmlkZXIoKTogdm9pZCB7XG4gIGlmIChpc0pzb25Nb2RlKCkgfHwgcXVpZXRNb2RlKSByZXR1cm47XG4gIGNvbnNvbGUubG9nKCk7XG59XG5cbi8vIEtleS12YWx1ZSBkaXNwbGF5IC0gYWNjZXB0cyBSZWNvcmQgb3IgYXJyYXkgb2YgW2tleSwgdmFsdWVdIHR1cGxlc1xuZXhwb3J0IGZ1bmN0aW9uIGtleVZhbHVlKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgQXJyYXk8W3N0cmluZywgc3RyaW5nIHwgbnVtYmVyXT4pOiB2b2lkIHtcbiAgY29uc3QgZW50cmllcyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogT2JqZWN0LmVudHJpZXMoZGF0YSk7XG5cbiAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgIGNvbnN0IG9iaiA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBPYmplY3QuZnJvbUVudHJpZXMoZGF0YSkgOiBkYXRhO1xuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KG9iaiwgbnVsbCwgMikpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG1heEtleUxlbmd0aCA9IE1hdGgubWF4KC4uLmVudHJpZXMubWFwKChba10pID0+IGsubGVuZ3RoKSk7XG5cbiAgZW50cmllcy5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBjb25zdCBwYWRkZWRLZXkgPSBrZXkucGFkRW5kKG1heEtleUxlbmd0aCk7XG4gICAgY29uc29sZS5sb2coYCAgJHtjb2xvcnMuZGltKHBhZGRlZEtleSl9ICAke3ZhbHVlfWApO1xuICB9KTtcbn1cblxuLy8gRGV0YWlsIHZpZXcgd2l0aCB0aXRsZSBhbmQga2V5LXZhbHVlIHBhaXJzXG5leHBvcnQgZnVuY3Rpb24gZGV0YWlsKHRpdGxlOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IHRpdGxlLCAuLi5kYXRhIH0sIG51bGwsIDIpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZCh0aXRsZSkpO1xuICBjb25zb2xlLmxvZygpO1xuICBrZXlWYWx1ZShkYXRhKTtcbn1cblxuLy8gQ29kZSBibG9ja1xuZXhwb3J0IGZ1bmN0aW9uIGNvZGVCbG9jayhjb2RlOiBzdHJpbmcsIGxhbmd1YWdlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IGNvZGUsIGxhbmd1YWdlIH0sIG51bGwsIDIpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiYGBgXCIgKyAobGFuZ3VhZ2UgfHwgXCJcIikpKTtcbiAgY29uc29sZS5sb2coY29sb3JzLmNvZGUoY29kZSkpO1xuICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiYGBgXCIpKTtcbiAgY29uc29sZS5sb2coKTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendly/cli",
3
- "version": "3.12.2",
3
+ "version": "3.13.0",
4
4
  "type": "module",
5
5
  "description": "Sendly CLI - Send SMS from your terminal",
6
6
  "author": "Sendly <support@sendly.live>",