@mx-space/cli 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +5 -1
  2. package/dist/{auth-DIFZzoMm.mjs → auth-OeKZZ_2x.mjs} +2 -2
  3. package/dist/{auth-DIFZzoMm.mjs.map → auth-OeKZZ_2x.mjs.map} +1 -1
  4. package/dist/bin/mxs.d.mts +1 -0
  5. package/dist/bin/mxs.mjs +39 -39
  6. package/dist/bin/mxs.mjs.map +1 -1
  7. package/dist/config-store-WL7dNMS6.mjs +226 -0
  8. package/dist/config-store-WL7dNMS6.mjs.map +1 -0
  9. package/dist/{create-Dz6rJJSS.mjs → create-BVHnXtIH.mjs} +2 -2
  10. package/dist/{create-Dz6rJJSS.mjs.map → create-BVHnXtIH.mjs.map} +1 -1
  11. package/dist/{create-DT1l2hue.mjs → create-BWA2WGrW.mjs} +2 -2
  12. package/dist/{create-DT1l2hue.mjs.map → create-BWA2WGrW.mjs.map} +1 -1
  13. package/dist/{create-B2AOQL1e.mjs → create-C85MSrtt.mjs} +2 -2
  14. package/dist/{create-B2AOQL1e.mjs.map → create-C85MSrtt.mjs.map} +1 -1
  15. package/dist/{create-DjlRHPXy.mjs → create-Cxnqt_Wt.mjs} +2 -2
  16. package/dist/{create-DjlRHPXy.mjs.map → create-Cxnqt_Wt.mjs.map} +1 -1
  17. package/dist/{create-CwjGcv2n.mjs → create-DUOSAqBm.mjs} +2 -2
  18. package/dist/{create-CwjGcv2n.mjs.map → create-DUOSAqBm.mjs.map} +1 -1
  19. package/dist/{delete-YzRliRn8.mjs → delete-BEXOOFAJ.mjs} +2 -2
  20. package/dist/{delete-YzRliRn8.mjs.map → delete-BEXOOFAJ.mjs.map} +1 -1
  21. package/dist/{delete-B4dGrrus.mjs → delete-CGy-cV6k.mjs} +2 -2
  22. package/dist/{delete-B4dGrrus.mjs.map → delete-CGy-cV6k.mjs.map} +1 -1
  23. package/dist/{delete-BH6ZngTz.mjs → delete-CKqlAUT8.mjs} +2 -2
  24. package/dist/{delete-BH6ZngTz.mjs.map → delete-CKqlAUT8.mjs.map} +1 -1
  25. package/dist/{delete-CaG2d_xt.mjs → delete-CcyrLNZv.mjs} +2 -2
  26. package/dist/{delete-CaG2d_xt.mjs.map → delete-CcyrLNZv.mjs.map} +1 -1
  27. package/dist/{delete-BrY5zJ6S.mjs → delete-Cjxehwj7.mjs} +2 -2
  28. package/dist/{delete-BrY5zJ6S.mjs.map → delete-Cjxehwj7.mjs.map} +1 -1
  29. package/dist/{document-output-BVB8emLt.mjs → document-output-C5PWbz2p.mjs} +57 -2
  30. package/dist/document-output-C5PWbz2p.mjs.map +1 -0
  31. package/dist/{edit-Bb0Ze4w6.mjs → edit-BRaZ6GGg.mjs} +2 -2
  32. package/dist/{edit-Bb0Ze4w6.mjs.map → edit-BRaZ6GGg.mjs.map} +1 -1
  33. package/dist/{edit-z55ofr1S.mjs → edit-BuKMUNVC.mjs} +2 -2
  34. package/dist/{edit-z55ofr1S.mjs.map → edit-BuKMUNVC.mjs.map} +1 -1
  35. package/dist/{edit-BeFmC3XD.mjs → edit-DFnOnk4i.mjs} +2 -2
  36. package/dist/{edit-BeFmC3XD.mjs.map → edit-DFnOnk4i.mjs.map} +1 -1
  37. package/dist/{edit-DLDw_ZWX.mjs → edit-t108N11Q.mjs} +2 -2
  38. package/dist/{edit-DLDw_ZWX.mjs.map → edit-t108N11Q.mjs.map} +1 -1
  39. package/dist/{get-ClkpDBTL.mjs → get-BYoAlJwB.mjs} +3 -3
  40. package/dist/get-BYoAlJwB.mjs.map +1 -0
  41. package/dist/{get-DJfUJ3sP.mjs → get-CwcNFb39.mjs} +3 -3
  42. package/dist/get-CwcNFb39.mjs.map +1 -0
  43. package/dist/{get-DiqaQvoS.mjs → get-DnDvLa9S.mjs} +4 -4
  44. package/dist/get-DnDvLa9S.mjs.map +1 -0
  45. package/dist/{get-2qjq0wgG.mjs → get-Doi-NKAh.mjs} +6 -6
  46. package/dist/get-Doi-NKAh.mjs.map +1 -0
  47. package/dist/{get-CRR13lgj.mjs → get-DxTU7Nom.mjs} +2 -2
  48. package/dist/{get-CRR13lgj.mjs.map → get-DxTU7Nom.mjs.map} +1 -1
  49. package/dist/{get-BGAk1Zmv.mjs → get-GdRz82RW.mjs} +4 -4
  50. package/dist/get-GdRz82RW.mjs.map +1 -0
  51. package/dist/index.d.mts +15 -3
  52. package/dist/index.mjs +5 -5
  53. package/dist/{list-Fp4nKfQb.mjs → list-CLAcZYZ4.mjs} +3 -3
  54. package/dist/list-CLAcZYZ4.mjs.map +1 -0
  55. package/dist/{list-DY-tPNG-.mjs → list-CtME3aDw.mjs} +2 -2
  56. package/dist/{list-DY-tPNG-.mjs.map → list-CtME3aDw.mjs.map} +1 -1
  57. package/dist/{list-DlQSkbqx.mjs → list-DHG-MzOM.mjs} +3 -3
  58. package/dist/list-DHG-MzOM.mjs.map +1 -0
  59. package/dist/{list-BYzhflDg.mjs → list-DN81zVDA.mjs} +4 -4
  60. package/dist/list-DN81zVDA.mjs.map +1 -0
  61. package/dist/list-DVunNsXr.mjs +10 -0
  62. package/dist/list-DVunNsXr.mjs.map +1 -0
  63. package/dist/list-DbNCVZbz.mjs +15 -0
  64. package/dist/list-DbNCVZbz.mjs.map +1 -0
  65. package/dist/{login-CLOJ-fTJ.mjs → login-mjliJn8U.mjs} +4 -4
  66. package/dist/{login-CLOJ-fTJ.mjs.map → login-mjliJn8U.mjs.map} +1 -1
  67. package/dist/{logout-v8ihxsim.mjs → logout-Bslt_ZJ4.mjs} +2 -2
  68. package/dist/{logout-v8ihxsim.mjs.map → logout-Bslt_ZJ4.mjs.map} +1 -1
  69. package/dist/{onboarding-640IldLz.mjs → onboarding-C1t1yoay.mjs} +3 -3
  70. package/dist/{onboarding-640IldLz.mjs.map → onboarding-C1t1yoay.mjs.map} +1 -1
  71. package/dist/output-BM7aBFwt.mjs.map +1 -1
  72. package/dist/{publish-pRBfTJfe.mjs → publish-CN3NTJ_r.mjs} +2 -2
  73. package/dist/{publish-pRBfTJfe.mjs.map → publish-CN3NTJ_r.mjs.map} +1 -1
  74. package/dist/{publish-DkTYB-eK.mjs → publish-akQWYsnL.mjs} +2 -2
  75. package/dist/{publish-DkTYB-eK.mjs.map → publish-akQWYsnL.mjs.map} +1 -1
  76. package/dist/{set-BEGQz2si.mjs → set-ClbrGFGv.mjs} +2 -2
  77. package/dist/{set-BEGQz2si.mjs.map → set-ClbrGFGv.mjs.map} +1 -1
  78. package/dist/{shared-D0HVBDHI.mjs → shared-C2EAn5h_.mjs} +11 -4
  79. package/dist/shared-C2EAn5h_.mjs.map +1 -0
  80. package/dist/{status-LXrN9fI-.mjs → status-Cvyrrx-J.mjs} +3 -3
  81. package/dist/{status-LXrN9fI-.mjs.map → status-Cvyrrx-J.mjs.map} +1 -1
  82. package/dist/{update-BMZQPOvR.mjs → update-CHmckeo8.mjs} +2 -2
  83. package/dist/{update-BMZQPOvR.mjs.map → update-CHmckeo8.mjs.map} +1 -1
  84. package/dist/{update-q66TLS38.mjs → update-CJjwg09n.mjs} +2 -2
  85. package/dist/{update-q66TLS38.mjs.map → update-CJjwg09n.mjs.map} +1 -1
  86. package/dist/{update-Dx6AF8tf.mjs → update-Duh-iVOZ.mjs} +2 -2
  87. package/dist/{update-Dx6AF8tf.mjs.map → update-Duh-iVOZ.mjs.map} +1 -1
  88. package/dist/{update-B9ynFCdZ.mjs → update-dc-72pUN.mjs} +2 -2
  89. package/dist/{update-B9ynFCdZ.mjs.map → update-dc-72pUN.mjs.map} +1 -1
  90. package/dist/{update-BXz0l7Lz.mjs → update-qfiC-9Og.mjs} +2 -2
  91. package/dist/{update-BXz0l7Lz.mjs.map → update-qfiC-9Og.mjs.map} +1 -1
  92. package/dist/{whoami-CTkctOEd.mjs → whoami-UwcdRchK.mjs} +3 -3
  93. package/dist/{whoami-CTkctOEd.mjs.map → whoami-UwcdRchK.mjs.map} +1 -1
  94. package/package.json +1 -1
  95. package/dist/config-store-DIu7x0ao.mjs +0 -121
  96. package/dist/config-store-DIu7x0ao.mjs.map +0 -1
  97. package/dist/document-output-BVB8emLt.mjs.map +0 -1
  98. package/dist/get-2qjq0wgG.mjs.map +0 -1
  99. package/dist/get-BGAk1Zmv.mjs.map +0 -1
  100. package/dist/get-ClkpDBTL.mjs.map +0 -1
  101. package/dist/get-DJfUJ3sP.mjs.map +0 -1
  102. package/dist/get-DiqaQvoS.mjs.map +0 -1
  103. package/dist/list-BYzhflDg.mjs.map +0 -1
  104. package/dist/list-DlQSkbqx.mjs.map +0 -1
  105. package/dist/list-DsrA5wIz.mjs +0 -15
  106. package/dist/list-DsrA5wIz.mjs.map +0 -1
  107. package/dist/list-Fp4nKfQb.mjs.map +0 -1
  108. package/dist/list-s_tloiEX.mjs +0 -10
  109. package/dist/list-s_tloiEX.mjs.map +0 -1
  110. package/dist/shared-D0HVBDHI.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-output-C5PWbz2p.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('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\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"}
@@ -2,7 +2,7 @@ import { i as emitSuccess, r as emitInfo } from "./output-BM7aBFwt.mjs";
2
2
  import { s as parseEnvelope, t as buildNotePayload } from "./payload-CN11pUto.mjs";
3
3
  import { t as runEditorRoundTrip } from "./editor-xrF-j3UE.mjs";
4
4
  import { i as serializeFromLexical } from "./litexml-codec-CDoRloiR.mjs";
5
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
5
+ import { n as resolveContext, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
6
6
  import { r as resolveTopicRefs, t as buildResolver } from "./resolve-helpers-CahPoJ0Y.mjs";
7
7
  import { t as resolveNoteId } from "./resolve-CyjMlaoJ.mjs";
8
8
  import { t as applyNoteEnvelopeMeta } from "./envelope-overlays-DPAlMNW1.mjs";
@@ -76,4 +76,4 @@ function esc(s) {
76
76
  //#endregion
77
77
  export { run };
78
78
 
79
- //# sourceMappingURL=edit-Bb0Ze4w6.mjs.map
79
+ //# sourceMappingURL=edit-BRaZ6GGg.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"edit-Bb0Ze4w6.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('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\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
+ {"version":3,"file":"edit-BRaZ6GGg.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('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\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
1
  import { i as emitSuccess, r as emitInfo, s as MxsError } from "./output-BM7aBFwt.mjs";
2
2
  import { t as runEditorRoundTrip } from "./editor-xrF-j3UE.mjs";
3
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
3
+ import { n as resolveContext, t as buildApiClient } from "./shared-C2EAn5h_.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-z55ofr1S.mjs.map
40
+ //# sourceMappingURL=edit-BuKMUNVC.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"edit-z55ofr1S.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
+ {"version":3,"file":"edit-BuKMUNVC.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"}
@@ -3,7 +3,7 @@ import { n as buildPagePayload, s as parseEnvelope } from "./payload-CN11pUto.mj
3
3
  import { t as runEditorRoundTrip } from "./editor-xrF-j3UE.mjs";
4
4
  import { i as serializeFromLexical } from "./litexml-codec-CDoRloiR.mjs";
5
5
  import { r as isSnowflakeId } from "./resolve-BogJOR7R.mjs";
6
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
6
+ import { n as resolveContext, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
7
7
  import { n as applyPageEnvelopeMeta } from "./envelope-overlays-DPAlMNW1.mjs";
8
8
  //#region src/commands/page/edit.ts
9
9
  async function run(slugOrId, opts, flags, out) {
@@ -77,4 +77,4 @@ function esc(s) {
77
77
  //#endregion
78
78
  export { run };
79
79
 
80
- //# sourceMappingURL=edit-BeFmC3XD.mjs.map
80
+ //# sourceMappingURL=edit-DFnOnk4i.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"edit-BeFmC3XD.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('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\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
+ {"version":3,"file":"edit-DFnOnk4i.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('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\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"}
@@ -2,7 +2,7 @@ import { i as emitSuccess, r as emitInfo } from "./output-BM7aBFwt.mjs";
2
2
  import { r as buildPostPayload, s as parseEnvelope } from "./payload-CN11pUto.mjs";
3
3
  import { t as runEditorRoundTrip } from "./editor-xrF-j3UE.mjs";
4
4
  import { i as serializeFromLexical } from "./litexml-codec-CDoRloiR.mjs";
5
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
5
+ import { n as resolveContext, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
6
6
  import { n as resolveCategoryRefs, t as buildResolver } from "./resolve-helpers-CahPoJ0Y.mjs";
7
7
  import { n as resolvePostReadPath, t as resolvePostId } from "./resolve-Bp1AfBmM.mjs";
8
8
  //#region src/commands/post/edit.ts
@@ -83,4 +83,4 @@ async function metaFromEnvelope(meta) {
83
83
  //#endregion
84
84
  export { run };
85
85
 
86
- //# sourceMappingURL=edit-DLDw_ZWX.mjs.map
86
+ //# sourceMappingURL=edit-t108N11Q.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"edit-DLDw_ZWX.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('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\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
+ {"version":3,"file":"edit-t108N11Q.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('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\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,13 +1,13 @@
1
1
  import { i as emitSuccess } from "./output-BM7aBFwt.mjs";
2
2
  import { r as isSnowflakeId } from "./resolve-BogJOR7R.mjs";
3
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
3
+ import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
4
4
  //#region src/commands/topic/get.ts
5
5
  async function run(slugOrId, flags, out) {
6
6
  const client = buildApiClient(await resolveContext(flags, out), flags);
7
7
  const path = isSnowflakeId(slugOrId) ? `/topics/${slugOrId}` : `/topics/slug/${slugOrId}`;
8
- emitSuccess((await client.request(path)).data, out);
8
+ emitSuccess((await client.request(path, { query: withLangQuery(flags) })).data, out);
9
9
  }
10
10
  //#endregion
11
11
  export { run };
12
12
 
13
- //# sourceMappingURL=get-ClkpDBTL.mjs.map
13
+ //# sourceMappingURL=get-BYoAlJwB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-BYoAlJwB.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"}
@@ -1,10 +1,10 @@
1
1
  import { i as emitSuccess } from "./output-BM7aBFwt.mjs";
2
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
2
+ import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
3
3
  //#region src/commands/category/get.ts
4
4
  async function run(slugOrId, flags, out) {
5
- emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request(`/categories/${slugOrId}`)).data, out);
5
+ emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request(`/categories/${slugOrId}`, { query: withLangQuery(flags) })).data, out);
6
6
  }
7
7
  //#endregion
8
8
  export { run };
9
9
 
10
- //# sourceMappingURL=get-DJfUJ3sP.mjs.map
10
+ //# sourceMappingURL=get-CwcNFb39.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-CwcNFb39.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"}
@@ -1,14 +1,14 @@
1
- import { t as emitDocument } from "./document-output-BVB8emLt.mjs";
2
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
1
+ import { t as emitDocument } from "./document-output-C5PWbz2p.mjs";
2
+ import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
3
3
  import { n as resolvePostReadPath } from "./resolve-Bp1AfBmM.mjs";
4
4
  //#region src/commands/post/get.ts
5
5
  const KIND = "post";
6
6
  async function run(slugOrId, flags, out) {
7
7
  const client = buildApiClient(await resolveContext(flags, out), flags);
8
8
  const path = await resolvePostReadPath(client, slugOrId);
9
- emitDocument(KIND, (await client.request(path, { query: { prefer: "lexical" } })).data, out);
9
+ emitDocument(KIND, (await client.request(path, { query: withLangQuery(flags, { prefer: "lexical" }) })).data, out);
10
10
  }
11
11
  //#endregion
12
12
  export { run };
13
13
 
14
- //# sourceMappingURL=get-DiqaQvoS.mjs.map
14
+ //# sourceMappingURL=get-DnDvLa9S.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-DnDvLa9S.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"}
@@ -1,20 +1,20 @@
1
1
  import { s as MxsError } from "./output-BM7aBFwt.mjs";
2
- import { t as emitDocument } from "./document-output-BVB8emLt.mjs";
2
+ import { t as emitDocument } from "./document-output-C5PWbz2p.mjs";
3
3
  import { r as isSnowflakeId } from "./resolve-BogJOR7R.mjs";
4
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
4
+ import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-C2EAn5h_.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-2qjq0wgG.mjs.map
28
+ //# sourceMappingURL=get-Doi-NKAh.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-Doi-NKAh.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
1
  import { i as emitSuccess } from "./output-BM7aBFwt.mjs";
2
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
2
+ import { n as resolveContext, t as buildApiClient } from "./shared-C2EAn5h_.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-CRR13lgj.mjs.map
10
+ //# sourceMappingURL=get-DxTU7Nom.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-CRR13lgj.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"}
1
+ {"version":3,"file":"get-DxTU7Nom.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"}
@@ -1,14 +1,14 @@
1
- import { t as emitDocument } from "./document-output-BVB8emLt.mjs";
1
+ import { t as emitDocument } from "./document-output-C5PWbz2p.mjs";
2
2
  import { r as isSnowflakeId } from "./resolve-BogJOR7R.mjs";
3
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
3
+ import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
4
4
  //#region src/commands/page/get.ts
5
5
  const KIND = "page";
6
6
  async function run(slugOrId, flags, out) {
7
7
  const client = buildApiClient(await resolveContext(flags, out), flags);
8
8
  const path = isSnowflakeId(slugOrId) ? `/pages/${slugOrId}` : `/pages/slug/${slugOrId}`;
9
- emitDocument(KIND, (await client.request(path, { query: { prefer: "lexical" } })).data, out);
9
+ emitDocument(KIND, (await client.request(path, { query: withLangQuery(flags, { prefer: "lexical" }) })).data, out);
10
10
  }
11
11
  //#endregion
12
12
  export { run };
13
13
 
14
- //# sourceMappingURL=get-BGAk1Zmv.mjs.map
14
+ //# sourceMappingURL=get-GdRz82RW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-GdRz82RW.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"}
package/dist/index.d.mts CHANGED
@@ -1,5 +1,8 @@
1
1
  import { a as emitSuccess, i as emitInfo, n as defaultOutputOptions, o as emitWarn, r as emitError, s as renderTable, t as OutputOptions } from "./output-CTnO1lYt.mjs";
2
2
 
3
+ //#region src/core/config-dir.d.ts
4
+ declare function getConfigDir(): string;
5
+ //#endregion
3
6
  //#region src/core/config-store.d.ts
4
7
  interface ConfigShape {
5
8
  api_url?: string;
@@ -7,6 +10,7 @@ interface ConfigShape {
7
10
  auth_base?: string;
8
11
  api_version?: number;
9
12
  client_id?: string;
13
+ production?: boolean;
10
14
  }
11
15
  interface CredentialsShape {
12
16
  access_token: string;
@@ -28,14 +32,20 @@ interface ResolvedConfig {
28
32
  apiKey?: string;
29
33
  configPath: string;
30
34
  credentialsPath: string;
35
+ profileName: string | null;
36
+ isProduction: boolean;
37
+ profileExplicit: boolean;
38
+ urlOverridden: boolean;
31
39
  }
32
40
  interface StoreOverrides {
33
41
  apiUrl?: string;
34
42
  token?: string;
35
43
  apiKey?: string;
44
+ profile?: string;
36
45
  }
37
- declare function getConfigDir(): string;
46
+ /** @deprecated Use getLegacyConfigPath for migration logic only */
38
47
  declare function getConfigPath(): string;
48
+ /** @deprecated Use getLegacyCredentialsPath for migration logic only */
39
49
  declare function getCredentialsPath(): string;
40
50
  declare function readConfig(): Promise<ConfigShape>;
41
51
  declare function writeConfig(cfg: ConfigShape): Promise<void>;
@@ -152,7 +162,9 @@ declare function runEditorRoundTrip(opts: EditorOptions): Promise<string>;
152
162
  //#region src/core/document-output.d.ts
153
163
  type DocumentKind = 'post' | 'note' | 'page';
154
164
  declare function emitDocument(kind: DocumentKind, data: unknown, opts: OutputOptions): void;
165
+ declare function emitPostList(data: unknown, opts: OutputOptions): void;
155
166
  declare function renderReadableDocument(kind: DocumentKind, data: unknown): string;
167
+ declare function renderPostList(data: unknown): string;
156
168
  declare function renderDocumentEnvelope(kind: DocumentKind, data: unknown): string;
157
169
  //#endregion
158
170
  //#region src/core/envelope.d.ts
@@ -191,7 +203,7 @@ interface EnvelopeMeta {
191
203
  declare function coerceMeta(raw: Record<string, unknown>): EnvelopeMeta;
192
204
  //#endregion
193
205
  //#region src/core/errors.d.ts
194
- type MxsErrorCode = 'generic' | 'argv.parse' | 'auth.missing' | 'auth.expired' | 'auth.denied' | 'auth.probe' | 'network.timeout' | 'network.dns' | 'network.refused' | 'validation.failed' | 'validation.xml' | 'server.error' | 'resource.not_found' | 'config.missing.api_url' | 'config.missing.token' | (string & {});
206
+ type MxsErrorCode = 'generic' | 'argv.parse' | 'auth.missing' | 'auth.expired' | 'auth.denied' | 'auth.probe' | 'network.timeout' | 'network.dns' | 'network.refused' | 'validation.failed' | 'validation.xml' | 'server.error' | 'resource.not_found' | 'config.missing.api_url' | 'config.missing.token' | 'config.migration.failed' | 'profile.not_found' | (string & {});
195
207
  interface MxsErrorOptions {
196
208
  code: MxsErrorCode;
197
209
  message: string;
@@ -334,5 +346,5 @@ declare function matchItem(items: ReadonlyArray<ResolvableItem>, value: string):
334
346
  declare function levenshtein(a: string, b: string): number;
335
347
  declare function fuzzySuggest(items: ReadonlyArray<ResolvableItem>, value: string, maxDistance?: number): string[];
336
348
  //#endregion
337
- export { ApiClient, type ApiClientContext, type ApiResponse, type AuthHttp, type BuiltPayload, type ConfigShape, type ContentFormat, type ContentSource, type CredentialsShape, type DeviceCodeResponse, type DeviceTokenResponse, type DocumentKind, type EnvelopeKind, type EnvelopeMeta, type LexicalState, MxsError, type MxsErrorCode, type MxsErrorOptions, NameResolver, type NoteFlagInputs, type OnboardingResult, type OutputOptions, type PageFlagInputs, type ParsedEnvelope, type PostFlagInputs, type ProbeResult, type RequestOptions, type ResolvableItem, type ResolvedConfig, type ResolverFetchers, SUPPORTED_API_VERSIONS, buildNotePayload, buildPagePayload, buildPostPayload, coerceMeta, createApiClient, defaultOutputOptions, deleteCredentials, deriveTextFromLexical, emitDocument, emitError, emitInfo, emitSuccess, emitWarn, emptyLexicalState, emptyPayload, enforceCredentialsMode, ensureFreshToken, exitCodeForError, flagToTag, fuzzySuggest, getConfigDir, getConfigPath, getCredentialsPath, isExpiringSoon, isSnowflakeId, levenshtein, loadCredentialsOrThrow, matchItem, normalizeApiUrl, parseEnvelope, parseToLexical, pollDeviceToken, probeAuthEndpoint, readConfig, readContentSpec, readCredentials, readJsonSpec, refreshAccessToken, renderDocumentEnvelope, renderReadableDocument, renderTable, requestDeviceCode, resolveConfig, runEditorRoundTrip, runOnboarding, serializeFromLexical, tagToFlag, toCredentials, writeConfig, writeCredentials };
349
+ export { ApiClient, type ApiClientContext, type ApiResponse, type AuthHttp, type BuiltPayload, type ConfigShape, type ContentFormat, type ContentSource, type CredentialsShape, type DeviceCodeResponse, type DeviceTokenResponse, type DocumentKind, type EnvelopeKind, type EnvelopeMeta, type LexicalState, MxsError, type MxsErrorCode, type MxsErrorOptions, NameResolver, type NoteFlagInputs, type OnboardingResult, type OutputOptions, type PageFlagInputs, type ParsedEnvelope, type PostFlagInputs, type ProbeResult, type RequestOptions, type ResolvableItem, type ResolvedConfig, type ResolverFetchers, SUPPORTED_API_VERSIONS, buildNotePayload, buildPagePayload, buildPostPayload, coerceMeta, createApiClient, defaultOutputOptions, deleteCredentials, deriveTextFromLexical, emitDocument, emitError, emitInfo, emitPostList, emitSuccess, emitWarn, emptyLexicalState, emptyPayload, enforceCredentialsMode, ensureFreshToken, exitCodeForError, flagToTag, fuzzySuggest, getConfigDir, getConfigPath, getCredentialsPath, isExpiringSoon, isSnowflakeId, levenshtein, loadCredentialsOrThrow, matchItem, normalizeApiUrl, parseEnvelope, parseToLexical, pollDeviceToken, probeAuthEndpoint, readConfig, readContentSpec, readCredentials, readJsonSpec, refreshAccessToken, renderDocumentEnvelope, renderPostList, renderReadableDocument, renderTable, requestDeviceCode, resolveConfig, runEditorRoundTrip, runOnboarding, serializeFromLexical, tagToFlag, toCredentials, writeConfig, writeCredentials };
338
350
  //# sourceMappingURL=index.d.mts.map
package/dist/index.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  import { a as emitWarn, c as exitCodeForError, i as emitSuccess, n as emitError, o as renderTable, r as emitInfo, s as MxsError, t as defaultOutputOptions } from "./output-BM7aBFwt.mjs";
2
- import { a as getCredentialsPath, c as readCredentials, d as writeCredentials, i as getConfigPath, l as resolveConfig, n as enforceCredentialsMode, o as normalizeApiUrl, r as getConfigDir, s as readConfig, t as deleteCredentials, u as writeConfig } from "./config-store-DIu7x0ao.mjs";
3
- import { a as loadCredentialsOrThrow, c as refreshAccessToken, i as isExpiringSoon, l as requestDeviceCode, o as pollDeviceToken, r as ensureFreshToken, s as probeAuthEndpoint, t as SUPPORTED_API_VERSIONS, u as toCredentials } from "./auth-DIFZzoMm.mjs";
4
- import { n as ApiClient, r as createApiClient, t as runOnboarding } from "./onboarding-640IldLz.mjs";
2
+ import { a as normalizeApiUrl, c as resolveConfig, d as getConfigDir, i as getCredentialsPath, l as writeConfig, n as enforceCredentialsMode, o as readConfig, r as getConfigPath, s as readCredentials, t as deleteCredentials, u as writeCredentials } from "./config-store-WL7dNMS6.mjs";
3
+ import { a as loadCredentialsOrThrow, c as refreshAccessToken, i as isExpiringSoon, l as requestDeviceCode, o as pollDeviceToken, r as ensureFreshToken, s as probeAuthEndpoint, t as SUPPORTED_API_VERSIONS, u as toCredentials } from "./auth-OeKZZ_2x.mjs";
4
+ import { n as ApiClient, r as createApiClient, t as runOnboarding } from "./onboarding-C1t1yoay.mjs";
5
5
  import { a as coerceMeta, c as tagToFlag, i as emptyPayload, l as readContentSpec, n as buildPagePayload, o as flagToTag, r as buildPostPayload, s as parseEnvelope, t as buildNotePayload, u as readJsonSpec } from "./payload-CN11pUto.mjs";
6
6
  import { t as runEditorRoundTrip } from "./editor-xrF-j3UE.mjs";
7
7
  import { i as serializeFromLexical, n as emptyLexicalState, r as parseToLexical, t as deriveTextFromLexical } from "./litexml-codec-CDoRloiR.mjs";
8
- import { n as renderDocumentEnvelope, r as renderReadableDocument, t as emitDocument } from "./document-output-BVB8emLt.mjs";
8
+ import { a as renderReadableDocument, i as renderPostList, n as emitPostList, r as renderDocumentEnvelope, t as emitDocument } from "./document-output-C5PWbz2p.mjs";
9
9
  import { a as matchItem, i as levenshtein, n as fuzzySuggest, r as isSnowflakeId, t as NameResolver } from "./resolve-BogJOR7R.mjs";
10
- export { ApiClient, MxsError, NameResolver, SUPPORTED_API_VERSIONS, buildNotePayload, buildPagePayload, buildPostPayload, coerceMeta, createApiClient, defaultOutputOptions, deleteCredentials, deriveTextFromLexical, emitDocument, emitError, emitInfo, emitSuccess, emitWarn, emptyLexicalState, emptyPayload, enforceCredentialsMode, ensureFreshToken, exitCodeForError, flagToTag, fuzzySuggest, getConfigDir, getConfigPath, getCredentialsPath, isExpiringSoon, isSnowflakeId, levenshtein, loadCredentialsOrThrow, matchItem, normalizeApiUrl, parseEnvelope, parseToLexical, pollDeviceToken, probeAuthEndpoint, readConfig, readContentSpec, readCredentials, readJsonSpec, refreshAccessToken, renderDocumentEnvelope, renderReadableDocument, renderTable, requestDeviceCode, resolveConfig, runEditorRoundTrip, runOnboarding, serializeFromLexical, tagToFlag, toCredentials, writeConfig, writeCredentials };
10
+ export { ApiClient, MxsError, NameResolver, SUPPORTED_API_VERSIONS, buildNotePayload, buildPagePayload, buildPostPayload, coerceMeta, createApiClient, defaultOutputOptions, deleteCredentials, deriveTextFromLexical, emitDocument, emitError, emitInfo, emitPostList, emitSuccess, emitWarn, emptyLexicalState, emptyPayload, enforceCredentialsMode, ensureFreshToken, exitCodeForError, flagToTag, fuzzySuggest, getConfigDir, getConfigPath, getCredentialsPath, isExpiringSoon, isSnowflakeId, levenshtein, loadCredentialsOrThrow, matchItem, normalizeApiUrl, parseEnvelope, parseToLexical, pollDeviceToken, probeAuthEndpoint, readConfig, readContentSpec, readCredentials, readJsonSpec, refreshAccessToken, renderDocumentEnvelope, renderPostList, renderReadableDocument, renderTable, requestDeviceCode, resolveConfig, runEditorRoundTrip, runOnboarding, serializeFromLexical, tagToFlag, toCredentials, writeConfig, writeCredentials };
@@ -1,10 +1,10 @@
1
1
  import { i as emitSuccess } from "./output-BM7aBFwt.mjs";
2
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
2
+ import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
3
3
  //#region src/commands/category/list.ts
4
4
  async function run(flags, out) {
5
- emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request("/categories")).data, out);
5
+ emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request("/categories", { query: withLangQuery(flags) })).data, out);
6
6
  }
7
7
  //#endregion
8
8
  export { run };
9
9
 
10
- //# sourceMappingURL=list-Fp4nKfQb.mjs.map
10
+ //# sourceMappingURL=list-CLAcZYZ4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-CLAcZYZ4.mjs","names":[],"sources":["../src/commands/category/list.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(flags: GlobalFlags, out: OutputOptions) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n const res = await client.request<{ data: unknown[] }>('/categories', {\n query: withLangQuery(flags),\n })\n emitSuccess(res.data, out)\n}\n"],"mappings":";;;AAQA,eAAsB,IAAI,OAAoB,KAAoB;CAMhE,aAAY,MAJG,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KACZ,EAAE,QAA6B,eAAe,EACnE,OAAO,cAAc,KAAK,EAC5B,CAAC,GACe,MAAM,GAAG;AAC3B"}
@@ -1,5 +1,5 @@
1
1
  import { i as emitSuccess } from "./output-BM7aBFwt.mjs";
2
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
2
+ import { n as resolveContext, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
3
3
  //#region src/commands/config/list.ts
4
4
  async function run(flags, out) {
5
5
  emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request("/options")).data, out);
@@ -7,4 +7,4 @@ async function run(flags, out) {
7
7
  //#endregion
8
8
  export { run };
9
9
 
10
- //# sourceMappingURL=list-DY-tPNG-.mjs.map
10
+ //# sourceMappingURL=list-CtME3aDw.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-DY-tPNG-.mjs","names":[],"sources":["../src/commands/config/list.ts"],"sourcesContent":["import { 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('/options')\n emitSuccess(res.data, out)\n}\n"],"mappings":";;;AAGA,eAAsB,IAAI,OAAoB,KAAoB;CAIhE,aAAY,MAFG,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KACZ,EAAE,QAAQ,UAAU,GAC3B,MAAM,GAAG;AAC3B"}
1
+ {"version":3,"file":"list-CtME3aDw.mjs","names":[],"sources":["../src/commands/config/list.ts"],"sourcesContent":["import { 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('/options')\n emitSuccess(res.data, out)\n}\n"],"mappings":";;;AAGA,eAAsB,IAAI,OAAoB,KAAoB;CAIhE,aAAY,MAFG,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KACZ,EAAE,QAAQ,UAAU,GAC3B,MAAM,GAAG;AAC3B"}
@@ -1,10 +1,10 @@
1
1
  import { i as emitSuccess } from "./output-BM7aBFwt.mjs";
2
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
2
+ import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
3
3
  //#region src/commands/page/list.ts
4
4
  async function run(_opts, flags, out) {
5
- emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request("/pages")).data, out);
5
+ emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request("/pages", { query: withLangQuery(flags) })).data, out);
6
6
  }
7
7
  //#endregion
8
8
  export { run };
9
9
 
10
- //# sourceMappingURL=list-DlQSkbqx.mjs.map
10
+ //# sourceMappingURL=list-DHG-MzOM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-DHG-MzOM.mjs","names":[],"sources":["../src/commands/page/list.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 _opts: unknown,\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<{ data: unknown[] }>('/pages', {\n query: withLangQuery(flags),\n })\n emitSuccess(res.data, out)\n}\n"],"mappings":";;;AAQA,eAAsB,IACpB,OACA,OACA,KACA;CAMA,aAAY,MAJG,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KACZ,EAAE,QAA6B,UAAU,EAC9D,OAAO,cAAc,KAAK,EAC5B,CAAC,GACe,MAAM,GAAG;AAC3B"}
@@ -1,14 +1,14 @@
1
1
  import { i as emitSuccess } from "./output-BM7aBFwt.mjs";
2
- import { n as resolveContext, t as buildApiClient } from "./shared-D0HVBDHI.mjs";
2
+ import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
3
3
  //#region src/commands/note/list.ts
4
4
  async function run(opts, flags, out) {
5
- emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request("/notes", { query: {
5
+ emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request("/notes", { query: withLangQuery(flags, {
6
6
  page: opts.page,
7
7
  size: opts.size,
8
8
  sortBy: opts.sort
9
- } })).data, out);
9
+ }) })).data, out);
10
10
  }
11
11
  //#endregion
12
12
  export { run };
13
13
 
14
- //# sourceMappingURL=list-BYzhflDg.mjs.map
14
+ //# sourceMappingURL=list-DN81zVDA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-DN81zVDA.mjs","names":[],"sources":["../src/commands/note/list.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 interface NoteListFlags {\n page?: number\n size?: number\n state?: string\n sort?: string\n}\n\nexport async function run(\n opts: NoteListFlags,\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<{ data: unknown[] }>('/notes', {\n query: withLangQuery(flags, {\n page: opts.page,\n size: opts.size,\n sortBy: opts.sort,\n }),\n })\n emitSuccess(res.data, out)\n}\n"],"mappings":";;;AAeA,eAAsB,IACpB,MACA,OACA,KACA;CAUA,aAAY,MARG,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KACZ,EAAE,QAA6B,UAAU,EAC9D,OAAO,cAAc,OAAO;EAC1B,MAAM,KAAK;EACX,MAAM,KAAK;EACX,QAAQ,KAAK;CACf,CAAC,EACH,CAAC,GACe,MAAM,GAAG;AAC3B"}
@@ -0,0 +1,10 @@
1
+ import { i as emitSuccess } from "./output-BM7aBFwt.mjs";
2
+ import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
3
+ //#region src/commands/topic/list.ts
4
+ async function run(flags, out) {
5
+ emitSuccess((await buildApiClient(await resolveContext(flags, out), flags).request("/topics/all", { query: withLangQuery(flags) })).data, out);
6
+ }
7
+ //#endregion
8
+ export { run };
9
+
10
+ //# sourceMappingURL=list-DVunNsXr.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-DVunNsXr.mjs","names":[],"sources":["../src/commands/topic/list.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(flags: GlobalFlags, out: OutputOptions) {\n const ctx = await resolveContext(flags, out)\n const client = buildApiClient(ctx, flags)\n const res = await client.request<{ data: unknown[] } | unknown[]>(\n '/topics/all',\n { query: withLangQuery(flags) },\n )\n emitSuccess(res.data, out)\n}\n"],"mappings":";;;AAQA,eAAsB,IAAI,OAAoB,KAAoB;CAOhE,aAAY,MALG,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KACZ,EAAE,QACvB,eACA,EAAE,OAAO,cAAc,KAAK,EAAE,CAChC,GACgB,MAAM,GAAG;AAC3B"}
@@ -0,0 +1,15 @@
1
+ import { n as emitPostList } from "./document-output-C5PWbz2p.mjs";
2
+ import { n as resolveContext, r as withLangQuery, t as buildApiClient } from "./shared-C2EAn5h_.mjs";
3
+ //#region src/commands/post/list.ts
4
+ async function run(opts, flags, out) {
5
+ emitPostList((await buildApiClient(await resolveContext(flags, out), flags).request("/posts", { query: withLangQuery(flags, {
6
+ page: opts.page,
7
+ size: opts.size,
8
+ state: opts.state,
9
+ sortBy: opts.sort
10
+ }) })).data, out);
11
+ }
12
+ //#endregion
13
+ export { run };
14
+
15
+ //# sourceMappingURL=list-DbNCVZbz.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-DbNCVZbz.mjs","names":[],"sources":["../src/commands/post/list.ts"],"sourcesContent":["import { emitPostList } from '../../core/document-output'\nimport type { OutputOptions } from '../../core/output'\nimport {\n buildApiClient,\n type GlobalFlags,\n resolveContext,\n withLangQuery,\n} from '../internal/shared'\n\nexport interface PostListFlags {\n page?: number\n size?: number\n state?: string\n sort?: string\n}\n\nexport async function run(\n opts: PostListFlags,\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<{\n data: unknown[]\n pagination?: unknown\n }>('/posts', {\n query: withLangQuery(flags, {\n page: opts.page,\n size: opts.size,\n state: opts.state,\n sortBy: opts.sort,\n }),\n })\n emitPostList(res.data, out)\n}\n"],"mappings":";;;AAgBA,eAAsB,IACpB,MACA,OACA,KACA;CAcA,cAAa,MAZE,eAAe,MADZ,eAAe,OAAO,GAAG,GACR,KACZ,EAAE,QAGtB,UAAU,EACX,OAAO,cAAc,OAAO;EAC1B,MAAM,KAAK;EACX,MAAM,KAAK;EACX,OAAO,KAAK;EACZ,QAAQ,KAAK;CACf,CAAC,EACH,CAAC,GACgB,MAAM,GAAG;AAC5B"}