@sendly/cli 3.18.0 → 3.18.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/dist/commands/credits/balance.js +2 -2
- package/dist/commands/enterprise/analytics/credits.d.ts +11 -0
- package/dist/commands/enterprise/analytics/credits.js +59 -0
- package/dist/commands/enterprise/analytics/delivery.d.ts +10 -0
- package/dist/commands/enterprise/analytics/delivery.js +60 -0
- package/dist/commands/enterprise/analytics/messages.d.ts +11 -0
- package/dist/commands/enterprise/analytics/messages.js +59 -0
- package/dist/commands/enterprise/analytics/overview.d.ts +10 -0
- package/dist/commands/enterprise/analytics/overview.js +42 -0
- package/dist/commands/enterprise/billing.d.ts +12 -0
- package/dist/commands/enterprise/billing.js +70 -0
- package/dist/commands/enterprise/credits.d.ts +13 -0
- package/dist/commands/enterprise/credits.js +37 -0
- package/dist/commands/enterprise/keys/create.d.ts +15 -0
- package/dist/commands/enterprise/keys/create.js +53 -0
- package/dist/commands/enterprise/keys/list.d.ts +13 -0
- package/dist/commands/enterprise/keys/list.js +69 -0
- package/dist/commands/enterprise/keys/revoke.d.ts +15 -0
- package/dist/commands/enterprise/keys/revoke.js +57 -0
- package/dist/commands/enterprise/provision.d.ts +17 -0
- package/dist/commands/enterprise/provision.js +143 -0
- package/dist/commands/enterprise/quota/get.d.ts +13 -0
- package/dist/commands/enterprise/quota/get.js +40 -0
- package/dist/commands/enterprise/quota/set.d.ts +15 -0
- package/dist/commands/enterprise/quota/set.js +69 -0
- package/dist/commands/enterprise/status.d.ts +10 -0
- package/dist/commands/enterprise/status.js +45 -0
- package/dist/commands/enterprise/transfer-credits.d.ts +14 -0
- package/dist/commands/enterprise/transfer-credits.js +76 -0
- package/dist/commands/enterprise/webhooks/delete.d.ts +11 -0
- package/dist/commands/enterprise/webhooks/delete.js +44 -0
- package/dist/commands/enterprise/webhooks/get.d.ts +10 -0
- package/dist/commands/enterprise/webhooks/get.js +38 -0
- package/dist/commands/enterprise/webhooks/set.d.ts +12 -0
- package/dist/commands/enterprise/webhooks/set.js +48 -0
- package/dist/commands/enterprise/webhooks/test.d.ts +10 -0
- package/dist/commands/enterprise/webhooks/test.js +42 -0
- package/dist/commands/enterprise/workspaces/create.d.ts +11 -0
- package/dist/commands/enterprise/workspaces/create.js +37 -0
- package/dist/commands/enterprise/workspaces/delete.d.ts +14 -0
- package/dist/commands/enterprise/workspaces/delete.js +58 -0
- package/dist/commands/enterprise/workspaces/get.d.ts +13 -0
- package/dist/commands/enterprise/workspaces/get.js +51 -0
- package/dist/commands/enterprise/workspaces/list.d.ts +10 -0
- package/dist/commands/enterprise/workspaces/list.js +75 -0
- package/dist/commands/enterprise/workspaces/resume.d.ts +13 -0
- package/dist/commands/enterprise/workspaces/resume.js +35 -0
- package/dist/commands/enterprise/workspaces/suspend.d.ts +15 -0
- package/dist/commands/enterprise/workspaces/suspend.js +60 -0
- package/dist/lib/api-client.d.ts +1 -0
- package/dist/lib/api-client.js +6 -3
- package/oclif.manifest.json +1293 -76
- package/package.json +19 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../../lib/api-client.js";
|
|
4
|
+
import { table, json, info, colors, isJsonMode, formatRelativeTime, } from "../../../lib/output.js";
|
|
5
|
+
export default class EnterpriseKeysList extends AuthenticatedCommand {
|
|
6
|
+
static description = "List API keys for an enterprise workspace";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> enterprise keys list org_abc123",
|
|
9
|
+
"<%= config.bin %> enterprise keys list org_abc123 --json",
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
workspaceId: Args.string({
|
|
13
|
+
description: "Workspace ID",
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
static flags = {
|
|
18
|
+
...AuthenticatedCommand.baseFlags,
|
|
19
|
+
};
|
|
20
|
+
async run() {
|
|
21
|
+
const { args } = await this.parse(EnterpriseKeysList);
|
|
22
|
+
const response = await apiClient.get(`/api/v1/enterprise/workspaces/${args.workspaceId}/keys`);
|
|
23
|
+
if (isJsonMode()) {
|
|
24
|
+
json(response.keys);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (response.keys.length === 0) {
|
|
28
|
+
info("No API keys found for this workspace");
|
|
29
|
+
console.log();
|
|
30
|
+
console.log(` Create one with ${colors.code(`sendly enterprise keys create ${args.workspaceId}`)}`);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
console.log();
|
|
34
|
+
table(response.keys, [
|
|
35
|
+
{ header: "Name", key: "name", width: 20 },
|
|
36
|
+
{
|
|
37
|
+
header: "Key ID",
|
|
38
|
+
key: "id",
|
|
39
|
+
width: 18,
|
|
40
|
+
formatter: (v) => colors.dim(String(v).slice(0, 16)),
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
header: "Prefix",
|
|
44
|
+
key: "prefix",
|
|
45
|
+
width: 16,
|
|
46
|
+
formatter: (v) => colors.code(String(v)),
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
header: "Type",
|
|
50
|
+
key: "type",
|
|
51
|
+
width: 8,
|
|
52
|
+
formatter: (v) => v === "test" ? colors.warning("test") : colors.success("live"),
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
header: "Status",
|
|
56
|
+
key: "isActive",
|
|
57
|
+
width: 10,
|
|
58
|
+
formatter: (v) => v ? colors.success("active") : colors.error("revoked"),
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
header: "Last Used",
|
|
62
|
+
key: "lastUsedAt",
|
|
63
|
+
width: 12,
|
|
64
|
+
formatter: (v) => v ? formatRelativeTime(String(v)) : colors.dim("never"),
|
|
65
|
+
},
|
|
66
|
+
]);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tYW5kcy9lbnRlcnByaXNlL2tleXMvbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsS0FBSyxFQUNMLElBQUksRUFDSixJQUFJLEVBQ0osTUFBTSxFQUNOLFVBQVUsRUFDVixrQkFBa0IsR0FDbkIsTUFBTSx3QkFBd0IsQ0FBQztBQWdCaEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxrQkFBbUIsU0FBUSxvQkFBb0I7SUFDbEUsTUFBTSxDQUFDLFdBQVcsR0FBRywyQ0FBMkMsQ0FBQztJQUVqRSxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLG1EQUFtRDtRQUNuRCwwREFBMEQ7S0FDM0QsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN2QixXQUFXLEVBQUUsY0FBYztZQUMzQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztLQUNsQyxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFdEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUNsQyxpQ0FBaUMsSUFBSSxDQUFDLFdBQVcsT0FBTyxDQUN6RCxDQUFDO1FBRUYsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQ1QscUJBQXFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQ3hGLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ25CLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDMUM7Z0JBQ0UsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLEdBQUcsRUFBRSxJQUFJO2dCQUNULEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNyRDtZQUNEO2dCQUNFLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixHQUFHLEVBQUUsUUFBUTtnQkFDYixLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pDO1lBQ0Q7Z0JBQ0UsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsR0FBRyxFQUFFLE1BQU07Z0JBQ1gsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDZixDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNqRTtZQUNEO2dCQUNFLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixHQUFHLEVBQUUsVUFBVTtnQkFDZixLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNmLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDekQ7WUFDRDtnQkFDRSxNQUFNLEVBQUUsV0FBVztnQkFDbkIsR0FBRyxFQUFFLFlBQVk7Z0JBQ2pCLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7YUFDMUQ7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQge1xuICB0YWJsZSxcbiAganNvbixcbiAgaW5mbyxcbiAgY29sb3JzLFxuICBpc0pzb25Nb2RlLFxuICBmb3JtYXRSZWxhdGl2ZVRpbWUsXG59IGZyb20gXCIuLi8uLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBBcGlLZXkge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHByZWZpeDogc3RyaW5nO1xuICB0eXBlOiBcInRlc3RcIiB8IFwibGl2ZVwiO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgbGFzdFVzZWRBdD86IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBLZXlzUmVzcG9uc2Uge1xuICBrZXlzOiBBcGlLZXlbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW50ZXJwcmlzZUtleXNMaXN0IGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkxpc3QgQVBJIGtleXMgZm9yIGFuIGVudGVycHJpc2Ugd29ya3NwYWNlXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gZW50ZXJwcmlzZSBrZXlzIGxpc3Qgb3JnX2FiYzEyM1wiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gZW50ZXJwcmlzZSBrZXlzIGxpc3Qgb3JnX2FiYzEyMyAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICB3b3Jrc3BhY2VJZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiV29ya3NwYWNlIElEXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoRW50ZXJwcmlzZUtleXNMaXN0KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LmdldDxLZXlzUmVzcG9uc2U+KFxuICAgICAgYC9hcGkvdjEvZW50ZXJwcmlzZS93b3Jrc3BhY2VzLyR7YXJncy53b3Jrc3BhY2VJZH0va2V5c2AsXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzcG9uc2Uua2V5cyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLmtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBpbmZvKFwiTm8gQVBJIGtleXMgZm91bmQgZm9yIHRoaXMgd29ya3NwYWNlXCIpO1xuICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgICBDcmVhdGUgb25lIHdpdGggJHtjb2xvcnMuY29kZShgc2VuZGx5IGVudGVycHJpc2Uga2V5cyBjcmVhdGUgJHthcmdzLndvcmtzcGFjZUlkfWApfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgdGFibGUocmVzcG9uc2Uua2V5cywgW1xuICAgICAgeyBoZWFkZXI6IFwiTmFtZVwiLCBrZXk6IFwibmFtZVwiLCB3aWR0aDogMjAgfSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyOiBcIktleSBJRFwiLFxuICAgICAgICBrZXk6IFwiaWRcIixcbiAgICAgICAgd2lkdGg6IDE4LFxuICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PiBjb2xvcnMuZGltKFN0cmluZyh2KS5zbGljZSgwLCAxNikpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyOiBcIlByZWZpeFwiLFxuICAgICAgICBrZXk6IFwicHJlZml4XCIsXG4gICAgICAgIHdpZHRoOiAxNixcbiAgICAgICAgZm9ybWF0dGVyOiAodikgPT4gY29sb3JzLmNvZGUoU3RyaW5nKHYpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJUeXBlXCIsXG4gICAgICAgIGtleTogXCJ0eXBlXCIsXG4gICAgICAgIHdpZHRoOiA4LFxuICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PlxuICAgICAgICAgIHYgPT09IFwidGVzdFwiID8gY29sb3JzLndhcm5pbmcoXCJ0ZXN0XCIpIDogY29sb3JzLnN1Y2Nlc3MoXCJsaXZlXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyOiBcIlN0YXR1c1wiLFxuICAgICAgICBrZXk6IFwiaXNBY3RpdmVcIixcbiAgICAgICAgd2lkdGg6IDEwLFxuICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PlxuICAgICAgICAgIHYgPyBjb2xvcnMuc3VjY2VzcyhcImFjdGl2ZVwiKSA6IGNvbG9ycy5lcnJvcihcInJldm9rZWRcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IFwiTGFzdCBVc2VkXCIsXG4gICAgICAgIGtleTogXCJsYXN0VXNlZEF0XCIsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgZm9ybWF0dGVyOiAodikgPT5cbiAgICAgICAgICB2ID8gZm9ybWF0UmVsYXRpdmVUaW1lKFN0cmluZyh2KSkgOiBjb2xvcnMuZGltKFwibmV2ZXJcIiksXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
export default class EnterpriseKeysRevoke extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
workspaceId: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
keyId: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static flags: {
|
|
10
|
+
yes: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Args, Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../../lib/api-client.js";
|
|
4
|
+
import { success, error, json, isJsonMode } from "../../../lib/output.js";
|
|
5
|
+
import inquirer from "inquirer";
|
|
6
|
+
export default class EnterpriseKeysRevoke extends AuthenticatedCommand {
|
|
7
|
+
static description = "Revoke an API key for an enterprise workspace";
|
|
8
|
+
static examples = [
|
|
9
|
+
"<%= config.bin %> enterprise keys revoke org_abc123 key_xyz",
|
|
10
|
+
"<%= config.bin %> enterprise keys revoke org_abc123 key_xyz --yes",
|
|
11
|
+
];
|
|
12
|
+
static args = {
|
|
13
|
+
workspaceId: Args.string({
|
|
14
|
+
description: "Workspace ID",
|
|
15
|
+
required: true,
|
|
16
|
+
}),
|
|
17
|
+
keyId: Args.string({
|
|
18
|
+
description: "API key ID to revoke",
|
|
19
|
+
required: true,
|
|
20
|
+
}),
|
|
21
|
+
};
|
|
22
|
+
static flags = {
|
|
23
|
+
...AuthenticatedCommand.baseFlags,
|
|
24
|
+
yes: Flags.boolean({
|
|
25
|
+
char: "y",
|
|
26
|
+
description: "Skip confirmation prompt",
|
|
27
|
+
default: false,
|
|
28
|
+
}),
|
|
29
|
+
};
|
|
30
|
+
async run() {
|
|
31
|
+
const { args, flags } = await this.parse(EnterpriseKeysRevoke);
|
|
32
|
+
if (!flags.yes && !isJsonMode()) {
|
|
33
|
+
const { confirm } = await inquirer.prompt([
|
|
34
|
+
{
|
|
35
|
+
type: "confirm",
|
|
36
|
+
name: "confirm",
|
|
37
|
+
message: `Revoke API key ${args.keyId}? This cannot be undone.`,
|
|
38
|
+
default: false,
|
|
39
|
+
},
|
|
40
|
+
]);
|
|
41
|
+
if (!confirm) {
|
|
42
|
+
error("Revocation cancelled");
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
await apiClient.delete(`/api/v1/enterprise/workspaces/${args.workspaceId}/keys/${args.keyId}`);
|
|
47
|
+
if (isJsonMode()) {
|
|
48
|
+
json({ success: true, keyId: args.keyId });
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
success("API key revoked", {
|
|
52
|
+
"Key ID": args.keyId,
|
|
53
|
+
Workspace: args.workspaceId,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2b2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2VudGVycHJpc2Uva2V5cy9yZXZva2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRSxPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFFaEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFDcEUsTUFBTSxDQUFDLFdBQVcsR0FBRywrQ0FBK0MsQ0FBQztJQUVyRSxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDZEQUE2RDtRQUM3RCxtRUFBbUU7S0FDcEUsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN2QixXQUFXLEVBQUUsY0FBYztZQUMzQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFDRixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUsc0JBQXNCO1lBQ25DLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO1FBQ2pDLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLDBCQUEwQjtZQUN2QyxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNoQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUN4QztvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixJQUFJLEVBQUUsU0FBUztvQkFDZixPQUFPLEVBQUUsa0JBQWtCLElBQUksQ0FBQyxLQUFLLDBCQUEwQjtvQkFDL0QsT0FBTyxFQUFFLEtBQUs7aUJBQ2Y7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBQzlCLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FDcEIsaUNBQWlDLElBQUksQ0FBQyxXQUFXLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUN2RSxDQUFDO1FBRUYsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSztZQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MsIEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7IHN1Y2Nlc3MsIGVycm9yLCBqc29uLCBpc0pzb25Nb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCBpbnF1aXJlciBmcm9tIFwiaW5xdWlyZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW50ZXJwcmlzZUtleXNSZXZva2UgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiUmV2b2tlIGFuIEFQSSBrZXkgZm9yIGFuIGVudGVycHJpc2Ugd29ya3NwYWNlXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gZW50ZXJwcmlzZSBrZXlzIHJldm9rZSBvcmdfYWJjMTIzIGtleV94eXpcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGVudGVycHJpc2Uga2V5cyByZXZva2Ugb3JnX2FiYzEyMyBrZXlfeHl6IC0teWVzXCIsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgd29ya3NwYWNlSWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIldvcmtzcGFjZSBJRFwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAga2V5SWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFQSSBrZXkgSUQgdG8gcmV2b2tlXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHllczogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBjaGFyOiBcInlcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNraXAgY29uZmlybWF0aW9uIHByb21wdFwiLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoRW50ZXJwcmlzZUtleXNSZXZva2UpO1xuXG4gICAgaWYgKCFmbGFncy55ZXMgJiYgIWlzSnNvbk1vZGUoKSkge1xuICAgICAgY29uc3QgeyBjb25maXJtIH0gPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjb25maXJtXCIsXG4gICAgICAgICAgbmFtZTogXCJjb25maXJtXCIsXG4gICAgICAgICAgbWVzc2FnZTogYFJldm9rZSBBUEkga2V5ICR7YXJncy5rZXlJZH0/IFRoaXMgY2Fubm90IGJlIHVuZG9uZS5gLFxuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgXSk7XG5cbiAgICAgIGlmICghY29uZmlybSkge1xuICAgICAgICBlcnJvcihcIlJldm9jYXRpb24gY2FuY2VsbGVkXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgYXBpQ2xpZW50LmRlbGV0ZShcbiAgICAgIGAvYXBpL3YxL2VudGVycHJpc2Uvd29ya3NwYWNlcy8ke2FyZ3Mud29ya3NwYWNlSWR9L2tleXMvJHthcmdzLmtleUlkfWAsXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24oeyBzdWNjZXNzOiB0cnVlLCBrZXlJZDogYXJncy5rZXlJZCB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdWNjZXNzKFwiQVBJIGtleSByZXZva2VkXCIsIHtcbiAgICAgIFwiS2V5IElEXCI6IGFyZ3Mua2V5SWQsXG4gICAgICBXb3Jrc3BhY2U6IGFyZ3Mud29ya3NwYWNlSWQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class EnterpriseProvision extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
credits: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
"inherit-from": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
|
+
"webhook-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
"create-key": import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
bulk: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
13
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
private bulkProvision;
|
|
17
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { success, json, table, colors, isJsonMode, spinner, } from "../../lib/output.js";
|
|
5
|
+
import * as fs from "node:fs";
|
|
6
|
+
export default class EnterpriseProvision extends AuthenticatedCommand {
|
|
7
|
+
static description = "Provision a new workspace with full setup, or bulk provision from a JSON file";
|
|
8
|
+
static examples = [
|
|
9
|
+
'<%= config.bin %> enterprise provision --name "Acme Corp" --credits 1000',
|
|
10
|
+
'<%= config.bin %> enterprise provision --name "Acme Corp" --credits 500 --inherit-from org_abc123 --webhook-url https://example.com/hook',
|
|
11
|
+
"<%= config.bin %> enterprise provision --bulk workspaces.json",
|
|
12
|
+
];
|
|
13
|
+
static flags = {
|
|
14
|
+
...AuthenticatedCommand.baseFlags,
|
|
15
|
+
name: Flags.string({
|
|
16
|
+
char: "n",
|
|
17
|
+
description: "Workspace name (single provision)",
|
|
18
|
+
}),
|
|
19
|
+
credits: Flags.integer({
|
|
20
|
+
char: "c",
|
|
21
|
+
description: "Initial credits to allocate",
|
|
22
|
+
}),
|
|
23
|
+
"inherit-from": Flags.string({
|
|
24
|
+
description: "Workspace ID to inherit verification from",
|
|
25
|
+
}),
|
|
26
|
+
"webhook-url": Flags.string({
|
|
27
|
+
description: "Webhook URL for the workspace",
|
|
28
|
+
}),
|
|
29
|
+
"create-key": Flags.boolean({
|
|
30
|
+
description: "Create an API key for the workspace",
|
|
31
|
+
default: false,
|
|
32
|
+
}),
|
|
33
|
+
bulk: Flags.string({
|
|
34
|
+
char: "b",
|
|
35
|
+
description: "Path to JSON file for bulk provisioning (up to 50 workspaces)",
|
|
36
|
+
}),
|
|
37
|
+
};
|
|
38
|
+
async run() {
|
|
39
|
+
const { flags } = await this.parse(EnterpriseProvision);
|
|
40
|
+
if (flags.bulk) {
|
|
41
|
+
await this.bulkProvision(flags.bulk);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!flags.name) {
|
|
45
|
+
this.error("--name is required for single provisioning. Use --bulk for batch provisioning.");
|
|
46
|
+
}
|
|
47
|
+
const spin = spinner("Provisioning workspace...");
|
|
48
|
+
spin.start();
|
|
49
|
+
const body = { name: flags.name };
|
|
50
|
+
if (flags.credits)
|
|
51
|
+
body.credits = flags.credits;
|
|
52
|
+
if (flags["inherit-from"])
|
|
53
|
+
body.inheritVerificationFrom = flags["inherit-from"];
|
|
54
|
+
if (flags["webhook-url"])
|
|
55
|
+
body.webhookUrl = flags["webhook-url"];
|
|
56
|
+
if (flags["create-key"])
|
|
57
|
+
body.createApiKey = true;
|
|
58
|
+
const response = await apiClient.post("/api/v1/enterprise/workspaces/provision", body);
|
|
59
|
+
spin.succeed("Workspace provisioned");
|
|
60
|
+
if (isJsonMode()) {
|
|
61
|
+
json(response);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const details = {
|
|
65
|
+
ID: response.organization.id,
|
|
66
|
+
Name: response.organization.name,
|
|
67
|
+
Slug: response.organization.slug,
|
|
68
|
+
};
|
|
69
|
+
if (response.verification) {
|
|
70
|
+
details["Verification"] = response.verification.status === "approved"
|
|
71
|
+
? colors.success("inherited")
|
|
72
|
+
: colors.warning(response.verification.status);
|
|
73
|
+
}
|
|
74
|
+
if (response.credits) {
|
|
75
|
+
details["Credits"] = `${response.credits.balance.toLocaleString()} credits`;
|
|
76
|
+
}
|
|
77
|
+
if (response.apiKey) {
|
|
78
|
+
details["API Key"] = response.apiKey.key;
|
|
79
|
+
}
|
|
80
|
+
if (response.webhook) {
|
|
81
|
+
details["Webhook"] = response.webhook.url;
|
|
82
|
+
}
|
|
83
|
+
success("Workspace provisioned", details);
|
|
84
|
+
if (response.apiKey) {
|
|
85
|
+
console.log();
|
|
86
|
+
console.log(colors.warning(" Save the API key now — it won't be shown again."));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async bulkProvision(filePath) {
|
|
90
|
+
if (!fs.existsSync(filePath)) {
|
|
91
|
+
this.error(`File not found: ${filePath}`);
|
|
92
|
+
}
|
|
93
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
94
|
+
let workspaces;
|
|
95
|
+
try {
|
|
96
|
+
workspaces = JSON.parse(content);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
this.error("Invalid JSON file. Expected an array of workspace objects.");
|
|
100
|
+
}
|
|
101
|
+
if (!Array.isArray(workspaces)) {
|
|
102
|
+
this.error("JSON file must contain an array of workspace objects.");
|
|
103
|
+
}
|
|
104
|
+
if (workspaces.length > 50) {
|
|
105
|
+
this.error("Bulk provisioning supports up to 50 workspaces at a time.");
|
|
106
|
+
}
|
|
107
|
+
const spin = spinner(`Provisioning ${workspaces.length} workspaces...`);
|
|
108
|
+
spin.start();
|
|
109
|
+
const response = await apiClient.post("/api/v1/enterprise/workspaces/provision/bulk", { workspaces });
|
|
110
|
+
spin.succeed(`Provisioned ${response.totalCreated}/${response.totalRequested} workspaces`);
|
|
111
|
+
if (isJsonMode()) {
|
|
112
|
+
json(response);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
console.log();
|
|
116
|
+
table(response.results, [
|
|
117
|
+
{ header: "Name", key: "name", width: 24 },
|
|
118
|
+
{
|
|
119
|
+
header: "Status",
|
|
120
|
+
key: "success",
|
|
121
|
+
width: 10,
|
|
122
|
+
formatter: (v) => v ? colors.success("created") : colors.error("failed"),
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
header: "Workspace ID",
|
|
126
|
+
key: "workspaceId",
|
|
127
|
+
width: 20,
|
|
128
|
+
formatter: (v) => (v ? colors.dim(String(v)) : colors.dim("—")),
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
header: "Error",
|
|
132
|
+
key: "error",
|
|
133
|
+
width: 30,
|
|
134
|
+
formatter: (v) => (v ? colors.error(String(v)) : ""),
|
|
135
|
+
},
|
|
136
|
+
]);
|
|
137
|
+
if (response.totalFailed > 0) {
|
|
138
|
+
console.log();
|
|
139
|
+
console.log(colors.warning(` ${response.totalFailed} workspace(s) failed to provision.`));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2VudGVycHJpc2UvcHJvdmlzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsSUFBSSxFQUNKLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBaUM5QixNQUFNLENBQUMsT0FBTyxPQUFPLG1CQUFvQixTQUFRLG9CQUFvQjtJQUNuRSxNQUFNLENBQUMsV0FBVyxHQUFHLCtFQUErRSxDQUFDO0lBRXJHLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsMEVBQTBFO1FBQzFFLDBJQUEwSTtRQUMxSSwrREFBK0Q7S0FDaEUsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsbUNBQW1DO1NBQ2pELENBQUM7UUFDRixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNyQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSw2QkFBNkI7U0FDM0MsQ0FBQztRQUNGLGNBQWMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNCLFdBQVcsRUFBRSwyQ0FBMkM7U0FDekQsQ0FBQztRQUNGLGFBQWEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzFCLFdBQVcsRUFBRSwrQkFBK0I7U0FDN0MsQ0FBQztRQUNGLFlBQVksRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQzFCLFdBQVcsRUFBRSxxQ0FBcUM7WUFDbEQsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsK0RBQStEO1NBQzdFLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFeEQsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLGdGQUFnRixDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUViLE1BQU0sSUFBSSxHQUE0QixFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0QsSUFBSSxLQUFLLENBQUMsT0FBTztZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNoRCxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFBRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQztZQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pFLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQztZQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRWxELE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDbkMseUNBQXlDLEVBQ3pDLElBQUksQ0FDTCxDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRXRDLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUEyQjtZQUN0QyxFQUFFLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzVCLElBQUksRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUk7WUFDaEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSTtTQUNqQyxDQUFDO1FBRUYsSUFBSSxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLFVBQVU7Z0JBQ25FLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzNDLENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUxQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxPQUFPLENBQUMsbURBQW1ELENBQUMsQ0FDcEUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFnQjtRQUMxQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELElBQUksVUFBK0IsQ0FBQztRQUVwQyxJQUFJLENBQUM7WUFDSCxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixVQUFVLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUViLE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDbkMsOENBQThDLEVBQzlDLEVBQUUsVUFBVSxFQUFFLENBQ2YsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLENBQ1YsZUFBZSxRQUFRLENBQUMsWUFBWSxJQUFJLFFBQVEsQ0FBQyxjQUFjLGFBQWEsQ0FDN0UsQ0FBQztRQUVGLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQ3RCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDMUM7Z0JBQ0UsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLEdBQUcsRUFBRSxTQUFTO2dCQUNkLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQzthQUN6RDtZQUNEO2dCQUNFLE1BQU0sRUFBRSxjQUFjO2dCQUN0QixHQUFHLEVBQUUsYUFBYTtnQkFDbEIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNoRTtZQUNEO2dCQUNFLE1BQU0sRUFBRSxPQUFPO2dCQUNmLEdBQUcsRUFBRSxPQUFPO2dCQUNaLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUNyRDtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxPQUFPLENBQ1osS0FBSyxRQUFRLENBQUMsV0FBVyxvQ0FBb0MsQ0FDOUQsQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQge1xuICBzdWNjZXNzLFxuICBqc29uLFxuICB0YWJsZSxcbiAgY29sb3JzLFxuICBpc0pzb25Nb2RlLFxuICBzcGlubmVyLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcblxuaW50ZXJmYWNlIFByb3Zpc2lvblJlc3BvbnNlIHtcbiAgb3JnYW5pemF0aW9uOiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgc2x1Zzogc3RyaW5nIH07XG4gIHZlcmlmaWNhdGlvbj86IHsgc3RhdHVzOiBzdHJpbmcgfTtcbiAgY3JlZGl0cz86IHsgYmFsYW5jZTogbnVtYmVyIH07XG4gIGFwaUtleT86IHsgaWQ6IHN0cmluZzsga2V5OiBzdHJpbmc7IHByZWZpeDogc3RyaW5nIH07XG4gIHdlYmhvb2s/OiB7IHVybDogc3RyaW5nIH07XG4gIG9wdEluUGFnZT86IHsgaWQ6IHN0cmluZzsgc2x1Zzogc3RyaW5nIH07XG59XG5cbmludGVyZmFjZSBCdWxrUHJvdmlzaW9uSXRlbSB7XG4gIG5hbWU6IHN0cmluZztcbiAgY3JlZGl0cz86IG51bWJlcjtcbiAgaW5oZXJpdFZlcmlmaWNhdGlvbkZyb20/OiBzdHJpbmc7XG4gIHdlYmhvb2tVcmw/OiBzdHJpbmc7XG4gIGNyZWF0ZUFwaUtleT86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBCdWxrUmVzdWx0SXRlbSB7XG4gIG5hbWU6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgd29ya3NwYWNlSWQ/OiBzdHJpbmc7XG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQnVsa1Byb3Zpc2lvblJlc3BvbnNlIHtcbiAgcmVzdWx0czogQnVsa1Jlc3VsdEl0ZW1bXTtcbiAgdG90YWxSZXF1ZXN0ZWQ6IG51bWJlcjtcbiAgdG90YWxDcmVhdGVkOiBudW1iZXI7XG4gIHRvdGFsRmFpbGVkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudGVycHJpc2VQcm92aXNpb24gZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiUHJvdmlzaW9uIGEgbmV3IHdvcmtzcGFjZSB3aXRoIGZ1bGwgc2V0dXAsIG9yIGJ1bGsgcHJvdmlzaW9uIGZyb20gYSBKU09OIGZpbGVcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IGVudGVycHJpc2UgcHJvdmlzaW9uIC0tbmFtZSBcIkFjbWUgQ29ycFwiIC0tY3JlZGl0cyAxMDAwJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gZW50ZXJwcmlzZSBwcm92aXNpb24gLS1uYW1lIFwiQWNtZSBDb3JwXCIgLS1jcmVkaXRzIDUwMCAtLWluaGVyaXQtZnJvbSBvcmdfYWJjMTIzIC0td2ViaG9vay11cmwgaHR0cHM6Ly9leGFtcGxlLmNvbS9ob29rJyxcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGVudGVycHJpc2UgcHJvdmlzaW9uIC0tYnVsayB3b3Jrc3BhY2VzLmpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIG5hbWU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcIm5cIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIldvcmtzcGFjZSBuYW1lIChzaW5nbGUgcHJvdmlzaW9uKVwiLFxuICAgIH0pLFxuICAgIGNyZWRpdHM6IEZsYWdzLmludGVnZXIoe1xuICAgICAgY2hhcjogXCJjXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJJbml0aWFsIGNyZWRpdHMgdG8gYWxsb2NhdGVcIixcbiAgICB9KSxcbiAgICBcImluaGVyaXQtZnJvbVwiOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiV29ya3NwYWNlIElEIHRvIGluaGVyaXQgdmVyaWZpY2F0aW9uIGZyb21cIixcbiAgICB9KSxcbiAgICBcIndlYmhvb2stdXJsXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJXZWJob29rIFVSTCBmb3IgdGhlIHdvcmtzcGFjZVwiLFxuICAgIH0pLFxuICAgIFwiY3JlYXRlLWtleVwiOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNyZWF0ZSBhbiBBUEkga2V5IGZvciB0aGUgd29ya3NwYWNlXCIsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KSxcbiAgICBidWxrOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQYXRoIHRvIEpTT04gZmlsZSBmb3IgYnVsayBwcm92aXNpb25pbmcgKHVwIHRvIDUwIHdvcmtzcGFjZXMpXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoRW50ZXJwcmlzZVByb3Zpc2lvbik7XG5cbiAgICBpZiAoZmxhZ3MuYnVsaykge1xuICAgICAgYXdhaXQgdGhpcy5idWxrUHJvdmlzaW9uKGZsYWdzLmJ1bGspO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghZmxhZ3MubmFtZSkge1xuICAgICAgdGhpcy5lcnJvcihcIi0tbmFtZSBpcyByZXF1aXJlZCBmb3Igc2luZ2xlIHByb3Zpc2lvbmluZy4gVXNlIC0tYnVsayBmb3IgYmF0Y2ggcHJvdmlzaW9uaW5nLlwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIlByb3Zpc2lvbmluZyB3b3Jrc3BhY2UuLi5cIik7XG4gICAgc3Bpbi5zdGFydCgpO1xuXG4gICAgY29uc3QgYm9keTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IG5hbWU6IGZsYWdzLm5hbWUgfTtcbiAgICBpZiAoZmxhZ3MuY3JlZGl0cykgYm9keS5jcmVkaXRzID0gZmxhZ3MuY3JlZGl0cztcbiAgICBpZiAoZmxhZ3NbXCJpbmhlcml0LWZyb21cIl0pIGJvZHkuaW5oZXJpdFZlcmlmaWNhdGlvbkZyb20gPSBmbGFnc1tcImluaGVyaXQtZnJvbVwiXTtcbiAgICBpZiAoZmxhZ3NbXCJ3ZWJob29rLXVybFwiXSkgYm9keS53ZWJob29rVXJsID0gZmxhZ3NbXCJ3ZWJob29rLXVybFwiXTtcbiAgICBpZiAoZmxhZ3NbXCJjcmVhdGUta2V5XCJdKSBib2R5LmNyZWF0ZUFwaUtleSA9IHRydWU7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PFByb3Zpc2lvblJlc3BvbnNlPihcbiAgICAgIFwiL2FwaS92MS9lbnRlcnByaXNlL3dvcmtzcGFjZXMvcHJvdmlzaW9uXCIsXG4gICAgICBib2R5LFxuICAgICk7XG5cbiAgICBzcGluLnN1Y2NlZWQoXCJXb3Jrc3BhY2UgcHJvdmlzaW9uZWRcIik7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkZXRhaWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgSUQ6IHJlc3BvbnNlLm9yZ2FuaXphdGlvbi5pZCxcbiAgICAgIE5hbWU6IHJlc3BvbnNlLm9yZ2FuaXphdGlvbi5uYW1lLFxuICAgICAgU2x1ZzogcmVzcG9uc2Uub3JnYW5pemF0aW9uLnNsdWcsXG4gICAgfTtcblxuICAgIGlmIChyZXNwb25zZS52ZXJpZmljYXRpb24pIHtcbiAgICAgIGRldGFpbHNbXCJWZXJpZmljYXRpb25cIl0gPSByZXNwb25zZS52ZXJpZmljYXRpb24uc3RhdHVzID09PSBcImFwcHJvdmVkXCJcbiAgICAgICAgPyBjb2xvcnMuc3VjY2VzcyhcImluaGVyaXRlZFwiKVxuICAgICAgICA6IGNvbG9ycy53YXJuaW5nKHJlc3BvbnNlLnZlcmlmaWNhdGlvbi5zdGF0dXMpO1xuICAgIH1cbiAgICBpZiAocmVzcG9uc2UuY3JlZGl0cykge1xuICAgICAgZGV0YWlsc1tcIkNyZWRpdHNcIl0gPSBgJHtyZXNwb25zZS5jcmVkaXRzLmJhbGFuY2UudG9Mb2NhbGVTdHJpbmcoKX0gY3JlZGl0c2A7XG4gICAgfVxuICAgIGlmIChyZXNwb25zZS5hcGlLZXkpIHtcbiAgICAgIGRldGFpbHNbXCJBUEkgS2V5XCJdID0gcmVzcG9uc2UuYXBpS2V5LmtleTtcbiAgICB9XG4gICAgaWYgKHJlc3BvbnNlLndlYmhvb2spIHtcbiAgICAgIGRldGFpbHNbXCJXZWJob29rXCJdID0gcmVzcG9uc2Uud2ViaG9vay51cmw7XG4gICAgfVxuXG4gICAgc3VjY2VzcyhcIldvcmtzcGFjZSBwcm92aXNpb25lZFwiLCBkZXRhaWxzKTtcblxuICAgIGlmIChyZXNwb25zZS5hcGlLZXkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY29sb3JzLndhcm5pbmcoXCIgIFNhdmUgdGhlIEFQSSBrZXkgbm93IOKAlCBpdCB3b24ndCBiZSBzaG93biBhZ2Fpbi5cIiksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYnVsa1Byb3Zpc2lvbihmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgICAgdGhpcy5lcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZVBhdGh9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgXCJ1dGYtOFwiKTtcbiAgICBsZXQgd29ya3NwYWNlczogQnVsa1Byb3Zpc2lvbkl0ZW1bXTtcblxuICAgIHRyeSB7XG4gICAgICB3b3Jrc3BhY2VzID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuZXJyb3IoXCJJbnZhbGlkIEpTT04gZmlsZS4gRXhwZWN0ZWQgYW4gYXJyYXkgb2Ygd29ya3NwYWNlIG9iamVjdHMuXCIpO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh3b3Jrc3BhY2VzKSkge1xuICAgICAgdGhpcy5lcnJvcihcIkpTT04gZmlsZSBtdXN0IGNvbnRhaW4gYW4gYXJyYXkgb2Ygd29ya3NwYWNlIG9iamVjdHMuXCIpO1xuICAgIH1cblxuICAgIGlmICh3b3Jrc3BhY2VzLmxlbmd0aCA+IDUwKSB7XG4gICAgICB0aGlzLmVycm9yKFwiQnVsayBwcm92aXNpb25pbmcgc3VwcG9ydHMgdXAgdG8gNTAgd29ya3NwYWNlcyBhdCBhIHRpbWUuXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKGBQcm92aXNpb25pbmcgJHt3b3Jrc3BhY2VzLmxlbmd0aH0gd29ya3NwYWNlcy4uLmApO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8QnVsa1Byb3Zpc2lvblJlc3BvbnNlPihcbiAgICAgIFwiL2FwaS92MS9lbnRlcnByaXNlL3dvcmtzcGFjZXMvcHJvdmlzaW9uL2J1bGtcIixcbiAgICAgIHsgd29ya3NwYWNlcyB9LFxuICAgICk7XG5cbiAgICBzcGluLnN1Y2NlZWQoXG4gICAgICBgUHJvdmlzaW9uZWQgJHtyZXNwb25zZS50b3RhbENyZWF0ZWR9LyR7cmVzcG9uc2UudG90YWxSZXF1ZXN0ZWR9IHdvcmtzcGFjZXNgLFxuICAgICk7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygpO1xuICAgIHRhYmxlKHJlc3BvbnNlLnJlc3VsdHMsIFtcbiAgICAgIHsgaGVhZGVyOiBcIk5hbWVcIiwga2V5OiBcIm5hbWVcIiwgd2lkdGg6IDI0IH0sXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJTdGF0dXNcIixcbiAgICAgICAga2V5OiBcInN1Y2Nlc3NcIixcbiAgICAgICAgd2lkdGg6IDEwLFxuICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PlxuICAgICAgICAgIHYgPyBjb2xvcnMuc3VjY2VzcyhcImNyZWF0ZWRcIikgOiBjb2xvcnMuZXJyb3IoXCJmYWlsZWRcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IFwiV29ya3NwYWNlIElEXCIsXG4gICAgICAgIGtleTogXCJ3b3Jrc3BhY2VJZFwiLFxuICAgICAgICB3aWR0aDogMjAsXG4gICAgICAgIGZvcm1hdHRlcjogKHYpID0+ICh2ID8gY29sb3JzLmRpbShTdHJpbmcodikpIDogY29sb3JzLmRpbShcIuKAlFwiKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IFwiRXJyb3JcIixcbiAgICAgICAga2V5OiBcImVycm9yXCIsXG4gICAgICAgIHdpZHRoOiAzMCxcbiAgICAgICAgZm9ybWF0dGVyOiAodikgPT4gKHYgPyBjb2xvcnMuZXJyb3IoU3RyaW5nKHYpKSA6IFwiXCIpLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIGlmIChyZXNwb25zZS50b3RhbEZhaWxlZCA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY29sb3JzLndhcm5pbmcoXG4gICAgICAgICAgYCAgJHtyZXNwb25zZS50b3RhbEZhaWxlZH0gd29ya3NwYWNlKHMpIGZhaWxlZCB0byBwcm92aXNpb24uYCxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
export default class QuotaGet extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
workspaceId: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../../lib/api-client.js";
|
|
4
|
+
import { json, keyValue, colors, header, isJsonMode, } from "../../../lib/output.js";
|
|
5
|
+
export default class QuotaGet extends AuthenticatedCommand {
|
|
6
|
+
static description = "Get message quota for an enterprise workspace";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> enterprise quota get org_abc123",
|
|
9
|
+
"<%= config.bin %> enterprise quota get org_abc123 --json",
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
workspaceId: Args.string({
|
|
13
|
+
description: "Workspace ID",
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
static flags = {
|
|
18
|
+
...AuthenticatedCommand.baseFlags,
|
|
19
|
+
};
|
|
20
|
+
async run() {
|
|
21
|
+
const { args } = await this.parse(QuotaGet);
|
|
22
|
+
const quota = await apiClient.get(`/api/v1/enterprise/workspaces/${args.workspaceId}/quota`);
|
|
23
|
+
if (isJsonMode()) {
|
|
24
|
+
json(quota);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
header("Workspace Quota");
|
|
28
|
+
keyValue({
|
|
29
|
+
"Daily Limit": quota.dailyLimit !== null
|
|
30
|
+
? quota.dailyLimit.toLocaleString()
|
|
31
|
+
: colors.dim("unlimited"),
|
|
32
|
+
"Daily Used": `${quota.dailyUsed.toLocaleString()}${quota.dailyLimit ? ` / ${quota.dailyLimit.toLocaleString()}` : ""}`,
|
|
33
|
+
"Monthly Limit": quota.monthlyLimit !== null
|
|
34
|
+
? quota.monthlyLimit.toLocaleString()
|
|
35
|
+
: colors.dim("unlimited"),
|
|
36
|
+
"Monthly Used": `${quota.monthlyUsed.toLocaleString()}${quota.monthlyLimit ? ` / ${quota.monthlyLimit.toLocaleString()}` : ""}`,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2VudGVycHJpc2UvcXVvdGEvZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxJQUFJLEVBQ0osUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sd0JBQXdCLENBQUM7QUFTaEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxRQUFTLFNBQVEsb0JBQW9CO0lBQ3hELE1BQU0sQ0FBQyxXQUFXLEdBQUcsK0NBQStDLENBQUM7SUFFckUsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQixtREFBbUQ7UUFDbkQsMERBQTBEO0tBQzNELENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdkIsV0FBVyxFQUFFLGNBQWM7WUFDM0IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7S0FDbEMsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1QyxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQy9CLGlDQUFpQyxJQUFJLENBQUMsV0FBVyxRQUFRLENBQzFELENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUxQixRQUFRLENBQUM7WUFDUCxhQUFhLEVBQUUsS0FBSyxDQUFDLFVBQVUsS0FBSyxJQUFJO2dCQUN0QyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUU7Z0JBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztZQUMzQixZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkgsZUFBZSxFQUFFLEtBQUssQ0FBQyxZQUFZLEtBQUssSUFBSTtnQkFDMUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFO2dCQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7WUFDM0IsY0FBYyxFQUFFLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1NBQ2hJLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIGpzb24sXG4gIGtleVZhbHVlLFxuICBjb2xvcnMsXG4gIGhlYWRlcixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIFF1b3RhU2V0dGluZ3Mge1xuICBkYWlseUxpbWl0OiBudW1iZXIgfCBudWxsO1xuICBtb250aGx5TGltaXQ6IG51bWJlciB8IG51bGw7XG4gIGRhaWx5VXNlZDogbnVtYmVyO1xuICBtb250aGx5VXNlZDogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBRdW90YUdldCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJHZXQgbWVzc2FnZSBxdW90YSBmb3IgYW4gZW50ZXJwcmlzZSB3b3Jrc3BhY2VcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBlbnRlcnByaXNlIHF1b3RhIGdldCBvcmdfYWJjMTIzXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBlbnRlcnByaXNlIHF1b3RhIGdldCBvcmdfYWJjMTIzIC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIHdvcmtzcGFjZUlkOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJXb3Jrc3BhY2UgSURcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShRdW90YUdldCk7XG5cbiAgICBjb25zdCBxdW90YSA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8UXVvdGFTZXR0aW5ncz4oXG4gICAgICBgL2FwaS92MS9lbnRlcnByaXNlL3dvcmtzcGFjZXMvJHthcmdzLndvcmtzcGFjZUlkfS9xdW90YWAsXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocXVvdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGhlYWRlcihcIldvcmtzcGFjZSBRdW90YVwiKTtcblxuICAgIGtleVZhbHVlKHtcbiAgICAgIFwiRGFpbHkgTGltaXRcIjogcXVvdGEuZGFpbHlMaW1pdCAhPT0gbnVsbFxuICAgICAgICA/IHF1b3RhLmRhaWx5TGltaXQudG9Mb2NhbGVTdHJpbmcoKVxuICAgICAgICA6IGNvbG9ycy5kaW0oXCJ1bmxpbWl0ZWRcIiksXG4gICAgICBcIkRhaWx5IFVzZWRcIjogYCR7cXVvdGEuZGFpbHlVc2VkLnRvTG9jYWxlU3RyaW5nKCl9JHtxdW90YS5kYWlseUxpbWl0ID8gYCAvICR7cXVvdGEuZGFpbHlMaW1pdC50b0xvY2FsZVN0cmluZygpfWAgOiBcIlwifWAsXG4gICAgICBcIk1vbnRobHkgTGltaXRcIjogcXVvdGEubW9udGhseUxpbWl0ICE9PSBudWxsXG4gICAgICAgID8gcXVvdGEubW9udGhseUxpbWl0LnRvTG9jYWxlU3RyaW5nKClcbiAgICAgICAgOiBjb2xvcnMuZGltKFwidW5saW1pdGVkXCIpLFxuICAgICAgXCJNb250aGx5IFVzZWRcIjogYCR7cXVvdGEubW9udGhseVVzZWQudG9Mb2NhbGVTdHJpbmcoKX0ke3F1b3RhLm1vbnRobHlMaW1pdCA/IGAgLyAke3F1b3RhLm1vbnRobHlMaW1pdC50b0xvY2FsZVN0cmluZygpfWAgOiBcIlwifWAsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
export default class QuotaSet extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
workspaceId: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
daily: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
monthly: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Args, Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../../lib/api-client.js";
|
|
4
|
+
import { success, json, colors, isJsonMode } from "../../../lib/output.js";
|
|
5
|
+
export default class QuotaSet extends AuthenticatedCommand {
|
|
6
|
+
static description = "Set message quota for an enterprise workspace";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> enterprise quota set org_abc123 --daily 1000",
|
|
9
|
+
"<%= config.bin %> enterprise quota set org_abc123 --monthly 25000",
|
|
10
|
+
"<%= config.bin %> enterprise quota set org_abc123 --daily 1000 --monthly 25000",
|
|
11
|
+
"<%= config.bin %> enterprise quota set org_abc123 --daily unlimited",
|
|
12
|
+
];
|
|
13
|
+
static args = {
|
|
14
|
+
workspaceId: Args.string({
|
|
15
|
+
description: "Workspace ID",
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
static flags = {
|
|
20
|
+
...AuthenticatedCommand.baseFlags,
|
|
21
|
+
daily: Flags.string({
|
|
22
|
+
description: 'Daily message limit (number or "unlimited")',
|
|
23
|
+
}),
|
|
24
|
+
monthly: Flags.string({
|
|
25
|
+
description: 'Monthly message limit (number or "unlimited")',
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
async run() {
|
|
29
|
+
const { args, flags } = await this.parse(QuotaSet);
|
|
30
|
+
if (!flags.daily && !flags.monthly) {
|
|
31
|
+
this.error("Specify at least one of --daily or --monthly.");
|
|
32
|
+
}
|
|
33
|
+
const body = {};
|
|
34
|
+
if (flags.daily !== undefined) {
|
|
35
|
+
body.dailyLimit =
|
|
36
|
+
flags.daily === "unlimited" ? null : parseInt(flags.daily, 10);
|
|
37
|
+
if (flags.daily !== "unlimited" && isNaN(body.dailyLimit)) {
|
|
38
|
+
this.error('--daily must be a number or "unlimited".');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (flags.monthly !== undefined) {
|
|
42
|
+
body.monthlyLimit =
|
|
43
|
+
flags.monthly === "unlimited" ? null : parseInt(flags.monthly, 10);
|
|
44
|
+
if (flags.monthly !== "unlimited" && isNaN(body.monthlyLimit)) {
|
|
45
|
+
this.error('--monthly must be a number or "unlimited".');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const quota = await apiClient.put(`/api/v1/enterprise/workspaces/${args.workspaceId}/quota`, body);
|
|
49
|
+
if (isJsonMode()) {
|
|
50
|
+
json(quota);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const details = {};
|
|
54
|
+
if (flags.daily !== undefined) {
|
|
55
|
+
details["Daily Limit"] =
|
|
56
|
+
quota.dailyLimit !== null
|
|
57
|
+
? quota.dailyLimit.toLocaleString()
|
|
58
|
+
: colors.dim("unlimited");
|
|
59
|
+
}
|
|
60
|
+
if (flags.monthly !== undefined) {
|
|
61
|
+
details["Monthly Limit"] =
|
|
62
|
+
quota.monthlyLimit !== null
|
|
63
|
+
? quota.monthlyLimit.toLocaleString()
|
|
64
|
+
: colors.dim("unlimited");
|
|
65
|
+
}
|
|
66
|
+
success("Quota updated", details);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2VudGVycHJpc2UvcXVvdGEvc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFTM0UsTUFBTSxDQUFDLE9BQU8sT0FBTyxRQUFTLFNBQVEsb0JBQW9CO0lBQ3hELE1BQU0sQ0FBQyxXQUFXLEdBQUcsK0NBQStDLENBQUM7SUFFckUsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQixnRUFBZ0U7UUFDaEUsbUVBQW1FO1FBQ25FLGdGQUFnRjtRQUNoRixxRUFBcUU7S0FDdEUsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN2QixXQUFXLEVBQUUsY0FBYztZQUMzQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNsQixXQUFXLEVBQUUsNkNBQTZDO1NBQzNELENBQUM7UUFDRixPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNwQixXQUFXLEVBQUUsK0NBQStDO1NBQzdELENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUE0QixFQUFFLENBQUM7UUFFekMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVO2dCQUNiLEtBQUssQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFvQixDQUFDLEVBQUUsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBQ3pELENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZO2dCQUNmLEtBQUssQ0FBQyxPQUFPLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFzQixDQUFDLEVBQUUsQ0FBQztnQkFDeEUsSUFBSSxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzNELENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUMvQixpQ0FBaUMsSUFBSSxDQUFDLFdBQVcsUUFBUSxFQUN6RCxJQUFJLENBQ0wsQ0FBQztRQUVGLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUEyQixFQUFFLENBQUM7UUFFM0MsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxhQUFhLENBQUM7Z0JBQ3BCLEtBQUssQ0FBQyxVQUFVLEtBQUssSUFBSTtvQkFDdkIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFO29CQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxlQUFlLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxZQUFZLEtBQUssSUFBSTtvQkFDekIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFO29CQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsT0FBTyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncywgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsgc3VjY2VzcywganNvbiwgY29sb3JzLCBpc0pzb25Nb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIFF1b3RhU2V0dGluZ3Mge1xuICBkYWlseUxpbWl0OiBudW1iZXIgfCBudWxsO1xuICBtb250aGx5TGltaXQ6IG51bWJlciB8IG51bGw7XG4gIGRhaWx5VXNlZDogbnVtYmVyO1xuICBtb250aGx5VXNlZDogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBRdW90YVNldCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTZXQgbWVzc2FnZSBxdW90YSBmb3IgYW4gZW50ZXJwcmlzZSB3b3Jrc3BhY2VcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBlbnRlcnByaXNlIHF1b3RhIHNldCBvcmdfYWJjMTIzIC0tZGFpbHkgMTAwMFwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gZW50ZXJwcmlzZSBxdW90YSBzZXQgb3JnX2FiYzEyMyAtLW1vbnRobHkgMjUwMDBcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGVudGVycHJpc2UgcXVvdGEgc2V0IG9yZ19hYmMxMjMgLS1kYWlseSAxMDAwIC0tbW9udGhseSAyNTAwMFwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gZW50ZXJwcmlzZSBxdW90YSBzZXQgb3JnX2FiYzEyMyAtLWRhaWx5IHVubGltaXRlZFwiLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIHdvcmtzcGFjZUlkOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJXb3Jrc3BhY2UgSURcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgZGFpbHk6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogJ0RhaWx5IG1lc3NhZ2UgbGltaXQgKG51bWJlciBvciBcInVubGltaXRlZFwiKScsXG4gICAgfSksXG4gICAgbW9udGhseTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTW9udGhseSBtZXNzYWdlIGxpbWl0IChudW1iZXIgb3IgXCJ1bmxpbWl0ZWRcIiknLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MsIGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFF1b3RhU2V0KTtcblxuICAgIGlmICghZmxhZ3MuZGFpbHkgJiYgIWZsYWdzLm1vbnRobHkpIHtcbiAgICAgIHRoaXMuZXJyb3IoXCJTcGVjaWZ5IGF0IGxlYXN0IG9uZSBvZiAtLWRhaWx5IG9yIC0tbW9udGhseS5cIik7XG4gICAgfVxuXG4gICAgY29uc3QgYm9keTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgIGlmIChmbGFncy5kYWlseSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBib2R5LmRhaWx5TGltaXQgPVxuICAgICAgICBmbGFncy5kYWlseSA9PT0gXCJ1bmxpbWl0ZWRcIiA/IG51bGwgOiBwYXJzZUludChmbGFncy5kYWlseSwgMTApO1xuICAgICAgaWYgKGZsYWdzLmRhaWx5ICE9PSBcInVubGltaXRlZFwiICYmIGlzTmFOKGJvZHkuZGFpbHlMaW1pdCBhcyBudW1iZXIpKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoJy0tZGFpbHkgbXVzdCBiZSBhIG51bWJlciBvciBcInVubGltaXRlZFwiLicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmbGFncy5tb250aGx5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJvZHkubW9udGhseUxpbWl0ID1cbiAgICAgICAgZmxhZ3MubW9udGhseSA9PT0gXCJ1bmxpbWl0ZWRcIiA/IG51bGwgOiBwYXJzZUludChmbGFncy5tb250aGx5LCAxMCk7XG4gICAgICBpZiAoZmxhZ3MubW9udGhseSAhPT0gXCJ1bmxpbWl0ZWRcIiAmJiBpc05hTihib2R5Lm1vbnRobHlMaW1pdCBhcyBudW1iZXIpKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoJy0tbW9udGhseSBtdXN0IGJlIGEgbnVtYmVyIG9yIFwidW5saW1pdGVkXCIuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcXVvdGEgPSBhd2FpdCBhcGlDbGllbnQucHV0PFF1b3RhU2V0dGluZ3M+KFxuICAgICAgYC9hcGkvdjEvZW50ZXJwcmlzZS93b3Jrc3BhY2VzLyR7YXJncy53b3Jrc3BhY2VJZH0vcXVvdGFgLFxuICAgICAgYm9keSxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihxdW90YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGV0YWlsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgaWYgKGZsYWdzLmRhaWx5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGRldGFpbHNbXCJEYWlseSBMaW1pdFwiXSA9XG4gICAgICAgIHF1b3RhLmRhaWx5TGltaXQgIT09IG51bGxcbiAgICAgICAgICA/IHF1b3RhLmRhaWx5TGltaXQudG9Mb2NhbGVTdHJpbmcoKVxuICAgICAgICAgIDogY29sb3JzLmRpbShcInVubGltaXRlZFwiKTtcbiAgICB9XG5cbiAgICBpZiAoZmxhZ3MubW9udGhseSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZXRhaWxzW1wiTW9udGhseSBMaW1pdFwiXSA9XG4gICAgICAgIHF1b3RhLm1vbnRobHlMaW1pdCAhPT0gbnVsbFxuICAgICAgICAgID8gcXVvdGEubW9udGhseUxpbWl0LnRvTG9jYWxlU3RyaW5nKClcbiAgICAgICAgICA6IGNvbG9ycy5kaW0oXCJ1bmxpbWl0ZWRcIik7XG4gICAgfVxuXG4gICAgc3VjY2VzcyhcIlF1b3RhIHVwZGF0ZWRcIiwgZGV0YWlscyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class EnterpriseStatus extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
7
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
3
|
+
import { json, keyValue, colors, header, isJsonMode, formatDate, formatCredits, } from "../../lib/output.js";
|
|
4
|
+
export default class EnterpriseStatus extends AuthenticatedCommand {
|
|
5
|
+
static description = "Show enterprise account status";
|
|
6
|
+
static examples = [
|
|
7
|
+
"<%= config.bin %> enterprise status",
|
|
8
|
+
"<%= config.bin %> enterprise status --json",
|
|
9
|
+
];
|
|
10
|
+
static flags = {
|
|
11
|
+
...AuthenticatedCommand.baseFlags,
|
|
12
|
+
};
|
|
13
|
+
async run() {
|
|
14
|
+
const response = await apiClient.get("/api/v1/enterprise/account");
|
|
15
|
+
if (isJsonMode()) {
|
|
16
|
+
json(response);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const { account, workspaceCount } = response;
|
|
20
|
+
header("Enterprise Account");
|
|
21
|
+
const statusColor = account.status === "active"
|
|
22
|
+
? colors.success
|
|
23
|
+
: account.status === "pending"
|
|
24
|
+
? colors.warning
|
|
25
|
+
: colors.error;
|
|
26
|
+
keyValue({
|
|
27
|
+
Company: colors.primary(account.companyName),
|
|
28
|
+
Status: statusColor(account.status),
|
|
29
|
+
Workspaces: `${workspaceCount} / ${account.maxWorkspaces}`,
|
|
30
|
+
"Credits Allocated": formatCredits(account.totalCreditsAllocated),
|
|
31
|
+
"Platform Fee": account.monthlyPlatformFee
|
|
32
|
+
? `$${account.monthlyPlatformFee}/mo`
|
|
33
|
+
: colors.dim("not set"),
|
|
34
|
+
"Per-Workspace Fee": account.perWorkspaceFee
|
|
35
|
+
? `$${account.perWorkspaceFee}/mo`
|
|
36
|
+
: colors.dim("not set"),
|
|
37
|
+
"Enterprise Webhook": account.webhookUrl || colors.dim("not configured"),
|
|
38
|
+
"Activated At": account.activatedAt
|
|
39
|
+
? formatDate(account.activatedAt)
|
|
40
|
+
: colors.dim("pending"),
|
|
41
|
+
"Created At": formatDate(account.createdAt),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2VudGVycHJpc2Uvc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsSUFBSSxFQUNKLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLFVBQVUsRUFDVixVQUFVLEVBQ1YsYUFBYSxHQUNkLE1BQU0scUJBQXFCLENBQUM7QUFzQjdCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sZ0JBQWlCLFNBQVEsb0JBQW9CO0lBQ2hFLE1BQU0sQ0FBQyxXQUFXLEdBQUcsZ0NBQWdDLENBQUM7SUFFdEQsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQixxQ0FBcUM7UUFDckMsNENBQTRDO0tBQzdDLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FDbEMsNEJBQTRCLENBQzdCLENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHLFFBQVEsQ0FBQztRQUU3QyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUU3QixNQUFNLFdBQVcsR0FDZixPQUFPLENBQUMsTUFBTSxLQUFLLFFBQVE7WUFDekIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQ2hCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVM7Z0JBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFFckIsUUFBUSxDQUFDO1lBQ1AsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUM1QyxNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDbkMsVUFBVSxFQUFFLEdBQUcsY0FBYyxNQUFNLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDMUQsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztZQUNqRSxjQUFjLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtnQkFDeEMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLGtCQUFrQixLQUFLO2dCQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDekIsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLGVBQWU7Z0JBQzFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxlQUFlLEtBQUs7Z0JBQ2xDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztZQUN6QixvQkFBb0IsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7WUFDeEUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNqQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztZQUN6QixZQUFZLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDNUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAganNvbixcbiAga2V5VmFsdWUsXG4gIGNvbG9ycyxcbiAgaGVhZGVyLFxuICBpc0pzb25Nb2RlLFxuICBmb3JtYXREYXRlLFxuICBmb3JtYXRDcmVkaXRzLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5pbnRlcmZhY2UgRW50ZXJwcmlzZUFjY291bnQge1xuICBpZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgc3RhdHVzOiBcInBlbmRpbmdcIiB8IFwiYWN0aXZlXCIgfCBcInN1c3BlbmRlZFwiIHwgXCJkZWFjdGl2YXRlZFwiO1xuICBjb21wYW55TmFtZTogc3RyaW5nO1xuICBtYXhXb3Jrc3BhY2VzOiBudW1iZXI7XG4gIHdlYmhvb2tVcmw/OiBzdHJpbmc7XG4gIHdlYmhvb2tTZWNyZXQ/OiBzdHJpbmc7XG4gIHRvdGFsQ3JlZGl0c0FsbG9jYXRlZDogbnVtYmVyO1xuICBtb250aGx5UGxhdGZvcm1GZWU/OiBudW1iZXI7XG4gIHBlcldvcmtzcGFjZUZlZT86IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIGFjdGl2YXRlZEF0Pzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3RhdHVzUmVzcG9uc2Uge1xuICBhY2NvdW50OiBFbnRlcnByaXNlQWNjb3VudDtcbiAgd29ya3NwYWNlQ291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW50ZXJwcmlzZVN0YXR1cyBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTaG93IGVudGVycHJpc2UgYWNjb3VudCBzdGF0dXNcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBlbnRlcnByaXNlIHN0YXR1c1wiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gZW50ZXJwcmlzZSBzdGF0dXMgLS1qc29uXCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQuZ2V0PFN0YXR1c1Jlc3BvbnNlPihcbiAgICAgIFwiL2FwaS92MS9lbnRlcnByaXNlL2FjY291bnRcIixcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBhY2NvdW50LCB3b3Jrc3BhY2VDb3VudCB9ID0gcmVzcG9uc2U7XG5cbiAgICBoZWFkZXIoXCJFbnRlcnByaXNlIEFjY291bnRcIik7XG5cbiAgICBjb25zdCBzdGF0dXNDb2xvciA9XG4gICAgICBhY2NvdW50LnN0YXR1cyA9PT0gXCJhY3RpdmVcIlxuICAgICAgICA/IGNvbG9ycy5zdWNjZXNzXG4gICAgICAgIDogYWNjb3VudC5zdGF0dXMgPT09IFwicGVuZGluZ1wiXG4gICAgICAgICAgPyBjb2xvcnMud2FybmluZ1xuICAgICAgICAgIDogY29sb3JzLmVycm9yO1xuXG4gICAga2V5VmFsdWUoe1xuICAgICAgQ29tcGFueTogY29sb3JzLnByaW1hcnkoYWNjb3VudC5jb21wYW55TmFtZSksXG4gICAgICBTdGF0dXM6IHN0YXR1c0NvbG9yKGFjY291bnQuc3RhdHVzKSxcbiAgICAgIFdvcmtzcGFjZXM6IGAke3dvcmtzcGFjZUNvdW50fSAvICR7YWNjb3VudC5tYXhXb3Jrc3BhY2VzfWAsXG4gICAgICBcIkNyZWRpdHMgQWxsb2NhdGVkXCI6IGZvcm1hdENyZWRpdHMoYWNjb3VudC50b3RhbENyZWRpdHNBbGxvY2F0ZWQpLFxuICAgICAgXCJQbGF0Zm9ybSBGZWVcIjogYWNjb3VudC5tb250aGx5UGxhdGZvcm1GZWVcbiAgICAgICAgPyBgJCR7YWNjb3VudC5tb250aGx5UGxhdGZvcm1GZWV9L21vYFxuICAgICAgICA6IGNvbG9ycy5kaW0oXCJub3Qgc2V0XCIpLFxuICAgICAgXCJQZXItV29ya3NwYWNlIEZlZVwiOiBhY2NvdW50LnBlcldvcmtzcGFjZUZlZVxuICAgICAgICA/IGAkJHthY2NvdW50LnBlcldvcmtzcGFjZUZlZX0vbW9gXG4gICAgICAgIDogY29sb3JzLmRpbShcIm5vdCBzZXRcIiksXG4gICAgICBcIkVudGVycHJpc2UgV2ViaG9va1wiOiBhY2NvdW50LndlYmhvb2tVcmwgfHwgY29sb3JzLmRpbShcIm5vdCBjb25maWd1cmVkXCIpLFxuICAgICAgXCJBY3RpdmF0ZWQgQXRcIjogYWNjb3VudC5hY3RpdmF0ZWRBdFxuICAgICAgICA/IGZvcm1hdERhdGUoYWNjb3VudC5hY3RpdmF0ZWRBdClcbiAgICAgICAgOiBjb2xvcnMuZGltKFwicGVuZGluZ1wiKSxcbiAgICAgIFwiQ3JlYXRlZCBBdFwiOiBmb3JtYXREYXRlKGFjY291bnQuY3JlYXRlZEF0KSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class EnterpriseTransferCredits extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
from: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
to: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
amount: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
|
+
yes: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|