@mx-space/cli 0.1.0 → 0.2.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 +106 -29
- package/ROADMAP.md +4 -3
- package/dist/{auth-DIFZzoMm.mjs → auth-Duj8jJn9.mjs} +3 -3
- package/dist/{auth-DIFZzoMm.mjs.map → auth-Duj8jJn9.mjs.map} +1 -1
- package/dist/bin/mxs.d.mts +3 -1
- package/dist/bin/mxs.mjs +250 -48
- package/dist/bin/mxs.mjs.map +1 -1
- package/dist/config-store-DmwX2iZU.mjs +165 -0
- package/dist/config-store-DmwX2iZU.mjs.map +1 -0
- package/dist/{create-DjlRHPXy.mjs → create-Cqt1rrSZ.mjs} +5 -5
- package/dist/{create-DjlRHPXy.mjs.map → create-Cqt1rrSZ.mjs.map} +1 -1
- package/dist/{create-DT1l2hue.mjs → create-D7cR9xcN.mjs} +3 -3
- package/dist/{create-DT1l2hue.mjs.map → create-D7cR9xcN.mjs.map} +1 -1
- package/dist/{create-B2AOQL1e.mjs → create-DAt3FXLf.mjs} +5 -5
- package/dist/{create-B2AOQL1e.mjs.map → create-DAt3FXLf.mjs.map} +1 -1
- package/dist/{create-CwjGcv2n.mjs → create-_H8YO7ze.mjs} +3 -3
- package/dist/{create-CwjGcv2n.mjs.map → create-_H8YO7ze.mjs.map} +1 -1
- package/dist/{create-Dz6rJJSS.mjs → create-kYlrs4d6.mjs} +4 -4
- package/dist/{create-Dz6rJJSS.mjs.map → create-kYlrs4d6.mjs.map} +1 -1
- package/dist/{delete-BrY5zJ6S.mjs → delete-DVNebWqO.mjs} +4 -4
- package/dist/{delete-BrY5zJ6S.mjs.map → delete-DVNebWqO.mjs.map} +1 -1
- package/dist/{delete-B4dGrrus.mjs → delete-D_NRteuq.mjs} +4 -4
- package/dist/{delete-B4dGrrus.mjs.map → delete-D_NRteuq.mjs.map} +1 -1
- package/dist/{delete-BH6ZngTz.mjs → delete-DmKPzzsQ.mjs} +4 -4
- package/dist/{delete-BH6ZngTz.mjs.map → delete-DmKPzzsQ.mjs.map} +1 -1
- package/dist/{delete-CaG2d_xt.mjs → delete-ZIjkquZj.mjs} +4 -4
- package/dist/{delete-CaG2d_xt.mjs.map → delete-ZIjkquZj.mjs.map} +1 -1
- package/dist/{delete-YzRliRn8.mjs → delete-aCVSWuKi.mjs} +4 -4
- package/dist/{delete-YzRliRn8.mjs.map → delete-aCVSWuKi.mjs.map} +1 -1
- package/dist/{onboarding-640IldLz.mjs → dist-DJF1Ntdn.mjs} +95 -173
- package/dist/dist-DJF1Ntdn.mjs.map +1 -0
- package/dist/{document-output-BVB8emLt.mjs → document-output-BtY8T7eY.mjs} +59 -4
- package/dist/document-output-BtY8T7eY.mjs.map +1 -0
- package/dist/{edit-DLDw_ZWX.mjs → edit-BWX7X4sy.mjs} +8 -8
- package/dist/{edit-DLDw_ZWX.mjs.map → edit-BWX7X4sy.mjs.map} +1 -1
- package/dist/{edit-Bb0Ze4w6.mjs → edit-CHCuoiWT.mjs} +9 -9
- package/dist/{edit-Bb0Ze4w6.mjs.map → edit-CHCuoiWT.mjs.map} +1 -1
- package/dist/{edit-z55ofr1S.mjs → edit-DjRE8Gk-.mjs} +4 -4
- package/dist/{edit-z55ofr1S.mjs.map → edit-DjRE8Gk-.mjs.map} +1 -1
- package/dist/{edit-BeFmC3XD.mjs → edit-R6H5RtWd.mjs} +8 -8
- package/dist/{edit-BeFmC3XD.mjs.map → edit-R6H5RtWd.mjs.map} +1 -1
- package/dist/{editor-xrF-j3UE.mjs → editor-Dywlo4-8.mjs} +2 -2
- package/dist/{editor-xrF-j3UE.mjs.map → editor-Dywlo4-8.mjs.map} +1 -1
- package/dist/{envelope-overlays-DPAlMNW1.mjs → envelope-overlays-D1gmGVe5.mjs} +2 -2
- package/dist/{envelope-overlays-DPAlMNW1.mjs.map → envelope-overlays-D1gmGVe5.mjs.map} +1 -1
- package/dist/get-CiLnUGHw.mjs +14 -0
- package/dist/get-CiLnUGHw.mjs.map +1 -0
- package/dist/{get-2qjq0wgG.mjs → get-CkBqVyGi.mjs} +8 -8
- package/dist/get-CkBqVyGi.mjs.map +1 -0
- package/dist/{get-CRR13lgj.mjs → get-DNdde54z.mjs} +3 -3
- package/dist/{get-CRR13lgj.mjs.map → get-DNdde54z.mjs.map} +1 -1
- package/dist/get-DbH58EkF.mjs +14 -0
- package/dist/get-DbH58EkF.mjs.map +1 -0
- package/dist/get-IQQv4_rP.mjs +10 -0
- package/dist/get-IQQv4_rP.mjs.map +1 -0
- package/dist/get-xtByxURm.mjs +13 -0
- package/dist/get-xtByxURm.mjs.map +1 -0
- package/dist/index.d.mts +33 -4
- package/dist/index.mjs +10 -10
- package/dist/list-Bnlg9SfR.mjs +10 -0
- package/dist/list-Bnlg9SfR.mjs.map +1 -0
- package/dist/{list-DY-tPNG-.mjs → list-C6z1iw4a.mjs} +3 -3
- package/dist/{list-DY-tPNG-.mjs.map → list-C6z1iw4a.mjs.map} +1 -1
- package/dist/list-CD9j9did.mjs +10 -0
- package/dist/list-CD9j9did.mjs.map +1 -0
- package/dist/list-DVMtBAHG.mjs +15 -0
- package/dist/list-DVMtBAHG.mjs.map +1 -0
- package/dist/list-DW5TcGxS.mjs +10 -0
- package/dist/list-DW5TcGxS.mjs.map +1 -0
- package/dist/list-lmpHwOQx.mjs +14 -0
- package/dist/list-lmpHwOQx.mjs.map +1 -0
- package/dist/{litexml-codec-CDoRloiR.mjs → litexml-codec-D-1oggXL.mjs} +3 -3
- package/dist/{litexml-codec-CDoRloiR.mjs.map → litexml-codec-D-1oggXL.mjs.map} +1 -1
- package/dist/{login-CLOJ-fTJ.mjs → login-D-SoeV01.mjs} +20 -9
- package/dist/{login-CLOJ-fTJ.mjs.map → login-D-SoeV01.mjs.map} +1 -1
- package/dist/logout-D63ZU-1Q.mjs +17 -0
- package/dist/logout-D63ZU-1Q.mjs.map +1 -0
- package/dist/ls-Bz3BCcwU.mjs +32 -0
- package/dist/ls-Bz3BCcwU.mjs.map +1 -0
- package/dist/mark-N-IpKK17.mjs +28 -0
- package/dist/mark-N-IpKK17.mjs.map +1 -0
- package/dist/onboarding-FPMcuqn8.mjs +212 -0
- package/dist/onboarding-FPMcuqn8.mjs.map +1 -0
- package/dist/{output-CTnO1lYt.d.mts → output-DQMhacTo.d.mts} +1 -1
- package/dist/output-Dg8PISJM.mjs +299 -0
- package/dist/output-Dg8PISJM.mjs.map +1 -0
- package/dist/{payload-CN11pUto.mjs → payload-CjlZ9CeZ.mjs} +3 -3
- package/dist/{payload-CN11pUto.mjs.map → payload-CjlZ9CeZ.mjs.map} +1 -1
- package/dist/{publish-pRBfTJfe.mjs → publish-C9O5obZ6.mjs} +4 -4
- package/dist/{publish-pRBfTJfe.mjs.map → publish-C9O5obZ6.mjs.map} +1 -1
- package/dist/{publish-DkTYB-eK.mjs → publish-yuM6YGSb.mjs} +4 -4
- package/dist/{publish-DkTYB-eK.mjs.map → publish-yuM6YGSb.mjs.map} +1 -1
- package/dist/{resolve-Bp1AfBmM.mjs → resolve-B4-fMQ6I.mjs} +3 -3
- package/dist/{resolve-Bp1AfBmM.mjs.map → resolve-B4-fMQ6I.mjs.map} +1 -1
- package/dist/{resolve-BogJOR7R.mjs → resolve-DIu9N2sD.mjs} +2 -2
- package/dist/{resolve-BogJOR7R.mjs.map → resolve-DIu9N2sD.mjs.map} +1 -1
- package/dist/{resolve-CyjMlaoJ.mjs → resolve-TBYXBS4i.mjs} +3 -3
- package/dist/{resolve-CyjMlaoJ.mjs.map → resolve-TBYXBS4i.mjs.map} +1 -1
- package/dist/{resolve-Bw5Po9yK.mjs → resolve-U6RJ3AnQ.mjs} +3 -3
- package/dist/{resolve-Bw5Po9yK.mjs.map → resolve-U6RJ3AnQ.mjs.map} +1 -1
- package/dist/{resolve-helpers-CahPoJ0Y.mjs → resolve-helpers-C7PIVziv.mjs} +2 -2
- package/dist/{resolve-helpers-CahPoJ0Y.mjs.map → resolve-helpers-C7PIVziv.mjs.map} +1 -1
- package/dist/rm-D9GvLhhF.mjs +32 -0
- package/dist/rm-D9GvLhhF.mjs.map +1 -0
- package/dist/{set-BEGQz2si.mjs → set-jD79hpuF.mjs} +3 -3
- package/dist/{set-BEGQz2si.mjs.map → set-jD79hpuF.mjs.map} +1 -1
- package/dist/{shared-D0HVBDHI.mjs → shared-SryY2QPY.mjs} +20 -9
- package/dist/shared-SryY2QPY.mjs.map +1 -0
- package/dist/show-C5Zk0tcK.mjs +38 -0
- package/dist/show-C5Zk0tcK.mjs.map +1 -0
- package/dist/status-evZpPR3N.mjs +22 -0
- package/dist/status-evZpPR3N.mjs.map +1 -0
- package/dist/{update-BMZQPOvR.mjs → update--7NPzL_w.mjs} +4 -4
- package/dist/{update-BMZQPOvR.mjs.map → update--7NPzL_w.mjs.map} +1 -1
- package/dist/{update-BXz0l7Lz.mjs → update-0q5hxJFh.mjs} +5 -5
- package/dist/{update-BXz0l7Lz.mjs.map → update-0q5hxJFh.mjs.map} +1 -1
- package/dist/{update-Dx6AF8tf.mjs → update-CPJXcOg_.mjs} +6 -6
- package/dist/{update-Dx6AF8tf.mjs.map → update-CPJXcOg_.mjs.map} +1 -1
- package/dist/{update-q66TLS38.mjs → update-DN78pXGZ.mjs} +4 -4
- package/dist/{update-q66TLS38.mjs.map → update-DN78pXGZ.mjs.map} +1 -1
- package/dist/{update-B9ynFCdZ.mjs → update-hhAcAz_M.mjs} +6 -6
- package/dist/{update-B9ynFCdZ.mjs.map → update-hhAcAz_M.mjs.map} +1 -1
- package/dist/use-CHDCEe38.mjs +28 -0
- package/dist/use-CHDCEe38.mjs.map +1 -0
- package/dist/{whoami-CTkctOEd.mjs → whoami-BHDYyY5D.mjs} +4 -5
- package/dist/whoami-BHDYyY5D.mjs.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-hT5z_Zn9.mjs +0 -35
- package/dist/config-store-DIu7x0ao.mjs +0 -121
- package/dist/config-store-DIu7x0ao.mjs.map +0 -1
- package/dist/document-output-BVB8emLt.mjs.map +0 -1
- package/dist/get-2qjq0wgG.mjs.map +0 -1
- package/dist/get-BGAk1Zmv.mjs +0 -14
- package/dist/get-BGAk1Zmv.mjs.map +0 -1
- package/dist/get-ClkpDBTL.mjs +0 -13
- package/dist/get-ClkpDBTL.mjs.map +0 -1
- package/dist/get-DJfUJ3sP.mjs +0 -10
- package/dist/get-DJfUJ3sP.mjs.map +0 -1
- package/dist/get-DiqaQvoS.mjs +0 -14
- package/dist/get-DiqaQvoS.mjs.map +0 -1
- package/dist/list-BYzhflDg.mjs +0 -14
- package/dist/list-BYzhflDg.mjs.map +0 -1
- package/dist/list-DlQSkbqx.mjs +0 -10
- package/dist/list-DlQSkbqx.mjs.map +0 -1
- package/dist/list-DsrA5wIz.mjs +0 -15
- package/dist/list-DsrA5wIz.mjs.map +0 -1
- package/dist/list-Fp4nKfQb.mjs +0 -10
- package/dist/list-Fp4nKfQb.mjs.map +0 -1
- package/dist/list-s_tloiEX.mjs +0 -10
- package/dist/list-s_tloiEX.mjs.map +0 -1
- package/dist/logout-v8ihxsim.mjs +0 -11
- package/dist/logout-v8ihxsim.mjs.map +0 -1
- package/dist/onboarding-640IldLz.mjs.map +0 -1
- package/dist/output-BM7aBFwt.mjs +0 -120
- package/dist/output-BM7aBFwt.mjs.map +0 -1
- package/dist/shared-D0HVBDHI.mjs.map +0 -1
- package/dist/status-LXrN9fI-.mjs +0 -22
- package/dist/status-LXrN9fI-.mjs.map +0 -1
- package/dist/whoami-CTkctOEd.mjs.map +0 -1
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as serializeFromLexical } from "./litexml-codec-
|
|
1
|
+
import { C as MxsError, i as emitSuccess } from "./output-Dg8PISJM.mjs";
|
|
2
|
+
import { i as serializeFromLexical } from "./litexml-codec-D-1oggXL.mjs";
|
|
3
3
|
//#region src/core/document-output.ts
|
|
4
|
+
const POST_LIST_OUTPUT_MODES = new Set([
|
|
5
|
+
"pretty-json",
|
|
6
|
+
"json",
|
|
7
|
+
"readable",
|
|
8
|
+
"llm"
|
|
9
|
+
]);
|
|
4
10
|
const DOCUMENT_OUTPUT_MODES = new Set([
|
|
5
11
|
"pretty-json",
|
|
6
12
|
"json",
|
|
@@ -23,6 +29,19 @@ function emitDocument(kind, data, opts) {
|
|
|
23
29
|
const rendered = mode === "envelope" ? renderDocumentEnvelope(kind, doc) : renderReadableDocument(kind, doc);
|
|
24
30
|
process.stdout.write(`${rendered}\n`);
|
|
25
31
|
}
|
|
32
|
+
function emitPostList(data, opts) {
|
|
33
|
+
const mode = opts.output ?? "pretty-json";
|
|
34
|
+
if (!POST_LIST_OUTPUT_MODES.has(mode)) throw new MxsError({
|
|
35
|
+
code: "validation.failed",
|
|
36
|
+
message: `unsupported --output value for post list: ${mode}`,
|
|
37
|
+
hint: "use --output pretty-json, json, readable, or llm"
|
|
38
|
+
});
|
|
39
|
+
if (opts.json || mode === "json" || mode === "pretty-json") {
|
|
40
|
+
emitSuccess(data, opts);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
process.stdout.write(`${renderPostList(data)}\n`);
|
|
44
|
+
}
|
|
26
45
|
function renderReadableDocument(kind, data) {
|
|
27
46
|
const doc = asRecord(data);
|
|
28
47
|
const lines = [kind];
|
|
@@ -37,6 +56,42 @@ function renderReadableDocument(kind, data) {
|
|
|
37
56
|
if (content.body) lines.push("", `content_format: ${content.format}`, "", "content:", content.body);
|
|
38
57
|
return lines.join("\n");
|
|
39
58
|
}
|
|
59
|
+
function renderPostList(data) {
|
|
60
|
+
const payload = asRecord(data);
|
|
61
|
+
const rows = Array.isArray(payload.data) ? payload.data : Array.isArray(data) ? data : [];
|
|
62
|
+
const pagination = asRecord(first(payload, "pagination"));
|
|
63
|
+
const lines = ["posts"];
|
|
64
|
+
if (rows.length > 0) lines.push(`count: ${rows.length}`);
|
|
65
|
+
else lines.push("count: 0");
|
|
66
|
+
const page = first(pagination, "page", "currentPage");
|
|
67
|
+
const size = first(pagination, "size", "pageSize");
|
|
68
|
+
const total = first(pagination, "total", "totalCount");
|
|
69
|
+
if (page !== void 0) lines.push(`page: ${formatScalar(page)}`);
|
|
70
|
+
if (size !== void 0) lines.push(`size: ${formatScalar(size)}`);
|
|
71
|
+
if (total !== void 0) lines.push(`total: ${formatScalar(total)}`);
|
|
72
|
+
rows.forEach((row, index) => {
|
|
73
|
+
const doc = asRecord(row);
|
|
74
|
+
lines.push("", `post ${index + 1}:`);
|
|
75
|
+
const fields = [
|
|
76
|
+
["id", first(doc, "id")],
|
|
77
|
+
["title", first(doc, "title")],
|
|
78
|
+
["slug", first(doc, "slug")],
|
|
79
|
+
["state", publishState(doc)],
|
|
80
|
+
["category", relationLabel(first(doc, "category"))],
|
|
81
|
+
["tags", first(doc, "tags")],
|
|
82
|
+
["summary", first(doc, "summary")],
|
|
83
|
+
["created_at", first(doc, "created_at", "createdAt")],
|
|
84
|
+
["modified_at", first(doc, "modified_at", "modifiedAt")],
|
|
85
|
+
["source_lang", first(doc, "source_lang", "sourceLang")],
|
|
86
|
+
["translated", first(doc, "is_translated", "isTranslated")]
|
|
87
|
+
];
|
|
88
|
+
for (const [key, value] of fields) {
|
|
89
|
+
if (value === void 0 || value === null || value === "") continue;
|
|
90
|
+
lines.push(`${key}: ${formatScalar(value)}`);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return lines.join("\n");
|
|
94
|
+
}
|
|
40
95
|
function renderDocumentEnvelope(kind, data) {
|
|
41
96
|
const doc = asRecord(data);
|
|
42
97
|
const root = kind === "note" ? "mxnote" : "mxpost";
|
|
@@ -140,6 +195,6 @@ function escapeXml(value) {
|
|
|
140
195
|
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
141
196
|
}
|
|
142
197
|
//#endregion
|
|
143
|
-
export {
|
|
198
|
+
export { renderReadableDocument as a, renderPostList as i, emitPostList as n, renderDocumentEnvelope as r, emitDocument as t };
|
|
144
199
|
|
|
145
|
-
//# sourceMappingURL=document-output-
|
|
200
|
+
//# sourceMappingURL=document-output-BtY8T7eY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-output-BtY8T7eY.mjs","names":[],"sources":["../src/core/document-output.ts"],"sourcesContent":["import { MxsError } from './errors'\nimport { serializeFromLexical, type LexicalState } from './litexml-codec'\nimport { emitSuccess, type OutputOptions } from './output'\n\nexport type DocumentKind = 'post' | 'note' | 'page'\n\nconst POST_LIST_OUTPUT_MODES = new Set([\n 'pretty-json',\n 'json',\n 'readable',\n 'llm',\n])\n\nconst DOCUMENT_OUTPUT_MODES = new Set([\n 'pretty-json',\n 'json',\n 'readable',\n 'llm',\n 'envelope',\n])\n\nexport function emitDocument(\n kind: DocumentKind,\n data: unknown,\n opts: OutputOptions,\n): void {\n const mode = opts.output ?? 'pretty-json'\n if (!DOCUMENT_OUTPUT_MODES.has(mode)) {\n throw new MxsError({\n code: 'validation.failed',\n message: `unsupported --output value: ${mode}`,\n hint: 'use --output pretty-json, json, readable, llm, or envelope',\n })\n }\n\n if (opts.json || mode === 'json' || mode === 'pretty-json') {\n emitSuccess(data, opts)\n return\n }\n\n const doc = unwrapDocument(data)\n const rendered =\n mode === 'envelope'\n ? renderDocumentEnvelope(kind, doc)\n : renderReadableDocument(kind, doc)\n process.stdout.write(`${rendered}\\n`)\n}\n\nexport function emitPostList(data: unknown, opts: OutputOptions): void {\n const mode = opts.output ?? 'pretty-json'\n if (!POST_LIST_OUTPUT_MODES.has(mode)) {\n throw new MxsError({\n code: 'validation.failed',\n message: `unsupported --output value for post list: ${mode}`,\n hint: 'use --output pretty-json, json, readable, or llm',\n })\n }\n\n if (opts.json || mode === 'json' || mode === 'pretty-json') {\n emitSuccess(data, opts)\n return\n }\n\n process.stdout.write(`${renderPostList(data)}\\n`)\n}\n\nexport function renderReadableDocument(\n kind: DocumentKind,\n data: unknown,\n): string {\n const doc = asRecord(data)\n const lines: string[] = [kind]\n const fields = collectReadableFields(kind, doc)\n\n for (const [key, value] of fields) {\n if (value === undefined || value === null || value === '') continue\n lines.push(`${key}: ${formatScalar(value)}`)\n }\n\n const summary = firstString(doc, 'summary', 'subtitle')\n if (summary) {\n lines.push('', 'summary:', summary)\n }\n\n const content = renderContent(doc)\n if (content.body) {\n lines.push(\n '',\n `content_format: ${content.format}`,\n '',\n 'content:',\n content.body,\n )\n }\n\n return lines.join('\\n')\n}\n\nexport function renderPostList(data: unknown): string {\n const payload = asRecord(data)\n const rows = Array.isArray(payload.data)\n ? payload.data\n : Array.isArray(data)\n ? data\n : []\n const pagination = asRecord(first(payload, 'pagination'))\n const lines = ['posts']\n\n if (rows.length > 0) {\n lines.push(`count: ${rows.length}`)\n } else {\n lines.push('count: 0')\n }\n\n const page = first(pagination, 'page', 'currentPage')\n const size = first(pagination, 'size', 'pageSize')\n const total = first(pagination, 'total', 'totalCount')\n if (page !== undefined) lines.push(`page: ${formatScalar(page)}`)\n if (size !== undefined) lines.push(`size: ${formatScalar(size)}`)\n if (total !== undefined) lines.push(`total: ${formatScalar(total)}`)\n\n rows.forEach((row, index) => {\n const doc = asRecord(row)\n lines.push('', `post ${index + 1}:`)\n const fields: Array<[string, unknown]> = [\n ['id', first(doc, 'id')],\n ['title', first(doc, 'title')],\n ['slug', first(doc, 'slug')],\n ['state', publishState(doc)],\n ['category', relationLabel(first(doc, 'category'))],\n ['tags', first(doc, 'tags')],\n ['summary', first(doc, 'summary')],\n ['created_at', first(doc, 'created_at', 'createdAt')],\n ['modified_at', first(doc, 'modified_at', 'modifiedAt')],\n ['source_lang', first(doc, 'source_lang', 'sourceLang')],\n ['translated', first(doc, 'is_translated', 'isTranslated')],\n ]\n\n for (const [key, value] of fields) {\n if (value === undefined || value === null || value === '') continue\n lines.push(`${key}: ${formatScalar(value)}`)\n }\n })\n\n return lines.join('\\n')\n}\n\nexport function renderDocumentEnvelope(\n kind: DocumentKind,\n data: unknown,\n): string {\n const doc = asRecord(data)\n const root = kind === 'note' ? 'mxnote' : 'mxpost'\n const meta = collectEnvelopeMeta(kind, doc)\n const metaLines = meta.map(([key, value]) => renderEnvelopeMeta(key, value))\n const content = renderContent(doc)\n\n return `<${root}>\n <meta>\n${metaLines.join('\\n')}\n </meta>\n <content>\n${content.body}\n </content>\n</${root}>`\n}\n\nfunction collectReadableFields(\n kind: DocumentKind,\n doc: Record<string, unknown>,\n): Array<[string, unknown]> {\n const base: Array<[string, unknown]> = [\n ['id', first(doc, 'id')],\n ['title', first(doc, 'title')],\n ['slug', first(doc, 'slug')],\n ]\n\n if (kind === 'post') {\n base.push(\n ['state', publishState(doc)],\n ['category', relationLabel(first(doc, 'category'))],\n ['tags', first(doc, 'tags')],\n ['pin', first(doc, 'pin')],\n )\n } else if (kind === 'note') {\n base.push(\n ['nid', first(doc, 'nid')],\n ['state', publishState(doc)],\n ['topic', relationLabel(first(doc, 'topic'))],\n ['mood', first(doc, 'mood')],\n ['weather', first(doc, 'weather')],\n ['public_at', first(doc, 'public_at', 'publicAt')],\n ['bookmark', first(doc, 'bookmark')],\n )\n } else {\n base.push(\n ['subtitle', first(doc, 'subtitle')],\n ['order', first(doc, 'order')],\n )\n }\n\n base.push(\n ['created_at', first(doc, 'created_at', 'createdAt')],\n ['modified_at', first(doc, 'modified_at', 'modifiedAt')],\n ['source_lang', first(doc, 'source_lang', 'sourceLang')],\n ['translated', first(doc, 'is_translated', 'isTranslated')],\n )\n\n return base\n}\n\nfunction collectEnvelopeMeta(\n kind: DocumentKind,\n doc: Record<string, unknown>,\n): Array<[string, unknown]> {\n const meta: Array<[string, unknown]> = [\n ['title', first(doc, 'title')],\n ['slug', first(doc, 'slug')],\n ]\n\n if (kind === 'post') {\n meta.push(\n ['category', relationSlugOrLabel(first(doc, 'category'))],\n ['state', publishState(doc) === 'published' ? 'publish' : 'draft'],\n ['summary', first(doc, 'summary')],\n ['tags', first(doc, 'tags')],\n )\n } else if (kind === 'note') {\n meta.push(\n ['topic', relationSlugOrLabel(first(doc, 'topic'))],\n ['state', publishState(doc) === 'published' ? 'publish' : 'draft'],\n ['mood', first(doc, 'mood')],\n ['weather', first(doc, 'weather')],\n ['publicAt', first(doc, 'public_at', 'publicAt')],\n ['bookmark', first(doc, 'bookmark')],\n ['location', first(doc, 'location')],\n )\n } else {\n meta.push(\n ['subtitle', first(doc, 'subtitle')],\n ['order', first(doc, 'order')],\n )\n }\n\n meta.push(['format', contentFormat(doc)])\n return meta.filter(\n ([, value]) => value !== undefined && value !== null && value !== '',\n )\n}\n\nfunction renderContent(doc: Record<string, unknown>): {\n body: string\n format: 'litexml' | 'markdown' | 'text'\n} {\n const format = contentFormat(doc)\n const content = firstString(doc, 'content')\n const text = firstString(doc, 'text')\n\n if (format === 'lexical' && content) {\n try {\n return {\n body: serializeFromLexical(JSON.parse(content) as LexicalState),\n format: 'litexml',\n }\n } catch {\n return { body: text || content, format: text ? 'text' : 'markdown' }\n }\n }\n\n return {\n body: content || text || '',\n format: format === 'markdown' ? 'markdown' : 'text',\n }\n}\n\nfunction unwrapDocument(data: unknown): unknown {\n const obj = asRecord(data)\n const nested = obj.data\n if (nested && typeof nested === 'object' && !Array.isArray(nested))\n return nested\n return data\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : {}\n}\n\nfunction first(record: Record<string, unknown>, ...keys: string[]): unknown {\n for (const key of keys) {\n if (record[key] !== undefined && record[key] !== null) return record[key]\n }\n return undefined\n}\n\nfunction firstString(\n record: Record<string, unknown>,\n ...keys: string[]\n): string {\n const value = first(record, ...keys)\n return typeof value === 'string' ? value : ''\n}\n\nfunction contentFormat(doc: Record<string, unknown>): string {\n const value = first(doc, 'content_format', 'contentFormat')\n return typeof value === 'string' ? value : 'markdown'\n}\n\nfunction publishState(doc: Record<string, unknown>): string | undefined {\n const value = first(doc, 'is_published', 'isPublished')\n if (typeof value === 'boolean') return value ? 'published' : 'draft'\n return undefined\n}\n\nfunction relationLabel(value: unknown): string | undefined {\n if (!value) return undefined\n if (typeof value === 'string') return value\n const obj = asRecord(value)\n return (\n firstString(obj, 'name') ||\n firstString(obj, 'slug') ||\n firstString(obj, 'id')\n )\n}\n\nfunction relationSlugOrLabel(value: unknown): string | undefined {\n if (!value) return undefined\n if (typeof value === 'string') return value\n const obj = asRecord(value)\n return (\n firstString(obj, 'slug') ||\n firstString(obj, 'name') ||\n firstString(obj, 'id')\n )\n}\n\nfunction formatScalar(value: unknown): string {\n if (Array.isArray(value)) return value.map(formatScalar).join(', ')\n if (value instanceof Date) return value.toISOString()\n if (typeof value === 'object' && value !== null) return JSON.stringify(value)\n return String(value)\n}\n\nfunction renderEnvelopeMeta(key: string, value: unknown): string {\n if (key === 'tags' && Array.isArray(value)) {\n const tags = value\n .map((item) => ` <tag>${escapeXml(formatScalar(item))}</tag>`)\n .join('\\n')\n return ` <tags>\\n${tags}\\n </tags>`\n }\n\n return ` <${key}>${escapeXml(formatScalar(value))}</${key}>`\n}\n\nfunction escapeXml(value: string): string {\n return value\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n}\n"],"mappings":";;;AAMA,MAAM,yBAAyB,IAAI,IAAI;CACrC;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,wBAAwB,IAAI,IAAI;CACpC;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAgB,aACd,MACA,MACA,MACM;CACN,MAAM,OAAO,KAAK,UAAU;CAC5B,IAAI,CAAC,sBAAsB,IAAI,IAAI,GACjC,MAAM,IAAI,SAAS;EACjB,MAAM;EACN,SAAS,+BAA+B;EACxC,MAAM;CACR,CAAC;CAGH,IAAI,KAAK,QAAQ,SAAS,UAAU,SAAS,eAAe;EAC1D,YAAY,MAAM,IAAI;EACtB;CACF;CAEA,MAAM,MAAM,eAAe,IAAI;CAC/B,MAAM,WACJ,SAAS,aACL,uBAAuB,MAAM,GAAG,IAChC,uBAAuB,MAAM,GAAG;CACtC,QAAQ,OAAO,MAAM,GAAG,SAAS,GAAG;AACtC;AAEA,SAAgB,aAAa,MAAe,MAA2B;CACrE,MAAM,OAAO,KAAK,UAAU;CAC5B,IAAI,CAAC,uBAAuB,IAAI,IAAI,GAClC,MAAM,IAAI,SAAS;EACjB,MAAM;EACN,SAAS,6CAA6C;EACtD,MAAM;CACR,CAAC;CAGH,IAAI,KAAK,QAAQ,SAAS,UAAU,SAAS,eAAe;EAC1D,YAAY,MAAM,IAAI;EACtB;CACF;CAEA,QAAQ,OAAO,MAAM,GAAG,eAAe,IAAI,EAAE,GAAG;AAClD;AAEA,SAAgB,uBACd,MACA,MACQ;CACR,MAAM,MAAM,SAAS,IAAI;CACzB,MAAM,QAAkB,CAAC,IAAI;CAC7B,MAAM,SAAS,sBAAsB,MAAM,GAAG;CAE9C,KAAK,MAAM,CAAC,KAAK,UAAU,QAAQ;EACjC,IAAI,UAAU,KAAA,KAAa,UAAU,QAAQ,UAAU,IAAI;EAC3D,MAAM,KAAK,GAAG,IAAI,IAAI,aAAa,KAAK,GAAG;CAC7C;CAEA,MAAM,UAAU,YAAY,KAAK,WAAW,UAAU;CACtD,IAAI,SACF,MAAM,KAAK,IAAI,YAAY,OAAO;CAGpC,MAAM,UAAU,cAAc,GAAG;CACjC,IAAI,QAAQ,MACV,MAAM,KACJ,IACA,mBAAmB,QAAQ,UAC3B,IACA,YACA,QAAQ,IACV;CAGF,OAAO,MAAM,KAAK,IAAI;AACxB;AAEA,SAAgB,eAAe,MAAuB;CACpD,MAAM,UAAU,SAAS,IAAI;CAC7B,MAAM,OAAO,MAAM,QAAQ,QAAQ,IAAI,IACnC,QAAQ,OACR,MAAM,QAAQ,IAAI,IAChB,OACA,CAAC;CACP,MAAM,aAAa,SAAS,MAAM,SAAS,YAAY,CAAC;CACxD,MAAM,QAAQ,CAAC,OAAO;CAEtB,IAAI,KAAK,SAAS,GAChB,MAAM,KAAK,UAAU,KAAK,QAAQ;MAElC,MAAM,KAAK,UAAU;CAGvB,MAAM,OAAO,MAAM,YAAY,QAAQ,aAAa;CACpD,MAAM,OAAO,MAAM,YAAY,QAAQ,UAAU;CACjD,MAAM,QAAQ,MAAM,YAAY,SAAS,YAAY;CACrD,IAAI,SAAS,KAAA,GAAW,MAAM,KAAK,SAAS,aAAa,IAAI,GAAG;CAChE,IAAI,SAAS,KAAA,GAAW,MAAM,KAAK,SAAS,aAAa,IAAI,GAAG;CAChE,IAAI,UAAU,KAAA,GAAW,MAAM,KAAK,UAAU,aAAa,KAAK,GAAG;CAEnE,KAAK,SAAS,KAAK,UAAU;EAC3B,MAAM,MAAM,SAAS,GAAG;EACxB,MAAM,KAAK,IAAI,QAAQ,QAAQ,EAAE,EAAE;EACnC,MAAM,SAAmC;GACvC,CAAC,MAAM,MAAM,KAAK,IAAI,CAAC;GACvB,CAAC,SAAS,MAAM,KAAK,OAAO,CAAC;GAC7B,CAAC,QAAQ,MAAM,KAAK,MAAM,CAAC;GAC3B,CAAC,SAAS,aAAa,GAAG,CAAC;GAC3B,CAAC,YAAY,cAAc,MAAM,KAAK,UAAU,CAAC,CAAC;GAClD,CAAC,QAAQ,MAAM,KAAK,MAAM,CAAC;GAC3B,CAAC,WAAW,MAAM,KAAK,SAAS,CAAC;GACjC,CAAC,cAAc,MAAM,KAAK,cAAc,WAAW,CAAC;GACpD,CAAC,eAAe,MAAM,KAAK,eAAe,YAAY,CAAC;GACvD,CAAC,eAAe,MAAM,KAAK,eAAe,YAAY,CAAC;GACvD,CAAC,cAAc,MAAM,KAAK,iBAAiB,cAAc,CAAC;EAC5D;EAEA,KAAK,MAAM,CAAC,KAAK,UAAU,QAAQ;GACjC,IAAI,UAAU,KAAA,KAAa,UAAU,QAAQ,UAAU,IAAI;GAC3D,MAAM,KAAK,GAAG,IAAI,IAAI,aAAa,KAAK,GAAG;EAC7C;CACF,CAAC;CAED,OAAO,MAAM,KAAK,IAAI;AACxB;AAEA,SAAgB,uBACd,MACA,MACQ;CACR,MAAM,MAAM,SAAS,IAAI;CACzB,MAAM,OAAO,SAAS,SAAS,WAAW;CAE1C,MAAM,YADO,oBAAoB,MAAM,GAClB,EAAE,KAAK,CAAC,KAAK,WAAW,mBAAmB,KAAK,KAAK,CAAC;CAC3E,MAAM,UAAU,cAAc,GAAG;CAEjC,OAAO,IAAI,KAAK;;EAEhB,UAAU,KAAK,IAAI,EAAE;;;EAGrB,QAAQ,KAAK;;IAEX,KAAK;AACT;AAEA,SAAS,sBACP,MACA,KAC0B;CAC1B,MAAM,OAAiC;EACrC,CAAC,MAAM,MAAM,KAAK,IAAI,CAAC;EACvB,CAAC,SAAS,MAAM,KAAK,OAAO,CAAC;EAC7B,CAAC,QAAQ,MAAM,KAAK,MAAM,CAAC;CAC7B;CAEA,IAAI,SAAS,QACX,KAAK,KACH,CAAC,SAAS,aAAa,GAAG,CAAC,GAC3B,CAAC,YAAY,cAAc,MAAM,KAAK,UAAU,CAAC,CAAC,GAClD,CAAC,QAAQ,MAAM,KAAK,MAAM,CAAC,GAC3B,CAAC,OAAO,MAAM,KAAK,KAAK,CAAC,CAC3B;MACK,IAAI,SAAS,QAClB,KAAK,KACH,CAAC,OAAO,MAAM,KAAK,KAAK,CAAC,GACzB,CAAC,SAAS,aAAa,GAAG,CAAC,GAC3B,CAAC,SAAS,cAAc,MAAM,KAAK,OAAO,CAAC,CAAC,GAC5C,CAAC,QAAQ,MAAM,KAAK,MAAM,CAAC,GAC3B,CAAC,WAAW,MAAM,KAAK,SAAS,CAAC,GACjC,CAAC,aAAa,MAAM,KAAK,aAAa,UAAU,CAAC,GACjD,CAAC,YAAY,MAAM,KAAK,UAAU,CAAC,CACrC;MAEA,KAAK,KACH,CAAC,YAAY,MAAM,KAAK,UAAU,CAAC,GACnC,CAAC,SAAS,MAAM,KAAK,OAAO,CAAC,CAC/B;CAGF,KAAK,KACH,CAAC,cAAc,MAAM,KAAK,cAAc,WAAW,CAAC,GACpD,CAAC,eAAe,MAAM,KAAK,eAAe,YAAY,CAAC,GACvD,CAAC,eAAe,MAAM,KAAK,eAAe,YAAY,CAAC,GACvD,CAAC,cAAc,MAAM,KAAK,iBAAiB,cAAc,CAAC,CAC5D;CAEA,OAAO;AACT;AAEA,SAAS,oBACP,MACA,KAC0B;CAC1B,MAAM,OAAiC,CACrC,CAAC,SAAS,MAAM,KAAK,OAAO,CAAC,GAC7B,CAAC,QAAQ,MAAM,KAAK,MAAM,CAAC,CAC7B;CAEA,IAAI,SAAS,QACX,KAAK,KACH,CAAC,YAAY,oBAAoB,MAAM,KAAK,UAAU,CAAC,CAAC,GACxD,CAAC,SAAS,aAAa,GAAG,MAAM,cAAc,YAAY,OAAO,GACjE,CAAC,WAAW,MAAM,KAAK,SAAS,CAAC,GACjC,CAAC,QAAQ,MAAM,KAAK,MAAM,CAAC,CAC7B;MACK,IAAI,SAAS,QAClB,KAAK,KACH,CAAC,SAAS,oBAAoB,MAAM,KAAK,OAAO,CAAC,CAAC,GAClD,CAAC,SAAS,aAAa,GAAG,MAAM,cAAc,YAAY,OAAO,GACjE,CAAC,QAAQ,MAAM,KAAK,MAAM,CAAC,GAC3B,CAAC,WAAW,MAAM,KAAK,SAAS,CAAC,GACjC,CAAC,YAAY,MAAM,KAAK,aAAa,UAAU,CAAC,GAChD,CAAC,YAAY,MAAM,KAAK,UAAU,CAAC,GACnC,CAAC,YAAY,MAAM,KAAK,UAAU,CAAC,CACrC;MAEA,KAAK,KACH,CAAC,YAAY,MAAM,KAAK,UAAU,CAAC,GACnC,CAAC,SAAS,MAAM,KAAK,OAAO,CAAC,CAC/B;CAGF,KAAK,KAAK,CAAC,UAAU,cAAc,GAAG,CAAC,CAAC;CACxC,OAAO,KAAK,QACT,GAAG,WAAW,UAAU,KAAA,KAAa,UAAU,QAAQ,UAAU,EACpE;AACF;AAEA,SAAS,cAAc,KAGrB;CACA,MAAM,SAAS,cAAc,GAAG;CAChC,MAAM,UAAU,YAAY,KAAK,SAAS;CAC1C,MAAM,OAAO,YAAY,KAAK,MAAM;CAEpC,IAAI,WAAW,aAAa,SAC1B,IAAI;EACF,OAAO;GACL,MAAM,qBAAqB,KAAK,MAAM,OAAO,CAAiB;GAC9D,QAAQ;EACV;CACF,QAAQ;EACN,OAAO;GAAE,MAAM,QAAQ;GAAS,QAAQ,OAAO,SAAS;EAAW;CACrE;CAGF,OAAO;EACL,MAAM,WAAW,QAAQ;EACzB,QAAQ,WAAW,aAAa,aAAa;CAC/C;AACF;AAEA,SAAS,eAAe,MAAwB;CAE9C,MAAM,SADM,SAAS,IACJ,EAAE;CACnB,IAAI,UAAU,OAAO,WAAW,YAAY,CAAC,MAAM,QAAQ,MAAM,GAC/D,OAAO;CACT,OAAO;AACT;AAEA,SAAS,SAAS,OAAyC;CACzD,OAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAC5D,QACD,CAAC;AACP;AAEA,SAAS,MAAM,QAAiC,GAAG,MAAyB;CAC1E,KAAK,MAAM,OAAO,MAChB,IAAI,OAAO,SAAS,KAAA,KAAa,OAAO,SAAS,MAAM,OAAO,OAAO;AAGzE;AAEA,SAAS,YACP,QACA,GAAG,MACK;CACR,MAAM,QAAQ,MAAM,QAAQ,GAAG,IAAI;CACnC,OAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AAEA,SAAS,cAAc,KAAsC;CAC3D,MAAM,QAAQ,MAAM,KAAK,kBAAkB,eAAe;CAC1D,OAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AAEA,SAAS,aAAa,KAAkD;CACtE,MAAM,QAAQ,MAAM,KAAK,gBAAgB,aAAa;CACtD,IAAI,OAAO,UAAU,WAAW,OAAO,QAAQ,cAAc;AAE/D;AAEA,SAAS,cAAc,OAAoC;CACzD,IAAI,CAAC,OAAO,OAAO,KAAA;CACnB,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,MAAM,MAAM,SAAS,KAAK;CAC1B,OACE,YAAY,KAAK,MAAM,KACvB,YAAY,KAAK,MAAM,KACvB,YAAY,KAAK,IAAI;AAEzB;AAEA,SAAS,oBAAoB,OAAoC;CAC/D,IAAI,CAAC,OAAO,OAAO,KAAA;CACnB,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,MAAM,MAAM,SAAS,KAAK;CAC1B,OACE,YAAY,KAAK,MAAM,KACvB,YAAY,KAAK,MAAM,KACvB,YAAY,KAAK,IAAI;AAEzB;AAEA,SAAS,aAAa,OAAwB;CAC5C,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,IAAI,YAAY,EAAE,KAAK,IAAI;CAClE,IAAI,iBAAiB,MAAM,OAAO,MAAM,YAAY;CACpD,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO,KAAK,UAAU,KAAK;CAC5E,OAAO,OAAO,KAAK;AACrB;AAEA,SAAS,mBAAmB,KAAa,OAAwB;CAC/D,IAAI,QAAQ,UAAU,MAAM,QAAQ,KAAK,GAIvC,OAAO,eAHM,MACV,KAAK,SAAS,cAAc,UAAU,aAAa,IAAI,CAAC,EAAE,OAAO,EACjE,KAAK,IACiB,EAAE;CAG7B,OAAO,QAAQ,IAAI,GAAG,UAAU,aAAa,KAAK,CAAC,EAAE,IAAI,IAAI;AAC/D;AAEA,SAAS,UAAU,OAAuB;CACxC,OAAO,MACJ,WAAW,KAAK,OAAO,EACvB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,MAAM;AAC3B"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { i as emitSuccess, r as emitInfo } from "./output-
|
|
2
|
-
import { r as buildPostPayload, s as parseEnvelope } from "./payload-
|
|
3
|
-
import { t as runEditorRoundTrip } from "./editor-
|
|
4
|
-
import { i as serializeFromLexical } from "./litexml-codec-
|
|
5
|
-
import { n as resolveContext, t as buildApiClient } from "./shared-
|
|
6
|
-
import { n as resolveCategoryRefs, t as buildResolver } from "./resolve-helpers-
|
|
7
|
-
import { n as resolvePostReadPath, t as resolvePostId } from "./resolve-
|
|
1
|
+
import { i as emitSuccess, r as emitInfo } from "./output-Dg8PISJM.mjs";
|
|
2
|
+
import { r as buildPostPayload, s as parseEnvelope } from "./payload-CjlZ9CeZ.mjs";
|
|
3
|
+
import { t as runEditorRoundTrip } from "./editor-Dywlo4-8.mjs";
|
|
4
|
+
import { i as serializeFromLexical } from "./litexml-codec-D-1oggXL.mjs";
|
|
5
|
+
import { n as resolveContext, t as buildApiClient } from "./shared-SryY2QPY.mjs";
|
|
6
|
+
import { n as resolveCategoryRefs, t as buildResolver } from "./resolve-helpers-C7PIVziv.mjs";
|
|
7
|
+
import { n as resolvePostReadPath, t as resolvePostId } from "./resolve-B4-fMQ6I.mjs";
|
|
8
8
|
//#region src/commands/post/edit.ts
|
|
9
9
|
async function run(slugOrId, opts, flags, out) {
|
|
10
10
|
const client = buildApiClient(await resolveContext(flags, out), flags);
|
|
@@ -83,4 +83,4 @@ async function metaFromEnvelope(meta) {
|
|
|
83
83
|
//#endregion
|
|
84
84
|
export { run };
|
|
85
85
|
|
|
86
|
-
//# sourceMappingURL=edit-
|
|
86
|
+
//# sourceMappingURL=edit-BWX7X4sy.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-
|
|
1
|
+
{"version":3,"file":"edit-BWX7X4sy.mjs","names":[],"sources":["../src/commands/post/edit.ts"],"sourcesContent":["import type { ApiClient } from '../../core/api-client'\nimport { runEditorRoundTrip } from '../../core/editor'\nimport { parseEnvelope } from '../../core/envelope'\nimport { serializeFromLexical } from '../../core/litexml-codec'\nimport { emitInfo, emitSuccess, type OutputOptions } from '../../core/output'\nimport { buildPostPayload, type PostFlagInputs } from '../../core/payload'\nimport { buildResolver, resolveCategoryRefs } from '../internal/resolve-helpers'\nimport { buildApiClient, type GlobalFlags, resolveContext } from '../internal/shared'\nimport { resolvePostId, resolvePostReadPath } from './resolve'\n\nexport async function run(\n slugOrId: string,\n opts: PostFlagInputs,\n flags: GlobalFlags,\n out: OutputOptions,\n) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n\n if (!opts.file && opts.content === undefined) {\n const xml = await materializeForEditor(client, slugOrId)\n const next = await runEditorRoundTrip({\n filename: `post-${slugOrId}.xml`,\n initialContent: xml,\n })\n if (next.trim() === xml.trim()) {\n emitInfo('no changes', out)\n return\n }\n const parsed = parseEnvelope(next, 'post')\n const payloadInputs: PostFlagInputs = {\n ...opts,\n content: parsed.contentXml,\n format: opts.format ?? 'lexical',\n }\n const built = await buildPostPayload(payloadInputs)\n Object.assign(built.payload, await metaFromEnvelope(parsed.meta))\n if (flags.dryRun) {\n emitSuccess(built.payload, out)\n return\n }\n const resolver = buildResolver(client)\n await resolveCategoryRefs(built.payload, resolver)\n const res = await client.request(\n `/posts/${await resolvePostId(client, slugOrId)}`,\n { method: 'PUT', body: built.payload },\n )\n emitSuccess(res.data, out)\n return\n }\n\n const built = await buildPostPayload(opts)\n if (flags.dryRun) {\n emitSuccess(built.payload, out)\n return\n }\n const resolver = buildResolver(client)\n await resolveCategoryRefs(built.payload, resolver)\n const res = await client.request(\n `/posts/${await resolvePostId(client, slugOrId)}`,\n { method: 'PUT', body: built.payload },\n )\n emitSuccess(res.data, out)\n}\n\nasync function materializeForEditor(\n client: ApiClient,\n slugOrId: string,\n): Promise<string> {\n const path = await resolvePostReadPath(client, slugOrId)\n const res = await client.request<{\n id: string\n title?: string\n slug?: string\n contentFormat?: string\n content?: string\n summary?: string\n isPublished?: boolean\n tags?: string[]\n }>(path, { query: { prefer: 'lexical' } })\n const post = res.data\n const isLexical = post.contentFormat === 'lexical'\n const innerXml =\n isLexical && post.content\n ? serializeFromLexical(JSON.parse(post.content))\n : (post.content ?? '')\n const tagsXml = (post.tags ?? [])\n .map((t: string) => ` <tag>${escapeXml(t)}</tag>`)\n .join('\\n')\n return `<mxpost>\n <meta>\n <title>${escapeXml(post.title ?? '')}</title>\n <slug>${escapeXml(post.slug ?? '')}</slug>\n <state>${post.isPublished ? 'publish' : 'draft'}</state>\n ${post.summary ? `<summary>${escapeXml(post.summary)}</summary>` : ''}\n ${tagsXml ? `<tags>\\n${tagsXml}\\n </tags>` : ''}\n </meta>\n <content>\n${innerXml}\n </content>\n</mxpost>\n`\n}\n\nfunction escapeXml(s: string): string {\n return s\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n}\n\nasync function metaFromEnvelope(\n meta: Record<string, unknown>,\n): Promise<Record<string, unknown>> {\n const overlay: Record<string, unknown> = {}\n if (typeof meta.title === 'string') overlay.title = meta.title\n if (typeof meta.slug === 'string') overlay.slug = meta.slug\n if (typeof meta.summary === 'string') overlay.summary = meta.summary\n if (meta.state === 'publish' || meta.state === 'draft')\n overlay.isPublished = meta.state === 'publish'\n if (Array.isArray(meta.tags)) overlay.tags = meta.tags\n return overlay\n}\n"],"mappings":";;;;;;;;AAUA,eAAsB,IACpB,UACA,MACA,OACA,KACA;CAEA,MAAM,SAAS,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KAAK;CAExC,IAAI,CAAC,KAAK,QAAQ,KAAK,YAAY,KAAA,GAAW;EAC5C,MAAM,MAAM,MAAM,qBAAqB,QAAQ,QAAQ;EACvD,MAAM,OAAO,MAAM,mBAAmB;GACpC,UAAU,QAAQ,SAAS;GAC3B,gBAAgB;EAClB,CAAC;EACD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,GAAG;GAC9B,SAAS,cAAc,GAAG;GAC1B;EACF;EACA,MAAM,SAAS,cAAc,MAAM,MAAM;EAMzC,MAAM,QAAQ,MAAM,iBAAiB;GAJnC,GAAG;GACH,SAAS,OAAO;GAChB,QAAQ,KAAK,UAAU;EAEwB,CAAC;EAClD,OAAO,OAAO,MAAM,SAAS,MAAM,iBAAiB,OAAO,IAAI,CAAC;EAChE,IAAI,MAAM,QAAQ;GAChB,YAAY,MAAM,SAAS,GAAG;GAC9B;EACF;EACA,MAAM,WAAW,cAAc,MAAM;EACrC,MAAM,oBAAoB,MAAM,SAAS,QAAQ;EAKjD,aAAY,MAJM,OAAO,QACvB,UAAU,MAAM,cAAc,QAAQ,QAAQ,KAC9C;GAAE,QAAQ;GAAO,MAAM,MAAM;EAAQ,CACvC,GACgB,MAAM,GAAG;EACzB;CACF;CAEA,MAAM,QAAQ,MAAM,iBAAiB,IAAI;CACzC,IAAI,MAAM,QAAQ;EAChB,YAAY,MAAM,SAAS,GAAG;EAC9B;CACF;CACA,MAAM,WAAW,cAAc,MAAM;CACrC,MAAM,oBAAoB,MAAM,SAAS,QAAQ;CAKjD,aAAY,MAJM,OAAO,QACvB,UAAU,MAAM,cAAc,QAAQ,QAAQ,KAC9C;EAAE,QAAQ;EAAO,MAAM,MAAM;CAAQ,CACvC,GACgB,MAAM,GAAG;AAC3B;AAEA,eAAe,qBACb,QACA,UACiB;CACjB,MAAM,OAAO,MAAM,oBAAoB,QAAQ,QAAQ;CAWvD,MAAM,QAAO,MAVK,OAAO,QAStB,MAAM,EAAE,OAAO,EAAE,QAAQ,UAAU,EAAE,CAAC,GACxB;CAEjB,MAAM,WADY,KAAK,kBAAkB,aAE1B,KAAK,UACd,qBAAqB,KAAK,MAAM,KAAK,OAAO,CAAC,IAC5C,KAAK,WAAW;CACvB,MAAM,WAAW,KAAK,QAAQ,CAAC,GAC5B,KAAK,MAAc,YAAY,UAAU,CAAC,EAAE,OAAO,EACnD,KAAK,IAAI;CACZ,OAAO;;aAEI,UAAU,KAAK,SAAS,EAAE,EAAE;YAC7B,UAAU,KAAK,QAAQ,EAAE,EAAE;aAC1B,KAAK,cAAc,YAAY,QAAQ;MAC9C,KAAK,UAAU,YAAY,UAAU,KAAK,OAAO,EAAE,cAAc,GAAG;MACpE,UAAU,WAAW,QAAQ,iBAAiB,GAAG;;;EAGrD,SAAS;;;;AAIX;AAEA,SAAS,UAAU,GAAmB;CACpC,OAAO,EACJ,WAAW,KAAK,OAAO,EACvB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,MAAM;AAC3B;AAEA,eAAe,iBACb,MACkC;CAClC,MAAM,UAAmC,CAAC;CAC1C,IAAI,OAAO,KAAK,UAAU,UAAU,QAAQ,QAAQ,KAAK;CACzD,IAAI,OAAO,KAAK,SAAS,UAAU,QAAQ,OAAO,KAAK;CACvD,IAAI,OAAO,KAAK,YAAY,UAAU,QAAQ,UAAU,KAAK;CAC7D,IAAI,KAAK,UAAU,aAAa,KAAK,UAAU,SAC7C,QAAQ,cAAc,KAAK,UAAU;CACvC,IAAI,MAAM,QAAQ,KAAK,IAAI,GAAG,QAAQ,OAAO,KAAK;CAClD,OAAO;AACT"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { i as emitSuccess, r as emitInfo } from "./output-
|
|
2
|
-
import { s as parseEnvelope, t as buildNotePayload } from "./payload-
|
|
3
|
-
import { t as runEditorRoundTrip } from "./editor-
|
|
4
|
-
import { i as serializeFromLexical } from "./litexml-codec-
|
|
5
|
-
import { n as resolveContext, t as buildApiClient } from "./shared-
|
|
6
|
-
import { r as resolveTopicRefs, t as buildResolver } from "./resolve-helpers-
|
|
7
|
-
import { t as resolveNoteId } from "./resolve-
|
|
8
|
-
import { t as applyNoteEnvelopeMeta } from "./envelope-overlays-
|
|
1
|
+
import { i as emitSuccess, r as emitInfo } from "./output-Dg8PISJM.mjs";
|
|
2
|
+
import { s as parseEnvelope, t as buildNotePayload } from "./payload-CjlZ9CeZ.mjs";
|
|
3
|
+
import { t as runEditorRoundTrip } from "./editor-Dywlo4-8.mjs";
|
|
4
|
+
import { i as serializeFromLexical } from "./litexml-codec-D-1oggXL.mjs";
|
|
5
|
+
import { n as resolveContext, t as buildApiClient } from "./shared-SryY2QPY.mjs";
|
|
6
|
+
import { r as resolveTopicRefs, t as buildResolver } from "./resolve-helpers-C7PIVziv.mjs";
|
|
7
|
+
import { t as resolveNoteId } from "./resolve-TBYXBS4i.mjs";
|
|
8
|
+
import { t as applyNoteEnvelopeMeta } from "./envelope-overlays-D1gmGVe5.mjs";
|
|
9
9
|
//#region src/commands/note/edit.ts
|
|
10
10
|
async function run(slugOrId, opts, flags, out) {
|
|
11
11
|
const client = buildApiClient(await resolveContext(flags, out), flags);
|
|
@@ -76,4 +76,4 @@ function esc(s) {
|
|
|
76
76
|
//#endregion
|
|
77
77
|
export { run };
|
|
78
78
|
|
|
79
|
-
//# sourceMappingURL=edit-
|
|
79
|
+
//# sourceMappingURL=edit-CHCuoiWT.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-
|
|
1
|
+
{"version":3,"file":"edit-CHCuoiWT.mjs","names":[],"sources":["../src/commands/note/edit.ts"],"sourcesContent":["import type { ApiClient } from '../../core/api-client'\nimport { runEditorRoundTrip } from '../../core/editor'\nimport { parseEnvelope } from '../../core/envelope'\nimport { serializeFromLexical } from '../../core/litexml-codec'\nimport { emitInfo, emitSuccess, type OutputOptions } from '../../core/output'\nimport { buildNotePayload, type NoteFlagInputs } from '../../core/payload'\nimport { applyNoteEnvelopeMeta } from '../internal/envelope-overlays'\nimport { buildResolver, resolveTopicRefs } from '../internal/resolve-helpers'\nimport {\n buildApiClient,\n type GlobalFlags,\n resolveContext,\n} from '../internal/shared'\nimport { resolveNoteId } from './resolve'\n\nexport async function run(\n slugOrId: string,\n opts: NoteFlagInputs,\n flags: GlobalFlags,\n out: OutputOptions,\n) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n\n if (!opts.file && opts.content === undefined) {\n const xml = await materializeForEditor(client, slugOrId)\n const next = await runEditorRoundTrip({\n filename: `note-${slugOrId}.xml`,\n initialContent: xml,\n })\n if (next.trim() === xml.trim()) {\n emitInfo('no changes', out)\n return\n }\n const parsed = parseEnvelope(next, 'note')\n const built = await buildNotePayload({\n ...opts,\n content: parsed.contentXml,\n format: opts.format ?? 'lexical',\n })\n applyNoteEnvelopeMeta(built.payload, parsed.meta)\n if (flags.dryRun) {\n emitSuccess(built.payload, out)\n return\n }\n const resolver = buildResolver(client)\n await resolveTopicRefs(built.payload, resolver)\n const id = await resolveNoteId(client, slugOrId)\n const res = await client.request(`/notes/${id}`, {\n method: 'PUT',\n body: built.payload,\n })\n emitSuccess(res.data, out)\n return\n }\n\n const built = await buildNotePayload(opts)\n if (flags.dryRun) {\n emitSuccess(built.payload, out)\n return\n }\n const resolver = buildResolver(client)\n await resolveTopicRefs(built.payload, resolver)\n const id = await resolveNoteId(client, slugOrId)\n const res = await client.request(`/notes/${id}`, {\n method: 'PUT',\n body: built.payload,\n })\n emitSuccess(res.data, out)\n}\n\nasync function materializeForEditor(\n client: ApiClient,\n slugOrId: string,\n): Promise<string> {\n const id = await resolveNoteId(client, slugOrId)\n const res = await client.request<{\n id?: string\n title?: string\n slug?: string\n contentFormat?: string\n content?: string\n isPublished?: boolean\n mood?: string\n weather?: string\n }>(`/notes/${id}`, { query: { prefer: 'lexical' } })\n const note: any = res.data\n const inner =\n note.contentFormat === 'lexical' && note.content\n ? serializeFromLexical(JSON.parse(note.content))\n : (note.content ?? '')\n return `<mxnote>\n <meta>\n <title>${esc(note.title ?? '')}</title>\n ${note.slug ? `<slug>${esc(note.slug)}</slug>` : ''}\n <state>${note.isPublished ? 'publish' : 'draft'}</state>\n ${note.mood ? `<mood>${esc(note.mood)}</mood>` : ''}\n ${note.weather ? `<weather>${esc(note.weather)}</weather>` : ''}\n </meta>\n <content>\n${inner}\n </content>\n</mxnote>\n`\n}\n\nfunction esc(s: string): string {\n return s\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n}\n"],"mappings":";;;;;;;;;AAeA,eAAsB,IACpB,UACA,MACA,OACA,KACA;CAEA,MAAM,SAAS,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KAAK;CAExC,IAAI,CAAC,KAAK,QAAQ,KAAK,YAAY,KAAA,GAAW;EAC5C,MAAM,MAAM,MAAM,qBAAqB,QAAQ,QAAQ;EACvD,MAAM,OAAO,MAAM,mBAAmB;GACpC,UAAU,QAAQ,SAAS;GAC3B,gBAAgB;EAClB,CAAC;EACD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,GAAG;GAC9B,SAAS,cAAc,GAAG;GAC1B;EACF;EACA,MAAM,SAAS,cAAc,MAAM,MAAM;EACzC,MAAM,QAAQ,MAAM,iBAAiB;GACnC,GAAG;GACH,SAAS,OAAO;GAChB,QAAQ,KAAK,UAAU;EACzB,CAAC;EACD,sBAAsB,MAAM,SAAS,OAAO,IAAI;EAChD,IAAI,MAAM,QAAQ;GAChB,YAAY,MAAM,SAAS,GAAG;GAC9B;EACF;EACA,MAAM,WAAW,cAAc,MAAM;EACrC,MAAM,iBAAiB,MAAM,SAAS,QAAQ;EAC9C,MAAM,KAAK,MAAM,cAAc,QAAQ,QAAQ;EAK/C,aAAY,MAJM,OAAO,QAAQ,UAAU,MAAM;GAC/C,QAAQ;GACR,MAAM,MAAM;EACd,CAAC,GACe,MAAM,GAAG;EACzB;CACF;CAEA,MAAM,QAAQ,MAAM,iBAAiB,IAAI;CACzC,IAAI,MAAM,QAAQ;EAChB,YAAY,MAAM,SAAS,GAAG;EAC9B;CACF;CACA,MAAM,WAAW,cAAc,MAAM;CACrC,MAAM,iBAAiB,MAAM,SAAS,QAAQ;CAC9C,MAAM,KAAK,MAAM,cAAc,QAAQ,QAAQ;CAK/C,aAAY,MAJM,OAAO,QAAQ,UAAU,MAAM;EAC/C,QAAQ;EACR,MAAM,MAAM;CACd,CAAC,GACe,MAAM,GAAG;AAC3B;AAEA,eAAe,qBACb,QACA,UACiB;CACjB,MAAM,KAAK,MAAM,cAAc,QAAQ,QAAQ;CAW/C,MAAM,QAAY,MAVA,OAAO,QAStB,UAAU,MAAM,EAAE,OAAO,EAAE,QAAQ,UAAU,EAAE,CAAC,GAC7B;CACtB,MAAM,QACJ,KAAK,kBAAkB,aAAa,KAAK,UACrC,qBAAqB,KAAK,MAAM,KAAK,OAAO,CAAC,IAC5C,KAAK,WAAW;CACvB,OAAO;;aAEI,IAAI,KAAK,SAAS,EAAE,EAAE;MAC7B,KAAK,OAAO,SAAS,IAAI,KAAK,IAAI,EAAE,WAAW,GAAG;aAC3C,KAAK,cAAc,YAAY,QAAQ;MAC9C,KAAK,OAAO,SAAS,IAAI,KAAK,IAAI,EAAE,WAAW,GAAG;MAClD,KAAK,UAAU,YAAY,IAAI,KAAK,OAAO,EAAE,cAAc,GAAG;;;EAGlE,MAAM;;;;AAIR;AAEA,SAAS,IAAI,GAAmB;CAC9B,OAAO,EACJ,WAAW,KAAK,OAAO,EACvB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,MAAM;AAC3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as runEditorRoundTrip } from "./editor-
|
|
3
|
-
import { n as resolveContext, t as buildApiClient } from "./shared-
|
|
1
|
+
import { C as MxsError, i as emitSuccess, r as emitInfo } from "./output-Dg8PISJM.mjs";
|
|
2
|
+
import { t as runEditorRoundTrip } from "./editor-Dywlo4-8.mjs";
|
|
3
|
+
import { n as resolveContext, t as buildApiClient } from "./shared-SryY2QPY.mjs";
|
|
4
4
|
//#region src/commands/config/edit.ts
|
|
5
5
|
async function run(flags, out) {
|
|
6
6
|
const client = buildApiClient(await resolveContext(flags, out), flags);
|
|
@@ -37,4 +37,4 @@ async function run(flags, out) {
|
|
|
37
37
|
//#endregion
|
|
38
38
|
export { run };
|
|
39
39
|
|
|
40
|
-
//# sourceMappingURL=edit-
|
|
40
|
+
//# sourceMappingURL=edit-DjRE8Gk-.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-
|
|
1
|
+
{"version":3,"file":"edit-DjRE8Gk-.mjs","names":[],"sources":["../src/commands/config/edit.ts"],"sourcesContent":["import { runEditorRoundTrip } from '../../core/editor'\nimport { MxsError } from '../../core/errors'\nimport { emitInfo, emitSuccess, type OutputOptions } from '../../core/output'\nimport { buildApiClient, type GlobalFlags, resolveContext } from '../internal/shared'\n\nexport async function run(flags: GlobalFlags, out: OutputOptions) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n const res = await client.request<Record<string, unknown>>('/options')\n const initial = JSON.stringify(res.data ?? {}, null, 2)\n const next = await runEditorRoundTrip({\n filename: 'mxs-config.json',\n initialContent: initial,\n })\n if (next.trim() === initial.trim()) {\n emitInfo('no changes', out)\n return\n }\n let parsed: Record<string, unknown>\n try {\n parsed = JSON.parse(next)\n } catch (err: any) {\n throw new MxsError({\n code: 'validation.failed',\n message: `invalid JSON: ${err?.message ?? err}`,\n })\n }\n if (flags.dryRun) {\n emitSuccess(parsed, out)\n return\n }\n const results: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(parsed)) {\n const r = await client.request(`/options/${key}`, {\n method: 'PATCH',\n body: value,\n })\n results[key] = r.data\n }\n emitSuccess(results, out)\n}\n"],"mappings":";;;;AAKA,eAAsB,IAAI,OAAoB,KAAoB;CAEhE,MAAM,SAAS,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KAAK;CACxC,MAAM,MAAM,MAAM,OAAO,QAAiC,UAAU;CACpE,MAAM,UAAU,KAAK,UAAU,IAAI,QAAQ,CAAC,GAAG,MAAM,CAAC;CACtD,MAAM,OAAO,MAAM,mBAAmB;EACpC,UAAU;EACV,gBAAgB;CAClB,CAAC;CACD,IAAI,KAAK,KAAK,MAAM,QAAQ,KAAK,GAAG;EAClC,SAAS,cAAc,GAAG;EAC1B;CACF;CACA,IAAI;CACJ,IAAI;EACF,SAAS,KAAK,MAAM,IAAI;CAC1B,SAAS,KAAU;EACjB,MAAM,IAAI,SAAS;GACjB,MAAM;GACN,SAAS,iBAAiB,KAAK,WAAW;EAC5C,CAAC;CACH;CACA,IAAI,MAAM,QAAQ;EAChB,YAAY,QAAQ,GAAG;EACvB;CACF;CACA,MAAM,UAAmC,CAAC;CAC1C,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,GAK9C,QAAQ,QAAO,MAJC,OAAO,QAAQ,YAAY,OAAO;EAChD,QAAQ;EACR,MAAM;CACR,CAAC,GACgB;CAEnB,YAAY,SAAS,GAAG;AAC1B"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as buildPagePayload, s as parseEnvelope } from "./payload-
|
|
3
|
-
import { t as runEditorRoundTrip } from "./editor-
|
|
4
|
-
import { i as serializeFromLexical } from "./litexml-codec-
|
|
5
|
-
import { r as isSnowflakeId } from "./resolve-
|
|
6
|
-
import { n as resolveContext, t as buildApiClient } from "./shared-
|
|
7
|
-
import { n as applyPageEnvelopeMeta } from "./envelope-overlays-
|
|
1
|
+
import { C as MxsError, i as emitSuccess, r as emitInfo } from "./output-Dg8PISJM.mjs";
|
|
2
|
+
import { n as buildPagePayload, s as parseEnvelope } from "./payload-CjlZ9CeZ.mjs";
|
|
3
|
+
import { t as runEditorRoundTrip } from "./editor-Dywlo4-8.mjs";
|
|
4
|
+
import { i as serializeFromLexical } from "./litexml-codec-D-1oggXL.mjs";
|
|
5
|
+
import { r as isSnowflakeId } from "./resolve-DIu9N2sD.mjs";
|
|
6
|
+
import { n as resolveContext, t as buildApiClient } from "./shared-SryY2QPY.mjs";
|
|
7
|
+
import { n as applyPageEnvelopeMeta } from "./envelope-overlays-D1gmGVe5.mjs";
|
|
8
8
|
//#region src/commands/page/edit.ts
|
|
9
9
|
async function run(slugOrId, opts, flags, out) {
|
|
10
10
|
const client = buildApiClient(await resolveContext(flags, out), flags);
|
|
@@ -77,4 +77,4 @@ function esc(s) {
|
|
|
77
77
|
//#endregion
|
|
78
78
|
export { run };
|
|
79
79
|
|
|
80
|
-
//# sourceMappingURL=edit-
|
|
80
|
+
//# sourceMappingURL=edit-R6H5RtWd.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-
|
|
1
|
+
{"version":3,"file":"edit-R6H5RtWd.mjs","names":[],"sources":["../src/commands/page/edit.ts"],"sourcesContent":["import type { ApiClient } from '../../core/api-client'\nimport { runEditorRoundTrip } from '../../core/editor'\nimport { parseEnvelope } from '../../core/envelope'\nimport { MxsError } from '../../core/errors'\nimport { serializeFromLexical } from '../../core/litexml-codec'\nimport { emitInfo, emitSuccess, type OutputOptions } from '../../core/output'\nimport { buildPagePayload, type PageFlagInputs } from '../../core/payload'\nimport { isSnowflakeId } from '../../core/resolve'\nimport { applyPageEnvelopeMeta } from '../internal/envelope-overlays'\nimport { buildApiClient, type GlobalFlags, resolveContext } from '../internal/shared'\n\nexport async function run(\n slugOrId: string,\n opts: PageFlagInputs,\n flags: GlobalFlags,\n out: OutputOptions,\n) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n\n if (!opts.file && opts.content === undefined) {\n const xml = await materialize(client, slugOrId)\n const next = await runEditorRoundTrip({\n filename: `page-${slugOrId}.xml`,\n initialContent: xml,\n })\n if (next.trim() === xml.trim()) {\n emitInfo('no changes', out)\n return\n }\n const parsed = parseEnvelope(next, 'post')\n const built = await buildPagePayload({\n ...opts,\n content: parsed.contentXml,\n format: opts.format ?? 'lexical',\n })\n applyPageEnvelopeMeta(built.payload, parsed.meta)\n if (flags.dryRun) {\n emitSuccess(built.payload, out)\n return\n }\n const id = await resolveId(client, slugOrId)\n const res = await client.request(`/pages/${id}`, {\n method: 'PUT',\n body: built.payload,\n })\n emitSuccess(res.data, out)\n return\n }\n\n const built = await buildPagePayload(opts)\n if (flags.dryRun) {\n emitSuccess(built.payload, out)\n return\n }\n const id = await resolveId(client, slugOrId)\n const res = await client.request(`/pages/${id}`, {\n method: 'PUT',\n body: built.payload,\n })\n emitSuccess(res.data, out)\n}\n\nasync function resolveId(client: ApiClient, slugOrId: string): Promise<string> {\n if (isSnowflakeId(slugOrId)) return slugOrId\n const res = await client.request<{ id: string }>(`/pages/slug/${slugOrId}`)\n if (!res.data?.id)\n throw new MxsError({\n code: 'resource.not_found',\n message: `page not found: ${slugOrId}`,\n })\n return res.data.id\n}\n\nasync function materialize(\n client: ApiClient,\n slugOrId: string,\n): Promise<string> {\n const path = isSnowflakeId(slugOrId)\n ? `/pages/${slugOrId}`\n : `/pages/slug/${slugOrId}`\n const res = await client.request<any>(path, { query: { prefer: 'lexical' } })\n const page = res.data\n const inner =\n page.contentFormat === 'lexical' && page.content\n ? serializeFromLexical(JSON.parse(page.content))\n : (page.content ?? '')\n return `<mxpost>\n <meta>\n <title>${esc(page.title ?? '')}</title>\n <slug>${esc(page.slug ?? '')}</slug>\n </meta>\n <content>\n${inner}\n </content>\n</mxpost>\n`\n}\n\nfunction esc(s: string): string {\n return s\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n}\n"],"mappings":";;;;;;;;AAWA,eAAsB,IACpB,UACA,MACA,OACA,KACA;CAEA,MAAM,SAAS,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KAAK;CAExC,IAAI,CAAC,KAAK,QAAQ,KAAK,YAAY,KAAA,GAAW;EAC5C,MAAM,MAAM,MAAM,YAAY,QAAQ,QAAQ;EAC9C,MAAM,OAAO,MAAM,mBAAmB;GACpC,UAAU,QAAQ,SAAS;GAC3B,gBAAgB;EAClB,CAAC;EACD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,GAAG;GAC9B,SAAS,cAAc,GAAG;GAC1B;EACF;EACA,MAAM,SAAS,cAAc,MAAM,MAAM;EACzC,MAAM,QAAQ,MAAM,iBAAiB;GACnC,GAAG;GACH,SAAS,OAAO;GAChB,QAAQ,KAAK,UAAU;EACzB,CAAC;EACD,sBAAsB,MAAM,SAAS,OAAO,IAAI;EAChD,IAAI,MAAM,QAAQ;GAChB,YAAY,MAAM,SAAS,GAAG;GAC9B;EACF;EACA,MAAM,KAAK,MAAM,UAAU,QAAQ,QAAQ;EAK3C,aAAY,MAJM,OAAO,QAAQ,UAAU,MAAM;GAC/C,QAAQ;GACR,MAAM,MAAM;EACd,CAAC,GACe,MAAM,GAAG;EACzB;CACF;CAEA,MAAM,QAAQ,MAAM,iBAAiB,IAAI;CACzC,IAAI,MAAM,QAAQ;EAChB,YAAY,MAAM,SAAS,GAAG;EAC9B;CACF;CACA,MAAM,KAAK,MAAM,UAAU,QAAQ,QAAQ;CAK3C,aAAY,MAJM,OAAO,QAAQ,UAAU,MAAM;EAC/C,QAAQ;EACR,MAAM,MAAM;CACd,CAAC,GACe,MAAM,GAAG;AAC3B;AAEA,eAAe,UAAU,QAAmB,UAAmC;CAC7E,IAAI,cAAc,QAAQ,GAAG,OAAO;CACpC,MAAM,MAAM,MAAM,OAAO,QAAwB,eAAe,UAAU;CAC1E,IAAI,CAAC,IAAI,MAAM,IACb,MAAM,IAAI,SAAS;EACjB,MAAM;EACN,SAAS,mBAAmB;CAC9B,CAAC;CACH,OAAO,IAAI,KAAK;AAClB;AAEA,eAAe,YACb,QACA,UACiB;CACjB,MAAM,OAAO,cAAc,QAAQ,IAC/B,UAAU,aACV,eAAe;CAEnB,MAAM,QAAO,MADK,OAAO,QAAa,MAAM,EAAE,OAAO,EAAE,QAAQ,UAAU,EAAE,CAAC,GAC3D;CACjB,MAAM,QACJ,KAAK,kBAAkB,aAAa,KAAK,UACrC,qBAAqB,KAAK,MAAM,KAAK,OAAO,CAAC,IAC5C,KAAK,WAAW;CACvB,OAAO;;aAEI,IAAI,KAAK,SAAS,EAAE,EAAE;YACvB,IAAI,KAAK,QAAQ,EAAE,EAAE;;;EAG/B,MAAM;;;;AAIR;AAEA,SAAS,IAAI,GAAmB;CAC9B,OAAO,EACJ,WAAW,KAAK,OAAO,EACvB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,MAAM;AAC3B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { C as MxsError } from "./output-Dg8PISJM.mjs";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { promises } from "node:fs";
|
|
@@ -39,4 +39,4 @@ function spawnInteractive(cmd, args) {
|
|
|
39
39
|
//#endregion
|
|
40
40
|
export { runEditorRoundTrip as t };
|
|
41
41
|
|
|
42
|
-
//# sourceMappingURL=editor-
|
|
42
|
+
//# sourceMappingURL=editor-Dywlo4-8.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-
|
|
1
|
+
{"version":3,"file":"editor-Dywlo4-8.mjs","names":["fs"],"sources":["../src/core/editor.ts"],"sourcesContent":["import { spawn } from 'node:child_process'\nimport { promises as fs } from 'node:fs'\nimport os from 'node:os'\nimport path from 'node:path'\n\nimport { MxsError } from './errors'\n\nexport interface EditorOptions {\n filename: string\n initialContent: string\n editor?: string\n}\n\nexport async function runEditorRoundTrip(opts: EditorOptions): Promise<string> {\n const editor = opts.editor ?? process.env.EDITOR ?? process.env.VISUAL\n if (!editor) {\n throw new MxsError({\n code: 'generic',\n message: '$EDITOR not set',\n hint: 'export EDITOR=vim (or another editor) and try again',\n })\n }\n const dir = await fs.mkdtemp(path.join(os.tmpdir(), 'mxs-'))\n const tmpPath = path.join(dir, opts.filename)\n await fs.writeFile(tmpPath, opts.initialContent, 'utf8')\n await spawnInteractive(editor, [tmpPath])\n const next = await fs.readFile(tmpPath, 'utf8')\n await fs.unlink(tmpPath).catch(() => undefined)\n await fs.rmdir(dir).catch(() => undefined)\n return next\n}\n\nfunction spawnInteractive(cmd: string, args: string[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(cmd, args, { stdio: 'inherit', shell: true })\n child.on('error', reject)\n child.on('exit', (code) => {\n if (code === 0) resolve()\n else\n reject(\n new MxsError({\n code: 'generic',\n message: `editor exited with code ${code}`,\n }),\n )\n })\n })\n}\n"],"mappings":";;;;;;AAaA,eAAsB,mBAAmB,MAAsC;CAC7E,MAAM,SAAS,KAAK,UAAU,QAAQ,IAAI,UAAU,QAAQ,IAAI;CAChE,IAAI,CAAC,QACH,MAAM,IAAI,SAAS;EACjB,MAAM;EACN,SAAS;EACT,MAAM;CACR,CAAC;CAEH,MAAM,MAAM,MAAMA,SAAG,QAAQ,KAAK,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;CAC3D,MAAM,UAAU,KAAK,KAAK,KAAK,KAAK,QAAQ;CAC5C,MAAMA,SAAG,UAAU,SAAS,KAAK,gBAAgB,MAAM;CACvD,MAAM,iBAAiB,QAAQ,CAAC,OAAO,CAAC;CACxC,MAAM,OAAO,MAAMA,SAAG,SAAS,SAAS,MAAM;CAC9C,MAAMA,SAAG,OAAO,OAAO,EAAE,YAAY,KAAA,CAAS;CAC9C,MAAMA,SAAG,MAAM,GAAG,EAAE,YAAY,KAAA,CAAS;CACzC,OAAO;AACT;AAEA,SAAS,iBAAiB,KAAa,MAA+B;CACpE,OAAO,IAAI,SAAS,SAAS,WAAW;EACtC,MAAM,QAAQ,MAAM,KAAK,MAAM;GAAE,OAAO;GAAW,OAAO;EAAK,CAAC;EAChE,MAAM,GAAG,SAAS,MAAM;EACxB,MAAM,GAAG,SAAS,SAAS;GACzB,IAAI,SAAS,GAAG,QAAQ;QAEtB,OACE,IAAI,SAAS;IACX,MAAM;IACN,SAAS,2BAA2B;GACtC,CAAC,CACH;EACJ,CAAC;CACH,CAAC;AACH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as coerceMeta } from "./payload-
|
|
1
|
+
import { a as coerceMeta } from "./payload-CjlZ9CeZ.mjs";
|
|
2
2
|
//#region src/commands/internal/envelope-overlays.ts
|
|
3
3
|
function applyNoteEnvelopeMeta(payload, rawMeta) {
|
|
4
4
|
const meta = coerceMeta(rawMeta);
|
|
@@ -23,4 +23,4 @@ function applyPageEnvelopeMeta(payload, rawMeta) {
|
|
|
23
23
|
//#endregion
|
|
24
24
|
export { applyPageEnvelopeMeta as n, applyNoteEnvelopeMeta as t };
|
|
25
25
|
|
|
26
|
-
//# sourceMappingURL=envelope-overlays-
|
|
26
|
+
//# sourceMappingURL=envelope-overlays-D1gmGVe5.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope-overlays-
|
|
1
|
+
{"version":3,"file":"envelope-overlays-D1gmGVe5.mjs","names":[],"sources":["../src/commands/internal/envelope-overlays.ts"],"sourcesContent":["import { coerceMeta } from '../../core/envelope'\n\nexport function applyNoteEnvelopeMeta(\n payload: Record<string, unknown>,\n rawMeta: Record<string, unknown>,\n): void {\n const meta = coerceMeta(rawMeta)\n if (meta.title !== undefined) payload.title = meta.title\n if (meta.slug !== undefined) payload.slug = meta.slug\n if (meta.topic !== undefined) payload.__topicName = meta.topic\n if (meta.state !== undefined) payload.isPublished = meta.state === 'publish'\n if (meta.mood !== undefined) payload.mood = meta.mood\n if (meta.weather !== undefined) payload.weather = meta.weather\n if (meta.publicAt !== undefined) payload.publicAt = meta.publicAt\n if (meta.password !== undefined) payload.password = meta.password\n if (meta.bookmark !== undefined) payload.bookmark = meta.bookmark\n if (meta.location !== undefined) payload.location = meta.location\n}\n\nexport function applyPageEnvelopeMeta(\n payload: Record<string, unknown>,\n rawMeta: Record<string, unknown>,\n): void {\n const meta = coerceMeta(rawMeta)\n if (meta.title !== undefined) payload.title = meta.title\n if (meta.slug !== undefined) payload.slug = meta.slug\n if (meta.subtitle !== undefined) payload.subtitle = meta.subtitle\n if (meta.order !== undefined) payload.order = meta.order\n}\n"],"mappings":";;AAEA,SAAgB,sBACd,SACA,SACM;CACN,MAAM,OAAO,WAAW,OAAO;CAC/B,IAAI,KAAK,UAAU,KAAA,GAAW,QAAQ,QAAQ,KAAK;CACnD,IAAI,KAAK,SAAS,KAAA,GAAW,QAAQ,OAAO,KAAK;CACjD,IAAI,KAAK,UAAU,KAAA,GAAW,QAAQ,cAAc,KAAK;CACzD,IAAI,KAAK,UAAU,KAAA,GAAW,QAAQ,cAAc,KAAK,UAAU;CACnE,IAAI,KAAK,SAAS,KAAA,GAAW,QAAQ,OAAO,KAAK;CACjD,IAAI,KAAK,YAAY,KAAA,GAAW,QAAQ,UAAU,KAAK;CACvD,IAAI,KAAK,aAAa,KAAA,GAAW,QAAQ,WAAW,KAAK;CACzD,IAAI,KAAK,aAAa,KAAA,GAAW,QAAQ,WAAW,KAAK;CACzD,IAAI,KAAK,aAAa,KAAA,GAAW,QAAQ,WAAW,KAAK;CACzD,IAAI,KAAK,aAAa,KAAA,GAAW,QAAQ,WAAW,KAAK;AAC3D;AAEA,SAAgB,sBACd,SACA,SACM;CACN,MAAM,OAAO,WAAW,OAAO;CAC/B,IAAI,KAAK,UAAU,KAAA,GAAW,QAAQ,QAAQ,KAAK;CACnD,IAAI,KAAK,SAAS,KAAA,GAAW,QAAQ,OAAO,KAAK;CACjD,IAAI,KAAK,aAAa,KAAA,GAAW,QAAQ,WAAW,KAAK;CACzD,IAAI,KAAK,UAAU,KAAA,GAAW,QAAQ,QAAQ,KAAK;AACrD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { t as emitDocument } from "./document-output-BtY8T7eY.mjs";
|
|
2
|
+
import { r as isSnowflakeId } from "./resolve-DIu9N2sD.mjs";
|
|
3
|
+
import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-SryY2QPY.mjs";
|
|
4
|
+
//#region src/commands/page/get.ts
|
|
5
|
+
const KIND = "page";
|
|
6
|
+
async function run(slugOrId, flags, out) {
|
|
7
|
+
const client = buildApiClient(await resolveContext(flags, out), flags);
|
|
8
|
+
const path = isSnowflakeId(slugOrId) ? `/pages/${slugOrId}` : `/pages/slug/${slugOrId}`;
|
|
9
|
+
emitDocument(KIND, (await client.request(path, { query: withLangQuery(flags, { prefer: "lexical" }) })).data, out);
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { run };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=get-CiLnUGHw.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-CiLnUGHw.mjs","names":[],"sources":["../src/commands/page/get.ts"],"sourcesContent":["import { emitDocument, type DocumentKind } from '../../core/document-output'\nimport type { OutputOptions } from '../../core/output'\nimport { isSnowflakeId } from '../../core/resolve'\nimport {\n buildApiClient,\n type GlobalFlags,\n resolveContext,\n withLangQuery,\n} from '../internal/shared'\n\nconst KIND: DocumentKind = 'page'\n\nexport async function run(\n slugOrId: string,\n flags: GlobalFlags,\n out: OutputOptions,\n) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n const path = isSnowflakeId(slugOrId)\n ? `/pages/${slugOrId}`\n : `/pages/slug/${slugOrId}`\n const res = await client.request(path, {\n query: withLangQuery(flags, { prefer: 'lexical' }),\n })\n emitDocument(KIND, res.data, out)\n}\n"],"mappings":";;;;AAUA,MAAM,OAAqB;AAE3B,eAAsB,IACpB,UACA,OACA,KACA;CAEA,MAAM,SAAS,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KAAK;CACxC,MAAM,OAAO,cAAc,QAAQ,IAC/B,UAAU,aACV,eAAe;CAInB,aAAa,OAAM,MAHD,OAAO,QAAQ,MAAM,EACrC,OAAO,cAAc,OAAO,EAAE,QAAQ,UAAU,CAAC,EACnD,CAAC,GACsB,MAAM,GAAG;AAClC"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as emitDocument } from "./document-output-
|
|
3
|
-
import { r as isSnowflakeId } from "./resolve-
|
|
4
|
-
import { n as resolveContext, t as buildApiClient } from "./shared-
|
|
1
|
+
import { C as MxsError } from "./output-Dg8PISJM.mjs";
|
|
2
|
+
import { t as emitDocument } from "./document-output-BtY8T7eY.mjs";
|
|
3
|
+
import { r as isSnowflakeId } from "./resolve-DIu9N2sD.mjs";
|
|
4
|
+
import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-SryY2QPY.mjs";
|
|
5
5
|
//#region src/commands/note/get.ts
|
|
6
6
|
const KIND = "note";
|
|
7
7
|
async function run(slugOrId, flags, out) {
|
|
8
8
|
const client = buildApiClient(await resolveContext(flags, out), flags);
|
|
9
9
|
if (isSnowflakeId(slugOrId)) {
|
|
10
|
-
emitDocument(KIND, (await client.request(`/notes/${slugOrId}`, { query: { prefer: "lexical" } })).data, out);
|
|
10
|
+
emitDocument(KIND, (await client.request(`/notes/${slugOrId}`, { query: withLangQuery(flags, { prefer: "lexical" }) })).data, out);
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
13
13
|
if (/^\d+$/.test(slugOrId)) {
|
|
14
|
-
emitDocument(KIND, (await client.request(`/notes/nid/${slugOrId}`, { query: {
|
|
14
|
+
emitDocument(KIND, (await client.request(`/notes/nid/${slugOrId}`, { query: withLangQuery(flags, {
|
|
15
15
|
single: "1",
|
|
16
16
|
prefer: "lexical"
|
|
17
|
-
} })).data, out);
|
|
17
|
+
}) })).data, out);
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
20
|
throw new MxsError({
|
|
@@ -25,4 +25,4 @@ async function run(slugOrId, flags, out) {
|
|
|
25
25
|
//#endregion
|
|
26
26
|
export { run };
|
|
27
27
|
|
|
28
|
-
//# sourceMappingURL=get-
|
|
28
|
+
//# sourceMappingURL=get-CkBqVyGi.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-CkBqVyGi.mjs","names":[],"sources":["../src/commands/note/get.ts"],"sourcesContent":["import { type DocumentKind, emitDocument } from '../../core/document-output'\nimport { MxsError } from '../../core/errors'\nimport type { OutputOptions } from '../../core/output'\nimport { isSnowflakeId } from '../../core/resolve'\nimport {\n buildApiClient,\n type GlobalFlags,\n resolveContext,\n withLangQuery,\n} from '../internal/shared'\n\nconst KIND: DocumentKind = 'note'\n\nexport async function run(\n slugOrId: string,\n flags: GlobalFlags,\n out: OutputOptions,\n) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n if (isSnowflakeId(slugOrId)) {\n const res = await client.request(`/notes/${slugOrId}`, {\n query: withLangQuery(flags, { prefer: 'lexical' }),\n })\n emitDocument(KIND, res.data, out)\n return\n }\n if (/^\\d+$/.test(slugOrId)) {\n const res = await client.request(`/notes/nid/${slugOrId}`, {\n query: withLangQuery(flags, { single: '1', prefer: 'lexical' }),\n })\n emitDocument(KIND, res.data, out)\n return\n }\n throw new MxsError({\n code: 'validation.failed',\n message: `invalid note reference: ${slugOrId} (use snowflake id or numeric nid)`,\n })\n}\n"],"mappings":";;;;;AAWA,MAAM,OAAqB;AAE3B,eAAsB,IACpB,UACA,OACA,KACA;CAEA,MAAM,SAAS,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KAAK;CACxC,IAAI,cAAc,QAAQ,GAAG;EAI3B,aAAa,OAAM,MAHD,OAAO,QAAQ,UAAU,YAAY,EACrD,OAAO,cAAc,OAAO,EAAE,QAAQ,UAAU,CAAC,EACnD,CAAC,GACsB,MAAM,GAAG;EAChC;CACF;CACA,IAAI,QAAQ,KAAK,QAAQ,GAAG;EAI1B,aAAa,OAAM,MAHD,OAAO,QAAQ,cAAc,YAAY,EACzD,OAAO,cAAc,OAAO;GAAE,QAAQ;GAAK,QAAQ;EAAU,CAAC,EAChE,CAAC,GACsB,MAAM,GAAG;EAChC;CACF;CACA,MAAM,IAAI,SAAS;EACjB,MAAM;EACN,SAAS,2BAA2B,SAAS;CAC/C,CAAC;AACH"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as emitSuccess } from "./output-
|
|
2
|
-
import { n as resolveContext, t as buildApiClient } from "./shared-
|
|
1
|
+
import { i as emitSuccess } from "./output-Dg8PISJM.mjs";
|
|
2
|
+
import { n as resolveContext, t as buildApiClient } from "./shared-SryY2QPY.mjs";
|
|
3
3
|
//#region src/commands/config/get.ts
|
|
4
4
|
async function run(key, flags, out) {
|
|
5
5
|
emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request(`/options/${key}`)).data, out);
|
|
@@ -7,4 +7,4 @@ async function run(key, flags, out) {
|
|
|
7
7
|
//#endregion
|
|
8
8
|
export { run };
|
|
9
9
|
|
|
10
|
-
//# sourceMappingURL=get-
|
|
10
|
+
//# sourceMappingURL=get-DNdde54z.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-
|
|
1
|
+
{"version":3,"file":"get-DNdde54z.mjs","names":[],"sources":["../src/commands/config/get.ts"],"sourcesContent":["import { emitSuccess, type OutputOptions } from '../../core/output'\nimport { buildApiClient, type GlobalFlags, resolveContext } from '../internal/shared'\n\nexport async function run(key: string, flags: GlobalFlags, out: OutputOptions) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n const res = await client.request(`/options/${key}`)\n emitSuccess(res.data, out)\n}\n"],"mappings":";;;AAGA,eAAsB,IAAI,KAAa,OAAoB,KAAoB;CAI7E,aAAY,MAFG,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KACZ,EAAE,QAAQ,YAAY,KAAK,GAClC,MAAM,GAAG;AAC3B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { t as emitDocument } from "./document-output-BtY8T7eY.mjs";
|
|
2
|
+
import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-SryY2QPY.mjs";
|
|
3
|
+
import { n as resolvePostReadPath } from "./resolve-B4-fMQ6I.mjs";
|
|
4
|
+
//#region src/commands/post/get.ts
|
|
5
|
+
const KIND = "post";
|
|
6
|
+
async function run(slugOrId, flags, out) {
|
|
7
|
+
const client = buildApiClient(await resolveContext(flags, out), flags);
|
|
8
|
+
const path = await resolvePostReadPath(client, slugOrId);
|
|
9
|
+
emitDocument(KIND, (await client.request(path, { query: withLangQuery(flags, { prefer: "lexical" }) })).data, out);
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { run };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=get-DbH58EkF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-DbH58EkF.mjs","names":[],"sources":["../src/commands/post/get.ts"],"sourcesContent":["import { emitDocument, type DocumentKind } from '../../core/document-output'\nimport type { OutputOptions } from '../../core/output'\nimport {\n buildApiClient,\n type GlobalFlags,\n resolveContext,\n withLangQuery,\n} from '../internal/shared'\nimport { resolvePostReadPath } from './resolve'\n\nconst KIND: DocumentKind = 'post'\n\nexport async function run(\n slugOrId: string,\n flags: GlobalFlags,\n out: OutputOptions,\n) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n const path = await resolvePostReadPath(client, slugOrId)\n const res = await client.request(path, {\n query: withLangQuery(flags, { prefer: 'lexical' }),\n })\n emitDocument(KIND, res.data, out)\n}\n"],"mappings":";;;;AAUA,MAAM,OAAqB;AAE3B,eAAsB,IACpB,UACA,OACA,KACA;CAEA,MAAM,SAAS,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KAAK;CACxC,MAAM,OAAO,MAAM,oBAAoB,QAAQ,QAAQ;CAIvD,aAAa,OAAM,MAHD,OAAO,QAAQ,MAAM,EACrC,OAAO,cAAc,OAAO,EAAE,QAAQ,UAAU,CAAC,EACnD,CAAC,GACsB,MAAM,GAAG;AAClC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { i as emitSuccess } from "./output-Dg8PISJM.mjs";
|
|
2
|
+
import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-SryY2QPY.mjs";
|
|
3
|
+
//#region src/commands/category/get.ts
|
|
4
|
+
async function run(slugOrId, flags, out) {
|
|
5
|
+
emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request(`/categories/${slugOrId}`, { query: withLangQuery(flags) })).data, out);
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
export { run };
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=get-IQQv4_rP.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-IQQv4_rP.mjs","names":[],"sources":["../src/commands/category/get.ts"],"sourcesContent":["import { emitSuccess, type OutputOptions } from '../../core/output'\nimport {\n buildApiClient,\n type GlobalFlags,\n resolveContext,\n withLangQuery,\n} from '../internal/shared'\n\nexport async function run(\n slugOrId: string,\n flags: GlobalFlags,\n out: OutputOptions,\n) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n const res = await client.request(`/categories/${slugOrId}`, {\n query: withLangQuery(flags),\n })\n emitSuccess(res.data, out)\n}\n"],"mappings":";;;AAQA,eAAsB,IACpB,UACA,OACA,KACA;CAMA,aAAY,MAJG,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KACZ,EAAE,QAAQ,eAAe,YAAY,EAC1D,OAAO,cAAc,KAAK,EAC5B,CAAC,GACe,MAAM,GAAG;AAC3B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { i as emitSuccess } from "./output-Dg8PISJM.mjs";
|
|
2
|
+
import { r as isSnowflakeId } from "./resolve-DIu9N2sD.mjs";
|
|
3
|
+
import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-SryY2QPY.mjs";
|
|
4
|
+
//#region src/commands/topic/get.ts
|
|
5
|
+
async function run(slugOrId, flags, out) {
|
|
6
|
+
const client = buildApiClient(await resolveContext(flags, out), flags);
|
|
7
|
+
const path = isSnowflakeId(slugOrId) ? `/topics/${slugOrId}` : `/topics/slug/${slugOrId}`;
|
|
8
|
+
emitSuccess((await client.request(path, { query: withLangQuery(flags) })).data, out);
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { run };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=get-xtByxURm.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-xtByxURm.mjs","names":[],"sources":["../src/commands/topic/get.ts"],"sourcesContent":["import { emitSuccess, type OutputOptions } from '../../core/output'\nimport { isSnowflakeId } from '../../core/resolve'\nimport {\n buildApiClient,\n type GlobalFlags,\n resolveContext,\n withLangQuery,\n} from '../internal/shared'\n\nexport async function run(\n slugOrId: string,\n flags: GlobalFlags,\n out: OutputOptions,\n) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n const path = isSnowflakeId(slugOrId)\n ? `/topics/${slugOrId}`\n : `/topics/slug/${slugOrId}`\n const res = await client.request(path, { query: withLangQuery(flags) })\n emitSuccess(res.data, out)\n}\n"],"mappings":";;;;AASA,eAAsB,IACpB,UACA,OACA,KACA;CAEA,MAAM,SAAS,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KAAK;CACxC,MAAM,OAAO,cAAc,QAAQ,IAC/B,WAAW,aACX,gBAAgB;CAEpB,aAAY,MADM,OAAO,QAAQ,MAAM,EAAE,OAAO,cAAc,KAAK,EAAE,CAAC,GACtD,MAAM,GAAG;AAC3B"}
|