nixelo 0.0.1
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 +98 -0
- package/dist/commands/apiKeys.d.ts +3 -0
- package/dist/commands/apiKeys.d.ts.map +1 -0
- package/dist/commands/apiKeys.js +200 -0
- package/dist/commands/apiKeys.js.map +1 -0
- package/dist/commands/auth.d.ts +7 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +201 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/automations.d.ts +3 -0
- package/dist/commands/automations.d.ts.map +1 -0
- package/dist/commands/automations.js +302 -0
- package/dist/commands/automations.js.map +1 -0
- package/dist/commands/commandTree.d.ts +10 -0
- package/dist/commands/commandTree.d.ts.map +1 -0
- package/dist/commands/commandTree.js +36 -0
- package/dist/commands/commandTree.js.map +1 -0
- package/dist/commands/completion.d.ts +6 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +101 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +133 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/documents.d.ts +3 -0
- package/dist/commands/documents.d.ts.map +1 -0
- package/dist/commands/documents.js +200 -0
- package/dist/commands/documents.js.map +1 -0
- package/dist/commands/fields.d.ts +3 -0
- package/dist/commands/fields.d.ts.map +1 -0
- package/dist/commands/fields.js +199 -0
- package/dist/commands/fields.js.map +1 -0
- package/dist/commands/filters.d.ts +3 -0
- package/dist/commands/filters.d.ts.map +1 -0
- package/dist/commands/filters.js +243 -0
- package/dist/commands/filters.js.map +1 -0
- package/dist/commands/global.d.ts +5 -0
- package/dist/commands/global.d.ts.map +1 -0
- package/dist/commands/global.js +42 -0
- package/dist/commands/global.js.map +1 -0
- package/dist/commands/index.d.ts +23 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +23 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/invites.d.ts +3 -0
- package/dist/commands/invites.d.ts.map +1 -0
- package/dist/commands/invites.js +113 -0
- package/dist/commands/invites.js.map +1 -0
- package/dist/commands/issues/filter.d.ts +19 -0
- package/dist/commands/issues/filter.d.ts.map +1 -0
- package/dist/commands/issues/filter.js +72 -0
- package/dist/commands/issues/filter.js.map +1 -0
- package/dist/commands/issues/options.d.ts +33 -0
- package/dist/commands/issues/options.d.ts.map +1 -0
- package/dist/commands/issues/options.js +68 -0
- package/dist/commands/issues/options.js.map +1 -0
- package/dist/commands/issues/output.d.ts +12 -0
- package/dist/commands/issues/output.d.ts.map +1 -0
- package/dist/commands/issues/output.js +285 -0
- package/dist/commands/issues/output.js.map +1 -0
- package/dist/commands/issues.d.ts +3 -0
- package/dist/commands/issues.d.ts.map +1 -0
- package/dist/commands/issues.js +483 -0
- package/dist/commands/issues.js.map +1 -0
- package/dist/commands/labels.d.ts +3 -0
- package/dist/commands/labels.d.ts.map +1 -0
- package/dist/commands/labels.js +222 -0
- package/dist/commands/labels.js.map +1 -0
- package/dist/commands/notifications.d.ts +3 -0
- package/dist/commands/notifications.d.ts.map +1 -0
- package/dist/commands/notifications.js +127 -0
- package/dist/commands/notifications.js.map +1 -0
- package/dist/commands/projects.d.ts +5 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +749 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/registerAll.d.ts +3 -0
- package/dist/commands/registerAll.d.ts.map +1 -0
- package/dist/commands/registerAll.js +54 -0
- package/dist/commands/registerAll.js.map +1 -0
- package/dist/commands/sprints.d.ts +3 -0
- package/dist/commands/sprints.d.ts.map +1 -0
- package/dist/commands/sprints.js +359 -0
- package/dist/commands/sprints.js.map +1 -0
- package/dist/commands/stats.d.ts +3 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +206 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/teams.d.ts +3 -0
- package/dist/commands/teams.d.ts.map +1 -0
- package/dist/commands/teams.js +435 -0
- package/dist/commands/teams.js.map +1 -0
- package/dist/commands/templates.d.ts +3 -0
- package/dist/commands/templates.d.ts.map +1 -0
- package/dist/commands/templates.js +264 -0
- package/dist/commands/templates.js.map +1 -0
- package/dist/commands/time.d.ts +3 -0
- package/dist/commands/time.d.ts.map +1 -0
- package/dist/commands/time.js +191 -0
- package/dist/commands/time.js.map +1 -0
- package/dist/commands/tokens.d.ts +3 -0
- package/dist/commands/tokens.d.ts.map +1 -0
- package/dist/commands/tokens.js +76 -0
- package/dist/commands/tokens.js.map +1 -0
- package/dist/commands/users.d.ts +5 -0
- package/dist/commands/users.d.ts.map +1 -0
- package/dist/commands/users.js +160 -0
- package/dist/commands/users.js.map +1 -0
- package/dist/commands/version.d.ts +3 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +17 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/commands/webhooks.d.ts +3 -0
- package/dist/commands/webhooks.d.ts.map +1 -0
- package/dist/commands/webhooks.js +407 -0
- package/dist/commands/webhooks.js.map +1 -0
- package/dist/commands/workspaces.d.ts +3 -0
- package/dist/commands/workspaces.d.ts.map +1 -0
- package/dist/commands/workspaces.js +424 -0
- package/dist/commands/workspaces.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +20 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +80 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/convex.d.ts +1243 -0
- package/dist/lib/convex.d.ts.map +1 -0
- package/dist/lib/convex.js +675 -0
- package/dist/lib/convex.js.map +1 -0
- package/dist/lib/options.d.ts +10 -0
- package/dist/lib/options.d.ts.map +1 -0
- package/dist/lib/options.js +79 -0
- package/dist/lib/options.js.map +1 -0
- package/dist/lib/output.d.ts +19 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +60 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/project-key.d.ts +5 -0
- package/dist/lib/project-key.d.ts.map +1 -0
- package/dist/lib/project-key.js +56 -0
- package/dist/lib/project-key.js.map +1 -0
- package/dist/lib/prompt.d.ts +5 -0
- package/dist/lib/prompt.d.ts.map +1 -0
- package/dist/lib/prompt.js +28 -0
- package/dist/lib/prompt.js.map +1 -0
- package/dist/lib/user-picker.d.ts +4 -0
- package/dist/lib/user-picker.d.ts.map +1 -0
- package/dist/lib/user-picker.js +57 -0
- package/dist/lib/user-picker.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/commands/users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAIV,WAAW,EACZ,MAAM,kBAAkB,CAAA;AAkBzB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAoCxD;AAkFD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsD5D"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { getCurrentUser, getUser, getUserStats, isCliAuthenticationError, searchUsers } from "../lib/convex.js";
|
|
2
|
+
import { parsePositiveIntegerOption } from "../lib/options.js";
|
|
3
|
+
import { getActiveOutputFormat, printError, printJson, printOutput, printRows } from "../lib/output.js";
|
|
4
|
+
import { addOutputOptions } from "./global.js";
|
|
5
|
+
export function printCurrentUser(user) {
|
|
6
|
+
const format = getActiveOutputFormat();
|
|
7
|
+
if (format === "json") {
|
|
8
|
+
printJson(user);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
if (format === "csv") {
|
|
12
|
+
printRows([user], [
|
|
13
|
+
{ header: "userId", value: row => row.userId },
|
|
14
|
+
{ header: "name", value: row => row.name ?? "" },
|
|
15
|
+
{ header: "email", value: row => row.email ?? "" },
|
|
16
|
+
{ header: "status", value: row => row.status },
|
|
17
|
+
{ header: "timezone", value: row => row.timezone },
|
|
18
|
+
{ header: "twoFactorEnabled", value: row => row.twoFactorEnabled },
|
|
19
|
+
{ header: "organizationId", value: row => row.organizationId },
|
|
20
|
+
{ header: "organizationName", value: row => row.organizationName },
|
|
21
|
+
{ header: "organizationSlug", value: row => row.organizationSlug },
|
|
22
|
+
{ header: "organizationRole", value: row => row.organizationRole },
|
|
23
|
+
{ header: "scopes", value: row => row.scopes.join(" ") }
|
|
24
|
+
], format);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
printOutput(`User: ${user.userId}`);
|
|
28
|
+
printOutput(`Name: ${user.name ?? "-"}`);
|
|
29
|
+
printOutput(`Email: ${user.email ?? "-"}`);
|
|
30
|
+
printOutput(`Status: ${user.status}`);
|
|
31
|
+
printOutput(`Timezone: ${user.timezone}`);
|
|
32
|
+
printOutput(`2FA: ${user.twoFactorEnabled ? "enabled" : "disabled"}`);
|
|
33
|
+
printOutput(`Organization: ${user.organizationName} (${user.organizationSlug})`);
|
|
34
|
+
printOutput(`Organization ID: ${user.organizationId}`);
|
|
35
|
+
printOutput(`Role: ${user.organizationRole}`);
|
|
36
|
+
printOutput(`Scopes: ${user.scopes.join(", ")}`);
|
|
37
|
+
}
|
|
38
|
+
function printUserSearch(result) {
|
|
39
|
+
const format = getActiveOutputFormat();
|
|
40
|
+
if (format === "json") {
|
|
41
|
+
printJson(result);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (result.results.length === 0) {
|
|
45
|
+
printOutput("No users found.");
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
printRows(result.results, [
|
|
49
|
+
{ header: "userId", value: user => user.userId },
|
|
50
|
+
{ header: "name", value: user => user.name ?? "" },
|
|
51
|
+
{ header: "email", value: user => user.email ?? "" },
|
|
52
|
+
{ header: "status", value: user => user.status },
|
|
53
|
+
{ header: "role", value: user => user.role }
|
|
54
|
+
], format);
|
|
55
|
+
if (result.truncated && format !== "csv") {
|
|
56
|
+
printOutput("Results truncated. Narrow the query or increase --limit.");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function printUserProfile(user) {
|
|
60
|
+
const format = getActiveOutputFormat();
|
|
61
|
+
if (format === "json") {
|
|
62
|
+
printJson(user);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (format === "csv") {
|
|
66
|
+
printRows([user], [
|
|
67
|
+
{ header: "userId", value: profile => profile.userId },
|
|
68
|
+
{ header: "name", value: profile => profile.name ?? "" },
|
|
69
|
+
{ header: "email", value: profile => profile.email ?? "" },
|
|
70
|
+
{ header: "status", value: profile => profile.status },
|
|
71
|
+
{ header: "organizationRole", value: profile => profile.organizationRole },
|
|
72
|
+
{ header: "outOfOfficeUntil", value: profile => profile.outOfOffice?.endsAt ?? "" }
|
|
73
|
+
], "csv");
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
printOutput(`User ID: ${user.userId}`);
|
|
77
|
+
printOutput(`Name: ${user.name ?? ""}`);
|
|
78
|
+
printOutput(`Email: ${user.email ?? ""}`);
|
|
79
|
+
printOutput(`Status: ${user.status}`);
|
|
80
|
+
printOutput(`Role: ${user.organizationRole}`);
|
|
81
|
+
if (user.outOfOffice) {
|
|
82
|
+
printOutput(`Out of office until: ${new Date(user.outOfOffice.endsAt).toISOString()}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function printUserStats(stats) {
|
|
86
|
+
const format = getActiveOutputFormat();
|
|
87
|
+
if (format === "json") {
|
|
88
|
+
printJson(stats);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const rows = [
|
|
92
|
+
{ metric: "Issues created", value: stats.issuesCreated },
|
|
93
|
+
{ metric: "Issues assigned", value: stats.issuesAssigned },
|
|
94
|
+
{ metric: "Issues completed", value: stats.issuesCompleted },
|
|
95
|
+
{ metric: "Comments", value: stats.comments },
|
|
96
|
+
{ metric: "Projects", value: stats.projects }
|
|
97
|
+
];
|
|
98
|
+
printRows(rows, [
|
|
99
|
+
{ header: "metric", value: row => row.metric },
|
|
100
|
+
{ header: "value", value: row => row.value }
|
|
101
|
+
], format);
|
|
102
|
+
}
|
|
103
|
+
export function registerUsersCommands(program) {
|
|
104
|
+
const usersCmd = program.command("users").description("Manage users");
|
|
105
|
+
addOutputOptions(usersCmd.command("whoami").description("Show authenticated user")).action(async () => {
|
|
106
|
+
try {
|
|
107
|
+
printCurrentUser(await getCurrentUser());
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
if (isCliAuthenticationError(error)) {
|
|
111
|
+
printError("Not authenticated. Run `npx nixelo login` first.");
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
115
|
+
}
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
addOutputOptions(usersCmd.command("search"))
|
|
120
|
+
.argument("<query>", "Search organization members by name or email")
|
|
121
|
+
.option("-n, --limit <number>", "Maximum users to return")
|
|
122
|
+
.description("Search organization users")
|
|
123
|
+
.action(async (query, opts) => {
|
|
124
|
+
try {
|
|
125
|
+
const normalizedQuery = query.trim();
|
|
126
|
+
if (!normalizedQuery)
|
|
127
|
+
throw new Error("Search query is required.");
|
|
128
|
+
printUserSearch(await searchUsers(normalizedQuery, parsePositiveIntegerOption(opts.limit)));
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
addOutputOptions(usersCmd.command("view"))
|
|
136
|
+
.argument("<id-or-email>", "User ID or exact email")
|
|
137
|
+
.description("Show an organization user profile")
|
|
138
|
+
.action(async (reference) => {
|
|
139
|
+
try {
|
|
140
|
+
const normalizedReference = reference.trim();
|
|
141
|
+
if (!normalizedReference)
|
|
142
|
+
throw new Error("User ID or email is required.");
|
|
143
|
+
printUserProfile(await getUser(normalizedReference));
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
addOutputOptions(usersCmd.command("stats").description("Show your organization user stats")).action(async () => {
|
|
151
|
+
try {
|
|
152
|
+
printUserStats(await getUserStats());
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
156
|
+
process.exit(1);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/commands/users.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAW9E"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getActiveOutputFormat, printJson, printOutput, printRows } from "../lib/output.js";
|
|
2
|
+
import { addOutputOptions } from "./global.js";
|
|
3
|
+
export function registerVersionCommand(program, version) {
|
|
4
|
+
addOutputOptions(program.command("version").description("Show CLI version")).action(() => {
|
|
5
|
+
const format = getActiveOutputFormat();
|
|
6
|
+
if (format === "json") {
|
|
7
|
+
printJson({ version });
|
|
8
|
+
}
|
|
9
|
+
else if (format === "csv") {
|
|
10
|
+
printRows([{ version }], [{ header: "version", value: row => row.version }], format);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
printOutput(version);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,OAAe;IACtE,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QACvF,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAA;QACtC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QACxB,CAAC;aAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAC5B,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;QACtF,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,OAAO,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/commands/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4VxC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgI/D"}
|
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
import { createWebhook, deleteWebhook, listWebhookExecutions, listWebhooks, retryWebhookExecution, testWebhook, updateWebhook } from "../lib/convex.js";
|
|
2
|
+
import { parseCommaSeparatedListOption, parsePositiveIntegerOption, readOptionalText, readRequiredText } from "../lib/options.js";
|
|
3
|
+
import { getActiveOutputFormat, printError, printJson, printOutput, printRows } from "../lib/output.js";
|
|
4
|
+
import { resolveRequiredProjectKey } from "../lib/project-key.js";
|
|
5
|
+
import { requireConfirmation } from "../lib/prompt.js";
|
|
6
|
+
import { addOutputOptions } from "./global.js";
|
|
7
|
+
const WEBHOOK_COLUMNS = [
|
|
8
|
+
{ header: "name", value: webhook => webhook.name },
|
|
9
|
+
{ header: "url", value: webhook => webhook.url },
|
|
10
|
+
{ header: "events", value: webhook => webhook.events.join(",") },
|
|
11
|
+
{ header: "isActive", value: webhook => webhook.isActive },
|
|
12
|
+
{ header: "hasSecret", value: webhook => webhook.hasSecret },
|
|
13
|
+
{ header: "lastTriggered", value: webhook => webhook.lastTriggered },
|
|
14
|
+
{ header: "projectKey", value: webhook => webhook.projectKey },
|
|
15
|
+
{ header: "id", value: webhook => webhook.id }
|
|
16
|
+
];
|
|
17
|
+
const WEBHOOK_DELETE_COLUMNS = [
|
|
18
|
+
{ header: "id", value: webhook => webhook.id },
|
|
19
|
+
{ header: "name", value: webhook => webhook.name },
|
|
20
|
+
{ header: "projectKey", value: webhook => webhook.projectKey },
|
|
21
|
+
{ header: "deleted", value: webhook => webhook.deleted }
|
|
22
|
+
];
|
|
23
|
+
const WEBHOOK_TEST_COLUMNS = [
|
|
24
|
+
{ header: "id", value: webhook => webhook.id },
|
|
25
|
+
{ header: "name", value: webhook => webhook.name },
|
|
26
|
+
{ header: "projectKey", value: webhook => webhook.projectKey },
|
|
27
|
+
{ header: "event", value: webhook => webhook.event },
|
|
28
|
+
{ header: "queued", value: webhook => webhook.queued }
|
|
29
|
+
];
|
|
30
|
+
const WEBHOOK_EXECUTION_COLUMNS = [
|
|
31
|
+
{ header: "id", value: execution => execution.id },
|
|
32
|
+
{ header: "webhookName", value: execution => execution.webhookName },
|
|
33
|
+
{ header: "projectKey", value: execution => execution.projectKey },
|
|
34
|
+
{ header: "event", value: execution => execution.event },
|
|
35
|
+
{ header: "status", value: execution => execution.status },
|
|
36
|
+
{ header: "responseStatus", value: execution => execution.responseStatus },
|
|
37
|
+
{ header: "attempts", value: execution => execution.attempts },
|
|
38
|
+
{ header: "completedAt", value: execution => execution.completedAt },
|
|
39
|
+
{ header: "error", value: execution => execution.error }
|
|
40
|
+
];
|
|
41
|
+
const WEBHOOK_RETRY_COLUMNS = [
|
|
42
|
+
{ header: "id", value: execution => execution.id },
|
|
43
|
+
{ header: "webhookId", value: execution => execution.webhookId },
|
|
44
|
+
{ header: "webhookName", value: execution => execution.webhookName },
|
|
45
|
+
{ header: "projectKey", value: execution => execution.projectKey },
|
|
46
|
+
{ header: "attempts", value: execution => execution.attempts },
|
|
47
|
+
{ header: "queued", value: execution => execution.queued }
|
|
48
|
+
];
|
|
49
|
+
function parseEvents(value) {
|
|
50
|
+
const events = parseCommaSeparatedListOption(readRequiredText(value, "Events", "--events"));
|
|
51
|
+
if (events.length === 0)
|
|
52
|
+
throw new Error("Events are required. Pass --events <event[,event]>.");
|
|
53
|
+
return events;
|
|
54
|
+
}
|
|
55
|
+
function parseOptionalEvents(value) {
|
|
56
|
+
const events = parseCommaSeparatedListOption(value);
|
|
57
|
+
if (events === undefined)
|
|
58
|
+
return undefined;
|
|
59
|
+
if (events.length === 0)
|
|
60
|
+
throw new Error("Events cannot be blank. Pass --events <event[,event]>.");
|
|
61
|
+
return events;
|
|
62
|
+
}
|
|
63
|
+
function printMissingWebhookProject(projectKey, format) {
|
|
64
|
+
if (format === "json") {
|
|
65
|
+
printJson(null);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (format === "csv") {
|
|
69
|
+
printRows([], WEBHOOK_COLUMNS, format);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
printOutput(`Project ${projectKey} not found.`);
|
|
73
|
+
}
|
|
74
|
+
function printEmptyWebhookList(format) {
|
|
75
|
+
if (format === "json") {
|
|
76
|
+
printJson([]);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (format === "csv") {
|
|
80
|
+
printRows([], WEBHOOK_COLUMNS, format);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
printOutput("No webhooks found.");
|
|
84
|
+
}
|
|
85
|
+
function printWebhookList(webhooks, projectKey) {
|
|
86
|
+
const format = getActiveOutputFormat();
|
|
87
|
+
if (!webhooks) {
|
|
88
|
+
printMissingWebhookProject(projectKey, format);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (webhooks.length === 0) {
|
|
92
|
+
printEmptyWebhookList(format);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (format !== "table") {
|
|
96
|
+
printRows(webhooks, WEBHOOK_COLUMNS, format);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
for (const webhook of webhooks) {
|
|
100
|
+
const active = webhook.isActive ? "active" : "inactive";
|
|
101
|
+
const secret = webhook.hasSecret ? "yes" : "no";
|
|
102
|
+
printOutput(` ${webhook.name} ${webhook.url} ${active} events:${webhook.events.join(",")} secret:${secret}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function printWebhookCreateResult(webhook, projectKey) {
|
|
106
|
+
const format = getActiveOutputFormat();
|
|
107
|
+
if (!webhook) {
|
|
108
|
+
if (format === "json") {
|
|
109
|
+
printJson(null);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (format === "csv") {
|
|
113
|
+
printRows([], WEBHOOK_COLUMNS, format);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
printOutput(`Project ${projectKey} not found.`);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (format === "json") {
|
|
120
|
+
printJson(webhook);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (format === "csv") {
|
|
124
|
+
printRows([webhook], WEBHOOK_COLUMNS, format);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
printOutput(`Created webhook ${webhook.name}: ${webhook.url}`);
|
|
128
|
+
}
|
|
129
|
+
function printWebhookUpdateResult(webhook, id) {
|
|
130
|
+
const format = getActiveOutputFormat();
|
|
131
|
+
if (!webhook) {
|
|
132
|
+
if (format === "json") {
|
|
133
|
+
printJson(null);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (format === "csv") {
|
|
137
|
+
printRows([], WEBHOOK_COLUMNS, format);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
printOutput(`Webhook ${id} not found.`);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (format === "json") {
|
|
144
|
+
printJson(webhook);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (format === "csv") {
|
|
148
|
+
printRows([webhook], WEBHOOK_COLUMNS, format);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
printOutput(`Updated webhook ${webhook.name}: ${webhook.url}`);
|
|
152
|
+
}
|
|
153
|
+
function printWebhookDeleteResult(result, id) {
|
|
154
|
+
const format = getActiveOutputFormat();
|
|
155
|
+
if (!result) {
|
|
156
|
+
if (format === "json") {
|
|
157
|
+
printJson(null);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (format === "csv") {
|
|
161
|
+
printRows([], WEBHOOK_DELETE_COLUMNS, format);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
printOutput(`Webhook ${id} not found.`);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (format === "json") {
|
|
168
|
+
printJson(result);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (format === "csv") {
|
|
172
|
+
printRows([result], WEBHOOK_DELETE_COLUMNS, format);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
printOutput(`Deleted webhook ${result.name} from ${result.projectKey}.`);
|
|
176
|
+
}
|
|
177
|
+
function printWebhookTestResult(result, id) {
|
|
178
|
+
const format = getActiveOutputFormat();
|
|
179
|
+
if (!result) {
|
|
180
|
+
if (format === "json") {
|
|
181
|
+
printJson(null);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (format === "csv") {
|
|
185
|
+
printRows([], WEBHOOK_TEST_COLUMNS, format);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
printOutput(`Webhook ${id} not found.`);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if (format === "json") {
|
|
192
|
+
printJson(result);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (format === "csv") {
|
|
196
|
+
printRows([result], WEBHOOK_TEST_COLUMNS, format);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
printOutput(`Queued ping test for webhook ${result.name} in ${result.projectKey}.`);
|
|
200
|
+
}
|
|
201
|
+
function printEmptyWebhookExecutions(format) {
|
|
202
|
+
if (format === "json") {
|
|
203
|
+
printJson([]);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
if (format === "csv") {
|
|
207
|
+
printRows([], WEBHOOK_EXECUTION_COLUMNS, format);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
printOutput("No webhook executions found.");
|
|
211
|
+
}
|
|
212
|
+
function printWebhookExecutions(executions, id) {
|
|
213
|
+
const format = getActiveOutputFormat();
|
|
214
|
+
if (!executions) {
|
|
215
|
+
if (format === "json") {
|
|
216
|
+
printJson(null);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (format === "csv") {
|
|
220
|
+
printRows([], WEBHOOK_EXECUTION_COLUMNS, format);
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
printOutput(`Webhook ${id} not found.`);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (executions.length === 0) {
|
|
227
|
+
printEmptyWebhookExecutions(format);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
if (format !== "table") {
|
|
231
|
+
printRows(executions, WEBHOOK_EXECUTION_COLUMNS, format);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
for (const execution of executions) {
|
|
235
|
+
const response = execution.responseStatus ?? "-";
|
|
236
|
+
const error = execution.error ? ` error:${execution.error}` : "";
|
|
237
|
+
printOutput(` ${execution.id} ${execution.event} ${execution.status} attempts:${execution.attempts} response:${response}${error}`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
function printWebhookRetryResult(result, id) {
|
|
241
|
+
const format = getActiveOutputFormat();
|
|
242
|
+
if (!result) {
|
|
243
|
+
if (format === "json") {
|
|
244
|
+
printJson(null);
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
if (format === "csv") {
|
|
248
|
+
printRows([], WEBHOOK_RETRY_COLUMNS, format);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
printOutput(`Webhook execution ${id} not found.`);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
if (format === "json") {
|
|
255
|
+
printJson(result);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
if (format === "csv") {
|
|
259
|
+
printRows([result], WEBHOOK_RETRY_COLUMNS, format);
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
printOutput(`Queued retry for execution ${result.id} (${result.webhookName}).`);
|
|
263
|
+
}
|
|
264
|
+
function readWebhookUpdateInput(opts) {
|
|
265
|
+
if (opts.active && opts.inactive) {
|
|
266
|
+
throw new Error("Use either --active or --inactive, not both.");
|
|
267
|
+
}
|
|
268
|
+
const input = {};
|
|
269
|
+
const name = readOptionalText(opts.name, "Webhook name", "--name");
|
|
270
|
+
if (name !== undefined)
|
|
271
|
+
input.name = name;
|
|
272
|
+
const url = readOptionalText(opts.url, "Webhook URL", "--url");
|
|
273
|
+
if (url !== undefined)
|
|
274
|
+
input.url = url;
|
|
275
|
+
const events = parseOptionalEvents(opts.events);
|
|
276
|
+
if (events !== undefined)
|
|
277
|
+
input.events = events;
|
|
278
|
+
const secret = readOptionalText(opts.secret, "Webhook secret", "--secret");
|
|
279
|
+
if (secret !== undefined)
|
|
280
|
+
input.secret = secret;
|
|
281
|
+
if (opts.active)
|
|
282
|
+
input.isActive = true;
|
|
283
|
+
if (opts.inactive)
|
|
284
|
+
input.isActive = false;
|
|
285
|
+
if (Object.keys(input).length === 0) {
|
|
286
|
+
throw new Error("At least one update flag is required.");
|
|
287
|
+
}
|
|
288
|
+
return input;
|
|
289
|
+
}
|
|
290
|
+
export function registerWebhooksCommands(program) {
|
|
291
|
+
const webhooksCmd = program.command("webhooks").description("Manage webhooks");
|
|
292
|
+
addOutputOptions(webhooksCmd.command("list"))
|
|
293
|
+
.option("-p, --project <key>", "Project key; defaults to config.defaultProject")
|
|
294
|
+
.option("-n, --limit <number>", "Max webhooks", "20")
|
|
295
|
+
.description("List project webhooks")
|
|
296
|
+
.action(async (opts) => {
|
|
297
|
+
try {
|
|
298
|
+
const projectKey = await resolveRequiredProjectKey(opts.project);
|
|
299
|
+
printWebhookList(await listWebhooks(projectKey, { limit: parsePositiveIntegerOption(opts.limit) }), projectKey);
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
303
|
+
process.exit(1);
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
addOutputOptions(webhooksCmd.command("create"))
|
|
307
|
+
.option("-p, --project <key>", "Project key; defaults to config.defaultProject")
|
|
308
|
+
.option("--name <name>", "Webhook name")
|
|
309
|
+
.option("--url <url>", "Webhook URL")
|
|
310
|
+
.option("--events <events>", "Comma-separated events")
|
|
311
|
+
.option("--secret <secret>", "Webhook signing secret")
|
|
312
|
+
.description("Create a project webhook")
|
|
313
|
+
.action(async (opts) => {
|
|
314
|
+
try {
|
|
315
|
+
const projectKey = await resolveRequiredProjectKey(opts.project);
|
|
316
|
+
const secret = opts.secret?.trim();
|
|
317
|
+
printWebhookCreateResult(await createWebhook({
|
|
318
|
+
projectKey,
|
|
319
|
+
name: readRequiredText(opts.name, "Webhook name", "--name"),
|
|
320
|
+
url: readRequiredText(opts.url, "Webhook URL", "--url"),
|
|
321
|
+
events: parseEvents(opts.events),
|
|
322
|
+
secret: secret || undefined
|
|
323
|
+
}), projectKey);
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
327
|
+
process.exit(1);
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
addOutputOptions(webhooksCmd.command("update"))
|
|
331
|
+
.argument("<id>", "Webhook ID")
|
|
332
|
+
.option("--name <name>", "Webhook name")
|
|
333
|
+
.option("--url <url>", "Webhook URL")
|
|
334
|
+
.option("--events <events>", "Comma-separated events")
|
|
335
|
+
.option("--secret <secret>", "Webhook signing secret")
|
|
336
|
+
.option("--active", "Enable webhook deliveries")
|
|
337
|
+
.option("--inactive", "Disable webhook deliveries")
|
|
338
|
+
.description("Update a project webhook")
|
|
339
|
+
.action(async (id, opts) => {
|
|
340
|
+
try {
|
|
341
|
+
const webhookId = readRequiredText(id, "Webhook ID", "<id>");
|
|
342
|
+
printWebhookUpdateResult(await updateWebhook(webhookId, readWebhookUpdateInput(opts)), webhookId);
|
|
343
|
+
}
|
|
344
|
+
catch (error) {
|
|
345
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
346
|
+
process.exit(1);
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
addOutputOptions(webhooksCmd.command("delete"))
|
|
350
|
+
.argument("<id>", "Webhook ID")
|
|
351
|
+
.option("-y, --yes", "Confirm webhook deletion")
|
|
352
|
+
.description("Delete a project webhook")
|
|
353
|
+
.action(async (id, opts) => {
|
|
354
|
+
try {
|
|
355
|
+
const webhookId = readRequiredText(id, "Webhook ID", "<id>");
|
|
356
|
+
await requireConfirmation(`Delete webhook ${webhookId}?`, opts.yes === true);
|
|
357
|
+
printWebhookDeleteResult(await deleteWebhook(webhookId), webhookId);
|
|
358
|
+
}
|
|
359
|
+
catch (error) {
|
|
360
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
361
|
+
process.exit(1);
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
addOutputOptions(webhooksCmd.command("test"))
|
|
365
|
+
.argument("<id>", "Webhook ID")
|
|
366
|
+
.description("Send a ping test to a project webhook")
|
|
367
|
+
.action(async (id) => {
|
|
368
|
+
try {
|
|
369
|
+
const webhookId = readRequiredText(id, "Webhook ID", "<id>");
|
|
370
|
+
printWebhookTestResult(await testWebhook(webhookId), webhookId);
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
374
|
+
process.exit(1);
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
addOutputOptions(webhooksCmd.command("executions"))
|
|
378
|
+
.argument("<id>", "Webhook ID")
|
|
379
|
+
.option("-n, --limit <number>", "Max executions", "20")
|
|
380
|
+
.description("List webhook delivery executions")
|
|
381
|
+
.action(async (id, opts) => {
|
|
382
|
+
try {
|
|
383
|
+
const webhookId = readRequiredText(id, "Webhook ID", "<id>");
|
|
384
|
+
printWebhookExecutions(await listWebhookExecutions(webhookId, {
|
|
385
|
+
limit: parsePositiveIntegerOption(opts.limit)
|
|
386
|
+
}), webhookId);
|
|
387
|
+
}
|
|
388
|
+
catch (error) {
|
|
389
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
390
|
+
process.exit(1);
|
|
391
|
+
}
|
|
392
|
+
});
|
|
393
|
+
addOutputOptions(webhooksCmd.command("retry"))
|
|
394
|
+
.argument("<executionId>", "Webhook execution ID")
|
|
395
|
+
.description("Retry a webhook delivery execution")
|
|
396
|
+
.action(async (id) => {
|
|
397
|
+
try {
|
|
398
|
+
const executionId = readRequiredText(id, "Webhook execution ID", "<executionId>");
|
|
399
|
+
printWebhookRetryResult(await retryWebhookExecution(executionId), executionId);
|
|
400
|
+
}
|
|
401
|
+
catch (error) {
|
|
402
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
403
|
+
process.exit(1);
|
|
404
|
+
}
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/commands/webhooks.ts"],"names":[],"mappings":"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"}
|