@eyeauras/youtrack-cli 0.5.6 → 0.6.0
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 +78 -72
- 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 -13
- package/dist/src/articles-commands.js.map +1 -1
- package/dist/src/articles.d.ts +3 -3
- package/dist/src/articles.d.ts.map +1 -1
- package/dist/src/articles.js +19 -19
- 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 +10 -9
- package/dist/src/attachment-download-commands.js.map +1 -1
- package/dist/src/attachment-download.d.ts +7 -3
- package/dist/src/attachment-download.d.ts.map +1 -1
- package/dist/src/attachment-download.js +33 -40
- 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 +55 -39
- 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 +3 -1
- package/dist/src/issue-batch.d.ts.map +1 -1
- package/dist/src/issue-batch.js +19 -14
- 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
package/dist/src/articles.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { saveFile } from "@eyeauras/cli-factory";
|
|
2
2
|
import { encodedID, fields, mutate, mutationBody, narrative, nullableText, readCollectionAt, readObjectAt, } from "./client.js";
|
|
3
3
|
const articleListFields = "id,idReadable,summary,project(id,shortName),updated";
|
|
4
4
|
const articleDetailFields = `${articleListFields},content,parentArticle(id,idReadable),created`;
|
|
@@ -13,48 +13,48 @@ export const getArticle = readObjectAt(articlePath, articleDetailFields);
|
|
|
13
13
|
* Save the scrubbed article content as a profile-owned file for a fetch/edit/update workflow.
|
|
14
14
|
* `redacted` warns that URL placeholders would replace the originals if the file were sent back.
|
|
15
15
|
*/
|
|
16
|
-
export async function exportArticle(connection, articleID,
|
|
16
|
+
export async function exportArticle(connection, articleID, cwd, output) {
|
|
17
17
|
const article = await getArticle(connection, articleID, { fields: "id,idReadable,content" });
|
|
18
18
|
const id = typeof article.idReadable === "string" ? article.idReadable : article.id;
|
|
19
19
|
if (typeof id !== "string" || !id || (article.content !== null && typeof article.content !== "string")) {
|
|
20
|
-
throw new Error("
|
|
20
|
+
throw new Error("Invalid article for export from YouTrack.");
|
|
21
21
|
}
|
|
22
|
-
const saved = await
|
|
23
|
-
|
|
24
|
-
name:
|
|
22
|
+
const saved = await saveFile({
|
|
23
|
+
cwd,
|
|
24
|
+
name: `${id}.md`,
|
|
25
|
+
output,
|
|
25
26
|
content: article.content ?? "",
|
|
26
27
|
signal: connection.signal,
|
|
27
28
|
});
|
|
28
29
|
return { id, ...saved, redacted: article.content?.includes("[redacted]") ?? false };
|
|
29
30
|
}
|
|
30
31
|
export async function createArticle(connection, input, options = {}) {
|
|
31
|
-
const body = mutationBody(input
|
|
32
|
-
const project = mutationBody(body.project
|
|
32
|
+
const body = mutationBody(input);
|
|
33
|
+
const project = mutationBody(body.project);
|
|
33
34
|
return mutate(connection, "api/articles", {
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
...body,
|
|
36
|
+
project: { ...project, id: narrative(project.id, "project.id") },
|
|
37
|
+
...(Object.hasOwn(body, "summary") ? { summary: nullableText(body.summary, "summary") } : {}),
|
|
36
38
|
...(Object.hasOwn(body, "content") ? { content: nullableText(body.content, "article content") } : {}),
|
|
37
39
|
}, fields(options, articleWriteFields));
|
|
38
40
|
}
|
|
39
41
|
export async function updateArticle(connection, articleID, input, options = {}) {
|
|
40
|
-
const body = mutationBody(input
|
|
41
|
-
if (Object.keys(body).length === 0) {
|
|
42
|
-
throw new Error("YouTrack article update requires summary or content.");
|
|
43
|
-
}
|
|
42
|
+
const body = mutationBody(input);
|
|
44
43
|
return mutate(connection, articlePath(articleID), {
|
|
45
|
-
...
|
|
44
|
+
...body,
|
|
45
|
+
...(Object.hasOwn(body, "summary") ? { summary: nullableText(body.summary, "summary") } : {}),
|
|
46
46
|
...(Object.hasOwn(body, "content") ? { content: nullableText(body.content, "article content") } : {}),
|
|
47
47
|
}, fields(options, articleWriteFields));
|
|
48
48
|
}
|
|
49
49
|
export const listArticleComments = readCollectionAt((articleID) => `${articlePath(articleID)}/comments`, articleCommentFields);
|
|
50
50
|
export const getArticleComment = readObjectAt((articleID, commentID) => `${articlePath(articleID)}/comments/${encodedID(commentID, "comment ID")}`, articleCommentFields);
|
|
51
51
|
export async function addArticleComment(connection, articleID, input, options = {}) {
|
|
52
|
-
const body = mutationBody(input
|
|
53
|
-
return mutate(connection, `${articlePath(articleID)}/comments`, { text:
|
|
52
|
+
const body = mutationBody(input);
|
|
53
|
+
return mutate(connection, `${articlePath(articleID)}/comments`, { ...body, text: nullableText(body.text, "text") }, fields(options, articleCommentFields));
|
|
54
54
|
}
|
|
55
55
|
export async function updateArticleComment(connection, articleID, commentID, input, options = {}) {
|
|
56
|
-
const body = mutationBody(input
|
|
57
|
-
return mutate(connection, `${articlePath(articleID)}/comments/${encodedID(commentID, "comment ID")}`, { text:
|
|
56
|
+
const body = mutationBody(input);
|
|
57
|
+
return mutate(connection, `${articlePath(articleID)}/comments/${encodedID(commentID, "comment ID")}`, { ...body, ...(Object.hasOwn(body, "text") ? { text: nullableText(body.text, "text") } : {}) }, fields(options, articleCommentFields));
|
|
58
58
|
}
|
|
59
59
|
export const listProjectArticles = readCollectionAt((projectID) => `api/admin/projects/${encodedID(projectID, "project ID")}/articles`, articleListFields);
|
|
60
60
|
//# sourceMappingURL=articles.js.map
|
package/dist/src/articles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articles.js","sourceRoot":"","sources":["../../src/articles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"articles.js","sourceRoot":"","sources":["../../src/articles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-download-commands.d.ts","sourceRoot":"","sources":["../../src/attachment-download-commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attachment-download-commands.d.ts","sourceRoot":"","sources":["../../src/attachment-download-commands.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,yBAAyB,mDAWpC,CAAC;AAEH,eAAO,MAAM,gCAAgC,mDAW3C,CAAC"}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { readCommand } from "./cli-support.js";
|
|
2
|
-
import { downloadArticleAttachment, downloadIssueAttachment, downloadLimit,
|
|
2
|
+
import { downloadArticleAttachment, downloadIssueAttachment, downloadLimit, } from "./attachment-download.js";
|
|
3
|
+
import { savedAttachment, withView } from "./presentation.js";
|
|
3
4
|
const downloadOptions = [
|
|
4
5
|
{
|
|
5
|
-
flags: "--
|
|
6
|
-
description: "
|
|
7
|
-
parse: downloadName,
|
|
6
|
+
flags: "--output <path>",
|
|
7
|
+
description: "Save to a relative or absolute path",
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
flags: "--max-bytes <n>",
|
|
11
|
-
description: "
|
|
11
|
+
description: "Fail above this many bytes",
|
|
12
12
|
parse: downloadLimit,
|
|
13
13
|
},
|
|
14
14
|
];
|
|
15
|
-
function downloadInput(options) {
|
|
15
|
+
function downloadInput(options, progress) {
|
|
16
16
|
return {
|
|
17
|
-
|
|
17
|
+
progress,
|
|
18
|
+
...(typeof options.output === "string" ? { output: options.output } : {}),
|
|
18
19
|
...(typeof options.maxBytes === "number" ? { maxBytes: options.maxBytes } : {}),
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
|
-
export const attachmentDownloadCommand = readCommand("download <issueID> <attachmentID>", "Download
|
|
22
|
-
export const articleAttachmentDownloadCommand = readCommand("download <article> <attachment>", "Download
|
|
22
|
+
export const attachmentDownloadCommand = withView(savedAttachment, readCommand("download <issueID> <attachmentID>", "Download an attachment", async (connection, { args, options }, context) => downloadIssueAttachment(connection, args.issueID, args.attachmentID, context.cwd, downloadInput(options, context.progress)), downloadOptions));
|
|
23
|
+
export const articleAttachmentDownloadCommand = withView(savedAttachment, readCommand("download <article> <attachment>", "Download an attachment", async (connection, { args, options }, context) => downloadArticleAttachment(connection, args.article, args.attachment, context.cwd, downloadInput(options, context.progress)), downloadOptions));
|
|
23
24
|
//# 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,GAEd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,eAAe,GAAG;IACtB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,qCAAqC;KACnD;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,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,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,GAAG,EACX,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,GAAG,EACX,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CACzC,EACD,eAAe,CAChB,CAAC,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { type Connection } from "./client.js";
|
|
2
|
+
/** User output path and optional streaming budget; no profile storage ownership. */
|
|
2
3
|
export interface DownloadOptions {
|
|
3
|
-
|
|
4
|
+
output?: string;
|
|
4
5
|
maxBytes?: number;
|
|
6
|
+
progress?: (message: string) => void;
|
|
5
7
|
}
|
|
6
8
|
export interface AttachmentDownloadResult {
|
|
7
9
|
id: string;
|
|
@@ -12,6 +14,8 @@ export interface AttachmentDownloadResult {
|
|
|
12
14
|
}
|
|
13
15
|
export declare function downloadName(value: string): string;
|
|
14
16
|
export declare function downloadLimit(value: number | string): number;
|
|
15
|
-
|
|
16
|
-
export declare function
|
|
17
|
+
/** Download using captured cwd, metadata basename and optional explicit output path. */
|
|
18
|
+
export declare function downloadIssueAttachment(connection: Connection, issueID: string, attachmentID: string, cwd: string, options?: DownloadOptions): Promise<AttachmentDownloadResult>;
|
|
19
|
+
/** Download using captured cwd, metadata basename and optional explicit output path. */
|
|
20
|
+
export declare function downloadArticleAttachment(connection: Connection, articleID: string, attachmentID: string, cwd: string, options?: DownloadOptions): Promise<AttachmentDownloadResult>;
|
|
17
21
|
//# sourceMappingURL=attachment-download.d.ts.map
|
|
@@ -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,
|
|
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,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,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,wFAAwF;AACxF,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAGnC;AAED,wFAAwF;AACxF,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAGnC"}
|
|
@@ -1,50 +1,39 @@
|
|
|
1
|
-
import { diagnosticCause, fetchWithRedirects,
|
|
1
|
+
import { diagnosticCause, fetchWithRedirects, FilePublicationError, publishFile } from "@eyeauras/cli-factory";
|
|
2
2
|
import { encodedID, getAttachmentDownloadMetadata, issuePath, youTrackUrl, } from "./client.js";
|
|
3
|
-
class DownloadError extends
|
|
3
|
+
class DownloadError extends FilePublicationError {
|
|
4
4
|
}
|
|
5
5
|
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,38 +61,42 @@ 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
|
+
/** Download using captured cwd, metadata basename and optional explicit output path. */
|
|
68
|
+
export async function downloadIssueAttachment(connection, issueID, attachmentID, cwd, options = {}) {
|
|
79
69
|
const path = `${issuePath(issueID)}/attachments/${encodedID(attachmentID, "attachment ID")}`;
|
|
80
|
-
return downloadAttachment(connection, path, attachmentID,
|
|
70
|
+
return downloadAttachment(connection, path, attachmentID, cwd, options);
|
|
81
71
|
}
|
|
82
|
-
|
|
72
|
+
/** Download using captured cwd, metadata basename and optional explicit output path. */
|
|
73
|
+
export async function downloadArticleAttachment(connection, articleID, attachmentID, cwd, options = {}) {
|
|
83
74
|
const path = `api/articles/${encodedID(articleID, "article ID")}/attachments/${encodedID(attachmentID, "attachment ID")}`;
|
|
84
|
-
return downloadAttachment(connection, path, attachmentID,
|
|
75
|
+
return downloadAttachment(connection, path, attachmentID, cwd, options);
|
|
85
76
|
}
|
|
86
|
-
async function downloadAttachment(connection, attachmentPath, attachmentID,
|
|
87
|
-
const requestedName = options.
|
|
77
|
+
async function downloadAttachment(connection, attachmentPath, attachmentID, cwd, options) {
|
|
78
|
+
const requestedName = options.output;
|
|
88
79
|
const maxBytes = options.maxBytes === undefined ? undefined : downloadLimit(options.maxBytes);
|
|
89
80
|
const diagnosticSecrets = [connection.token];
|
|
90
81
|
try {
|
|
91
82
|
const metadata = await getAttachmentDownloadMetadata(connection, attachmentPath);
|
|
92
83
|
if (metadata.id !== attachmentID) {
|
|
93
|
-
throw new DownloadError("
|
|
84
|
+
throw new DownloadError("The download metadata names a different attachment.");
|
|
94
85
|
}
|
|
95
86
|
const { url, secrets } = attachmentUrl(connection, metadata.url);
|
|
96
87
|
diagnosticSecrets.push(...secrets);
|
|
97
88
|
const id = filenamePart(redact(metadata.id, secrets), "attachment");
|
|
98
89
|
const name = requestedName ??
|
|
99
|
-
downloadName(
|
|
100
|
-
if (redact(name, secrets) !== name || redact(
|
|
101
|
-
throw new DownloadError("
|
|
90
|
+
downloadName(metadata.name);
|
|
91
|
+
if (redact(name, secrets) !== name || redact(cwd, secrets) !== cwd) {
|
|
92
|
+
throw new DownloadError("The download destination must not contain reflected credentials or signatures.");
|
|
102
93
|
}
|
|
94
|
+
options.progress?.(`Downloading ${name}…`);
|
|
103
95
|
let type = "application/octet-stream";
|
|
104
|
-
const saved = await
|
|
105
|
-
|
|
106
|
-
name,
|
|
96
|
+
const saved = await publishFile({
|
|
97
|
+
cwd,
|
|
98
|
+
name: metadata.name,
|
|
99
|
+
output: requestedName,
|
|
107
100
|
maxBytes,
|
|
108
101
|
signal: connection.signal,
|
|
109
102
|
openResponse: () => fetchWithRedirects(connection.fetch ?? globalThis.fetch, url, {
|
|
@@ -119,10 +112,10 @@ async function downloadAttachment(connection, attachmentPath, attachmentID, appD
|
|
|
119
112
|
const length = response.headers.get("content-length");
|
|
120
113
|
const declared = length === null ? undefined : Number(length);
|
|
121
114
|
if (length !== null && (!/^\d+$/.test(length) || !Number.isSafeInteger(declared))) {
|
|
122
|
-
throw new DownloadError("
|
|
115
|
+
throw new DownloadError("The attachment has an invalid Content-Length.");
|
|
123
116
|
}
|
|
124
117
|
if (maxBytes !== undefined && declared !== undefined && declared > maxBytes) {
|
|
125
|
-
throw new DownloadError("
|
|
118
|
+
throw new DownloadError("The attachment exceeds --max-bytes.");
|
|
126
119
|
}
|
|
127
120
|
type = contentType(response.headers.get("content-type") ?? metadata.mimeType, secrets);
|
|
128
121
|
},
|
|
@@ -130,9 +123,9 @@ async function downloadAttachment(connection, attachmentPath, attachmentID, appD
|
|
|
130
123
|
return { id, name, path: saved.path, bytes: saved.bytes, contentType: type };
|
|
131
124
|
}
|
|
132
125
|
catch (error) {
|
|
133
|
-
if (error instanceof
|
|
126
|
+
if (error instanceof FilePublicationError && error.cause !== undefined)
|
|
134
127
|
error.cause = diagnosticCause(error.cause, diagnosticSecrets);
|
|
135
|
-
throw error instanceof
|
|
128
|
+
throw error instanceof FilePublicationError ? error : new DownloadError("The attachment download failed; check connectivity and the output directory.", false, false, { cause: diagnosticCause(error, diagnosticSecrets) });
|
|
136
129
|
}
|
|
137
130
|
}
|
|
138
131
|
//# 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,
|
|
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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"}
|