@sendly/cli 3.0.1 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -3
- package/dist/commands/credits/history.js +4 -4
- package/dist/commands/keys/create.js +3 -3
- package/dist/commands/keys/revoke.js +13 -10
- package/dist/commands/send.d.ts +13 -0
- package/dist/commands/send.js +75 -0
- package/dist/commands/status.d.ts +10 -0
- package/dist/commands/status.js +112 -0
- package/dist/commands/webhooks/create.js +7 -5
- package/dist/commands/webhooks/deliveries.js +17 -15
- package/dist/commands/webhooks/get.js +17 -15
- package/dist/commands/webhooks/list.js +3 -3
- package/dist/commands/webhooks/listen.js +5 -18
- package/dist/commands/webhooks/rotate-secret.js +6 -6
- package/dist/commands/webhooks/test.js +17 -14
- package/dist/commands/webhooks/update.js +16 -11
- package/dist/commands/whoami.js +14 -10
- package/dist/hooks/command-not-found.d.ts +3 -0
- package/dist/hooks/command-not-found.js +142 -0
- package/dist/lib/api-client.js +66 -15
- package/oclif.manifest.json +173 -72
- package/package.json +4 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { Args, Flags } from "@oclif/core";
|
|
2
2
|
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
3
|
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
-
import { success, error, json, colors, isJsonMode
|
|
4
|
+
import { success, error, json, colors, isJsonMode } from "../../lib/output.js";
|
|
5
5
|
export default class WebhooksUpdate extends AuthenticatedCommand {
|
|
6
6
|
static description = "Update a webhook";
|
|
7
7
|
static examples = [
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
"<%= config.bin %> webhooks update whk_abc123 --url https://newdomain.com/webhook",
|
|
9
|
+
"<%= config.bin %> webhooks update whk_abc123 --events message.delivered,message.failed",
|
|
10
10
|
'<%= config.bin %> webhooks update whk_abc123 --description "Updated production webhook"',
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
"<%= config.bin %> webhooks update whk_abc123 --active false",
|
|
12
|
+
"<%= config.bin %> webhooks update whk_abc123 --url https://newdomain.com/webhook --events message.sent --json",
|
|
13
13
|
];
|
|
14
14
|
static args = {
|
|
15
15
|
id: Args.string({
|
|
@@ -40,7 +40,10 @@ export default class WebhooksUpdate extends AuthenticatedCommand {
|
|
|
40
40
|
async run() {
|
|
41
41
|
const { args, flags } = await this.parse(WebhooksUpdate);
|
|
42
42
|
// Check if any update flags were provided
|
|
43
|
-
const hasUpdates = !!(flags.url ||
|
|
43
|
+
const hasUpdates = !!(flags.url ||
|
|
44
|
+
flags.events ||
|
|
45
|
+
flags.description ||
|
|
46
|
+
flags.active !== undefined);
|
|
44
47
|
if (!hasUpdates) {
|
|
45
48
|
error("No updates specified. Use --url, --events, --description, or --active flags.");
|
|
46
49
|
this.exit(1);
|
|
@@ -51,13 +54,13 @@ export default class WebhooksUpdate extends AuthenticatedCommand {
|
|
|
51
54
|
updateData.url = flags.url;
|
|
52
55
|
}
|
|
53
56
|
if (flags.events) {
|
|
54
|
-
updateData.events = flags.events.split(",").map(e => e.trim());
|
|
57
|
+
updateData.events = flags.events.split(",").map((e) => e.trim());
|
|
55
58
|
}
|
|
56
59
|
if (flags.description !== undefined) {
|
|
57
60
|
updateData.description = flags.description;
|
|
58
61
|
}
|
|
59
62
|
if (flags.active !== undefined) {
|
|
60
|
-
updateData.
|
|
63
|
+
updateData.is_active = flags.active;
|
|
61
64
|
}
|
|
62
65
|
try {
|
|
63
66
|
const webhook = await apiClient.patch(`/api/v1/webhooks/${args.id}`, updateData);
|
|
@@ -70,8 +73,10 @@ export default class WebhooksUpdate extends AuthenticatedCommand {
|
|
|
70
73
|
URL: webhook.url,
|
|
71
74
|
Events: webhook.events.join(", "),
|
|
72
75
|
...(webhook.description && { Description: webhook.description }),
|
|
73
|
-
Status: webhook.
|
|
74
|
-
|
|
76
|
+
Status: webhook.is_active
|
|
77
|
+
? colors.success("active")
|
|
78
|
+
: colors.warning("inactive"),
|
|
79
|
+
"Updated At": webhook.updated_at,
|
|
75
80
|
});
|
|
76
81
|
// Show what changed
|
|
77
82
|
console.log();
|
|
@@ -101,4 +106,4 @@ export default class WebhooksUpdate extends AuthenticatedCommand {
|
|
|
101
106
|
}
|
|
102
107
|
}
|
|
103
108
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3dlYmhvb2tzL3VwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQVc3QixNQUFNLENBQUMsT0FBTyxPQUFPLGNBQWUsU0FBUSxvQkFBb0I7SUFDOUQsTUFBTSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQztJQUV4QyxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLGtGQUFrRjtRQUNsRix3RkFBd0Y7UUFDeEYseUZBQXlGO1FBQ3pGLDZEQUE2RDtRQUM3RCwrR0FBK0c7S0FDaEgsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNkLFdBQVcsRUFBRSxzQkFBc0I7WUFDbkMsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDaEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsb0NBQW9DO1NBQ2xELENBQUM7UUFDRixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNuQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxzQ0FBc0M7U0FDcEQsQ0FBQztRQUNGLFdBQVcsRUFBRSxL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Q0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2xELElBQUksS0FBSyxDQUFDLE1BQU07Z0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDeEQsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFNBQVM7Z0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztZQUNoRixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUztnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRS9FLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxHQUFHLFlBQVksS0FBSyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksR0FBRyxZQUFZLEtBQUssRUFBRSxDQUFDO29CQUN6QixLQUFLLENBQUMsNkJBQTZCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sS0FBSyxDQUFDLDZCQUE2QixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MsIEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHN1Y2Nlc3MsXG4gIGVycm9yLFxuICBqc29uLFxuICBjb2xvcnMsXG4gIGlzSnNvbk1vZGUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBVcGRhdGVXZWJob29rUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgZXZlbnRzOiBzdHJpbmdbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2ViaG9va3NVcGRhdGUgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiVXBkYXRlIGEgd2ViaG9va1wiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gd2ViaG9va3MgdXBkYXRlIHdoa19hYmMxMjMgLS11cmwgaHR0cHM6Ly9uZXdkb21haW4uY29tL3dlYmhvb2snLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiB3ZWJob29rcyB1cGRhdGUgd2hrX2FiYzEyMyAtLWV2ZW50cyBtZXNzYWdlLmRlbGl2ZXJlZCxtZXNzYWdlLmZhaWxlZCcsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHdlYmhvb2tzIHVwZGF0ZSB3aGtfYWJjMTIzIC0tZGVzY3JpcHRpb24gXCJVcGRhdGVkIHByb2R1Y3Rpb24gd2ViaG9va1wiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gd2ViaG9va3MgdXBkYXRlIHdoa19hYmMxMjMgLS1hY3RpdmUgZmFsc2UnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiB3ZWJob29rcyB1cGRhdGUgd2hrX2FiYzEyMyAtLXVybCBodHRwczovL25ld2RvbWFpbi5jb20vd2ViaG9vayAtLWV2ZW50cyBtZXNzYWdlLnNlbnQgLS1qc29uJyxcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiV2ViaG9vayBJRCB0byB1cGRhdGVcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgdXJsOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ1XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJVcGRhdGUgd2ViaG9vayBVUkwgKG11c3QgYmUgSFRUUFMpXCIsXG4gICAgfSksXG4gICAgZXZlbnRzOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJVcGRhdGUgZXZlbnRzIGxpc3QgKGNvbW1hLXNlcGFyYXRlZClcIixcbiAgICB9KSxcbiAgICBkZXNjcmlwdGlvbjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiZFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVXBkYXRlIGRlc2NyaXB0aW9uXCIsXG4gICAgfSksXG4gICAgYWN0aXZlOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGNoYXI6IFwiYVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiRW5hYmxlIG9yIGRpc2FibGUgdGhlIHdlYmhvb2tcIixcbiAgICAgIGFsbG93Tm86IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoV2ViaG9va3NVcGRhdGUpO1xuXG4gICAgLy8gQ2hlY2sgaWYgYW55IHVwZGF0ZSBmbGFncyB3ZXJlIHByb3ZpZGVkXG4gICAgY29uc3QgaGFzVXBkYXRlcyA9ICEhKGZsYWdzLnVybCB8fCBmbGFncy5ldmVudHMgfHwgZmxhZ3MuZGVzY3JpcHRpb24gfHwgZmxhZ3MuYWN0aXZlICE9PSB1bmRlZmluZWQpO1xuICAgIFxuICAgIGlmICghaGFzVXBkYXRlcykge1xuICAgICAgZXJyb3IoXCJObyB1cGRhdGVzIHNwZWNpZmllZC4gVXNlIC0tdXJsLCAtLWV2ZW50cywgLS1kZXNjcmlwdGlvbiwgb3IgLS1hY3RpdmUgZmxhZ3MuXCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIC8vIEJ1aWxkIHVwZGF0ZSBwYXlsb2FkXG4gICAgY29uc3QgdXBkYXRlRGF0YTogYW55ID0ge307XG4gICAgXG4gICAgaWYgKGZsYWdzLnVybCkge1xuICAgICAgdXBkYXRlRGF0YS51cmwgPSBmbGFncy51cmw7XG4gICAgfVxuICAgIFxuICAgIGlmIChmbGFncy5ldmVudHMpIHtcbiAgICAgIHVwZGF0ZURhdGEuZXZlbnRzID0gZmxhZ3MuZXZlbnRzLnNwbGl0KFwiLFwiKS5tYXAoZSA9PiBlLnRyaW0oKSk7XG4gICAgfVxuICAgIFxuICAgIGlmIChmbGFncy5kZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGVEYXRhLmRlc2NyaXB0aW9uID0gZmxhZ3MuZGVzY3JpcHRpb247XG4gICAgfVxuICAgIFxuICAgIGlmIChmbGFncy5hY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlRGF0YS5pc0FjdGl2ZSA9IGZsYWdzLmFjdGl2ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgd2ViaG9vayA9IGF3YWl0IGFwaUNsaWVudC5wYXRjaDxVcGRhdGVXZWJob29rUmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS92MS93ZWJob29rcy8ke2FyZ3MuaWR9YCxcbiAgICAgICAgdXBkYXRlRGF0YVxuICAgICAgKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHdlYmhvb2spO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHN1Y2Nlc3MoXCJXZWJob29rIHVwZGF0ZWRcIiwge1xuICAgICAgICBJRDogd2ViaG9vay5pZCxcbiAgICAgICAgVVJMOiB3ZWJob29rLnVybCxcbiAgICAgICAgRXZlbnRzOiB3ZWJob29rLmV2ZW50cy5qb2luKFwiLCBcIiksXG4gICAgICAgIC4uLih3ZWJob29rLmRlc2NyaXB0aW9uICYmIHsgRGVzY3JpcHRpb246IHdlYmhvb2suZGVzY3JpcHRpb24gfSksXG4gICAgICAgIFN0YXR1czogd2ViaG9vay5pc0FjdGl2ZSA/IGNvbG9ycy5zdWNjZXNzKFwiYWN0aXZlXCIpIDogY29sb3JzLndhcm5pbmcoXCJpbmFjdGl2ZVwiKSxcbiAgICAgICAgXCJVcGRhdGVkIEF0XCI6IHdlYmhvb2sudXBkYXRlZEF0LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFNob3cgd2hhdCBjaGFuZ2VkXG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIlVwZGF0ZWQgZmllbGRzOlwiKSk7XG4gICAgICBpZiAoZmxhZ3MudXJsKSBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiICDigKIgVVJMXCIpKTtcbiAgICAgIGlmIChmbGFncy5ldmVudHMpIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCIgIOKAoiBFdmVudHNcIikpO1xuICAgICAgaWYgKGZsYWdzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCIgIOKAoiBEZXNjcmlwdGlvblwiKSk7XG4gICAgICBpZiAoZmxhZ3MuYWN0aXZlICE9PSB1bmRlZmluZWQpIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCIgIOKAoiBBY3RpdmUgc3RhdHVzXCIpKTtcblxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKFwiNDA0XCIpKSB7XG4gICAgICAgIGVycm9yKGBXZWJob29rIG5vdCBmb3VuZDogJHthcmdzLmlkfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgZXJyb3IoYEZhaWxlZCB0byB1cGRhdGUgd2ViaG9vazogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlcnJvcihgRmFpbGVkIHRvIHVwZGF0ZSB3ZWJob29rOiAke1N0cmluZyhlcnIpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuICB9XG59Il19
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3dlYmhvb2tzL3VwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVcvRSxNQUFNLENBQUMsT0FBTyxPQUFPLGNBQWUsU0FBUSxvQkFBb0I7SUFDOUQsTUFBTSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQztJQUV4QyxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLGtGQUFrRjtRQUNsRix3RkFBd0Y7UUFDeEYseUZBQXlGO1FBQ3pGLDZEQUE2RDtRQUM3RCwrR0FBK0c7S0FDaEgsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNkLFdBQVcsRUFBRSxzQkFBc0I7WUFDbkMsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDaEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsb0NBQW9DO1NBQ2xELENBQUM7UUFDRixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNuQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxzQ0FBc0M7U0FDcEQsQ0FBQztRQUNGLFdBQVcsRUFBRSxL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Z0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDbEQsSUFBSSxLQUFLLENBQUMsTUFBTTtnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN4RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssU0FBUztnQkFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztZQUM3QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUztnQkFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksR0FBRyxZQUFZLEtBQUssSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxLQUFLLENBQUMsc0JBQXNCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLEdBQUcsWUFBWSxLQUFLLEVBQUUsQ0FBQztvQkFDekIsS0FBSyxDQUFDLDZCQUE2QixHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEtBQUssQ0FBQyw2QkFBNkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBzdWNjZXNzLCBlcnJvciwganNvbiwgY29sb3JzLCBpc0pzb25Nb2RlIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIFVwZGF0ZVdlYmhvb2tSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBldmVudHM6IHN0cmluZ1tdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaXNfYWN0aXZlOiBib29sZWFuO1xuICB1cGRhdGVkX2F0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYmhvb2tzVXBkYXRlIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIlVwZGF0ZSBhIHdlYmhvb2tcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB3ZWJob29rcyB1cGRhdGUgd2hrX2FiYzEyMyAtLXVybCBodHRwczovL25ld2RvbWFpbi5jb20vd2ViaG9va1wiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gd2ViaG9va3MgdXBkYXRlIHdoa19hYmMxMjMgLS1ldmVudHMgbWVzc2FnZS5kZWxpdmVyZWQsbWVzc2FnZS5mYWlsZWRcIixcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gd2ViaG9va3MgdXBkYXRlIHdoa19hYmMxMjMgLS1kZXNjcmlwdGlvbiBcIlVwZGF0ZWQgcHJvZHVjdGlvbiB3ZWJob29rXCInLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gd2ViaG9va3MgdXBkYXRlIHdoa19hYmMxMjMgLS1hY3RpdmUgZmFsc2VcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHdlYmhvb2tzIHVwZGF0ZSB3aGtfYWJjMTIzIC0tdXJsIGh0dHBzOi8vbmV3ZG9tYWluLmNvbS93ZWJob29rIC0tZXZlbnRzIG1lc3NhZ2Uuc2VudCAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiV2ViaG9vayBJRCB0byB1cGRhdGVcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgdXJsOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ1XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJVcGRhdGUgd2ViaG9vayBVUkwgKG11c3QgYmUgSFRUUFMpXCIsXG4gICAgfSksXG4gICAgZXZlbnRzOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJVcGRhdGUgZXZlbnRzIGxpc3QgKGNvbW1hLXNlcGFyYXRlZClcIixcbiAgICB9KSxcbiAgICBkZXNjcmlwdGlvbjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiZFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVXBkYXRlIGRlc2NyaXB0aW9uXCIsXG4gICAgfSksXG4gICAgYWN0aXZlOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGNoYXI6IFwiYVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiRW5hYmxlIG9yIGRpc2FibGUgdGhlIHdlYmhvb2tcIixcbiAgICAgIGFsbG93Tm86IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoV2ViaG9va3NVcGRhdGUpO1xuXG4gICAgLy8gQ2hlY2sgaWYgYW55IHVwZGF0ZSBmbGFncyB3ZXJlIHByb3ZpZGVkXG4gICAgY29uc3QgaGFzVXBkYXRlcyA9ICEhKFxuICAgICAgZmxhZ3MudXJsIHx8XG4gICAgICBmbGFncy5ldmVudHMgfHxcbiAgICAgIGZsYWdzLmRlc2NyaXB0aW9uIHx8XG4gICAgICBmbGFncy5hY3RpdmUgIT09IHVuZGVmaW5lZFxuICAgICk7XG5cbiAgICBpZiAoIWhhc1VwZGF0ZXMpIHtcbiAgICAgIGVycm9yKFxuICAgICAgICBcIk5vIHVwZGF0ZXMgc3BlY2lmaWVkLiBVc2UgLS11cmwsIC0tZXZlbnRzLCAtLWRlc2NyaXB0aW9uLCBvciAtLWFjdGl2ZSBmbGFncy5cIixcbiAgICAgICk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdXBkYXRlIHBheWxvYWRcbiAgICBjb25zdCB1cGRhdGVEYXRhOiBhbnkgPSB7fTtcblxuICAgIGlmIChmbGFncy51cmwpIHtcbiAgICAgIHVwZGF0ZURhdGEudXJsID0gZmxhZ3MudXJsO1xuICAgIH1cblxuICAgIGlmIChmbGFncy5ldmVudHMpIHtcbiAgICAgIHVwZGF0ZURhdGEuZXZlbnRzID0gZmxhZ3MuZXZlbnRzLnNwbGl0KFwiLFwiKS5tYXAoKGUpID0+IGUudHJpbSgpKTtcbiAgICB9XG5cbiAgICBpZiAoZmxhZ3MuZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlRGF0YS5kZXNjcmlwdGlvbiA9IGZsYWdzLmRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIGlmIChmbGFncy5hY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlRGF0YS5pc19hY3RpdmUgPSBmbGFncy5hY3RpdmU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHdlYmhvb2sgPSBhd2FpdCBhcGlDbGllbnQucGF0Y2g8VXBkYXRlV2ViaG9va1Jlc3BvbnNlPihcbiAgICAgICAgYC9hcGkvdjEvd2ViaG9va3MvJHthcmdzLmlkfWAsXG4gICAgICAgIHVwZGF0ZURhdGEsXG4gICAgICApO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24od2ViaG9vayk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3VjY2VzcyhcIldlYmhvb2sgdXBkYXRlZFwiLCB7XG4gICAgICAgIElEOiB3ZWJob29rLmlkLFxuICAgICAgICBVUkw6IHdlYmhvb2sudXJsLFxuICAgICAgICBFdmVudHM6IHdlYmhvb2suZXZlbnRzLmpvaW4oXCIsIFwiKSxcbiAgICAgICAgLi4uKHdlYmhvb2suZGVzY3JpcHRpb24gJiYgeyBEZXNjcmlwdGlvbjogd2ViaG9vay5kZXNjcmlwdGlvbiB9KSxcbiAgICAgICAgU3RhdHVzOiB3ZWJob29rLmlzX2FjdGl2ZVxuICAgICAgICAgID8gY29sb3JzLnN1Y2Nlc3MoXCJhY3RpdmVcIilcbiAgICAgICAgICA6IGNvbG9ycy53YXJuaW5nKFwiaW5hY3RpdmVcIiksXG4gICAgICAgIFwiVXBkYXRlZCBBdFwiOiB3ZWJob29rLnVwZGF0ZWRfYXQsXG4gICAgICB9KTtcblxuICAgICAgLy8gU2hvdyB3aGF0IGNoYW5nZWRcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiVXBkYXRlZCBmaWVsZHM6XCIpKTtcbiAgICAgIGlmIChmbGFncy51cmwpIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCIgIOKAoiBVUkxcIikpO1xuICAgICAgaWYgKGZsYWdzLmV2ZW50cykgY29uc29sZS5sb2coY29sb3JzLmRpbShcIiAg4oCiIEV2ZW50c1wiKSk7XG4gICAgICBpZiAoZmxhZ3MuZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZClcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIiAg4oCiIERlc2NyaXB0aW9uXCIpKTtcbiAgICAgIGlmIChmbGFncy5hY3RpdmUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIiAg4oCiIEFjdGl2ZSBzdGF0dXNcIikpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKFwiNDA0XCIpKSB7XG4gICAgICAgIGVycm9yKGBXZWJob29rIG5vdCBmb3VuZDogJHthcmdzLmlkfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgZXJyb3IoYEZhaWxlZCB0byB1cGRhdGUgd2ViaG9vazogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlcnJvcihgRmFpbGVkIHRvIHVwZGF0ZSB3ZWJob29rOiAke1N0cmluZyhlcnIpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/dist/commands/whoami.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseCommand } from "../lib/base-command.js";
|
|
2
2
|
import { getAuthInfo } from "../lib/auth.js";
|
|
3
3
|
import { success, info, keyValue, colors, json } from "../lib/output.js";
|
|
4
|
-
import { getConfigPath } from "../lib/config.js";
|
|
4
|
+
import { getConfigValue, getConfigPath } from "../lib/config.js";
|
|
5
5
|
export default class Whoami extends BaseCommand {
|
|
6
6
|
static description = "Show current authentication status";
|
|
7
7
|
static examples = ["<%= config.bin %> whoami"];
|
|
@@ -30,22 +30,26 @@ export default class Whoami extends BaseCommand {
|
|
|
30
30
|
}
|
|
31
31
|
success("Authenticated");
|
|
32
32
|
console.log();
|
|
33
|
-
const displayData = {
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
const displayData = {};
|
|
34
|
+
// Show API mode (test vs live) - this determines if messages are actually sent
|
|
35
|
+
const mode = authInfo.keyType || authInfo.environment;
|
|
36
|
+
displayData["API Mode"] =
|
|
37
|
+
mode === "test"
|
|
38
|
+
? colors.warning("test") + colors.dim(" (sandbox - no real messages)")
|
|
39
|
+
: colors.success("live") + colors.dim(" (production)");
|
|
36
40
|
if (authInfo.email) {
|
|
37
41
|
displayData["Email"] = authInfo.email;
|
|
38
42
|
}
|
|
39
|
-
if (authInfo.keyType) {
|
|
40
|
-
displayData["Key Type"] = authInfo.keyType === "test"
|
|
41
|
-
? colors.warning("test")
|
|
42
|
-
: colors.success("live");
|
|
43
|
-
}
|
|
44
43
|
if (authInfo.userId) {
|
|
45
44
|
displayData["User ID"] = colors.dim(authInfo.userId);
|
|
46
45
|
}
|
|
46
|
+
// Show which server we're connected to
|
|
47
|
+
const baseUrl = getConfigValue("baseUrl");
|
|
48
|
+
if (baseUrl && baseUrl !== "https://sendly.live") {
|
|
49
|
+
displayData["Server"] = colors.dim(baseUrl);
|
|
50
|
+
}
|
|
47
51
|
displayData["Config"] = colors.dim(getConfigPath());
|
|
48
52
|
keyValue(displayData);
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hvYW1pLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3dob2FtaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRSxNQUFNLENBQUMsT0FBTyxPQUFPLE1BQU8sU0FBUSxXQUFXO0lBQzdDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsb0NBQW9DLENBQUM7SUFFMUQsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFFL0MsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsV0FBVyxDQUFDLFNBQVM7S0FDekIsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsRUFBRSxDQUFDO1FBRXJDLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDO2dCQUNILGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYTtnQkFDckMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNyQixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3ZCLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztnQkFDakMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUN6QixVQUFVLEVBQUUsYUFBYSxFQUFFO2FBQzVCLENBQUMsQ0FBQztZQUNILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDcEUsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWQsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUUvQywrRUFBK0U7UUFDL0UsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3RELFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDckIsSUFBSSxLQUFLLE1BQU07Z0JBQ2IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQztnQkFDdEUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLElBQUksT0FBTyxJQUFJLE9BQU8sS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2pELFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRXBELFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvbW1hbmQgfSBmcm9tIFwiLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgZ2V0QXV0aEluZm8gfSBmcm9tIFwiLi4vbGliL2F1dGguanNcIjtcbmltcG9ydCB7IHN1Y2Nlc3MsIGluZm8sIGtleVZhbHVlLCBjb2xvcnMsIGpzb24gfSBmcm9tIFwiLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnVmFsdWUsIGdldENvbmZpZ1BhdGggfSBmcm9tIFwiLi4vbGliL2NvbmZpZy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXaG9hbWkgZXh0ZW5kcyBCYXNlQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiU2hvdyBjdXJyZW50IGF1dGhlbnRpY2F0aW9uIHN0YXR1c1wiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcIjwlPSBjb25maWcuYmluICU+IHdob2FtaVwiXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQmFzZUNvbW1hbmQuYmFzZUZsYWdzLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFdob2FtaSk7XG5cbiAgICBjb25zdCBhdXRoSW5mbyA9IGF3YWl0IGdldEF1dGhJbmZvKCk7XG5cbiAgICBpZiAoZmxhZ3MuanNvbikge1xuICAgICAganNvbih7XG4gICAgICAgIGF1dGhlbnRpY2F0ZWQ6IGF1dGhJbmZvLmF1dGhlbnRpY2F0ZWQsXG4gICAgICAgIGVtYWlsOiBhdXRoSW5mby5lbWFpbCxcbiAgICAgICAgdXNlcklkOiBhdXRoSW5mby51c2VySWQsXG4gICAgICAgIGVudmlyb25tZW50OiBhdXRoSW5mby5lbnZpcm9ubWVudCxcbiAgICAgICAga2V5VHlwZTogYXV0aEluZm8ua2V5VHlwZSxcbiAgICAgICAgY29uZmlnUGF0aDogZ2V0Q29uZmlnUGF0aCgpLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFhdXRoSW5mby5hdXRoZW50aWNhdGVkKSB7XG4gICAgICBpbmZvKFwiTm90IGxvZ2dlZCBpblwiKTtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhgICBSdW4gJHtjb2xvcnMuY29kZShcInNlbmRseSBsb2dpblwiKX0gdG8gYXV0aGVudGljYXRlYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VjY2VzcyhcIkF1dGhlbnRpY2F0ZWRcIik7XG4gICAgY29uc29sZS5sb2coKTtcblxuICAgIGNvbnN0IGRpc3BsYXlEYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAvLyBTaG93IEFQSSBtb2RlICh0ZXN0IHZzIGxpdmUpIC0gdGhpcyBkZXRlcm1pbmVzIGlmIG1lc3NhZ2VzIGFyZSBhY3R1YWxseSBzZW50XG4gICAgY29uc3QgbW9kZSA9IGF1dGhJbmZvLmtleVR5cGUgfHwgYXV0aEluZm8uZW52aXJvbm1lbnQ7XG4gICAgZGlzcGxheURhdGFbXCJBUEkgTW9kZVwiXSA9XG4gICAgICBtb2RlID09PSBcInRlc3RcIlxuICAgICAgICA/IGNvbG9ycy53YXJuaW5nKFwidGVzdFwiKSArIGNvbG9ycy5kaW0oXCIgKHNhbmRib3ggLSBubyByZWFsIG1lc3NhZ2VzKVwiKVxuICAgICAgICA6IGNvbG9ycy5zdWNjZXNzKFwibGl2ZVwiKSArIGNvbG9ycy5kaW0oXCIgKHByb2R1Y3Rpb24pXCIpO1xuXG4gICAgaWYgKGF1dGhJbmZvLmVtYWlsKSB7XG4gICAgICBkaXNwbGF5RGF0YVtcIkVtYWlsXCJdID0gYXV0aEluZm8uZW1haWw7XG4gICAgfVxuXG4gICAgaWYgKGF1dGhJbmZvLnVzZXJJZCkge1xuICAgICAgZGlzcGxheURhdGFbXCJVc2VyIElEXCJdID0gY29sb3JzLmRpbShhdXRoSW5mby51c2VySWQpO1xuICAgIH1cblxuICAgIC8vIFNob3cgd2hpY2ggc2VydmVyIHdlJ3JlIGNvbm5lY3RlZCB0b1xuICAgIGNvbnN0IGJhc2VVcmwgPSBnZXRDb25maWdWYWx1ZShcImJhc2VVcmxcIik7XG4gICAgaWYgKGJhc2VVcmwgJiYgYmFzZVVybCAhPT0gXCJodHRwczovL3NlbmRseS5saXZlXCIpIHtcbiAgICAgIGRpc3BsYXlEYXRhW1wiU2VydmVyXCJdID0gY29sb3JzLmRpbShiYXNlVXJsKTtcbiAgICB9XG5cbiAgICBkaXNwbGF5RGF0YVtcIkNvbmZpZ1wiXSA9IGNvbG9ycy5kaW0oZ2V0Q29uZmlnUGF0aCgpKTtcblxuICAgIGtleVZhbHVlKGRpc3BsYXlEYXRhKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { colors } from "../lib/output.js";
|
|
2
|
+
// Known commands for suggestions
|
|
3
|
+
const KNOWN_COMMANDS = [
|
|
4
|
+
"send",
|
|
5
|
+
"status",
|
|
6
|
+
"login",
|
|
7
|
+
"logout",
|
|
8
|
+
"whoami",
|
|
9
|
+
"doctor",
|
|
10
|
+
"onboarding",
|
|
11
|
+
"help",
|
|
12
|
+
"sms send",
|
|
13
|
+
"sms list",
|
|
14
|
+
"sms get",
|
|
15
|
+
"sms batch",
|
|
16
|
+
"sms schedule",
|
|
17
|
+
"sms scheduled",
|
|
18
|
+
"sms cancel",
|
|
19
|
+
"credits balance",
|
|
20
|
+
"credits history",
|
|
21
|
+
"keys list",
|
|
22
|
+
"keys create",
|
|
23
|
+
"keys revoke",
|
|
24
|
+
"webhooks list",
|
|
25
|
+
"webhooks create",
|
|
26
|
+
"webhooks delete",
|
|
27
|
+
"webhooks test",
|
|
28
|
+
"webhooks listen",
|
|
29
|
+
"webhooks deliveries",
|
|
30
|
+
"webhooks rotate-secret",
|
|
31
|
+
"logs tail",
|
|
32
|
+
"config get",
|
|
33
|
+
"config set",
|
|
34
|
+
"config reset",
|
|
35
|
+
];
|
|
36
|
+
// Common typos and their corrections
|
|
37
|
+
const TYPO_MAP = {
|
|
38
|
+
"text": "send",
|
|
39
|
+
"txt": "send",
|
|
40
|
+
"msg": "send",
|
|
41
|
+
"message": "sms send",
|
|
42
|
+
"messages": "sms list",
|
|
43
|
+
"balance": "credits balance",
|
|
44
|
+
"credit": "credits balance",
|
|
45
|
+
"key": "keys list",
|
|
46
|
+
"apikey": "keys list",
|
|
47
|
+
"apikeys": "keys list",
|
|
48
|
+
"webhook": "webhooks list",
|
|
49
|
+
"hook": "webhooks list",
|
|
50
|
+
"hooks": "webhooks list",
|
|
51
|
+
"log": "logs tail",
|
|
52
|
+
"tail": "logs tail",
|
|
53
|
+
"auth": "login",
|
|
54
|
+
"signin": "login",
|
|
55
|
+
"signout": "logout",
|
|
56
|
+
"me": "whoami",
|
|
57
|
+
"info": "status",
|
|
58
|
+
"dashboard": "status",
|
|
59
|
+
"account": "status",
|
|
60
|
+
"check": "doctor",
|
|
61
|
+
"test": "doctor",
|
|
62
|
+
"setup": "onboarding",
|
|
63
|
+
"init": "onboarding",
|
|
64
|
+
"start": "onboarding",
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Calculate Levenshtein distance between two strings
|
|
68
|
+
*/
|
|
69
|
+
function levenshteinDistance(a, b) {
|
|
70
|
+
const matrix = [];
|
|
71
|
+
for (let i = 0; i <= b.length; i++) {
|
|
72
|
+
matrix[i] = [i];
|
|
73
|
+
}
|
|
74
|
+
for (let j = 0; j <= a.length; j++) {
|
|
75
|
+
matrix[0][j] = j;
|
|
76
|
+
}
|
|
77
|
+
for (let i = 1; i <= b.length; i++) {
|
|
78
|
+
for (let j = 1; j <= a.length; j++) {
|
|
79
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
80
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return matrix[b.length][a.length];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Find similar commands based on Levenshtein distance
|
|
91
|
+
*/
|
|
92
|
+
function findSimilarCommands(input, maxDistance = 3) {
|
|
93
|
+
const inputLower = input.toLowerCase();
|
|
94
|
+
const suggestions = [];
|
|
95
|
+
for (const command of KNOWN_COMMANDS) {
|
|
96
|
+
const distance = levenshteinDistance(inputLower, command.toLowerCase());
|
|
97
|
+
if (distance <= maxDistance) {
|
|
98
|
+
suggestions.push({ command, distance });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Sort by distance and return top 3
|
|
102
|
+
return suggestions
|
|
103
|
+
.sort((a, b) => a.distance - b.distance)
|
|
104
|
+
.slice(0, 3)
|
|
105
|
+
.map((s) => s.command);
|
|
106
|
+
}
|
|
107
|
+
const hook = async function (options) {
|
|
108
|
+
const { id } = options;
|
|
109
|
+
const inputCommand = id;
|
|
110
|
+
console.log();
|
|
111
|
+
console.log(colors.error(`Command not found: ${colors.code(inputCommand)}`));
|
|
112
|
+
console.log();
|
|
113
|
+
// Check for known typos first
|
|
114
|
+
const typoFix = TYPO_MAP[inputCommand.toLowerCase()];
|
|
115
|
+
if (typoFix) {
|
|
116
|
+
console.log(colors.dim("Did you mean?"));
|
|
117
|
+
console.log(` ${colors.code(`sendly ${typoFix}`)}`);
|
|
118
|
+
console.log();
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
// Find similar commands
|
|
122
|
+
const similar = findSimilarCommands(inputCommand);
|
|
123
|
+
if (similar.length > 0) {
|
|
124
|
+
console.log(colors.dim("Did you mean?"));
|
|
125
|
+
similar.forEach((cmd) => {
|
|
126
|
+
console.log(` ${colors.code(`sendly ${cmd}`)}`);
|
|
127
|
+
});
|
|
128
|
+
console.log();
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
// Default help
|
|
132
|
+
console.log(colors.dim("Available topics:"));
|
|
133
|
+
console.log(` ${colors.code("sendly sms")} Send and manage SMS messages`);
|
|
134
|
+
console.log(` ${colors.code("sendly credits")} Check credit balance`);
|
|
135
|
+
console.log(` ${colors.code("sendly keys")} Manage API keys`);
|
|
136
|
+
console.log(` ${colors.code("sendly webhooks")} Manage webhooks`);
|
|
137
|
+
console.log();
|
|
138
|
+
console.log(`Run ${colors.code("sendly --help")} for all commands.`);
|
|
139
|
+
console.log();
|
|
140
|
+
};
|
|
141
|
+
export default hook;
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1ub3QtZm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvY29tbWFuZC1ub3QtZm91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLGlDQUFpQztBQUNqQyxNQUFNLGNBQWMsR0FBRztJQUNyQixNQUFNO0lBQ04sUUFBUTtJQUNSLE9BQU87SUFDUCxRQUFRO0lBQ1IsUUFBUTtJQUNSLFFBQVE7SUFDUixZQUFZO0lBQ1osTUFBTTtJQUNOLFVBQVU7SUFDVixVQUFVO0lBQ1YsU0FBUztJQUNULFdBQVc7SUFDWCxjQUFjO0lBQ2QsZUFBZTtJQUNmLFlBQVk7SUFDWixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLFdBQVc7SUFDWCxhQUFhO0lBQ2IsYUFBYTtJQUNiLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLHdCQUF3QjtJQUN4QixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7SUFDWixjQUFjO0NBQ2YsQ0FBQztBQUVGLHFDQUFxQztBQUNyQyxNQUFNLFFBQVEsR0FBMkI7SUFDdkMsTUFBTSxFQUFFLE1BQU07SUFDZCxLQUFLLEVBQUUsTUFBTTtJQUNiLEtBQUssRUFBRSxNQUFNO0lBQ2IsU0FBUyxFQUFFLFVBQVU7SUFDckIsVUFBVSxFQUFFLFVBQVU7SUFDdEIsU0FBUyxFQUFFLGlCQUFpQjtJQUM1QixRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLEtBQUssRUFBRSxXQUFXO0lBQ2xCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFNBQVMsRUFBRSxlQUFlO0lBQzFCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLE9BQU8sRUFBRSxlQUFlO0lBQ3hCLEtBQUssRUFBRSxXQUFXO0lBQ2xCLE1BQU0sRUFBRSxXQUFX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cnQgeyBjb2xvcnMgfSBmcm9tIFwiLi4vbGliL291dHB1dC5qc1wiO1xuXG4vLyBLbm93biBjb21tYW5kcyBmb3Igc3VnZ2VzdGlvbnNcbmNvbnN0IEtOT1dOX0NPTU1BTkRTID0gW1xuICBcInNlbmRcIixcbiAgXCJzdGF0dXNcIixcbiAgXCJsb2dpblwiLFxuICBcImxvZ291dFwiLFxuICBcIndob2FtaVwiLFxuICBcImRvY3RvclwiLFxuICBcIm9uYm9hcmRpbmdcIixcbiAgXCJoZWxwXCIsXG4gIFwic21zIHNlbmRcIixcbiAgXCJzbXMgbGlzdFwiLFxuICBcInNtcyBnZXRcIixcbiAgXCJzbXMgYmF0Y2hcIixcbiAgXCJzbXMgc2NoZWR1bGVcIixcbiAgXCJzbXMgc2NoZWR1bGVkXCIsXG4gIFwic21zIGNhbmNlbFwiLFxuICBcImNyZWRpdHMgYmFsYW5jZVwiLFxuICBcImNyZWRpdHMgaGlzdG9yeVwiLFxuICBcImtleXMgbGlzdFwiLFxuICBcImtleXMgY3JlYXRlXCIsXG4gIFwia2V5cyByZXZva2VcIixcbiAgXCJ3ZWJob29rcyBsaXN0XCIsXG4gIFwid2ViaG9va3MgY3JlYXRlXCIsXG4gIFwid2ViaG9va3MgZGVsZXRlXCIsXG4gIFwid2ViaG9va3MgdGVzdFwiLFxuICBcIndlYmhvb2tzIGxpc3RlblwiLFxuICBcIndlYmhvb2tzIGRlbGl2ZXJpZXNcIixcbiAgXCJ3ZWJob29rcyByb3RhdGUtc2VjcmV0XCIsXG4gIFwibG9ncyB0YWlsXCIsXG4gIFwiY29uZmlnIGdldFwiLFxuICBcImNvbmZpZyBzZXRcIixcbiAgXCJjb25maWcgcmVzZXRcIixcbl07XG5cbi8vIENvbW1vbiB0eXBvcyBhbmQgdGhlaXIgY29ycmVjdGlvbnNcbmNvbnN0IFRZUE9fTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcInRleHRcIjogXCJzZW5kXCIsXG4gIFwidHh0XCI6IFwic2VuZFwiLFxuICBcIm1zZ1wiOiBcInNlbmRcIixcbiAgXCJtZXNzYWdlXCI6IFwic21zIHNlbmRcIixcbiAgXCJtZXNzYWdlc1wiOiBcInNtcyBsaXN0XCIsXG4gIFwiYmFsYW5jZVwiOiBcImNyZWRpdHMgYmFsYW5jZVwiLFxuICBcImNyZWRpdFwiOiBcImNyZWRpdHMgYmFsYW5jZVwiLFxuICBcImtleVwiOiBcImtleXMgbGlzdFwiLFxuICBcImFwaWtleVwiOiBcImtleXMgbGlzdFwiLFxuICBcImFwaWtleXNcIjogXCJrZXlzIGxpc3RcIixcbiAgXCJ3ZWJob29rXCI6IFwid2ViaG9va3MgbGlzdFwiLFxuICBcImhvb2tcIjogXCJ3ZWJob29rcyBsaXN0XCIsXG4gIFwiaG9va3NcIjogXCJ3ZWJob29rcyBsaXN0XCIsXG4gIFwibG9nXCI6IFwibG9ncyB0YWlsXCIsXG4gIFwidGFpbFwiOiBcImxvZ3MgdGFpbFwiLFxuICBcImF1dGhcIjogXCJsb2dpblwiLFxuICBcInNpZ25pblwiOiBcImxvZ2luXCIsXG4gIFwic2lnbm91dFwiOiBcImxvZ291dFwiLFxuICBcIm1lXCI6IFwid2hvYW1pXCIsXG4gIFwiaW5mb1wiOiBcInN0YXR1c1wiLFxuICBcImRhc2hib2FyZFwiOiBcInN0YXR1c1wiLFxuICBcImFjY291bnRcIjogXCJzdGF0dXNcIixcbiAgXCJjaGVja1wiOiBcImRvY3RvclwiLFxuICBcInRlc3RcIjogXCJkb2N0b3JcIixcbiAgXCJzZXR1cFwiOiBcIm9uYm9hcmRpbmdcIixcbiAgXCJpbml0XCI6IFwib25ib2FyZGluZ1wiLFxuICBcInN0YXJ0XCI6IFwib25ib2FyZGluZ1wiLFxufTtcblxuLyoqXG4gKiBDYWxjdWxhdGUgTGV2ZW5zaHRlaW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gc3RyaW5nc1xuICovXG5mdW5jdGlvbiBsZXZlbnNodGVpbkRpc3RhbmNlKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgbWF0cml4OiBudW1iZXJbXVtdID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPD0gYi5sZW5ndGg7IGkrKykge1xuICAgIG1hdHJpeFtpXSA9IFtpXTtcbiAgfVxuXG4gIGZvciAobGV0IGogPSAwOyBqIDw9IGEubGVuZ3RoOyBqKyspIHtcbiAgICBtYXRyaXhbMF1bal0gPSBqO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gYi5sZW5ndGg7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAxOyBqIDw9IGEubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChiLmNoYXJBdChpIC0gMSkgPT09IGEuY2hhckF0KGogLSAxKSkge1xuICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbaSAtIDFdW2ogLSAxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdHJpeFtpXVtqXSA9IE1hdGgubWluKFxuICAgICAgICAgIG1hdHJpeFtpIC0gMV1baiAtIDFdICsgMSxcbiAgICAgICAgICBtYXRyaXhbaV1baiAtIDFdICsgMSxcbiAgICAgICAgICBtYXRyaXhbaSAtIDFdW2pdICsgMSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF0cml4W2IubGVuZ3RoXVthLmxlbmd0aF07XG59XG5cbi8qKlxuICogRmluZCBzaW1pbGFyIGNvbW1hbmRzIGJhc2VkIG9uIExldmVuc2h0ZWluIGRpc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIGZpbmRTaW1pbGFyQ29tbWFuZHMoaW5wdXQ6IHN0cmluZywgbWF4RGlzdGFuY2UgPSAzKTogc3RyaW5nW10ge1xuICBjb25zdCBpbnB1dExvd2VyID0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qgc3VnZ2VzdGlvbnM6IEFycmF5PHsgY29tbWFuZDogc3RyaW5nOyBkaXN0YW5jZTogbnVtYmVyIH0+ID0gW107XG5cbiAgZm9yIChjb25zdCBjb21tYW5kIG9mIEtOT1dOX0NPTU1BTkRTKSB7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBsZXZlbnNodGVpbkRpc3RhbmNlKGlucHV0TG93ZXIsIGNvbW1hbmQudG9Mb3dlckNhc2UoKSk7XG4gICAgaWYgKGRpc3RhbmNlIDw9IG1heERpc3RhbmNlKSB7XG4gICAgICBzdWdnZXN0aW9ucy5wdXNoKHsgY29tbWFuZCwgZGlzdGFuY2UgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU29ydCBieSBkaXN0YW5jZSBhbmQgcmV0dXJuIHRvcCAzXG4gIHJldHVybiBzdWdnZXN0aW9uc1xuICAgIC5zb3J0KChhLCBiKSA9PiBhLmRpc3RhbmNlIC0gYi5kaXN0YW5jZSlcbiAgICAuc2xpY2UoMCwgMylcbiAgICAubWFwKChzKSA9PiBzLmNvbW1hbmQpO1xufVxuXG5jb25zdCBob29rOiBIb29rPFwiY29tbWFuZF9ub3RfZm91bmRcIj4gPSBhc3luYyBmdW5jdGlvbiAob3B0aW9ucykge1xuICBjb25zdCB7IGlkIH0gPSBvcHRpb25zO1xuICBjb25zdCBpbnB1dENvbW1hbmQgPSBpZDtcblxuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZyhjb2xvcnMuZXJyb3IoYENvbW1hbmQgbm90IGZvdW5kOiAke2NvbG9ycy5jb2RlKGlucHV0Q29tbWFuZCl9YCkpO1xuICBjb25zb2xlLmxvZygpO1xuXG4gIC8vIENoZWNrIGZvciBrbm93biB0eXBvcyBmaXJzdFxuICBjb25zdCB0eXBvRml4ID0gVFlQT19NQVBbaW5wdXRDb21tYW5kLnRvTG93ZXJDYXNlKCldO1xuICBpZiAodHlwb0ZpeCkge1xuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJEaWQgeW91IG1lYW4/XCIpKTtcbiAgICBjb25zb2xlLmxvZyhgICAke2NvbG9ycy5jb2RlKGBzZW5kbHkgJHt0eXBvRml4fWApfWApO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRmluZCBzaW1pbGFyIGNvbW1hbmRzXG4gIGNvbnN0IHNpbWlsYXIgPSBmaW5kU2ltaWxhckNvbW1hbmRzKGlucHV0Q29tbWFuZCk7XG4gIGlmIChzaW1pbGFyLmxlbmd0aCA+IDApIHtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiRGlkIHlvdSBtZWFuP1wiKSk7XG4gICAgc2ltaWxhci5mb3JFYWNoKChjbWQpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGAgICR7Y29sb3JzLmNvZGUoYHNlbmRseSAke2NtZH1gKX1gKTtcbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZygpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIERlZmF1bHQgaGVscFxuICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiQXZhaWxhYmxlIHRvcGljczpcIikpO1xuICBjb25zb2xlLmxvZyhgICAke2NvbG9ycy5jb2RlKFwic2VuZGx5IHNtc1wiKX0gICAgICAgIFNlbmQgYW5kIG1hbmFnZSBTTVMgbWVzc2FnZXNgKTtcbiAgY29uc29sZS5sb2coYCAgJHtjb2xvcnMuY29kZShcInNlbmRseSBjcmVkaXRzXCIpfSAgICBDaGVjayBjcmVkaXQgYmFsYW5jZWApO1xuICBjb25zb2xlLmxvZyhgICAke2NvbG9ycy5jb2RlKFwic2VuZGx5IGtleXNcIil9ICAgICAgIE1hbmFnZSBBUEkga2V5c2ApO1xuICBjb25zb2xlLmxvZyhgICAke2NvbG9ycy5jb2RlKFwic2VuZGx5IHdlYmhvb2tzXCIpfSAgIE1hbmFnZSB3ZWJob29rc2ApO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZyhgUnVuICR7Y29sb3JzLmNvZGUoXCJzZW5kbHkgLS1oZWxwXCIpfSBmb3IgYWxsIGNvbW1hbmRzLmApO1xuICBjb25zb2xlLmxvZygpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgaG9vaztcbiJdfQ==
|
package/dist/lib/api-client.js
CHANGED
|
@@ -2,7 +2,31 @@
|
|
|
2
2
|
* API Client for Sendly CLI
|
|
3
3
|
* Handles all HTTP requests to the Sendly API
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { createRequire } from "node:module";
|
|
6
|
+
import { getAuthToken, getConfigValue, getEffectiveValue } from "./config.js";
|
|
7
|
+
// Read version from package.json
|
|
8
|
+
const require = createRequire(import.meta.url);
|
|
9
|
+
const { version } = require("../../package.json");
|
|
10
|
+
/**
|
|
11
|
+
* Sleep for a given number of milliseconds
|
|
12
|
+
*/
|
|
13
|
+
function sleep(ms) {
|
|
14
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Check if an error is retryable (network errors or 5xx server errors)
|
|
18
|
+
*/
|
|
19
|
+
function isRetryableError(error) {
|
|
20
|
+
// Network errors
|
|
21
|
+
if (error instanceof TypeError && error.message.includes("fetch")) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
// Server errors (5xx) are retryable
|
|
25
|
+
if (error instanceof ApiError && error.statusCode >= 500) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
6
30
|
export class ApiError extends Error {
|
|
7
31
|
code;
|
|
8
32
|
statusCode;
|
|
@@ -44,7 +68,7 @@ class ApiClient {
|
|
|
44
68
|
const headers = {
|
|
45
69
|
"Content-Type": "application/json",
|
|
46
70
|
Accept: "application/json",
|
|
47
|
-
"User-Agent":
|
|
71
|
+
"User-Agent": `@sendly/cli/${version}`,
|
|
48
72
|
};
|
|
49
73
|
if (requireAuth) {
|
|
50
74
|
const token = getAuthToken();
|
|
@@ -57,6 +81,8 @@ class ApiClient {
|
|
|
57
81
|
}
|
|
58
82
|
async request(method, path, options = {}) {
|
|
59
83
|
const { body, query, requireAuth = true } = options;
|
|
84
|
+
const maxRetries = getEffectiveValue("maxRetries");
|
|
85
|
+
const timeout = getEffectiveValue("timeout");
|
|
60
86
|
const url = new URL(`${this.getBaseUrl()}${path}`);
|
|
61
87
|
if (query) {
|
|
62
88
|
Object.entries(query).forEach(([key, value]) => {
|
|
@@ -65,19 +91,44 @@ class ApiClient {
|
|
|
65
91
|
}
|
|
66
92
|
});
|
|
67
93
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
94
|
+
let lastError;
|
|
95
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
96
|
+
try {
|
|
97
|
+
const controller = new AbortController();
|
|
98
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
99
|
+
const response = await fetch(url.toString(), {
|
|
100
|
+
method,
|
|
101
|
+
headers: this.getHeaders(requireAuth),
|
|
102
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
103
|
+
signal: controller.signal,
|
|
104
|
+
});
|
|
105
|
+
clearTimeout(timeoutId);
|
|
106
|
+
// Update rate limit info
|
|
107
|
+
this.updateRateLimitInfo(response.headers);
|
|
108
|
+
// Parse response
|
|
109
|
+
const data = await response.json().catch(() => ({}));
|
|
110
|
+
if (!response.ok) {
|
|
111
|
+
this.handleError(response.status, data);
|
|
112
|
+
}
|
|
113
|
+
return data;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
lastError = error;
|
|
117
|
+
// Don't retry non-retryable errors (4xx client errors)
|
|
118
|
+
if (!isRetryableError(error)) {
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
// Don't retry on last attempt
|
|
122
|
+
if (attempt === maxRetries) {
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
// Exponential backoff: 1s, 2s, 4s, etc.
|
|
126
|
+
const backoffMs = Math.min(1000 * Math.pow(2, attempt), 10000);
|
|
127
|
+
await sleep(backoffMs);
|
|
128
|
+
}
|
|
79
129
|
}
|
|
80
|
-
|
|
130
|
+
// Should never reach here, but TypeScript needs this
|
|
131
|
+
throw lastError || new Error("Request failed");
|
|
81
132
|
}
|
|
82
133
|
updateRateLimitInfo(headers) {
|
|
83
134
|
const limit = headers.get("X-RateLimit-Limit");
|
|
@@ -126,4 +177,4 @@ class ApiClient {
|
|
|
126
177
|
}
|
|
127
178
|
}
|
|
128
179
|
export const apiClient = new ApiClient();
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXBpLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWlCM0QsTUFBTSxPQUFPLFFBQVMsU0FBUSxLQUFLO0lBRXhCO0lBRUE7SUFDQTtJQUpULFlBQ1MsSUFBWSxFQUNuQixPQUFlLEVBQ1IsVUFBa0IsRUFDbEIsT0FBaUM7UUFFeEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBTFIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUVaLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFHeEMsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFFBQVE7SUFDL0MsWUFBWSxVQUFrQiw4Q0FBOEM7UUFDMUUsS0FBSyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFlLFNBQVEsUUFBUTtJQUVqQztJQURULFlBQ1MsVUFBa0IsRUFDekIsVUFBa0IscUJBQXFCO1FBRXZDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFIcEMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUl6QixJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxRQUFRO0lBQ3BELFlBQVksVUFBa0Isc0JBQXNCO1FBQ2xELEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsR0FB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QU8sQ0FBSSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQ1IsSUFBWSxFQUNaLElBQThCLEVBQzlCLGNBQXVCLElBQUk7UUFFM0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFJLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FDVCxJQUFZLEVBQ1osSUFBOEIsRUFDOUIsY0FBdUIsSUFBSTtRQUUzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUksT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFJLElBQVksRUFBRSxjQUF1QixJQUFJO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQVBJIENsaWVudCBmb3IgU2VuZGx5IENMSVxuICogSGFuZGxlcyBhbGwgSFRUUCByZXF1ZXN0cyB0byB0aGUgU2VuZGx5IEFQSVxuICovXG5cbmltcG9ydCB7IGdldEF1dGhUb2tlbiwgZ2V0Q29uZmlnVmFsdWUgfSBmcm9tIFwiLi9jb25maWcuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBcGlSZXNwb25zZTxUPiB7XG4gIGRhdGE/OiBUO1xuICBlcnJvcj86IHtcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYXRlTGltaXRJbmZvIHtcbiAgbGltaXQ6IG51bWJlcjtcbiAgcmVtYWluaW5nOiBudW1iZXI7XG4gIHJlc2V0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNvZGU6IHN0cmluZyxcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHN0YXR1c0NvZGU6IG51bWJlcixcbiAgICBwdWJsaWMgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiQXBpRXJyb3JcIjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXV0aGVudGljYXRpb25FcnJvciBleHRlbmRzIEFwaUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gXCJOb3QgYXV0aGVudGljYXRlZC4gUnVuICdzZW5kbHkgbG9naW4nIGZpcnN0LlwiKSB7XG4gICAgc3VwZXIoXCJhdXRoZW50aWNhdGlvbl9lcnJvclwiLCBtZXNzYWdlLCA0MDEpO1xuICAgIHRoaXMubmFtZSA9IFwiQXV0aGVudGljYXRpb25FcnJvclwiO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSYXRlTGltaXRFcnJvciBleHRlbmRzIEFwaUVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJldHJ5QWZ0ZXI6IG51bWJlcixcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBcIlJhdGUgbGltaXQgZXhjZWVkZWRcIlxuICApIHtcbiAgICBzdXBlcihcInJhdGVfbGltaXRfZXhjZWVkZWRcIiwgbWVzc2FnZSwgNDI5KTtcbiAgICB0aGlzLm5hbWUgPSBcIlJhdGVMaW1pdEVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluc3VmZmljaWVudENyZWRpdHNFcnJvciBleHRlbmRzIEFwaUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gXCJJbnN1ZmZpY2llbnQgY3JlZGl0c1wiKSB7XG4gICAgc3VwZXIoXCJpbnN1ZmZpY2llbnRfY3JlZGl0c1wiLCBtZXNzYWdlLCA0MDIpO1xuICAgIHRoaXMubmFtZSA9IFwiSW5zdWZmaWNpZW50Q3JlZGl0c0Vycm9yXCI7XG4gIH1cbn1cblxuY2xhc3MgQXBpQ2xpZW50IHtcbiAgcHJpdmF0ZSByYXRlTGltaXRJbmZvPzogUmF0ZUxpbWl0SW5mbztcblxuICBwcml2YXRlIGdldEJhc2VVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0Q29uZmlnVmFsdWUoXCJiYXNlVXJsXCIpIHx8IFwiaHR0cHM6Ly9zZW5kbHkubGl2ZVwiO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWFkZXJzKHJlcXVpcmVBdXRoOiBib29sZWFuID0gdHJ1ZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICBcIlVzZXItQWdlbnRcIjogXCJAc2VuZGx5L2NsaS8xLjAuMFwiLFxuICAgIH07XG5cbiAgICBpZiAocmVxdWlyZUF1dGgpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gZ2V0QXV0aFRva2VuKCk7XG4gICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKCk7XG4gICAgICB9XG4gICAgICBoZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCZWFyZXIgJHt0b2tlbn1gO1xuICAgIH1cblxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgYXN5bmMgcmVxdWVzdDxUPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgYm9keT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkPjtcbiAgICAgIHJlcXVpcmVBdXRoPzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgeyBib2R5LCBxdWVyeSwgcmVxdWlyZUF1dGggPSB0cnVlIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChgJHt0aGlzLmdldEJhc2VVcmwoKX0ke3BhdGh9YCk7XG4gICAgaWYgKHF1ZXJ5KSB7XG4gICAgICBPYmplY3QuZW50cmllcyhxdWVyeSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCBTdHJpbmcodmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwudG9TdHJpbmcoKSwge1xuICAgICAgbWV0aG9kLFxuICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKHJlcXVpcmVBdXRoKSxcbiAgICAgIGJvZHk6IGJvZHkgPyBKU09OLnN0cmluZ2lmeShib2R5KSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIC8vIFVwZGF0ZSByYXRlIGxpbWl0IGluZm9cbiAgICB0aGlzLnVwZGF0ZVJhdGVMaW1pdEluZm8ocmVzcG9uc2UuaGVhZGVycyk7XG5cbiAgICAvLyBQYXJzZSByZXNwb25zZVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkuY2F0Y2goKCkgPT4gKHt9KSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aGlzLmhhbmRsZUVycm9yKHJlc3BvbnNlLnN0YXR1cywgZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGEgYXMgVDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUmF0ZUxpbWl0SW5mbyhoZWFkZXJzOiBIZWFkZXJzKTogdm9pZCB7XG4gICAgY29uc3QgbGltaXQgPSBoZWFkZXJzLmdldChcIlgtUmF0ZUxpbWl0LUxpbWl0XCIpO1xuICAgIGNvbnN0IHJlbWFpbmluZyA9IGhlYWRlcnMuZ2V0KFwiWC1SYXRlTGltaXQtUmVtYWluaW5nXCIpO1xuICAgIGNvbnN0IHJlc2V0ID0gaGVhZGVycy5nZXQoXCJYLVJhdGVMaW1pdC1SZXNldFwiKTtcblxuICAgIGlmIChsaW1pdCAmJiByZW1haW5pbmcgJiYgcmVzZXQpIHtcbiAgICAgIHRoaXMucmF0ZUxpbWl0SW5mbyA9IHtcbiAgICAgICAgbGltaXQ6IHBhcnNlSW50KGxpbWl0LCAxMCksXG4gICAgICAgIHJlbWFpbmluZzogcGFyc2VJbnQocmVtYWluaW5nLCAxMCksXG4gICAgICAgIHJlc2V0OiBwYXJzZUludChyZXNldCwgMTApLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKHN0YXR1c0NvZGU6IG51bWJlciwgZGF0YTogYW55KTogbmV2ZXIge1xuICAgIGNvbnN0IGVycm9yID0gZGF0YT8uZXJyb3IgfHwgXCJ1bmtub3duX2Vycm9yXCI7XG4gICAgY29uc3QgbWVzc2FnZSA9IGRhdGE/Lm1lc3NhZ2UgfHwgYEhUVFAgJHtzdGF0dXNDb2RlfWA7XG4gICAgY29uc3QgZGV0YWlscyA9IGRhdGE/LmRldGFpbHM7XG5cbiAgICBzd2l0Y2ggKHN0YXR1c0NvZGUpIHtcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKG1lc3NhZ2UpO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHRocm93IG5ldyBJbnN1ZmZpY2llbnRDcmVkaXRzRXJyb3IobWVzc2FnZSk7XG4gICAgICBjYXNlIDQyOTpcbiAgICAgICAgY29uc3QgcmV0cnlBZnRlciA9IGRhdGE/LnJldHJ5QWZ0ZXIgfHwgNjA7XG4gICAgICAgIHRocm93IG5ldyBSYXRlTGltaXRFcnJvcihyZXRyeUFmdGVyLCBtZXNzYWdlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBBcGlFcnJvcihlcnJvciwgbWVzc2FnZSwgc3RhdHVzQ29kZSwgZGV0YWlscyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmF0ZUxpbWl0SW5mbygpOiBSYXRlTGltaXRJbmZvIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yYXRlTGltaXRJbmZvO1xuICB9XG5cbiAgLy8gQ29udmVuaWVuY2UgbWV0aG9kc1xuICBhc3luYyBnZXQ8VD4oXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZD4sXG4gICAgcmVxdWlyZUF1dGg6IGJvb2xlYW4gPSB0cnVlXG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oXCJHRVRcIiwgcGF0aCwgeyBxdWVyeSwgcmVxdWlyZUF1dGggfSk7XG4gIH1cblxuICBhc3luYyBwb3N0PFQ+KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBib2R5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgcmVxdWlyZUF1dGg6IGJvb2xlYW4gPSB0cnVlXG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oXCJQT1NUXCIsIHBhdGgsIHsgYm9keSwgcmVxdWlyZUF1dGggfSk7XG4gIH1cblxuICBhc3luYyBwYXRjaDxUPihcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgYm9keT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHJlcXVpcmVBdXRoOiBib29sZWFuID0gdHJ1ZVxuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KFwiUEFUQ0hcIiwgcGF0aCwgeyBib2R5LCByZXF1aXJlQXV0aCB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZTxUPihwYXRoOiBzdHJpbmcsIHJlcXVpcmVBdXRoOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oXCJERUxFVEVcIiwgcGF0aCwgeyByZXF1aXJlQXV0aCB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgYXBpQ2xpZW50ID0gbmV3IEFwaUNsaWVudCgpO1xuIl19
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXBpLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlFLGlDQUFpQztBQUNqQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUF3QixDQUFDO0FBRXpFOztHQUVHO0FBQ0gsU0FBUyxLQUFLLENBQUMsRUFBVTtJQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFjO0lBQ3RDLGlCQUFpQjtJQUNqQixJQUFJLEtBQUssWUFBWSxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxvQ0FBb0M7SUFDcEMsSUFBSSxLQUFLLFlBQVksUUFBUSxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBaUJELE1BQU0sT0FBTyxRQUFTLFNBQVEsS0FBSztJQUV4QjtJQUVBO0lBQ0E7SUFKVCxZQUNTLElBQVksRUFDbkIsT0FBZSxFQUNSLFVBQWtCLEVBQ2xC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WSxFQUNaLElBQThCLEVBQzlCLGNBQXVCLElBQUk7UUFFM0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFJLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBSSxJQUFZLEVBQUUsY0FBdUIsSUFBSTtRQUN2RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUksUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFQSSBDbGllbnQgZm9yIFNlbmRseSBDTElcbiAqIEhhbmRsZXMgYWxsIEhUVFAgcmVxdWVzdHMgdG8gdGhlIFNlbmRseSBBUElcbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgeyBnZXRBdXRoVG9rZW4sIGdldENvbmZpZ1ZhbHVlLCBnZXRFZmZlY3RpdmVWYWx1ZSB9IGZyb20gXCIuL2NvbmZpZy5qc1wiO1xuXG4vLyBSZWFkIHZlcnNpb24gZnJvbSBwYWNrYWdlLmpzb25cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5jb25zdCB7IHZlcnNpb24gfSA9IHJlcXVpcmUoXCIuLi8uLi9wYWNrYWdlLmpzb25cIikgYXMgeyB2ZXJzaW9uOiBzdHJpbmcgfTtcblxuLyoqXG4gKiBTbGVlcCBmb3IgYSBnaXZlbiBudW1iZXIgb2YgbWlsbGlzZWNvbmRzXG4gKi9cbmZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYW4gZXJyb3IgaXMgcmV0cnlhYmxlIChuZXR3b3JrIGVycm9ycyBvciA1eHggc2VydmVyIGVycm9ycylcbiAqL1xuZnVuY3Rpb24gaXNSZXRyeWFibGVFcnJvcihlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICAvLyBOZXR3b3JrIGVycm9yc1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBUeXBlRXJyb3IgJiYgZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhcImZldGNoXCIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gU2VydmVyIGVycm9ycyAoNXh4KSBhcmUgcmV0cnlhYmxlXG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwaUVycm9yICYmIGVycm9yLnN0YXR1c0NvZGUgPj0gNTAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVJlc3BvbnNlPFQ+IHtcbiAgZGF0YT86IFQ7XG4gIGVycm9yPzoge1xuICAgIGNvZGU6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhdGVMaW1pdEluZm8ge1xuICBsaW1pdDogbnVtYmVyO1xuICByZW1haW5pbmc6IG51bWJlcjtcbiAgcmVzZXQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29kZTogc3RyaW5nLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBwdWJsaWMgc3RhdHVzQ29kZTogbnVtYmVyLFxuICAgIHB1YmxpYyBkZXRhaWxzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiQXBpRXJyb3JcIjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXV0aGVudGljYXRpb25FcnJvciBleHRlbmRzIEFwaUVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nID0gXCJOb3QgYXV0aGVudGljYXRlZC4gUnVuICdzZW5kbHkgbG9naW4nIGZpcnN0LlwiLFxuICApIHtcbiAgICBzdXBlcihcImF1dGhlbnRpY2F0aW9uX2Vycm9yXCIsIG1lc3NhZ2UsIDQwMSk7XG4gICAgdGhpcy5uYW1lID0gXCJBdXRoZW50aWNhdGlvbkVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhdGVMaW1pdEVycm9yIGV4dGVuZHMgQXBpRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmV0cnlBZnRlcjogbnVtYmVyLFxuICAgIG1lc3NhZ2U6IHN0cmluZyA9IFwiUmF0ZSBsaW1pdCBleGNlZWRlZFwiLFxuICApIHtcbiAgICBzdXBlcihcInJhdGVfbGltaXRfZXhjZWVkZWRcIiwgbWVzc2FnZSwgNDI5KTtcbiAgICB0aGlzLm5hbWUgPSBcIlJhdGVMaW1pdEVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluc3VmZmljaWVudENyZWRpdHNFcnJvciBleHRlbmRzIEFwaUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gXCJJbnN1ZmZpY2llbnQgY3JlZGl0c1wiKSB7XG4gICAgc3VwZXIoXCJpbnN1ZmZpY2llbnRfY3JlZGl0c1wiLCBtZXNzYWdlLCA0MDIpO1xuICAgIHRoaXMubmFtZSA9IFwiSW5zdWZmaWNpZW50Q3JlZGl0c0Vycm9yXCI7XG4gIH1cbn1cblxuY2xhc3MgQXBpQ2xpZW50IHtcbiAgcHJpdmF0ZSByYXRlTGltaXRJbmZvPzogUmF0ZUxpbWl0SW5mbztcblxuICBwcml2YXRlIGdldEJhc2VVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0Q29uZmlnVmFsdWUoXCJiYXNlVXJsXCIpIHx8IFwiaHR0cHM6Ly9zZW5kbHkubGl2ZVwiO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWFkZXJzKHJlcXVpcmVBdXRoOiBib29sZWFuID0gdHJ1ZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICBcIlVzZXItQWdlbnRcIjogYEBzZW5kbHkvY2xpLyR7dmVyc2lvbn1gLFxuICAgIH07XG5cbiAgICBpZiAocmVxdWlyZUF1dGgpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gZ2V0QXV0aFRva2VuKCk7XG4gICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKCk7XG4gICAgICB9XG4gICAgICBoZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCZWFyZXIgJHt0b2tlbn1gO1xuICAgIH1cblxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgYXN5bmMgcmVxdWVzdDxUPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgYm9keT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkPjtcbiAgICAgIHJlcXVpcmVBdXRoPzogYm9vbGVhbjtcbiAgICB9ID0ge30sXG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHsgYm9keSwgcXVlcnksIHJlcXVpcmVBdXRoID0gdHJ1ZSB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBtYXhSZXRyaWVzID0gZ2V0RWZmZWN0aXZlVmFsdWUoXCJtYXhSZXRyaWVzXCIpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSBnZXRFZmZlY3RpdmVWYWx1ZShcInRpbWVvdXRcIik7XG5cbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGAke3RoaXMuZ2V0QmFzZVVybCgpfSR7cGF0aH1gKTtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHF1ZXJ5KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChrZXksIFN0cmluZyh2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgbGFzdEVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcblxuICAgIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDw9IG1heFJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KCksIHRpbWVvdXQpO1xuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLnRvU3RyaW5nKCksIHtcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKHJlcXVpcmVBdXRoKSxcbiAgICAgICAgICBib2R5OiBib2R5ID8gSlNPTi5zdHJpbmdpZnkoYm9keSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHJhdGUgbGltaXQgaW5mb1xuICAgICAgICB0aGlzLnVwZGF0ZVJhdGVMaW1pdEluZm8ocmVzcG9uc2UuaGVhZGVycyk7XG5cbiAgICAgICAgLy8gUGFyc2UgcmVzcG9uc2VcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKS5jYXRjaCgoKSA9PiAoe30pKTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihyZXNwb25zZS5zdGF0dXMsIGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGEgYXMgVDtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxhc3RFcnJvciA9IGVycm9yIGFzIEVycm9yO1xuXG4gICAgICAgIC8vIERvbid0IHJldHJ5IG5vbi1yZXRyeWFibGUgZXJyb3JzICg0eHggY2xpZW50IGVycm9ycylcbiAgICAgICAgaWYgKCFpc1JldHJ5YWJsZUVycm9yKGVycm9yKSkge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG9uJ3QgcmV0cnkgb24gbGFzdCBhdHRlbXB0XG4gICAgICAgIGlmIChhdHRlbXB0ID09PSBtYXhSZXRyaWVzKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeHBvbmVudGlhbCBiYWNrb2ZmOiAxcywgMnMsIDRzLCBldGMuXG4gICAgICAgIGNvbnN0IGJhY2tvZmZNcyA9IE1hdGgubWluKDEwMDAgKiBNYXRoLnBvdygyLCBhdHRlbXB0KSwgMTAwMDApO1xuICAgICAgICBhd2FpdCBzbGVlcChiYWNrb2ZmTXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNob3VsZCBuZXZlciByZWFjaCBoZXJlLCBidXQgVHlwZVNjcmlwdCBuZWVkcyB0aGlzXG4gICAgdGhyb3cgbGFzdEVycm9yIHx8IG5ldyBFcnJvcihcIlJlcXVlc3QgZmFpbGVkXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSYXRlTGltaXRJbmZvKGhlYWRlcnM6IEhlYWRlcnMpOiB2b2lkIHtcbiAgICBjb25zdCBsaW1pdCA9IGhlYWRlcnMuZ2V0KFwiWC1SYXRlTGltaXQtTGltaXRcIik7XG4gICAgY29uc3QgcmVtYWluaW5nID0gaGVhZGVycy5nZXQoXCJYLVJhdGVMaW1pdC1SZW1haW5pbmdcIik7XG4gICAgY29uc3QgcmVzZXQgPSBoZWFkZXJzLmdldChcIlgtUmF0ZUxpbWl0LVJlc2V0XCIpO1xuXG4gICAgaWYgKGxpbWl0ICYmIHJlbWFpbmluZyAmJiByZXNldCkge1xuICAgICAgdGhpcy5yYXRlTGltaXRJbmZvID0ge1xuICAgICAgICBsaW1pdDogcGFyc2VJbnQobGltaXQsIDEwKSxcbiAgICAgICAgcmVtYWluaW5nOiBwYXJzZUludChyZW1haW5pbmcsIDEwKSxcbiAgICAgICAgcmVzZXQ6IHBhcnNlSW50KHJlc2V0LCAxMCksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3Ioc3RhdHVzQ29kZTogbnVtYmVyLCBkYXRhOiBhbnkpOiBuZXZlciB7XG4gICAgY29uc3QgZXJyb3IgPSBkYXRhPy5lcnJvciB8fCBcInVua25vd25fZXJyb3JcIjtcbiAgICBjb25zdCBtZXNzYWdlID0gZGF0YT8ubWVzc2FnZSB8fCBgSFRUUCAke3N0YXR1c0NvZGV9YDtcbiAgICBjb25zdCBkZXRhaWxzID0gZGF0YT8uZGV0YWlscztcblxuICAgIHN3aXRjaCAoc3RhdHVzQ29kZSkge1xuICAgICAgY2FzZSA0MDE6XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgdGhyb3cgbmV3IEF1dGhlbnRpY2F0aW9uRXJyb3IobWVzc2FnZSk7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgdGhyb3cgbmV3IEluc3VmZmljaWVudENyZWRpdHNFcnJvcihtZXNzYWdlKTtcbiAgICAgIGNhc2UgNDI5OlxuICAgICAgICBjb25zdCByZXRyeUFmdGVyID0gZGF0YT8ucmV0cnlBZnRlciB8fCA2MDtcbiAgICAgICAgdGhyb3cgbmV3IFJhdGVMaW1pdEVycm9yKHJldHJ5QWZ0ZXIsIG1lc3NhZ2UpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEFwaUVycm9yKGVycm9yLCBtZXNzYWdlLCBzdGF0dXNDb2RlLCBkZXRhaWxzKTtcbiAgICB9XG4gIH1cblxuICBnZXRSYXRlTGltaXRJbmZvKCk6IFJhdGVMaW1pdEluZm8gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJhdGVMaW1pdEluZm87XG4gIH1cblxuICAvLyBDb252ZW5pZW5jZSBtZXRob2RzXG4gIGFzeW5jIGdldDxUPihcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkPixcbiAgICByZXF1aXJlQXV0aDogYm9vbGVhbiA9IHRydWUsXG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oXCJHRVRcIiwgcGF0aCwgeyBxdWVyeSwgcmVxdWlyZUF1dGggfSk7XG4gIH1cblxuICBhc3luYyBwb3N0PFQ+KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBib2R5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgcmVxdWlyZUF1dGg6IGJvb2xlYW4gPSB0cnVlLFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KFwiUE9TVFwiLCBwYXRoLCB7IGJvZHksIHJlcXVpcmVBdXRoIH0pO1xuICB9XG5cbiAgYXN5bmMgcGF0Y2g8VD4oXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGJvZHk/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICByZXF1aXJlQXV0aDogYm9vbGVhbiA9IHRydWUsXG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oXCJQQVRDSFwiLCBwYXRoLCB7IGJvZHksIHJlcXVpcmVBdXRoIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlPFQ+KHBhdGg6IHN0cmluZywgcmVxdWlyZUF1dGg6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdDxUPihcIkRFTEVURVwiLCBwYXRoLCB7IHJlcXVpcmVBdXRoIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBhcGlDbGllbnQgPSBuZXcgQXBpQ2xpZW50KCk7XG4iXX0=
|