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,243 @@
|
|
|
1
|
+
import { createSavedFilter, listSavedFilters, removeSavedFilter, toggleSavedFilterFavorite, updateSavedFilter } from "../lib/convex.js";
|
|
2
|
+
import { 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 SAVED_FILTER_COLUMNS = [
|
|
8
|
+
{ header: "id", value: filter => filter.id },
|
|
9
|
+
{ header: "name", value: filter => filter.name },
|
|
10
|
+
{ header: "projectKey", value: filter => filter.projectKey },
|
|
11
|
+
{ header: "creator", value: filter => filter.creatorName },
|
|
12
|
+
{ header: "owner", value: filter => filter.isOwner },
|
|
13
|
+
{ header: "public", value: filter => filter.isPublic },
|
|
14
|
+
{ header: "favorite", value: filter => filter.isFavorite },
|
|
15
|
+
{ header: "filters", value: filter => JSON.stringify(filter.filters) },
|
|
16
|
+
{ header: "updatedAt", value: filter => filter.updatedAt }
|
|
17
|
+
];
|
|
18
|
+
const SAVED_FILTER_REMOVAL_COLUMNS = [
|
|
19
|
+
{ header: "id", value: result => result.id },
|
|
20
|
+
{ header: "name", value: result => result.name },
|
|
21
|
+
{ header: "projectKey", value: result => result.projectKey },
|
|
22
|
+
{ header: "deleted", value: result => result.deleted }
|
|
23
|
+
];
|
|
24
|
+
const SAVED_FILTER_FAVORITE_COLUMNS = [
|
|
25
|
+
{ header: "id", value: result => result.id },
|
|
26
|
+
{ header: "name", value: result => result.name },
|
|
27
|
+
{ header: "projectKey", value: result => result.projectKey },
|
|
28
|
+
{ header: "favorite", value: result => result.isFavorite }
|
|
29
|
+
];
|
|
30
|
+
function printSavedFilters(result, projectKey) {
|
|
31
|
+
const format = getActiveOutputFormat();
|
|
32
|
+
if (!result) {
|
|
33
|
+
if (format === "json")
|
|
34
|
+
printJson(null);
|
|
35
|
+
else if (format === "csv")
|
|
36
|
+
printRows([], SAVED_FILTER_COLUMNS, format);
|
|
37
|
+
else
|
|
38
|
+
printOutput(`Project ${projectKey} not found or inaccessible.`);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (format === "json") {
|
|
42
|
+
printJson(result);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (format === "csv") {
|
|
46
|
+
printRows(result.filters, SAVED_FILTER_COLUMNS, format);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (result.filters.length === 0) {
|
|
50
|
+
printOutput("No saved filters found.");
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
printRows(result.filters, SAVED_FILTER_COLUMNS, format);
|
|
54
|
+
if (result.truncated)
|
|
55
|
+
printOutput("Results truncated; increase --limit.");
|
|
56
|
+
}
|
|
57
|
+
function readSavedFilterCriteria(value) {
|
|
58
|
+
const raw = readRequiredText(value, "Filter criteria", "--filters");
|
|
59
|
+
let parsed;
|
|
60
|
+
try {
|
|
61
|
+
parsed = JSON.parse(raw);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
throw new Error("Filter criteria must be valid JSON.");
|
|
65
|
+
}
|
|
66
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
67
|
+
throw new Error("Filter criteria must be a JSON object.");
|
|
68
|
+
}
|
|
69
|
+
return parsed;
|
|
70
|
+
}
|
|
71
|
+
function printCreatedSavedFilter(filter, projectKey) {
|
|
72
|
+
const format = getActiveOutputFormat();
|
|
73
|
+
if (!filter) {
|
|
74
|
+
if (format === "json")
|
|
75
|
+
printJson(null);
|
|
76
|
+
else if (format === "csv")
|
|
77
|
+
printRows([], SAVED_FILTER_COLUMNS, format);
|
|
78
|
+
else
|
|
79
|
+
printOutput(`Project ${projectKey} not found or inaccessible.`);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (format === "json")
|
|
83
|
+
printJson(filter);
|
|
84
|
+
else if (format === "table")
|
|
85
|
+
printOutput(`Created saved filter ${filter.name} (${filter.id}).`);
|
|
86
|
+
else
|
|
87
|
+
printRows([filter], SAVED_FILTER_COLUMNS, format);
|
|
88
|
+
}
|
|
89
|
+
function readSavedFilterUpdateInput(opts) {
|
|
90
|
+
if (opts.public && opts.private) {
|
|
91
|
+
throw new Error("Use either --public or --private, not both.");
|
|
92
|
+
}
|
|
93
|
+
const input = {};
|
|
94
|
+
const name = readOptionalText(opts.name, "Saved filter name", "--name");
|
|
95
|
+
if (name !== undefined)
|
|
96
|
+
input.name = name;
|
|
97
|
+
if (opts.filters !== undefined)
|
|
98
|
+
input.filters = readSavedFilterCriteria(opts.filters);
|
|
99
|
+
if (opts.public)
|
|
100
|
+
input.isPublic = true;
|
|
101
|
+
if (opts.private)
|
|
102
|
+
input.isPublic = false;
|
|
103
|
+
if (Object.keys(input).length === 0)
|
|
104
|
+
throw new Error("At least one update flag is required.");
|
|
105
|
+
return input;
|
|
106
|
+
}
|
|
107
|
+
function printUpdatedSavedFilter(filter, id) {
|
|
108
|
+
const format = getActiveOutputFormat();
|
|
109
|
+
if (!filter) {
|
|
110
|
+
if (format === "json")
|
|
111
|
+
printJson(null);
|
|
112
|
+
else if (format === "csv")
|
|
113
|
+
printRows([], SAVED_FILTER_COLUMNS, format);
|
|
114
|
+
else
|
|
115
|
+
printOutput(`Saved filter ${id} not found or inaccessible.`);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (format === "json")
|
|
119
|
+
printJson(filter);
|
|
120
|
+
else if (format === "table")
|
|
121
|
+
printOutput(`Updated saved filter ${filter.name} (${filter.id}).`);
|
|
122
|
+
else
|
|
123
|
+
printRows([filter], SAVED_FILTER_COLUMNS, format);
|
|
124
|
+
}
|
|
125
|
+
function printSavedFilterRemoval(result, id) {
|
|
126
|
+
const format = getActiveOutputFormat();
|
|
127
|
+
if (!result) {
|
|
128
|
+
if (format === "json")
|
|
129
|
+
printJson(null);
|
|
130
|
+
else if (format === "csv")
|
|
131
|
+
printRows([], SAVED_FILTER_REMOVAL_COLUMNS, format);
|
|
132
|
+
else
|
|
133
|
+
printOutput(`Saved filter ${id} not found or inaccessible.`);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (format === "json")
|
|
137
|
+
printJson(result);
|
|
138
|
+
else if (format === "table")
|
|
139
|
+
printOutput(`Removed saved filter ${result.name} (${result.id}).`);
|
|
140
|
+
else
|
|
141
|
+
printRows([result], SAVED_FILTER_REMOVAL_COLUMNS, format);
|
|
142
|
+
}
|
|
143
|
+
function printSavedFilterFavorite(result, id) {
|
|
144
|
+
const format = getActiveOutputFormat();
|
|
145
|
+
if (!result) {
|
|
146
|
+
if (format === "json")
|
|
147
|
+
printJson(null);
|
|
148
|
+
else if (format === "csv")
|
|
149
|
+
printRows([], SAVED_FILTER_FAVORITE_COLUMNS, format);
|
|
150
|
+
else
|
|
151
|
+
printOutput(`Saved filter ${id} not found or inaccessible.`);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
if (format === "json") {
|
|
155
|
+
printJson(result);
|
|
156
|
+
}
|
|
157
|
+
else if (format === "table") {
|
|
158
|
+
printOutput(result.isFavorite
|
|
159
|
+
? `Favorited saved filter ${result.name} (${result.id}).`
|
|
160
|
+
: `Removed saved filter ${result.name} (${result.id}) from favorites.`);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
printRows([result], SAVED_FILTER_FAVORITE_COLUMNS, format);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
export function registerFilterCommands(program) {
|
|
167
|
+
const filtersCmd = program.command("filters").description("Manage project saved filters");
|
|
168
|
+
addOutputOptions(filtersCmd.command("list"))
|
|
169
|
+
.option("-p, --project <key>", "Project key; defaults to config.defaultProject")
|
|
170
|
+
.option("-n, --limit <number>", "Maximum saved filters", "20")
|
|
171
|
+
.description("List accessible project saved filters")
|
|
172
|
+
.action(async (opts) => {
|
|
173
|
+
try {
|
|
174
|
+
const projectKey = await resolveRequiredProjectKey(opts.project);
|
|
175
|
+
printSavedFilters(await listSavedFilters(projectKey, { limit: parsePositiveIntegerOption(opts.limit) }), projectKey);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
179
|
+
process.exit(1);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
addOutputOptions(filtersCmd.command("create"))
|
|
183
|
+
.option("-p, --project <key>", "Project key; defaults to config.defaultProject")
|
|
184
|
+
.requiredOption("-n, --name <name>", "Saved filter name")
|
|
185
|
+
.requiredOption("--filters <json>", "Issue filter criteria JSON")
|
|
186
|
+
.option("--public", "Share the saved filter with project viewers", false)
|
|
187
|
+
.description("Create a project saved filter")
|
|
188
|
+
.action(async (opts) => {
|
|
189
|
+
try {
|
|
190
|
+
const projectKey = await resolveRequiredProjectKey(opts.project);
|
|
191
|
+
printCreatedSavedFilter(await createSavedFilter({
|
|
192
|
+
filters: readSavedFilterCriteria(opts.filters),
|
|
193
|
+
isPublic: opts.public ?? false,
|
|
194
|
+
name: readRequiredText(opts.name, "Saved filter name", "--name"),
|
|
195
|
+
projectKey
|
|
196
|
+
}), projectKey);
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
addOutputOptions(filtersCmd.command("update").argument("<id>", "Saved filter ID"))
|
|
204
|
+
.option("-n, --name <name>", "New saved filter name")
|
|
205
|
+
.option("--filters <json>", "Replacement issue filter criteria JSON")
|
|
206
|
+
.option("--public", "Share the saved filter with project viewers")
|
|
207
|
+
.option("--private", "Make the saved filter private")
|
|
208
|
+
.description("Update an owned saved filter")
|
|
209
|
+
.action(async (id, opts) => {
|
|
210
|
+
try {
|
|
211
|
+
printUpdatedSavedFilter(await updateSavedFilter(id, readSavedFilterUpdateInput(opts)), id);
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
addOutputOptions(filtersCmd.command("remove").argument("<id>", "Saved filter ID"))
|
|
219
|
+
.option("-y, --yes", "Confirm saved filter removal")
|
|
220
|
+
.description("Remove an owned saved filter")
|
|
221
|
+
.action(async (id, opts) => {
|
|
222
|
+
try {
|
|
223
|
+
await requireConfirmation(`Remove saved filter ${id}?`, opts.yes === true);
|
|
224
|
+
printSavedFilterRemoval(await removeSavedFilter(id), id);
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
228
|
+
process.exit(1);
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
addOutputOptions(filtersCmd.command("favorite").argument("<id>", "Saved filter ID"))
|
|
232
|
+
.description("Toggle a saved filter favorite")
|
|
233
|
+
.action(async (id) => {
|
|
234
|
+
try {
|
|
235
|
+
printSavedFilterFavorite(await toggleSavedFilterFavorite(id), id);
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
239
|
+
process.exit(1);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/commands/filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type Command } from "commander";
|
|
2
|
+
export declare function configureGlobalOptions(program: Command): void;
|
|
3
|
+
export declare function configureHelpText(program: Command): void;
|
|
4
|
+
export declare function addOutputOptions(command: Command): Command;
|
|
5
|
+
//# sourceMappingURL=global.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../../src/commands/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAwB,MAAM,WAAW,CAAA;AAa9D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAa7D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAWxD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAI1D"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { InvalidArgumentError } from "commander";
|
|
2
|
+
import { resolveOutputFormat, setActiveOutputFormat } from "../lib/output.js";
|
|
3
|
+
import { commandLeafPaths } from "./commandTree.js";
|
|
4
|
+
function parseOutputFormat(value) {
|
|
5
|
+
try {
|
|
6
|
+
resolveOutputFormat({ output: value });
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
throw new InvalidArgumentError(error instanceof Error ? error.message : String(error));
|
|
10
|
+
}
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
export function configureGlobalOptions(program) {
|
|
14
|
+
program
|
|
15
|
+
.option("--json", "Print JSON output")
|
|
16
|
+
.option("--output <format>", "Output format: table, json, or csv", parseOutputFormat, "table");
|
|
17
|
+
program.hook("preAction", (_thisCommand, actionCommand) => {
|
|
18
|
+
const options = actionCommand.optsWithGlobals();
|
|
19
|
+
setActiveOutputFormat(resolveOutputFormat({
|
|
20
|
+
json: typeof options.json === "boolean" ? options.json : undefined,
|
|
21
|
+
output: typeof options.output === "string" ? options.output : undefined
|
|
22
|
+
}));
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export function configureHelpText(program) {
|
|
26
|
+
const baseHelpInformation = program.helpInformation.bind(program);
|
|
27
|
+
program.helpInformation = () => {
|
|
28
|
+
const help = baseHelpInformation();
|
|
29
|
+
if (help.includes("Command tree:"))
|
|
30
|
+
return help;
|
|
31
|
+
const commandTree = commandLeafPaths(program)
|
|
32
|
+
.map(path => ` nixelo ${path.join(" ")}`)
|
|
33
|
+
.join("\n");
|
|
34
|
+
return `${help}\nCommand tree:\n${commandTree}\n\nUse "nixelo <command> --help" for command-specific options.\n`;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function addOutputOptions(command) {
|
|
38
|
+
return command
|
|
39
|
+
.option("--json", "Print JSON output")
|
|
40
|
+
.option("--output <format>", "Output format: table, json, or csv", parseOutputFormat);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=global.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/commands/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEnD,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,CAAC;QACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,oBAAoB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACxF,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC;SACrC,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAChG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE;QACxD,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,EAAE,CAAA;QAC/C,qBAAqB,CACnB,mBAAmB,CAAC;YAClB,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAClE,MAAM,EAAE,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACxE,CAAC,CACH,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjE,OAAO,CAAC,eAAe,GAAG,GAAG,EAAE;QAC7B,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAA;QAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,OAAO,IAAI,CAAA;QAE/C,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC;aAC1C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;aACzC,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,OAAO,GAAG,IAAI,oBAAoB,WAAW,mEAAmE,CAAA;IAClH,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,OAAO;SACX,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC;SACrC,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,EAAE,iBAAiB,CAAC,CAAA;AACzF,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { registerApiKeyCommands } from "./apiKeys.js";
|
|
2
|
+
export { buildLoginUrl, quoteWindowsStartUrl } from "./auth.js";
|
|
3
|
+
export { registerAutomationCommands } from "./automations.js";
|
|
4
|
+
export { registerConfigCommands } from "./config.js";
|
|
5
|
+
export { registerDocumentsCommands } from "./documents.js";
|
|
6
|
+
export { registerFieldCommands } from "./fields.js";
|
|
7
|
+
export { registerFilterCommands } from "./filters.js";
|
|
8
|
+
export { registerInviteCommands } from "./invites.js";
|
|
9
|
+
export { registerIssuesCommands } from "./issues.js";
|
|
10
|
+
export { registerLabelsCommands } from "./labels.js";
|
|
11
|
+
export { registerNotificationCommands } from "./notifications.js";
|
|
12
|
+
export { registerProjectsCommands } from "./projects.js";
|
|
13
|
+
export { registerAllCommands } from "./registerAll.js";
|
|
14
|
+
export { registerSprintsCommands } from "./sprints.js";
|
|
15
|
+
export { registerStatsCommands } from "./stats.js";
|
|
16
|
+
export { registerTeamsCommands } from "./teams.js";
|
|
17
|
+
export { registerTemplateCommands } from "./templates.js";
|
|
18
|
+
export { registerTimeCommands } from "./time.js";
|
|
19
|
+
export { registerTokenCommands } from "./tokens.js";
|
|
20
|
+
export { registerUsersCommands } from "./users.js";
|
|
21
|
+
export { registerWebhooksCommands } from "./webhooks.js";
|
|
22
|
+
export { registerWorkspacesCommands } from "./workspaces.js";
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { registerApiKeyCommands } from "./apiKeys.js";
|
|
2
|
+
export { buildLoginUrl, quoteWindowsStartUrl } from "./auth.js";
|
|
3
|
+
export { registerAutomationCommands } from "./automations.js";
|
|
4
|
+
export { registerConfigCommands } from "./config.js";
|
|
5
|
+
export { registerDocumentsCommands } from "./documents.js";
|
|
6
|
+
export { registerFieldCommands } from "./fields.js";
|
|
7
|
+
export { registerFilterCommands } from "./filters.js";
|
|
8
|
+
export { registerInviteCommands } from "./invites.js";
|
|
9
|
+
export { registerIssuesCommands } from "./issues.js";
|
|
10
|
+
export { registerLabelsCommands } from "./labels.js";
|
|
11
|
+
export { registerNotificationCommands } from "./notifications.js";
|
|
12
|
+
export { registerProjectsCommands } from "./projects.js";
|
|
13
|
+
export { registerAllCommands } from "./registerAll.js";
|
|
14
|
+
export { registerSprintsCommands } from "./sprints.js";
|
|
15
|
+
export { registerStatsCommands } from "./stats.js";
|
|
16
|
+
export { registerTeamsCommands } from "./teams.js";
|
|
17
|
+
export { registerTemplateCommands } from "./templates.js";
|
|
18
|
+
export { registerTimeCommands } from "./time.js";
|
|
19
|
+
export { registerTokenCommands } from "./tokens.js";
|
|
20
|
+
export { registerUsersCommands } from "./users.js";
|
|
21
|
+
export { registerWebhooksCommands } from "./webhooks.js";
|
|
22
|
+
export { registerWorkspacesCommands } from "./workspaces.js";
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invites.d.ts","sourceRoot":"","sources":["../../src/commands/invites.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6CxC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoF7D"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { listInvites, resendInvite, revokeInvite, sendInvite } from "../lib/convex.js";
|
|
2
|
+
import { parsePositiveIntegerOption, readRequiredText } from "../lib/options.js";
|
|
3
|
+
import { getActiveOutputFormat, printError, printJson, printOutput, printRows } from "../lib/output.js";
|
|
4
|
+
import { requireConfirmation } from "../lib/prompt.js";
|
|
5
|
+
import { addOutputOptions } from "./global.js";
|
|
6
|
+
function printInviteMutation(action, result) {
|
|
7
|
+
const format = getActiveOutputFormat();
|
|
8
|
+
if (format === "json") {
|
|
9
|
+
printJson(result);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (format === "csv") {
|
|
13
|
+
printRows([result], [
|
|
14
|
+
{ header: "inviteId", value: invite => invite.inviteId },
|
|
15
|
+
{ header: "email", value: invite => invite.email },
|
|
16
|
+
{ header: "role", value: invite => invite.role ?? "" },
|
|
17
|
+
{ header: "expiresAt", value: invite => invite.expiresAt ?? "" }
|
|
18
|
+
], "csv");
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
printOutput(`Invitation ${action}: ${result.email} (${result.inviteId})`);
|
|
22
|
+
if (result.expiresAt !== undefined) {
|
|
23
|
+
printOutput(`Expires: ${new Date(result.expiresAt).toISOString()}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function readInviteId(value) {
|
|
27
|
+
const inviteId = value.trim();
|
|
28
|
+
if (!inviteId)
|
|
29
|
+
throw new Error("Invitation ID is required.");
|
|
30
|
+
return inviteId;
|
|
31
|
+
}
|
|
32
|
+
export function registerInviteCommands(program) {
|
|
33
|
+
const invitesCmd = program.command("invites").description("Manage organization invitations");
|
|
34
|
+
addOutputOptions(invitesCmd.command("list"))
|
|
35
|
+
.option("-n, --limit <number>", "Maximum pending invites to return")
|
|
36
|
+
.description("List pending organization invitations")
|
|
37
|
+
.action(async (opts) => {
|
|
38
|
+
try {
|
|
39
|
+
const result = await listInvites(parsePositiveIntegerOption(opts.limit));
|
|
40
|
+
const format = getActiveOutputFormat();
|
|
41
|
+
if (format === "json") {
|
|
42
|
+
printJson(result);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (result.invites.length === 0) {
|
|
46
|
+
printOutput("No pending invitations.");
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
printRows(result.invites, [
|
|
50
|
+
{ header: "inviteId", value: invite => invite.inviteId },
|
|
51
|
+
{ header: "email", value: invite => invite.email },
|
|
52
|
+
{ header: "role", value: invite => invite.role },
|
|
53
|
+
{ header: "project", value: invite => invite.projectName ?? "" },
|
|
54
|
+
{ header: "projectRole", value: invite => invite.projectRole ?? "" },
|
|
55
|
+
{ header: "invitedBy", value: invite => invite.inviterName },
|
|
56
|
+
{ header: "expiresAt", value: invite => new Date(invite.expiresAt).toISOString() }
|
|
57
|
+
], format);
|
|
58
|
+
if (result.truncated && format !== "csv") {
|
|
59
|
+
printOutput("Results truncated at the requested limit (maximum 100).");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
addOutputOptions(invitesCmd.command("send"))
|
|
68
|
+
.requiredOption("--email <email>", "Email address to invite")
|
|
69
|
+
.requiredOption("--role <role>", "Invite role: user or superAdmin")
|
|
70
|
+
.description("Send an organization invitation")
|
|
71
|
+
.action(async (opts) => {
|
|
72
|
+
try {
|
|
73
|
+
const email = readRequiredText(opts.email, "Email", "--email").toLowerCase();
|
|
74
|
+
const role = readRequiredText(opts.role, "Role", "--role");
|
|
75
|
+
if (role !== "user" && role !== "superAdmin") {
|
|
76
|
+
throw new Error("Role must be user or superAdmin.");
|
|
77
|
+
}
|
|
78
|
+
printInviteMutation("sent", await sendInvite(email, role));
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
addOutputOptions(invitesCmd.command("revoke"))
|
|
86
|
+
.argument("<id>", "Pending invitation ID")
|
|
87
|
+
.option("-y, --yes", "Confirm invitation revocation")
|
|
88
|
+
.description("Revoke a pending invitation")
|
|
89
|
+
.action(async (inviteId, opts) => {
|
|
90
|
+
try {
|
|
91
|
+
const id = readInviteId(inviteId);
|
|
92
|
+
await requireConfirmation(`Revoke invitation ${id}?`, opts.yes === true);
|
|
93
|
+
printInviteMutation("revoked", await revokeInvite(id));
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
addOutputOptions(invitesCmd.command("resend"))
|
|
101
|
+
.argument("<id>", "Pending invitation ID")
|
|
102
|
+
.description("Resend a pending invitation and extend expiration")
|
|
103
|
+
.action(async (inviteId) => {
|
|
104
|
+
try {
|
|
105
|
+
printInviteMutation("resent", await resendInvite(readInviteId(inviteId)));
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
printError("Failed:", error instanceof Error ? error.message : error);
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=invites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../../src/commands/invites.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Issue } from "../../lib/convex.js";
|
|
2
|
+
export declare const ISSUE_SEARCH_DEFAULT_LIMIT = 100;
|
|
3
|
+
type IssueFilterAndSortOptions = {
|
|
4
|
+
order?: string;
|
|
5
|
+
priority?: string;
|
|
6
|
+
sort?: string;
|
|
7
|
+
type?: string;
|
|
8
|
+
};
|
|
9
|
+
export type IssueListOptions = IssueFilterAndSortOptions & {
|
|
10
|
+
assignee?: string;
|
|
11
|
+
epic?: string;
|
|
12
|
+
label?: string;
|
|
13
|
+
search?: string;
|
|
14
|
+
sprint?: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function normalizeFilterValue(value: string | undefined): string | undefined;
|
|
17
|
+
export declare function filterAndSortIssues(issues: readonly Issue[], options: IssueFilterAndSortOptions): readonly Issue[];
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/commands/issues/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAe7C,KAAK,yBAAyB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,yBAAyB,GAAG;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGlF;AAkCD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,OAAO,EAAE,yBAAyB,GACjC,SAAS,KAAK,EAAE,CAqBlB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export const ISSUE_SEARCH_DEFAULT_LIMIT = 100;
|
|
2
|
+
const ISSUE_SORT_FIELDS = ["created", "key", "priority", "status", "title"];
|
|
3
|
+
const ISSUE_SORT_ORDERS = ["asc", "desc"];
|
|
4
|
+
const ISSUE_PRIORITY_RANK = {
|
|
5
|
+
highest: 1,
|
|
6
|
+
high: 2,
|
|
7
|
+
medium: 3,
|
|
8
|
+
low: 4,
|
|
9
|
+
lowest: 5
|
|
10
|
+
};
|
|
11
|
+
export function normalizeFilterValue(value) {
|
|
12
|
+
const normalized = value?.trim();
|
|
13
|
+
return normalized || undefined;
|
|
14
|
+
}
|
|
15
|
+
function parseIssueSortField(value) {
|
|
16
|
+
if (value === undefined)
|
|
17
|
+
return undefined;
|
|
18
|
+
const sortField = ISSUE_SORT_FIELDS.find(field => field === value);
|
|
19
|
+
if (sortField)
|
|
20
|
+
return sortField;
|
|
21
|
+
throw new Error(`Sort must be one of: ${ISSUE_SORT_FIELDS.join(", ")}.`);
|
|
22
|
+
}
|
|
23
|
+
function parseIssueSortOrder(value) {
|
|
24
|
+
if (value === undefined)
|
|
25
|
+
return "asc";
|
|
26
|
+
const sortOrder = ISSUE_SORT_ORDERS.find(order => order === value);
|
|
27
|
+
if (sortOrder)
|
|
28
|
+
return sortOrder;
|
|
29
|
+
throw new Error(`Sort order must be one of: ${ISSUE_SORT_ORDERS.join(", ")}.`);
|
|
30
|
+
}
|
|
31
|
+
function compareStrings(left, right) {
|
|
32
|
+
return (left ?? "").localeCompare(right ?? "");
|
|
33
|
+
}
|
|
34
|
+
function comparePriorities(left, right) {
|
|
35
|
+
const leftRank = ISSUE_PRIORITY_RANK[left ?? ""] ?? Number.MAX_SAFE_INTEGER;
|
|
36
|
+
const rightRank = ISSUE_PRIORITY_RANK[right ?? ""] ?? Number.MAX_SAFE_INTEGER;
|
|
37
|
+
return leftRank - rightRank;
|
|
38
|
+
}
|
|
39
|
+
function compareIssues(left, right, sortField) {
|
|
40
|
+
if (sortField === "created")
|
|
41
|
+
return left.createdAt - right.createdAt;
|
|
42
|
+
if (sortField === "key")
|
|
43
|
+
return compareStrings(left.key, right.key);
|
|
44
|
+
if (sortField === "priority")
|
|
45
|
+
return comparePriorities(left.priority, right.priority);
|
|
46
|
+
if (sortField === "status")
|
|
47
|
+
return compareStrings(left.status, right.status);
|
|
48
|
+
return compareStrings(left.title, right.title);
|
|
49
|
+
}
|
|
50
|
+
export function filterAndSortIssues(issues, options) {
|
|
51
|
+
const priority = normalizeFilterValue(options.priority)?.toLowerCase();
|
|
52
|
+
const type = normalizeFilterValue(options.type)?.toLowerCase();
|
|
53
|
+
const sortField = parseIssueSortField(options.sort);
|
|
54
|
+
const sortOrder = parseIssueSortOrder(options.order);
|
|
55
|
+
if (!sortField && options.order !== undefined) {
|
|
56
|
+
throw new Error("Pass --sort when using --order.");
|
|
57
|
+
}
|
|
58
|
+
const filteredIssues = issues.filter(issue => {
|
|
59
|
+
if (priority && issue.priority?.toLowerCase() !== priority)
|
|
60
|
+
return false;
|
|
61
|
+
if (type && issue.type?.toLowerCase() !== type)
|
|
62
|
+
return false;
|
|
63
|
+
return true;
|
|
64
|
+
});
|
|
65
|
+
if (!sortField)
|
|
66
|
+
return filteredIssues;
|
|
67
|
+
return [...filteredIssues].sort((left, right) => {
|
|
68
|
+
const result = compareIssues(left, right, sortField);
|
|
69
|
+
return sortOrder === "desc" ? -result : result;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/commands/issues/filter.ts"],"names":[],"mappings":"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"}
|