@qodalis/cli-markdown 2.0.0-beta.5 → 2.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qodalis/cli-markdown",
3
- "version": "2.0.0-beta.5",
3
+ "version": "2.0.0-beta.6",
4
4
  "description": "Render Markdown in the terminal",
5
5
  "author": "Qodalis Solutions",
6
6
  "license": "MIT",
@@ -18,7 +18,7 @@
18
18
  "umd": "./umd/index.global.js",
19
19
  "unpkg": "./umd/index.global.js",
20
20
  "dependencies": {
21
- "@qodalis/cli-core": "2.0.0-beta.5"
21
+ "@qodalis/cli-core": "2.0.0-beta.6"
22
22
  },
23
23
  "sideEffects": false,
24
24
  "main": "./public-api.js",
package/public-api.d.mts CHANGED
@@ -13,7 +13,7 @@ declare class CliMarkdownCommandProcessor implements ICliCommandProcessor {
13
13
  processCommand(_: CliProcessCommand, context: ICliExecutionContext): Promise<void>;
14
14
  }
15
15
 
16
- declare const LIBRARY_VERSION = "2.0.0-beta.5";
16
+ declare const LIBRARY_VERSION = "2.0.0-beta.6";
17
17
  declare const API_VERSION = 2;
18
18
 
19
19
  declare const markdownModule: ICliModule;
package/public-api.d.ts CHANGED
@@ -13,7 +13,7 @@ declare class CliMarkdownCommandProcessor implements ICliCommandProcessor {
13
13
  processCommand(_: CliProcessCommand, context: ICliExecutionContext): Promise<void>;
14
14
  }
15
15
 
16
- declare const LIBRARY_VERSION = "2.0.0-beta.5";
16
+ declare const LIBRARY_VERSION = "2.0.0-beta.6";
17
17
  declare const API_VERSION = 2;
18
18
 
19
19
  declare const markdownModule: ICliModule;
package/public-api.js CHANGED
@@ -115,7 +115,7 @@ var CliMarkdownCommandProcessor = class {
115
115
  };
116
116
 
117
117
  // src/lib/version.ts
118
- var LIBRARY_VERSION = "2.0.0-beta.5";
118
+ var LIBRARY_VERSION = "2.0.0-beta.6";
119
119
  var API_VERSION = 2;
120
120
 
121
121
  // src/public-api.ts
package/public-api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../packages/plugins/markdown/src/lib/markdown-renderer.ts","../../packages/plugins/markdown/src/lib/processors/cli-markdown-command-processor.ts","../../packages/plugins/markdown/src/lib/version.ts","../../packages/plugins/markdown/src/public-api.ts"],"names":["DefaultLibraryAuthor","CliIcon"],"mappings":"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","file":"public-api.js","sourcesContent":["const RESET = '\\x1b[0m';\nconst BOLD = '\\x1b[1m';\nconst DIM = '\\x1b[2m';\nconst ITALIC = '\\x1b[3m';\nconst UNDERLINE = '\\x1b[4m';\n\nconst FG_YELLOW = '\\x1b[33m';\nconst FG_CYAN = '\\x1b[36m';\nconst FG_GREEN = '\\x1b[32m';\nconst FG_WHITE = '\\x1b[97m';\nconst BG_DARK = '\\x1b[48;5;236m';\n\nfunction wrap(text: string, ...codes: string[]): string {\n return codes.join('') + text + RESET;\n}\n\nexport function renderMarkdown(input: string): string[] {\n if (!input.trim()) return [];\n\n const rawLines = input.split('\\n');\n const output: string[] = [];\n let inCodeBlock = false;\n\n for (const line of rawLines) {\n if (line.startsWith('```')) {\n if (!inCodeBlock) {\n inCodeBlock = true;\n const lang = line.slice(3).trim();\n output.push(wrap(` ${lang || 'code'} `, DIM, BG_DARK));\n } else {\n inCodeBlock = false;\n output.push(wrap('\\u2500'.repeat(40), DIM));\n }\n continue;\n }\n\n if (inCodeBlock) {\n output.push(wrap(' ' + line, FG_GREEN));\n continue;\n }\n\n if (line.startsWith('### ')) {\n output.push(wrap(line.slice(4), BOLD, FG_CYAN));\n } else if (line.startsWith('## ')) {\n const text = line.slice(3);\n output.push(wrap(text, BOLD, FG_YELLOW));\n output.push(wrap('\\u2500'.repeat(text.length), FG_YELLOW));\n } else if (line.startsWith('# ')) {\n const text = line.slice(2);\n output.push(wrap(text, BOLD, UNDERLINE, FG_WHITE));\n output.push('');\n } else if (/^(-{3,}|\\*{3,}|_{3,})$/.test(line.trim())) {\n output.push(wrap('\\u2500'.repeat(60), DIM));\n } else if (line.startsWith('> ')) {\n output.push(wrap('\\u2502 ' + line.slice(2), DIM, ITALIC));\n } else if (/^[-*+] /.test(line)) {\n output.push(' \\u2022 ' + applyInline(line.slice(2)));\n } else if (/^\\d+\\. /.test(line)) {\n const match = line.match(/^(\\d+\\.) (.*)/);\n if (match) {\n output.push(` ${wrap(match[1], BOLD)} ${applyInline(match[2])}`);\n }\n } else if (line.trim() === '') {\n output.push('');\n } else {\n output.push(applyInline(line));\n }\n }\n\n return output;\n}\n\nfunction applyInline(text: string): string {\n // Bold **text** or __text__\n text = text.replace(/\\*\\*(.+?)\\*\\*|__(.+?)__/g, (_, a, b) => wrap(a ?? b, BOLD));\n // Italic *text* or _text_\n text = text.replace(/(?<!\\*)\\*([^*]+)\\*(?!\\*)|(?<!_)_([^_]+)_(?!_)/g, (_, a, b) => wrap(a ?? b, ITALIC));\n // Inline code `text`\n text = text.replace(/`([^`]+)`/g, (_, code) => wrap(code, FG_GREEN, BG_DARK));\n // Links [text](url)\n text = text.replace(/\\[(.+?)\\]\\((.+?)\\)/g, (_, label, url) =>\n wrap(label, UNDERLINE, FG_CYAN) + wrap(` (${url})`, DIM),\n );\n return text;\n}\n","import {\n ICliCommandProcessor,\n ICliExecutionContext,\n CliProcessCommand,\n DefaultLibraryAuthor,\n CliIcon,\n ICliCommandChildProcessor,\n} from '@qodalis/cli-core';\nimport { renderMarkdown } from '../markdown-renderer';\n\nexport class CliMarkdownCommandProcessor implements ICliCommandProcessor {\n command = 'md';\n description = 'Render Markdown in the terminal';\n aliases = ['markdown'];\n author = DefaultLibraryAuthor;\n metadata = { icon: CliIcon.File };\n\n processors: ICliCommandChildProcessor[] = [\n {\n command: 'render',\n description: 'Render Markdown text. Pipe markdown or pass inline.',\n aliases: ['preview', 'view'],\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (cmd: CliProcessCommand, context: ICliExecutionContext) => {\n const input = cmd.value || (typeof cmd.data === 'string' ? cmd.data : '') || '';\n if (!input.trim()) {\n context.writer.writeError('No markdown input. Pipe text or provide inline.');\n return;\n }\n const lines = renderMarkdown(input);\n for (const line of lines) {\n context.writer.writeln(line);\n }\n },\n },\n ];\n\n async processCommand(_: CliProcessCommand, context: ICliExecutionContext): Promise<void> {\n context.writer.writeln('Usage: echo \"# Hello\" | md render');\n context.writer.writeln(' md render \"## Title\"');\n }\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.0.0-beta.5';\nexport const API_VERSION = 2;\n ","/*\n * Public API Surface of markdown\n */\n\nexport * from './lib/processors/cli-markdown-command-processor';\nexport * from './lib/version';\n\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliMarkdownCommandProcessor } from './lib/processors/cli-markdown-command-processor';\nimport { API_VERSION } from './lib/version';\n\nexport const markdownModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-markdown',\n processors: [new CliMarkdownCommandProcessor()],\n translations: {\n es: { 'cli.md.description': 'Renderizar Markdown en la terminal' },\n fr: { 'cli.md.description': 'Afficher du Markdown dans le terminal' },\n de: { 'cli.md.description': 'Markdown im Terminal rendern' },\n pt: { 'cli.md.description': 'Renderizar Markdown no terminal' },\n it: { 'cli.md.description': 'Renderizzare Markdown nel terminale' },\n ja: { 'cli.md.description': 'ターミナルでMarkdownを描画' },\n ko: { 'cli.md.description': '터미널에서 Markdown 렌더링' },\n zh: { 'cli.md.description': '在终端中渲染 Markdown' },\n ru: { 'cli.md.description': 'Рендеринг Markdown в терминале' },\n ro: { 'cli.md.description': 'Redare Markdown în terminal' },\n },\n};\n"]}
1
+ {"version":3,"sources":["../../packages/plugins/markdown/src/lib/markdown-renderer.ts","../../packages/plugins/markdown/src/lib/processors/cli-markdown-command-processor.ts","../../packages/plugins/markdown/src/lib/version.ts","../../packages/plugins/markdown/src/public-api.ts"],"names":["DefaultLibraryAuthor","CliIcon"],"mappings":"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","file":"public-api.js","sourcesContent":["const RESET = '\\x1b[0m';\nconst BOLD = '\\x1b[1m';\nconst DIM = '\\x1b[2m';\nconst ITALIC = '\\x1b[3m';\nconst UNDERLINE = '\\x1b[4m';\n\nconst FG_YELLOW = '\\x1b[33m';\nconst FG_CYAN = '\\x1b[36m';\nconst FG_GREEN = '\\x1b[32m';\nconst FG_WHITE = '\\x1b[97m';\nconst BG_DARK = '\\x1b[48;5;236m';\n\nfunction wrap(text: string, ...codes: string[]): string {\n return codes.join('') + text + RESET;\n}\n\nexport function renderMarkdown(input: string): string[] {\n if (!input.trim()) return [];\n\n const rawLines = input.split('\\n');\n const output: string[] = [];\n let inCodeBlock = false;\n\n for (const line of rawLines) {\n if (line.startsWith('```')) {\n if (!inCodeBlock) {\n inCodeBlock = true;\n const lang = line.slice(3).trim();\n output.push(wrap(` ${lang || 'code'} `, DIM, BG_DARK));\n } else {\n inCodeBlock = false;\n output.push(wrap('\\u2500'.repeat(40), DIM));\n }\n continue;\n }\n\n if (inCodeBlock) {\n output.push(wrap(' ' + line, FG_GREEN));\n continue;\n }\n\n if (line.startsWith('### ')) {\n output.push(wrap(line.slice(4), BOLD, FG_CYAN));\n } else if (line.startsWith('## ')) {\n const text = line.slice(3);\n output.push(wrap(text, BOLD, FG_YELLOW));\n output.push(wrap('\\u2500'.repeat(text.length), FG_YELLOW));\n } else if (line.startsWith('# ')) {\n const text = line.slice(2);\n output.push(wrap(text, BOLD, UNDERLINE, FG_WHITE));\n output.push('');\n } else if (/^(-{3,}|\\*{3,}|_{3,})$/.test(line.trim())) {\n output.push(wrap('\\u2500'.repeat(60), DIM));\n } else if (line.startsWith('> ')) {\n output.push(wrap('\\u2502 ' + line.slice(2), DIM, ITALIC));\n } else if (/^[-*+] /.test(line)) {\n output.push(' \\u2022 ' + applyInline(line.slice(2)));\n } else if (/^\\d+\\. /.test(line)) {\n const match = line.match(/^(\\d+\\.) (.*)/);\n if (match) {\n output.push(` ${wrap(match[1], BOLD)} ${applyInline(match[2])}`);\n }\n } else if (line.trim() === '') {\n output.push('');\n } else {\n output.push(applyInline(line));\n }\n }\n\n return output;\n}\n\nfunction applyInline(text: string): string {\n // Bold **text** or __text__\n text = text.replace(/\\*\\*(.+?)\\*\\*|__(.+?)__/g, (_, a, b) => wrap(a ?? b, BOLD));\n // Italic *text* or _text_\n text = text.replace(/(?<!\\*)\\*([^*]+)\\*(?!\\*)|(?<!_)_([^_]+)_(?!_)/g, (_, a, b) => wrap(a ?? b, ITALIC));\n // Inline code `text`\n text = text.replace(/`([^`]+)`/g, (_, code) => wrap(code, FG_GREEN, BG_DARK));\n // Links [text](url)\n text = text.replace(/\\[(.+?)\\]\\((.+?)\\)/g, (_, label, url) =>\n wrap(label, UNDERLINE, FG_CYAN) + wrap(` (${url})`, DIM),\n );\n return text;\n}\n","import {\n ICliCommandProcessor,\n ICliExecutionContext,\n CliProcessCommand,\n DefaultLibraryAuthor,\n CliIcon,\n ICliCommandChildProcessor,\n} from '@qodalis/cli-core';\nimport { renderMarkdown } from '../markdown-renderer';\n\nexport class CliMarkdownCommandProcessor implements ICliCommandProcessor {\n command = 'md';\n description = 'Render Markdown in the terminal';\n aliases = ['markdown'];\n author = DefaultLibraryAuthor;\n metadata = { icon: CliIcon.File };\n\n processors: ICliCommandChildProcessor[] = [\n {\n command: 'render',\n description: 'Render Markdown text. Pipe markdown or pass inline.',\n aliases: ['preview', 'view'],\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (cmd: CliProcessCommand, context: ICliExecutionContext) => {\n const input = cmd.value || (typeof cmd.data === 'string' ? cmd.data : '') || '';\n if (!input.trim()) {\n context.writer.writeError('No markdown input. Pipe text or provide inline.');\n return;\n }\n const lines = renderMarkdown(input);\n for (const line of lines) {\n context.writer.writeln(line);\n }\n },\n },\n ];\n\n async processCommand(_: CliProcessCommand, context: ICliExecutionContext): Promise<void> {\n context.writer.writeln('Usage: echo \"# Hello\" | md render');\n context.writer.writeln(' md render \"## Title\"');\n }\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.0.0-beta.6';\nexport const API_VERSION = 2;\n ","/*\n * Public API Surface of markdown\n */\n\nexport * from './lib/processors/cli-markdown-command-processor';\nexport * from './lib/version';\n\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliMarkdownCommandProcessor } from './lib/processors/cli-markdown-command-processor';\nimport { API_VERSION } from './lib/version';\n\nexport const markdownModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-markdown',\n processors: [new CliMarkdownCommandProcessor()],\n translations: {\n es: { 'cli.md.description': 'Renderizar Markdown en la terminal' },\n fr: { 'cli.md.description': 'Afficher du Markdown dans le terminal' },\n de: { 'cli.md.description': 'Markdown im Terminal rendern' },\n pt: { 'cli.md.description': 'Renderizar Markdown no terminal' },\n it: { 'cli.md.description': 'Renderizzare Markdown nel terminale' },\n ja: { 'cli.md.description': 'ターミナルでMarkdownを描画' },\n ko: { 'cli.md.description': '터미널에서 Markdown 렌더링' },\n zh: { 'cli.md.description': '在终端中渲染 Markdown' },\n ru: { 'cli.md.description': 'Рендеринг Markdown в терминале' },\n ro: { 'cli.md.description': 'Redare Markdown în terminal' },\n },\n};\n"]}
package/public-api.mjs CHANGED
@@ -113,7 +113,7 @@ var CliMarkdownCommandProcessor = class {
113
113
  };
114
114
 
115
115
  // src/lib/version.ts
116
- var LIBRARY_VERSION = "2.0.0-beta.5";
116
+ var LIBRARY_VERSION = "2.0.0-beta.6";
117
117
  var API_VERSION = 2;
118
118
 
119
119
  // src/public-api.ts
@@ -1 +1 @@
1
- {"version":3,"sources":["../../packages/plugins/markdown/src/lib/markdown-renderer.ts","../../packages/plugins/markdown/src/lib/processors/cli-markdown-command-processor.ts","../../packages/plugins/markdown/src/lib/version.ts","../../packages/plugins/markdown/src/public-api.ts"],"names":[],"mappings":"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","file":"public-api.mjs","sourcesContent":["const RESET = '\\x1b[0m';\nconst BOLD = '\\x1b[1m';\nconst DIM = '\\x1b[2m';\nconst ITALIC = '\\x1b[3m';\nconst UNDERLINE = '\\x1b[4m';\n\nconst FG_YELLOW = '\\x1b[33m';\nconst FG_CYAN = '\\x1b[36m';\nconst FG_GREEN = '\\x1b[32m';\nconst FG_WHITE = '\\x1b[97m';\nconst BG_DARK = '\\x1b[48;5;236m';\n\nfunction wrap(text: string, ...codes: string[]): string {\n return codes.join('') + text + RESET;\n}\n\nexport function renderMarkdown(input: string): string[] {\n if (!input.trim()) return [];\n\n const rawLines = input.split('\\n');\n const output: string[] = [];\n let inCodeBlock = false;\n\n for (const line of rawLines) {\n if (line.startsWith('```')) {\n if (!inCodeBlock) {\n inCodeBlock = true;\n const lang = line.slice(3).trim();\n output.push(wrap(` ${lang || 'code'} `, DIM, BG_DARK));\n } else {\n inCodeBlock = false;\n output.push(wrap('\\u2500'.repeat(40), DIM));\n }\n continue;\n }\n\n if (inCodeBlock) {\n output.push(wrap(' ' + line, FG_GREEN));\n continue;\n }\n\n if (line.startsWith('### ')) {\n output.push(wrap(line.slice(4), BOLD, FG_CYAN));\n } else if (line.startsWith('## ')) {\n const text = line.slice(3);\n output.push(wrap(text, BOLD, FG_YELLOW));\n output.push(wrap('\\u2500'.repeat(text.length), FG_YELLOW));\n } else if (line.startsWith('# ')) {\n const text = line.slice(2);\n output.push(wrap(text, BOLD, UNDERLINE, FG_WHITE));\n output.push('');\n } else if (/^(-{3,}|\\*{3,}|_{3,})$/.test(line.trim())) {\n output.push(wrap('\\u2500'.repeat(60), DIM));\n } else if (line.startsWith('> ')) {\n output.push(wrap('\\u2502 ' + line.slice(2), DIM, ITALIC));\n } else if (/^[-*+] /.test(line)) {\n output.push(' \\u2022 ' + applyInline(line.slice(2)));\n } else if (/^\\d+\\. /.test(line)) {\n const match = line.match(/^(\\d+\\.) (.*)/);\n if (match) {\n output.push(` ${wrap(match[1], BOLD)} ${applyInline(match[2])}`);\n }\n } else if (line.trim() === '') {\n output.push('');\n } else {\n output.push(applyInline(line));\n }\n }\n\n return output;\n}\n\nfunction applyInline(text: string): string {\n // Bold **text** or __text__\n text = text.replace(/\\*\\*(.+?)\\*\\*|__(.+?)__/g, (_, a, b) => wrap(a ?? b, BOLD));\n // Italic *text* or _text_\n text = text.replace(/(?<!\\*)\\*([^*]+)\\*(?!\\*)|(?<!_)_([^_]+)_(?!_)/g, (_, a, b) => wrap(a ?? b, ITALIC));\n // Inline code `text`\n text = text.replace(/`([^`]+)`/g, (_, code) => wrap(code, FG_GREEN, BG_DARK));\n // Links [text](url)\n text = text.replace(/\\[(.+?)\\]\\((.+?)\\)/g, (_, label, url) =>\n wrap(label, UNDERLINE, FG_CYAN) + wrap(` (${url})`, DIM),\n );\n return text;\n}\n","import {\n ICliCommandProcessor,\n ICliExecutionContext,\n CliProcessCommand,\n DefaultLibraryAuthor,\n CliIcon,\n ICliCommandChildProcessor,\n} from '@qodalis/cli-core';\nimport { renderMarkdown } from '../markdown-renderer';\n\nexport class CliMarkdownCommandProcessor implements ICliCommandProcessor {\n command = 'md';\n description = 'Render Markdown in the terminal';\n aliases = ['markdown'];\n author = DefaultLibraryAuthor;\n metadata = { icon: CliIcon.File };\n\n processors: ICliCommandChildProcessor[] = [\n {\n command: 'render',\n description: 'Render Markdown text. Pipe markdown or pass inline.',\n aliases: ['preview', 'view'],\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (cmd: CliProcessCommand, context: ICliExecutionContext) => {\n const input = cmd.value || (typeof cmd.data === 'string' ? cmd.data : '') || '';\n if (!input.trim()) {\n context.writer.writeError('No markdown input. Pipe text or provide inline.');\n return;\n }\n const lines = renderMarkdown(input);\n for (const line of lines) {\n context.writer.writeln(line);\n }\n },\n },\n ];\n\n async processCommand(_: CliProcessCommand, context: ICliExecutionContext): Promise<void> {\n context.writer.writeln('Usage: echo \"# Hello\" | md render');\n context.writer.writeln(' md render \"## Title\"');\n }\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.0.0-beta.5';\nexport const API_VERSION = 2;\n ","/*\n * Public API Surface of markdown\n */\n\nexport * from './lib/processors/cli-markdown-command-processor';\nexport * from './lib/version';\n\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliMarkdownCommandProcessor } from './lib/processors/cli-markdown-command-processor';\nimport { API_VERSION } from './lib/version';\n\nexport const markdownModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-markdown',\n processors: [new CliMarkdownCommandProcessor()],\n translations: {\n es: { 'cli.md.description': 'Renderizar Markdown en la terminal' },\n fr: { 'cli.md.description': 'Afficher du Markdown dans le terminal' },\n de: { 'cli.md.description': 'Markdown im Terminal rendern' },\n pt: { 'cli.md.description': 'Renderizar Markdown no terminal' },\n it: { 'cli.md.description': 'Renderizzare Markdown nel terminale' },\n ja: { 'cli.md.description': 'ターミナルでMarkdownを描画' },\n ko: { 'cli.md.description': '터미널에서 Markdown 렌더링' },\n zh: { 'cli.md.description': '在终端中渲染 Markdown' },\n ru: { 'cli.md.description': 'Рендеринг Markdown в терминале' },\n ro: { 'cli.md.description': 'Redare Markdown în terminal' },\n },\n};\n"]}
1
+ {"version":3,"sources":["../../packages/plugins/markdown/src/lib/markdown-renderer.ts","../../packages/plugins/markdown/src/lib/processors/cli-markdown-command-processor.ts","../../packages/plugins/markdown/src/lib/version.ts","../../packages/plugins/markdown/src/public-api.ts"],"names":[],"mappings":"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","file":"public-api.mjs","sourcesContent":["const RESET = '\\x1b[0m';\nconst BOLD = '\\x1b[1m';\nconst DIM = '\\x1b[2m';\nconst ITALIC = '\\x1b[3m';\nconst UNDERLINE = '\\x1b[4m';\n\nconst FG_YELLOW = '\\x1b[33m';\nconst FG_CYAN = '\\x1b[36m';\nconst FG_GREEN = '\\x1b[32m';\nconst FG_WHITE = '\\x1b[97m';\nconst BG_DARK = '\\x1b[48;5;236m';\n\nfunction wrap(text: string, ...codes: string[]): string {\n return codes.join('') + text + RESET;\n}\n\nexport function renderMarkdown(input: string): string[] {\n if (!input.trim()) return [];\n\n const rawLines = input.split('\\n');\n const output: string[] = [];\n let inCodeBlock = false;\n\n for (const line of rawLines) {\n if (line.startsWith('```')) {\n if (!inCodeBlock) {\n inCodeBlock = true;\n const lang = line.slice(3).trim();\n output.push(wrap(` ${lang || 'code'} `, DIM, BG_DARK));\n } else {\n inCodeBlock = false;\n output.push(wrap('\\u2500'.repeat(40), DIM));\n }\n continue;\n }\n\n if (inCodeBlock) {\n output.push(wrap(' ' + line, FG_GREEN));\n continue;\n }\n\n if (line.startsWith('### ')) {\n output.push(wrap(line.slice(4), BOLD, FG_CYAN));\n } else if (line.startsWith('## ')) {\n const text = line.slice(3);\n output.push(wrap(text, BOLD, FG_YELLOW));\n output.push(wrap('\\u2500'.repeat(text.length), FG_YELLOW));\n } else if (line.startsWith('# ')) {\n const text = line.slice(2);\n output.push(wrap(text, BOLD, UNDERLINE, FG_WHITE));\n output.push('');\n } else if (/^(-{3,}|\\*{3,}|_{3,})$/.test(line.trim())) {\n output.push(wrap('\\u2500'.repeat(60), DIM));\n } else if (line.startsWith('> ')) {\n output.push(wrap('\\u2502 ' + line.slice(2), DIM, ITALIC));\n } else if (/^[-*+] /.test(line)) {\n output.push(' \\u2022 ' + applyInline(line.slice(2)));\n } else if (/^\\d+\\. /.test(line)) {\n const match = line.match(/^(\\d+\\.) (.*)/);\n if (match) {\n output.push(` ${wrap(match[1], BOLD)} ${applyInline(match[2])}`);\n }\n } else if (line.trim() === '') {\n output.push('');\n } else {\n output.push(applyInline(line));\n }\n }\n\n return output;\n}\n\nfunction applyInline(text: string): string {\n // Bold **text** or __text__\n text = text.replace(/\\*\\*(.+?)\\*\\*|__(.+?)__/g, (_, a, b) => wrap(a ?? b, BOLD));\n // Italic *text* or _text_\n text = text.replace(/(?<!\\*)\\*([^*]+)\\*(?!\\*)|(?<!_)_([^_]+)_(?!_)/g, (_, a, b) => wrap(a ?? b, ITALIC));\n // Inline code `text`\n text = text.replace(/`([^`]+)`/g, (_, code) => wrap(code, FG_GREEN, BG_DARK));\n // Links [text](url)\n text = text.replace(/\\[(.+?)\\]\\((.+?)\\)/g, (_, label, url) =>\n wrap(label, UNDERLINE, FG_CYAN) + wrap(` (${url})`, DIM),\n );\n return text;\n}\n","import {\n ICliCommandProcessor,\n ICliExecutionContext,\n CliProcessCommand,\n DefaultLibraryAuthor,\n CliIcon,\n ICliCommandChildProcessor,\n} from '@qodalis/cli-core';\nimport { renderMarkdown } from '../markdown-renderer';\n\nexport class CliMarkdownCommandProcessor implements ICliCommandProcessor {\n command = 'md';\n description = 'Render Markdown in the terminal';\n aliases = ['markdown'];\n author = DefaultLibraryAuthor;\n metadata = { icon: CliIcon.File };\n\n processors: ICliCommandChildProcessor[] = [\n {\n command: 'render',\n description: 'Render Markdown text. Pipe markdown or pass inline.',\n aliases: ['preview', 'view'],\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (cmd: CliProcessCommand, context: ICliExecutionContext) => {\n const input = cmd.value || (typeof cmd.data === 'string' ? cmd.data : '') || '';\n if (!input.trim()) {\n context.writer.writeError('No markdown input. Pipe text or provide inline.');\n return;\n }\n const lines = renderMarkdown(input);\n for (const line of lines) {\n context.writer.writeln(line);\n }\n },\n },\n ];\n\n async processCommand(_: CliProcessCommand, context: ICliExecutionContext): Promise<void> {\n context.writer.writeln('Usage: echo \"# Hello\" | md render');\n context.writer.writeln(' md render \"## Title\"');\n }\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.0.0-beta.6';\nexport const API_VERSION = 2;\n ","/*\n * Public API Surface of markdown\n */\n\nexport * from './lib/processors/cli-markdown-command-processor';\nexport * from './lib/version';\n\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliMarkdownCommandProcessor } from './lib/processors/cli-markdown-command-processor';\nimport { API_VERSION } from './lib/version';\n\nexport const markdownModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-markdown',\n processors: [new CliMarkdownCommandProcessor()],\n translations: {\n es: { 'cli.md.description': 'Renderizar Markdown en la terminal' },\n fr: { 'cli.md.description': 'Afficher du Markdown dans le terminal' },\n de: { 'cli.md.description': 'Markdown im Terminal rendern' },\n pt: { 'cli.md.description': 'Renderizar Markdown no terminal' },\n it: { 'cli.md.description': 'Renderizzare Markdown nel terminale' },\n ja: { 'cli.md.description': 'ターミナルでMarkdownを描画' },\n ko: { 'cli.md.description': '터미널에서 Markdown 렌더링' },\n zh: { 'cli.md.description': '在终端中渲染 Markdown' },\n ru: { 'cli.md.description': 'Рендеринг Markdown в терминале' },\n ro: { 'cli.md.description': 'Redare Markdown în terminal' },\n },\n};\n"]}