@eyeauras/youtrack-cli 0.5.5 → 0.5.7
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 +63 -56
- package/dist/src/agile-commands.d.ts.map +1 -1
- package/dist/src/agile-commands.js +8 -9
- package/dist/src/agile-commands.js.map +1 -1
- package/dist/src/agile.d.ts.map +1 -1
- package/dist/src/agile.js +9 -15
- package/dist/src/agile.js.map +1 -1
- package/dist/src/article-extras-commands.d.ts.map +1 -1
- package/dist/src/article-extras-commands.js +13 -12
- package/dist/src/article-extras-commands.js.map +1 -1
- package/dist/src/articles-commands.d.ts.map +1 -1
- package/dist/src/articles-commands.js +15 -12
- package/dist/src/articles-commands.js.map +1 -1
- package/dist/src/articles.d.ts.map +1 -1
- package/dist/src/articles.js +13 -14
- package/dist/src/articles.js.map +1 -1
- package/dist/src/attachment-download-commands.d.ts.map +1 -1
- package/dist/src/attachment-download-commands.js +7 -5
- package/dist/src/attachment-download-commands.js.map +1 -1
- package/dist/src/attachment-download.d.ts +1 -0
- package/dist/src/attachment-download.d.ts.map +1 -1
- package/dist/src/attachment-download.js +16 -26
- package/dist/src/attachment-download.js.map +1 -1
- package/dist/src/attachment-form.js +3 -3
- package/dist/src/attachment-form.js.map +1 -1
- package/dist/src/bundle-values-commands.d.ts.map +1 -1
- package/dist/src/bundle-values-commands.js +21 -18
- package/dist/src/bundle-values-commands.js.map +1 -1
- package/dist/src/cli-support.d.ts +5 -5
- package/dist/src/cli-support.d.ts.map +1 -1
- package/dist/src/cli-support.js +28 -26
- package/dist/src/cli-support.js.map +1 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +52 -34
- package/dist/src/cli.js.map +1 -1
- package/dist/src/client.d.ts +5 -2
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +66 -49
- package/dist/src/client.js.map +1 -1
- package/dist/src/field-catalog-commands.d.ts.map +1 -1
- package/dist/src/field-catalog-commands.js +19 -16
- package/dist/src/field-catalog-commands.js.map +1 -1
- package/dist/src/group-directory-commands.d.ts.map +1 -1
- package/dist/src/group-directory-commands.js +17 -16
- package/dist/src/group-directory-commands.js.map +1 -1
- package/dist/src/issue-attachments-commands.d.ts.map +1 -1
- package/dist/src/issue-attachments-commands.js +9 -8
- package/dist/src/issue-attachments-commands.js.map +1 -1
- package/dist/src/issue-batch.d.ts +2 -0
- package/dist/src/issue-batch.d.ts.map +1 -1
- package/dist/src/issue-batch.js +14 -10
- package/dist/src/issue-batch.js.map +1 -1
- package/dist/src/issue-context-commands.d.ts.map +1 -1
- package/dist/src/issue-context-commands.js +13 -12
- package/dist/src/issue-context-commands.js.map +1 -1
- package/dist/src/issue-context.d.ts.map +1 -1
- package/dist/src/issue-context.js +9 -13
- package/dist/src/issue-context.js.map +1 -1
- package/dist/src/issue-fields-commands.d.ts.map +1 -1
- package/dist/src/issue-fields-commands.js +10 -9
- package/dist/src/issue-fields-commands.js.map +1 -1
- package/dist/src/issue-fields.d.ts +2 -4
- package/dist/src/issue-fields.d.ts.map +1 -1
- package/dist/src/issue-fields.js +39 -100
- package/dist/src/issue-fields.js.map +1 -1
- package/dist/src/issue-query-commands.d.ts.map +1 -1
- package/dist/src/issue-query-commands.js +15 -14
- package/dist/src/issue-query-commands.js.map +1 -1
- package/dist/src/issue-query.d.ts.map +1 -1
- package/dist/src/issue-query.js +7 -10
- package/dist/src/issue-query.js.map +1 -1
- package/dist/src/issue-relations-commands.d.ts.map +1 -1
- package/dist/src/issue-relations-commands.js +17 -16
- package/dist/src/issue-relations-commands.js.map +1 -1
- package/dist/src/issue-relations.js +2 -2
- package/dist/src/issue-relations.js.map +1 -1
- package/dist/src/issue-time-commands.d.ts.map +1 -1
- package/dist/src/issue-time-commands.js +12 -11
- package/dist/src/issue-time-commands.js.map +1 -1
- package/dist/src/issue-time.d.ts.map +1 -1
- package/dist/src/issue-time.js +16 -19
- package/dist/src/issue-time.js.map +1 -1
- package/dist/src/presentation.d.ts +59 -0
- package/dist/src/presentation.d.ts.map +1 -0
- package/dist/src/presentation.js +467 -0
- package/dist/src/presentation.js.map +1 -0
- package/dist/src/time-settings-commands.d.ts.map +1 -1
- package/dist/src/time-settings-commands.js +13 -11
- package/dist/src/time-settings-commands.js.map +1 -1
- package/dist/src/user-directory-commands.d.ts.map +1 -1
- package/dist/src/user-directory-commands.js +14 -12
- package/dist/src/user-directory-commands.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
import { readCommand } from "./cli-support.js";
|
|
2
2
|
import { downloadArticleAttachment, downloadIssueAttachment, downloadLimit, downloadName, } from "./attachment-download.js";
|
|
3
|
+
import { savedAttachment, withView } from "./presentation.js";
|
|
3
4
|
const downloadOptions = [
|
|
4
5
|
{
|
|
5
6
|
flags: "--name <basename>",
|
|
6
|
-
description: "
|
|
7
|
+
description: "File name (existing files are kept)",
|
|
7
8
|
parse: downloadName,
|
|
8
9
|
},
|
|
9
10
|
{
|
|
10
11
|
flags: "--max-bytes <n>",
|
|
11
|
-
description: "
|
|
12
|
+
description: "Fail above this many bytes",
|
|
12
13
|
parse: downloadLimit,
|
|
13
14
|
},
|
|
14
15
|
];
|
|
15
|
-
function downloadInput(options) {
|
|
16
|
+
function downloadInput(options, progress) {
|
|
16
17
|
return {
|
|
18
|
+
progress,
|
|
17
19
|
...(typeof options.name === "string" ? { name: options.name } : {}),
|
|
18
20
|
...(typeof options.maxBytes === "number" ? { maxBytes: options.maxBytes } : {}),
|
|
19
21
|
};
|
|
20
22
|
}
|
|
21
|
-
export const attachmentDownloadCommand = readCommand("download <issueID> <attachmentID>", "Download
|
|
22
|
-
export const articleAttachmentDownloadCommand = readCommand("download <article> <attachment>", "Download
|
|
23
|
+
export const attachmentDownloadCommand = withView(savedAttachment, readCommand("download <issueID> <attachmentID>", "Download an attachment", async (connection, { args, options }, context) => downloadIssueAttachment(connection, args.issueID, args.attachmentID, context.appArguments.AppDataDirectory, downloadInput(options, context.progress)), downloadOptions));
|
|
24
|
+
export const articleAttachmentDownloadCommand = withView(savedAttachment, readCommand("download <article> <attachment>", "Download an attachment", async (connection, { args, options }, context) => downloadArticleAttachment(connection, args.article, args.attachment, context.appArguments.AppDataDirectory, downloadInput(options, context.progress)), downloadOptions));
|
|
23
25
|
//# sourceMappingURL=attachment-download-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-download-commands.js","sourceRoot":"","sources":["../../src/attachment-download-commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attachment-download-commands.js","sourceRoot":"","sources":["../../src/attachment-download-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,aAAa,EACb,YAAY,GAEb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,eAAe,GAAG;IACtB;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,qCAAqC;QAClD,KAAK,EAAE,YAAY;KACpB;IACD;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,4BAA4B;QACzC,KAAK,EAAE,aAAa;KACrB;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,OAAgC,EAAE,QAAmC;IAC1F,OAAO;QACL,QAAQ;QACR,GAAG,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAQ,CAAC,eAAe,EAAE,WAAW,CAC5E,mCAAmC,EACnC,wBAAwB,EACxB,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,uBAAuB,CACvE,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,YAAY,EACjB,OAAO,CAAC,YAAY,CAAC,gBAAgB,EACrC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CACzC,EACD,eAAe,CAChB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAQ,CAAC,eAAe,EAAE,WAAW,CACnF,iCAAiC,EACjC,wBAAwB,EACxB,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,yBAAyB,CACzE,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,EACf,OAAO,CAAC,YAAY,CAAC,gBAAgB,EACrC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CACzC,EACD,eAAe,CAChB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-download.d.ts","sourceRoot":"","sources":["../../src/attachment-download.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"attachment-download.d.ts","sourceRoot":"","sources":["../../src/attachment-download.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOlD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAM5D;AAwDD,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAGnC;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAGnC"}
|
|
@@ -6,45 +6,34 @@ export function downloadName(value) {
|
|
|
6
6
|
if (!value || value === "." || value === ".." ||
|
|
7
7
|
/[<>:"/\\|?*\u0000-\u001f\u007f-\u009f\p{Cf}]/u.test(value) || /[. ]$/.test(value) ||
|
|
8
8
|
/^(?:con|prn|aux|nul|conin\$|conout\$|clock\$|com[1-9¹²³]|lpt[1-9¹²³])(?:[ .]|$)/i.test(value)) {
|
|
9
|
-
throw new Error("
|
|
9
|
+
throw new Error("The file name must be one safe basename without reserved characters.");
|
|
10
10
|
}
|
|
11
11
|
return value;
|
|
12
12
|
}
|
|
13
13
|
export function downloadLimit(value) {
|
|
14
14
|
const number = typeof value === "string" && /^\d+$/.test(value) ? Number(value) : value;
|
|
15
15
|
if (typeof number !== "number" || !Number.isSafeInteger(number) || number < 1) {
|
|
16
|
-
throw new Error("
|
|
16
|
+
throw new Error("--max-bytes must be a positive integer.");
|
|
17
17
|
}
|
|
18
18
|
return number;
|
|
19
19
|
}
|
|
20
20
|
function attachmentUrl(connection, value) {
|
|
21
|
-
const invalid = new DownloadError("
|
|
22
|
-
"external/CDN downloads are unsupported.");
|
|
21
|
+
const invalid = new DownloadError("The attachment URL must be HTTP(S), without embedded credentials or raw controls.");
|
|
23
22
|
try {
|
|
24
|
-
if (/[\\\u0000-\u0020\u007f]/.test(value)
|
|
23
|
+
if (/[\\\u0000-\u0020\u007f]/.test(value)) {
|
|
25
24
|
throw invalid;
|
|
26
25
|
}
|
|
27
26
|
const base = new URL(youTrackUrl(connection.baseUrl));
|
|
28
27
|
const rawPath = value.split("?", 1)[0];
|
|
29
28
|
const originPath = rawPath.replace(/^(?:https?:)?\/\/[^/]*/, "");
|
|
30
|
-
const
|
|
31
|
-
if (!originPath.startsWith(prefix)) {
|
|
32
|
-
throw invalid;
|
|
33
|
-
}
|
|
34
|
-
const segments = originPath.slice(prefix.length).split("/");
|
|
35
|
-
const fileID = decodeURIComponent(segments[0] ?? "");
|
|
36
|
-
if (!fileID || fileID === "." || fileID === ".." || /[/\\%?#\u0000-\u0020\u007f]/.test(fileID) ||
|
|
37
|
-
segments.length > 2 || (segments.length === 2 && !/^sign=.+$/.test(segments[1]))) {
|
|
38
|
-
throw invalid;
|
|
39
|
-
}
|
|
29
|
+
const segments = originPath.split("/");
|
|
40
30
|
const url = new URL(value, base);
|
|
41
|
-
if (
|
|
42
|
-
!url.pathname.startsWith(`${base.pathname}api/files/`)) {
|
|
31
|
+
if (!["http:", "https:"].includes(url.protocol) || url.username || url.password) {
|
|
43
32
|
throw invalid;
|
|
44
33
|
}
|
|
45
|
-
const pathSignature = segments
|
|
34
|
+
const pathSignature = segments.find(part => /^sign=/.test(part))?.slice(5);
|
|
46
35
|
const querySignatures = url.search.slice(1).split("&")
|
|
47
|
-
.filter((part) => part
|
|
36
|
+
.filter((part) => /(?:^sign$|^sig$|(?:signature|token|password|passwd|secret|credentials?(?:JSON)?|authorization|cookie|(?:api|access|private|secret)[-_]?key|(?:^|[-_])key)(?:[-_]?(?:value|hash|digest|header))?$)/i.test(decodeURIComponent(part.split("=", 1)[0].replace(/\+/g, " "))))
|
|
48
37
|
.map((part) => part.slice(part.indexOf("=") + 1));
|
|
49
38
|
const signatures = [
|
|
50
39
|
...(pathSignature === undefined ? [] : [pathSignature, decodeURIComponent(pathSignature)]),
|
|
@@ -55,7 +44,7 @@ function attachmentUrl(connection, value) {
|
|
|
55
44
|
[...url.searchParams].some(([key, part]) => key.includes(token) || part.includes(token))) {
|
|
56
45
|
throw invalid;
|
|
57
46
|
}
|
|
58
|
-
return { url, secrets: [token, ...signatures].filter(Boolean) };
|
|
47
|
+
return { url, secrets: [token, url.href, decodeURIComponent(url.href), ...signatures].filter(Boolean) };
|
|
59
48
|
}
|
|
60
49
|
catch {
|
|
61
50
|
throw invalid;
|
|
@@ -72,7 +61,7 @@ function filenamePart(value, fallback) {
|
|
|
72
61
|
}
|
|
73
62
|
function contentType(value, secrets) {
|
|
74
63
|
const type = value?.split(";", 1)[0]?.trim() ?? "";
|
|
75
|
-
return type && redact(type, secrets) === type && /^[a-zA-Z0-9
|
|
64
|
+
return type && redact(type, secrets) === type && /^[!#$%&'*+.^_`|~a-zA-Z0-9-]+\/[!#$%&'*+.^_`|~a-zA-Z0-9-]+$/.test(type)
|
|
76
65
|
? type : "application/octet-stream";
|
|
77
66
|
}
|
|
78
67
|
export async function downloadIssueAttachment(connection, issueID, attachmentID, appDataDirectory, options = {}) {
|
|
@@ -90,7 +79,7 @@ async function downloadAttachment(connection, attachmentPath, attachmentID, appD
|
|
|
90
79
|
try {
|
|
91
80
|
const metadata = await getAttachmentDownloadMetadata(connection, attachmentPath);
|
|
92
81
|
if (metadata.id !== attachmentID) {
|
|
93
|
-
throw new DownloadError("
|
|
82
|
+
throw new DownloadError("The download metadata names a different attachment.");
|
|
94
83
|
}
|
|
95
84
|
const { url, secrets } = attachmentUrl(connection, metadata.url);
|
|
96
85
|
diagnosticSecrets.push(...secrets);
|
|
@@ -98,8 +87,9 @@ async function downloadAttachment(connection, attachmentPath, attachmentID, appD
|
|
|
98
87
|
const name = requestedName ??
|
|
99
88
|
downloadName(`${id}-${filenamePart(redact(metadata.name, secrets), "attachment")}`);
|
|
100
89
|
if (redact(name, secrets) !== name || redact(appDataDirectory, secrets) !== appDataDirectory) {
|
|
101
|
-
throw new DownloadError("
|
|
90
|
+
throw new DownloadError("The download destination must not contain reflected credentials or signatures.");
|
|
102
91
|
}
|
|
92
|
+
options.progress?.(`Downloading ${name}…`);
|
|
103
93
|
let type = "application/octet-stream";
|
|
104
94
|
const saved = await publishProfileFile({
|
|
105
95
|
appDataDirectory,
|
|
@@ -119,10 +109,10 @@ async function downloadAttachment(connection, attachmentPath, attachmentID, appD
|
|
|
119
109
|
const length = response.headers.get("content-length");
|
|
120
110
|
const declared = length === null ? undefined : Number(length);
|
|
121
111
|
if (length !== null && (!/^\d+$/.test(length) || !Number.isSafeInteger(declared))) {
|
|
122
|
-
throw new DownloadError("
|
|
112
|
+
throw new DownloadError("The attachment has an invalid Content-Length.");
|
|
123
113
|
}
|
|
124
114
|
if (maxBytes !== undefined && declared !== undefined && declared > maxBytes) {
|
|
125
|
-
throw new DownloadError("
|
|
115
|
+
throw new DownloadError("The attachment exceeds --max-bytes.");
|
|
126
116
|
}
|
|
127
117
|
type = contentType(response.headers.get("content-type") ?? metadata.mimeType, secrets);
|
|
128
118
|
},
|
|
@@ -132,7 +122,7 @@ async function downloadAttachment(connection, attachmentPath, attachmentID, appD
|
|
|
132
122
|
catch (error) {
|
|
133
123
|
if (error instanceof ProfileFileError && error.cause !== undefined)
|
|
134
124
|
error.cause = diagnosticCause(error.cause, diagnosticSecrets);
|
|
135
|
-
throw error instanceof ProfileFileError ? error : new DownloadError("
|
|
125
|
+
throw error instanceof ProfileFileError ? error : new DownloadError("The attachment download failed; check connectivity and the profile's downloads directory.", false, false, { cause: diagnosticCause(error, diagnosticSecrets) });
|
|
136
126
|
}
|
|
137
127
|
}
|
|
138
128
|
//# sourceMappingURL=attachment-download.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-download.js","sourceRoot":"","sources":["../../src/attachment-download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAClH,OAAO,EACL,SAAS,EACT,6BAA6B,EAC7B,SAAS,EAET,WAAW,GACZ,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"attachment-download.js","sourceRoot":"","sources":["../../src/attachment-download.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import { basename } from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { inputFilePath } from "./client.js";
|
|
4
4
|
export async function attachmentForm(filePath) {
|
|
5
|
-
|
|
5
|
+
inputFilePath(filePath);
|
|
6
6
|
let file;
|
|
7
7
|
try {
|
|
8
8
|
if (!(await fs.promises.stat(filePath)).isFile()) {
|
|
@@ -11,7 +11,7 @@ export async function attachmentForm(filePath) {
|
|
|
11
11
|
file = await fs.openAsBlob(filePath);
|
|
12
12
|
}
|
|
13
13
|
catch {
|
|
14
|
-
throw new Error("
|
|
14
|
+
throw new Error("The upload requires a readable regular file.");
|
|
15
15
|
}
|
|
16
16
|
const form = new FormData();
|
|
17
17
|
form.append("upload1", file, basename(filePath));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-form.js","sourceRoot":"","sources":["../../src/attachment-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"attachment-form.js","sourceRoot":"","sources":["../../src/attachment-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxB,IAAI,IAAU,CAAC;IACf,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-values-commands.d.ts","sourceRoot":"","sources":["../../src/bundle-values-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"bundle-values-commands.d.ts","sourceRoot":"","sources":["../../src/bundle-values-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAqBxE,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAyB5D,CAAC"}
|
|
@@ -1,29 +1,32 @@
|
|
|
1
1
|
import { command } from "@eyeauras/cli-factory";
|
|
2
2
|
import { pagedRead, projectedRead } from "./cli-support.js";
|
|
3
3
|
import { getBuildBundle, getBuildValue, getOwnedBundle, getOwnedValue, getVersionBundle, getVersionValue, listBuildBundles, listBuildValues, listOwnedBundles, listOwnedValues, listVersionBundles, listVersionValues, } from "./bundle-values.js";
|
|
4
|
+
import { namedTable } from "./presentation.js";
|
|
5
|
+
const bundleTable = namedTable("BUNDLE", "No bundles.");
|
|
6
|
+
const valueTable = namedTable("VALUE", "No values.");
|
|
4
7
|
export const bundleValuesChildren = [
|
|
5
|
-
command("build", "Inspect build bundles
|
|
6
|
-
pagedRead("list", "List
|
|
7
|
-
projectedRead("get <bundle>", "Show a build bundle
|
|
8
|
-
command("value", "Inspect
|
|
9
|
-
pagedRead("list <bundle>", "List
|
|
10
|
-
projectedRead("get <bundle> <value>", "Show a build value
|
|
8
|
+
command("build", "Inspect build bundles", [
|
|
9
|
+
pagedRead("list", "List build bundles", listBuildBundles, bundleTable),
|
|
10
|
+
projectedRead("get <bundle>", "Show a build bundle", getBuildBundle),
|
|
11
|
+
command("value", "Inspect build values", [
|
|
12
|
+
pagedRead("list <bundle>", "List the bundle's values", listBuildValues, valueTable),
|
|
13
|
+
projectedRead("get <bundle> <value>", "Show a build value", getBuildValue),
|
|
11
14
|
]),
|
|
12
15
|
]),
|
|
13
|
-
command("owned", "Inspect owned-field bundles
|
|
14
|
-
pagedRead("list", "List
|
|
15
|
-
projectedRead("get <bundle>", "Show an owned-field bundle
|
|
16
|
-
command("value", "Inspect
|
|
17
|
-
pagedRead("list <bundle>", "List
|
|
18
|
-
projectedRead("get <bundle> <value>", "Show an owned value
|
|
16
|
+
command("owned", "Inspect owned-field bundles", [
|
|
17
|
+
pagedRead("list", "List owned-field bundles", listOwnedBundles, bundleTable),
|
|
18
|
+
projectedRead("get <bundle>", "Show an owned-field bundle", getOwnedBundle),
|
|
19
|
+
command("value", "Inspect owned values", [
|
|
20
|
+
pagedRead("list <bundle>", "List the bundle's values", listOwnedValues, valueTable),
|
|
21
|
+
projectedRead("get <bundle> <value>", "Show an owned value", getOwnedValue),
|
|
19
22
|
]),
|
|
20
23
|
]),
|
|
21
|
-
command("version", "Inspect version bundles
|
|
22
|
-
pagedRead("list", "List
|
|
23
|
-
projectedRead("get <bundle>", "Show a version bundle
|
|
24
|
-
command("value", "Inspect version values
|
|
25
|
-
pagedRead("list <bundle>", "List
|
|
26
|
-
projectedRead("get <bundle> <value>", "Show a version value
|
|
24
|
+
command("version", "Inspect version bundles", [
|
|
25
|
+
pagedRead("list", "List version bundles", listVersionBundles, bundleTable),
|
|
26
|
+
projectedRead("get <bundle>", "Show a version bundle", getVersionBundle),
|
|
27
|
+
command("value", "Inspect version values", [
|
|
28
|
+
pagedRead("list <bundle>", "List the bundle's values", listVersionValues, valueTable),
|
|
29
|
+
projectedRead("get <bundle> <value>", "Show a version value", getVersionValue),
|
|
27
30
|
]),
|
|
28
31
|
]),
|
|
29
32
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-values-commands.js","sourceRoot":"","sources":["../../src/bundle-values-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"bundle-values-commands.js","sourceRoot":"","sources":["../../src/bundle-values-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACxD,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAiC;IAChE,OAAO,CAAC,OAAO,EAAE,uBAAuB,EAAE;QACxC,SAAS,CAAC,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,WAAW,CAAC;QACtE,aAAa,CAAC,cAAc,EAAE,qBAAqB,EAAE,cAAc,CAAC;QACpE,OAAO,CAAC,OAAO,EAAE,sBAAsB,EAAE;YACvC,SAAS,CAAC,eAAe,EAAE,0BAA0B,EAAE,eAAe,EAAE,UAAU,CAAC;YACnF,aAAa,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,aAAa,CAAC;SAC3E,CAAC;KACH,CAAC;IACF,OAAO,CAAC,OAAO,EAAE,6BAA6B,EAAE;QAC9C,SAAS,CAAC,MAAM,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,WAAW,CAAC;QAC5E,aAAa,CAAC,cAAc,EAAE,4BAA4B,EAAE,cAAc,CAAC;QAC3E,OAAO,CAAC,OAAO,EAAE,sBAAsB,EAAE;YACvC,SAAS,CAAC,eAAe,EAAE,0BAA0B,EAAE,eAAe,EAAE,UAAU,CAAC;YACnF,aAAa,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,aAAa,CAAC;SAC5E,CAAC;KACH,CAAC;IACF,OAAO,CAAC,SAAS,EAAE,yBAAyB,EAAE;QAC5C,SAAS,CAAC,MAAM,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,WAAW,CAAC;QAC1E,aAAa,CAAC,cAAc,EAAE,uBAAuB,EAAE,gBAAgB,CAAC;QACxE,OAAO,CAAC,OAAO,EAAE,wBAAwB,EAAE;YACzC,SAAS,CAAC,eAAe,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,UAAU,CAAC;YACrF,aAAa,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,eAAe,CAAC;SAC/E,CAAC;KACH,CAAC;CACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CommandContext, type CommandDefinition, type GatedTargetCommand, type OptionDefinition } from "@eyeauras/cli-factory";
|
|
1
|
+
import { type CommandContext, type CommandDefinition, type GatedTargetCommand, type HumanView, type OptionDefinition } from "@eyeauras/cli-factory";
|
|
2
2
|
import { type Connection, type IssueSearchOptions } from "./client.js";
|
|
3
3
|
export declare const bodyOptions: readonly OptionDefinition[];
|
|
4
4
|
export declare const fileOption: (flags: string, description: string, required?: boolean) => OptionDefinition;
|
|
@@ -13,10 +13,10 @@ type CommandValues<Syntax extends string> = Syntax extends `${string} ${infer Ar
|
|
|
13
13
|
type ReadOperation<Syntax extends string> = (connection: Connection, ...arguments_: [...CommandValues<Syntax>, IssueSearchOptions]) => unknown;
|
|
14
14
|
type BodyOperation<Syntax extends string> = (connection: Connection, ...arguments_: [...CommandValues<Syntax>, unknown]) => unknown;
|
|
15
15
|
type ProjectedBodyOperation<Syntax extends string> = (connection: Connection, ...arguments_: [...CommandValues<Syntax>, unknown, IssueSearchOptions]) => unknown;
|
|
16
|
-
export declare function pagedRead<const Syntax extends string>(syntax: Syntax, description: string, operation: ReadOperation<Syntax
|
|
17
|
-
export declare function projectedRead<const Syntax extends string>(syntax: Syntax, description: string, operation: ReadOperation<Syntax
|
|
18
|
-
export declare function bodyUpdate<const Syntax extends string>(syntax: Syntax, description: string, operation: BodyOperation<Syntax>, textField?: string): CommandDefinition;
|
|
19
|
-
export declare function projectedBodyUpdate<const Syntax extends string>(syntax: Syntax, description: string, operation: ProjectedBodyOperation<Syntax>, textField?: string): CommandDefinition;
|
|
16
|
+
export declare function pagedRead<const Syntax extends string>(syntax: Syntax, description: string, operation: ReadOperation<Syntax>, view?: HumanView): CommandDefinition;
|
|
17
|
+
export declare function projectedRead<const Syntax extends string>(syntax: Syntax, description: string, operation: ReadOperation<Syntax>, view?: HumanView): CommandDefinition;
|
|
18
|
+
export declare function bodyUpdate<const Syntax extends string>(syntax: Syntax, description: string, operation: BodyOperation<Syntax>, textField?: string, view?: HumanView): CommandDefinition;
|
|
19
|
+
export declare function projectedBodyUpdate<const Syntax extends string>(syntax: Syntax, description: string, operation: ProjectedBodyOperation<Syntax>, textField?: string, view?: HumanView): CommandDefinition;
|
|
20
20
|
export declare function readOptions(options: Record<string, unknown>): IssueSearchOptions;
|
|
21
21
|
export {};
|
|
22
22
|
//# sourceMappingURL=cli-support.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-support.d.ts","sourceRoot":"","sources":["../../src/cli-support.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"cli-support.d.ts","sourceRoot":"","sources":["../../src/cli-support.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli-support.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { readFile, stat } from "node:fs/promises";
|
|
2
2
|
import { integerParser, jsonParser, targetCommands, } from "@eyeauras/cli-factory";
|
|
3
|
-
import {
|
|
3
|
+
import { inputFilePath, youTrackUrl } from "./client.js";
|
|
4
|
+
import { withView } from "./presentation.js";
|
|
4
5
|
export const bodyOptions = [
|
|
5
6
|
{
|
|
6
7
|
flags: "--body <json>",
|
|
7
|
-
description: "
|
|
8
|
+
description: "JSON request body",
|
|
8
9
|
required: true,
|
|
9
|
-
parse: jsonParser("
|
|
10
|
+
parse: jsonParser("The body must be valid JSON."),
|
|
10
11
|
},
|
|
11
12
|
];
|
|
12
13
|
export const fileOption = (flags, description, required = false) => ({
|
|
13
|
-
flags, description, required, parse:
|
|
14
|
+
flags, description, required, parse: inputFilePath,
|
|
14
15
|
});
|
|
15
16
|
/** Read one caller-selected file as strict UTF-8 (initial BOM removed); call only inside an admitted handler. */
|
|
16
17
|
export async function readTextFile(path) {
|
|
@@ -21,20 +22,20 @@ export async function readTextFile(path) {
|
|
|
21
22
|
bytes = await readFile(path);
|
|
22
23
|
}
|
|
23
24
|
catch {
|
|
24
|
-
throw new Error("
|
|
25
|
+
throw new Error("The input file must be a readable regular file.");
|
|
25
26
|
}
|
|
26
27
|
try {
|
|
27
28
|
return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
|
|
28
29
|
}
|
|
29
30
|
catch {
|
|
30
|
-
throw new Error("
|
|
31
|
+
throw new Error("The input file must be valid UTF-8.");
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
/** Required `--body`, plus an optional `--<field>-file` that supplies one narrative property. */
|
|
34
35
|
function bodyInputOptions(textField) {
|
|
35
36
|
return textField === undefined ? bodyOptions : [
|
|
36
37
|
...bodyOptions,
|
|
37
|
-
fileOption(`--${textField}-file <path>`, `UTF-8 file
|
|
38
|
+
fileOption(`--${textField}-file <path>`, `UTF-8 file with the ${textField}`),
|
|
38
39
|
];
|
|
39
40
|
}
|
|
40
41
|
async function bodyInput(options, textField) {
|
|
@@ -43,29 +44,29 @@ async function bodyInput(options, textField) {
|
|
|
43
44
|
if (typeof file !== "string")
|
|
44
45
|
return body;
|
|
45
46
|
if (body === null || typeof body !== "object" || Array.isArray(body))
|
|
46
|
-
throw new Error("
|
|
47
|
+
throw new Error("The body must be a JSON object.");
|
|
47
48
|
if (Object.hasOwn(body, textField)) {
|
|
48
|
-
throw new Error(`
|
|
49
|
+
throw new Error(`Give ${textField} in --body or in --${textField}-file, not both.`);
|
|
49
50
|
}
|
|
50
51
|
return { ...body, [textField]: await readTextFile(file) };
|
|
51
52
|
}
|
|
52
53
|
export const projectionOptions = [
|
|
53
|
-
{ flags: "--fields <projection>", description: "
|
|
54
|
+
{ flags: "--fields <projection>", description: "YouTrack fields projection" },
|
|
54
55
|
];
|
|
55
56
|
export const pageOptions = [
|
|
56
57
|
...projectionOptions,
|
|
57
58
|
{
|
|
58
|
-
flags: "--top <count>", description: "Maximum results
|
|
59
|
+
flags: "--top <count>", description: "Maximum results", defaultValue: 50,
|
|
59
60
|
parse: integerParser({
|
|
60
|
-
min:
|
|
61
|
-
errorMessage: "
|
|
61
|
+
min: 0, max: Number.MAX_SAFE_INTEGER, signed: false,
|
|
62
|
+
errorMessage: "--top must be a nonnegative safe decimal integer.",
|
|
62
63
|
}),
|
|
63
64
|
},
|
|
64
65
|
{
|
|
65
|
-
flags: "--skip <offset>", description: "
|
|
66
|
+
flags: "--skip <offset>", description: "Results to skip", defaultValue: 0,
|
|
66
67
|
parse: integerParser({
|
|
67
68
|
min: 0, max: Number.MAX_SAFE_INTEGER, signed: false,
|
|
68
|
-
errorMessage: "
|
|
69
|
+
errorMessage: "--skip must be a nonnegative integer.",
|
|
69
70
|
}),
|
|
70
71
|
},
|
|
71
72
|
];
|
|
@@ -83,7 +84,7 @@ function positionalNames(syntax) {
|
|
|
83
84
|
const tokens = syntax.split(" ").slice(1);
|
|
84
85
|
const names = tokens.map((token) => /^<([A-Za-z][A-Za-z0-9_-]*)>$/.exec(token)?.[1]);
|
|
85
86
|
if (names.some((name) => name === undefined)) {
|
|
86
|
-
throw new Error("
|
|
87
|
+
throw new Error("Operation helpers require named positional arguments only.");
|
|
87
88
|
}
|
|
88
89
|
return names;
|
|
89
90
|
}
|
|
@@ -91,25 +92,26 @@ function positionalArguments(names, args) {
|
|
|
91
92
|
const values = args;
|
|
92
93
|
return names.map((name) => String(values[name]));
|
|
93
94
|
}
|
|
94
|
-
function operationCommand(leaf, syntax, description, operation, options, operationOptions) {
|
|
95
|
+
function operationCommand(leaf, syntax, description, operation, options, operationOptions, view) {
|
|
95
96
|
const names = positionalNames(syntax);
|
|
96
|
-
|
|
97
|
+
const definition = leaf(syntax, description, async (connection, input) => Reflect.apply(operation, undefined, [
|
|
97
98
|
connection,
|
|
98
99
|
...positionalArguments(names, input.args),
|
|
99
100
|
...await operationOptions(input.options),
|
|
100
101
|
]), options);
|
|
102
|
+
return view === undefined ? definition : withView(view, definition);
|
|
101
103
|
}
|
|
102
|
-
export function pagedRead(syntax, description, operation) {
|
|
103
|
-
return operationCommand(readCommand, syntax, description, operation, pageOptions, (options) => [readOptions(options)]);
|
|
104
|
+
export function pagedRead(syntax, description, operation, view) {
|
|
105
|
+
return operationCommand(readCommand, syntax, description, operation, pageOptions, (options) => [readOptions(options)], view);
|
|
104
106
|
}
|
|
105
|
-
export function projectedRead(syntax, description, operation) {
|
|
106
|
-
return operationCommand(readCommand, syntax, description, operation, projectionOptions, (options) => [readOptions(options)]);
|
|
107
|
+
export function projectedRead(syntax, description, operation, view) {
|
|
108
|
+
return operationCommand(readCommand, syntax, description, operation, projectionOptions, (options) => [readOptions(options)], view);
|
|
107
109
|
}
|
|
108
|
-
export function bodyUpdate(syntax, description, operation, textField) {
|
|
109
|
-
return operationCommand(updateCommand, syntax, description, operation, bodyInputOptions(textField), async (options) => [await bodyInput(options, textField)]);
|
|
110
|
+
export function bodyUpdate(syntax, description, operation, textField, view) {
|
|
111
|
+
return operationCommand(updateCommand, syntax, description, operation, bodyInputOptions(textField), async (options) => [await bodyInput(options, textField)], view);
|
|
110
112
|
}
|
|
111
|
-
export function projectedBodyUpdate(syntax, description, operation, textField) {
|
|
112
|
-
return operationCommand(updateCommand, syntax, description, operation, [...bodyInputOptions(textField), ...projectionOptions], async (options) => [await bodyInput(options, textField), readOptions(options)]);
|
|
113
|
+
export function projectedBodyUpdate(syntax, description, operation, textField, view) {
|
|
114
|
+
return operationCommand(updateCommand, syntax, description, operation, [...bodyInputOptions(textField), ...projectionOptions], async (options) => [await bodyInput(options, textField), readOptions(options)], view);
|
|
113
115
|
}
|
|
114
116
|
export function readOptions(options) {
|
|
115
117
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-support.js","sourceRoot":"","sources":["../../src/cli-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,
|
|
1
|
+
{"version":3,"file":"cli-support.js","sourceRoot":"","sources":["../../src/cli-support.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AA0E/B,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,cAAc,CAgJtE"}
|