@qodalis/cli-markdown 2.0.0-beta.8 → 2.0.0-beta.9
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 +2 -2
- package/public-api.d.mts +1 -1
- package/public-api.d.ts +1 -1
- package/public-api.js +1 -1
- package/public-api.js.map +1 -1
- package/public-api.mjs +1 -1
- package/public-api.mjs.map +1 -1
- package/umd/index.global.js +13 -11
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qodalis/cli-markdown",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.9",
|
|
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.
|
|
21
|
+
"@qodalis/cli-core": "2.0.0-beta.9"
|
|
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.
|
|
16
|
+
declare const LIBRARY_VERSION = "2.0.0-beta.9";
|
|
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.
|
|
16
|
+
declare const LIBRARY_VERSION = "2.0.0-beta.9";
|
|
17
17
|
declare const API_VERSION = 2;
|
|
18
18
|
|
|
19
19
|
declare const markdownModule: ICliModule;
|
package/public-api.js
CHANGED
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.8';\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.9';\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
package/public-api.mjs.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":[],"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.8';\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.9';\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/umd/index.global.js
CHANGED
|
@@ -1890,7 +1890,7 @@ var markdown = (() => {
|
|
|
1890
1890
|
CliIcon2["Server"] = "\u{1F5A5}";
|
|
1891
1891
|
CliIcon2["Cloud"] = "\u2601";
|
|
1892
1892
|
CliIcon2["Network"] = "\u{1F310}";
|
|
1893
|
-
CliIcon2["Monitor"] = "\u{
|
|
1893
|
+
CliIcon2["Monitor"] = "\u{1F4FA}";
|
|
1894
1894
|
CliIcon2["Printer"] = "\u{1F5A8}";
|
|
1895
1895
|
CliIcon2["USB"] = "\u{1F50C}";
|
|
1896
1896
|
CliIcon2["Speaker"] = "\u{1F50A}";
|
|
@@ -1900,14 +1900,14 @@ var markdown = (() => {
|
|
|
1900
1900
|
CliIcon2["Music"] = "\u{1F3B5}";
|
|
1901
1901
|
CliIcon2["Phone"] = "\u{1F4DE}";
|
|
1902
1902
|
CliIcon2["Package"] = "\u{1F4E6}";
|
|
1903
|
-
CliIcon2["Plugin"] = "\u{
|
|
1904
|
-
CliIcon2["Extension"] = "\u{
|
|
1905
|
-
CliIcon2["Module"] = "\u{
|
|
1903
|
+
CliIcon2["Plugin"] = "\u{1F9E9}";
|
|
1904
|
+
CliIcon2["Extension"] = "\u{1F50C}";
|
|
1905
|
+
CliIcon2["Module"] = "\u{1F9F1}";
|
|
1906
1906
|
CliIcon2["Evaluate"] = "\u{1F50D}";
|
|
1907
|
-
CliIcon2["Variable"] = "\u{
|
|
1907
|
+
CliIcon2["Variable"] = "\u{1D465}";
|
|
1908
1908
|
CliIcon2["Script"] = "\u{1F4DC}";
|
|
1909
|
-
CliIcon2["Code"] = "\u{
|
|
1910
|
-
CliIcon2["Logs"] = "\u{
|
|
1909
|
+
CliIcon2["Code"] = "\u{1F4DD}";
|
|
1910
|
+
CliIcon2["Logs"] = "\u{1F4CB}";
|
|
1911
1911
|
CliIcon2["Power"] = "\u23FB";
|
|
1912
1912
|
CliIcon2["Heart"] = "\u2764";
|
|
1913
1913
|
CliIcon2["Flame"] = "\u{1F525}";
|
|
@@ -1943,9 +1943,11 @@ var markdown = (() => {
|
|
|
1943
1943
|
email: "nicolae.lupei@qodalis.com"
|
|
1944
1944
|
};
|
|
1945
1945
|
var semver = __toESM(require_semver2());
|
|
1946
|
+
var API_VERSION = 2;
|
|
1947
|
+
var VERSIONS_ENDPOINT = "/api/qcli/versions";
|
|
1946
1948
|
var ServerVersionNegotiator = class {
|
|
1947
1949
|
static {
|
|
1948
|
-
this.CLIENT_SUPPORTED_VERSIONS = [
|
|
1950
|
+
this.CLIENT_SUPPORTED_VERSIONS = [API_VERSION];
|
|
1949
1951
|
}
|
|
1950
1952
|
/**
|
|
1951
1953
|
* Given a server's version info, pick the highest mutually compatible version.
|
|
@@ -1964,7 +1966,7 @@ var markdown = (() => {
|
|
|
1964
1966
|
*/
|
|
1965
1967
|
static async discover(baseUrl) {
|
|
1966
1968
|
try {
|
|
1967
|
-
const response = await fetch(`${baseUrl}
|
|
1969
|
+
const response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`);
|
|
1968
1970
|
if (!response.ok) return null;
|
|
1969
1971
|
const info = await response.json();
|
|
1970
1972
|
const version = this.negotiate(info);
|
|
@@ -2906,11 +2908,11 @@ var markdown = (() => {
|
|
|
2906
2908
|
};
|
|
2907
2909
|
|
|
2908
2910
|
// src/lib/version.ts
|
|
2909
|
-
var
|
|
2911
|
+
var API_VERSION2 = 2;
|
|
2910
2912
|
|
|
2911
2913
|
// src/cli-entrypoint.ts
|
|
2912
2914
|
var module = {
|
|
2913
|
-
apiVersion:
|
|
2915
|
+
apiVersion: API_VERSION2,
|
|
2914
2916
|
name: "@qodalis/cli-markdown",
|
|
2915
2917
|
processors: [new CliMarkdownCommandProcessor()]
|
|
2916
2918
|
};
|