@bendyline/docblocks-cli 1.1.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +55 -94
  2. package/dist/index.d.ts +2 -2
  3. package/dist/index.js +7183 -18
  4. package/dist/index.js.map +1 -1
  5. package/package.json +12 -12
  6. package/dist/commands/build.d.ts +0 -14
  7. package/dist/commands/build.d.ts.map +0 -1
  8. package/dist/commands/build.js +0 -74
  9. package/dist/commands/build.js.map +0 -1
  10. package/dist/commands/convert.d.ts +0 -32
  11. package/dist/commands/convert.d.ts.map +0 -1
  12. package/dist/commands/convert.js +0 -168
  13. package/dist/commands/convert.js.map +0 -1
  14. package/dist/commands/init.d.ts +0 -3
  15. package/dist/commands/init.d.ts.map +0 -1
  16. package/dist/commands/init.js +0 -23
  17. package/dist/commands/init.js.map +0 -1
  18. package/dist/commands/mcp.d.ts +0 -12
  19. package/dist/commands/mcp.d.ts.map +0 -1
  20. package/dist/commands/mcp.js +0 -20
  21. package/dist/commands/mcp.js.map +0 -1
  22. package/dist/commands/parse.d.ts +0 -6
  23. package/dist/commands/parse.d.ts.map +0 -1
  24. package/dist/commands/parse.js +0 -38
  25. package/dist/commands/parse.js.map +0 -1
  26. package/dist/commands/serve.d.ts +0 -28
  27. package/dist/commands/serve.d.ts.map +0 -1
  28. package/dist/commands/serve.js +0 -182
  29. package/dist/commands/serve.js.map +0 -1
  30. package/dist/commands/themes.d.ts +0 -6
  31. package/dist/commands/themes.d.ts.map +0 -1
  32. package/dist/commands/themes.js +0 -15
  33. package/dist/commands/themes.js.map +0 -1
  34. package/dist/commands/transforms.d.ts +0 -6
  35. package/dist/commands/transforms.d.ts.map +0 -1
  36. package/dist/commands/transforms.js +0 -15
  37. package/dist/commands/transforms.js.map +0 -1
  38. package/dist/commands/video.d.ts +0 -31
  39. package/dist/commands/video.d.ts.map +0 -1
  40. package/dist/commands/video.js +0 -116
  41. package/dist/commands/video.js.map +0 -1
  42. package/dist/converters/docx-to-md.d.ts +0 -10
  43. package/dist/converters/docx-to-md.d.ts.map +0 -1
  44. package/dist/converters/docx-to-md.js +0 -17
  45. package/dist/converters/docx-to-md.js.map +0 -1
  46. package/dist/converters/pdf-to-md.d.ts +0 -14
  47. package/dist/converters/pdf-to-md.d.ts.map +0 -1
  48. package/dist/converters/pdf-to-md.js +0 -51
  49. package/dist/converters/pdf-to-md.js.map +0 -1
  50. package/dist/converters/pptx-to-md.d.ts +0 -13
  51. package/dist/converters/pptx-to-md.d.ts.map +0 -1
  52. package/dist/converters/pptx-to-md.js +0 -67
  53. package/dist/converters/pptx-to-md.js.map +0 -1
  54. package/dist/index.d.ts.map +0 -1
  55. package/dist/mcp/server.d.ts +0 -12
  56. package/dist/mcp/server.d.ts.map +0 -1
  57. package/dist/mcp/server.js +0 -518
  58. package/dist/mcp/server.js.map +0 -1
  59. package/dist/render-html.d.ts +0 -9
  60. package/dist/render-html.d.ts.map +0 -1
  61. package/dist/render-html.js +0 -60
  62. package/dist/render-html.js.map +0 -1
  63. package/dist/version.d.ts +0 -2
  64. package/dist/version.d.ts.map +0 -1
  65. package/dist/version.js +0 -15
  66. package/dist/version.js.map +0 -1
@@ -1,182 +0,0 @@
1
- import { Command } from 'commander';
2
- import { createServer } from 'node:http';
3
- import { readFile, stat } from 'node:fs/promises';
4
- import path from 'node:path';
5
- import { renderMarkdownHtml } from '../render-html.js';
6
- export async function startPreviewServer(opts) {
7
- const root = path.resolve(opts.dir);
8
- const rootStat = await stat(root).catch(() => null);
9
- if (!rootStat?.isDirectory()) {
10
- throw new Error(`Directory not found: ${root}`);
11
- }
12
- const server = createServer((req, res) => {
13
- handlePreviewRequest(req, res, root, opts.theme).catch((err) => {
14
- const message = err instanceof Error ? err.message : String(err);
15
- sendText(res, 500, `Internal server error: ${message}`);
16
- });
17
- });
18
- await new Promise((resolve, reject) => {
19
- server.once('error', reject);
20
- server.listen(opts.port, () => {
21
- server.off('error', reject);
22
- resolve();
23
- });
24
- });
25
- const address = server.address();
26
- const port = typeof address === 'object' && address ? address.port : opts.port;
27
- return { server, root, url: `http://localhost:${port}/` };
28
- }
29
- export const serveCommand = new Command('serve')
30
- .description('Start a local dev server for previewing markdown files')
31
- .option('-p, --port <port>', 'port to listen on', '3000')
32
- .option('-d, --dir <dir>', 'directory to serve', '.')
33
- .option('-t, --theme <id>', 'Squisq theme ID to apply')
34
- .action(async (opts) => {
35
- try {
36
- const server = await startPreviewServer({
37
- port: parsePort(opts.port),
38
- dir: opts.dir,
39
- theme: opts.theme,
40
- });
41
- console.error(`Serving ${server.root} at ${server.url}`);
42
- }
43
- catch (err) {
44
- const message = err instanceof Error ? err.message : String(err);
45
- console.error(`Error: ${message}`);
46
- process.exitCode = 1;
47
- }
48
- });
49
- async function handlePreviewRequest(req, res, root, themeId) {
50
- if (req.method !== 'GET' && req.method !== 'HEAD') {
51
- sendText(res, 405, 'Method not allowed');
52
- return;
53
- }
54
- const target = await resolveServeTarget(root, req.url ?? '/');
55
- if (target.kind === 'bad-request') {
56
- sendText(res, 400, 'Bad request');
57
- return;
58
- }
59
- if (target.kind === 'forbidden') {
60
- sendText(res, 403, 'Forbidden');
61
- return;
62
- }
63
- if (target.kind === 'missing') {
64
- sendText(res, 404, 'Not found');
65
- return;
66
- }
67
- if (target.markdown) {
68
- const markdown = await readFile(target.filePath, 'utf-8');
69
- const html = await renderMarkdownHtml(markdown, {
70
- title: path.basename(target.filePath).replace(/\.(md|markdown)$/i, ''),
71
- sourcePath: target.filePath,
72
- assetRoot: root,
73
- themeId,
74
- mode: 'static',
75
- });
76
- sendBody(res, 200, html, 'text/html; charset=utf-8', req.method === 'HEAD');
77
- return;
78
- }
79
- const body = await readFile(target.filePath);
80
- sendBody(res, 200, body, contentTypeFor(target.filePath), req.method === 'HEAD');
81
- }
82
- export async function resolveServeTarget(root, requestUrl) {
83
- const decodedPath = decodeRequestPath(requestUrl);
84
- if (!decodedPath)
85
- return { kind: 'bad-request' };
86
- const requestedPath = decodedPath.replace(/^\/+/, '');
87
- const candidate = path.resolve(root, requestedPath);
88
- if (!isPathInside(root, candidate))
89
- return { kind: 'forbidden' };
90
- const direct = await fileTarget(candidate);
91
- if (direct)
92
- return direct;
93
- const dirIndex = await directoryIndexTarget(candidate);
94
- if (dirIndex)
95
- return dirIndex;
96
- if (/\.html?$/i.test(candidate)) {
97
- const markdownTarget = await fileTarget(candidate.replace(/\.html?$/i, '.md'));
98
- if (markdownTarget)
99
- return markdownTarget;
100
- }
101
- return { kind: 'missing' };
102
- }
103
- function decodeRequestPath(requestUrl) {
104
- const pathOnly = requestUrl.split(/[?#]/, 1)[0] || '/';
105
- try {
106
- return decodeURIComponent(pathOnly);
107
- }
108
- catch {
109
- return '';
110
- }
111
- }
112
- async function fileTarget(filePath) {
113
- const info = await stat(filePath).catch(() => null);
114
- if (!info?.isFile())
115
- return null;
116
- return { kind: 'file', filePath, markdown: /\.(md|markdown)$/i.test(filePath) };
117
- }
118
- async function directoryIndexTarget(dirPath) {
119
- const info = await stat(dirPath).catch(() => null);
120
- if (!info?.isDirectory())
121
- return null;
122
- for (const fileName of ['index.html', 'index.htm', 'index.md', 'index.markdown']) {
123
- const target = await fileTarget(path.join(dirPath, fileName));
124
- if (target)
125
- return target;
126
- }
127
- return null;
128
- }
129
- function parsePort(value) {
130
- const port = Number(value);
131
- if (!Number.isInteger(port) || port < 0 || port > 65535) {
132
- throw new Error(`Invalid port: ${value}`);
133
- }
134
- return port;
135
- }
136
- function sendText(res, status, message) {
137
- sendBody(res, status, `${message}\n`, 'text/plain; charset=utf-8', false);
138
- }
139
- function sendBody(res, status, body, contentType, headOnly) {
140
- res.statusCode = status;
141
- res.setHeader('content-type', contentType);
142
- if (headOnly) {
143
- res.end();
144
- return;
145
- }
146
- res.end(body);
147
- }
148
- function contentTypeFor(filePath) {
149
- const ext = path.extname(filePath).toLowerCase();
150
- switch (ext) {
151
- case '.html':
152
- case '.htm':
153
- return 'text/html; charset=utf-8';
154
- case '.css':
155
- return 'text/css; charset=utf-8';
156
- case '.js':
157
- case '.mjs':
158
- return 'text/javascript; charset=utf-8';
159
- case '.json':
160
- return 'application/json; charset=utf-8';
161
- case '.svg':
162
- return 'image/svg+xml';
163
- case '.png':
164
- return 'image/png';
165
- case '.jpg':
166
- case '.jpeg':
167
- return 'image/jpeg';
168
- case '.gif':
169
- return 'image/gif';
170
- case '.webp':
171
- return 'image/webp';
172
- case '.ico':
173
- return 'image/x-icon';
174
- default:
175
- return 'application/octet-stream';
176
- }
177
- }
178
- function isPathInside(rootAbs, candidateAbs) {
179
- const rel = path.relative(path.resolve(rootAbs), path.resolve(candidateAbs));
180
- return rel === '' || (!rel.startsWith(`..${path.sep}`) && rel !== '..' && !path.isAbsolute(rel));
181
- }
182
- //# sourceMappingURL=serve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * themes command — list all available squisq themes.
3
- */
4
- import { Command } from 'commander';
5
- export declare const themesCommand: Command;
6
- //# sourceMappingURL=themes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/commands/themes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,eAAO,MAAM,aAAa,SAStB,CAAC"}
@@ -1,15 +0,0 @@
1
- /**
2
- * themes command — list all available squisq themes.
3
- */
4
- import { Command } from 'commander';
5
- export const themesCommand = new Command('themes')
6
- .description('List all available visual themes')
7
- .action(async () => {
8
- const { getAvailableThemes } = await import('@bendyline/squisq/schemas');
9
- const themes = getAvailableThemes();
10
- console.error('Available themes:\n');
11
- for (const theme of themes) {
12
- process.stdout.write(` ${theme}\n`);
13
- }
14
- });
15
- //# sourceMappingURL=themes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"themes.js","sourceRoot":"","sources":["../../src/commands/themes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IACvC,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * transforms command — list all available transform styles.
3
- */
4
- import { Command } from 'commander';
5
- export declare const transformsCommand: Command;
6
- //# sourceMappingURL=transforms.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transforms.d.ts","sourceRoot":"","sources":["../../src/commands/transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,eAAO,MAAM,iBAAiB,SAS1B,CAAC"}
@@ -1,15 +0,0 @@
1
- /**
2
- * transforms command — list all available transform styles.
3
- */
4
- import { Command } from 'commander';
5
- export const transformsCommand = new Command('transforms')
6
- .description('List all available transform styles')
7
- .action(async () => {
8
- const { getTransformStyleIds } = await import('@bendyline/squisq/transform');
9
- const styles = getTransformStyleIds();
10
- console.error('Available transform styles:\n');
11
- for (const style of styles) {
12
- process.stdout.write(` ${style}\n`);
13
- }
14
- });
15
- //# sourceMappingURL=transforms.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transforms.js","sourceRoot":"","sources":["../../src/commands/transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC;KACvD,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IACvC,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,31 +0,0 @@
1
- /**
2
- * video command
3
- *
4
- * Renders a squisq document to MP4 video using Playwright + FFmpeg.
5
- * Wraps the squisq-cli's renderDocToMp4 programmatic API.
6
- */
7
- import { Command } from 'commander';
8
- import type { VideoQuality, VideoOrientation } from '@bendyline/squisq-video';
9
- declare const VALID_CAPTIONS: readonly ["off", "standard", "social"];
10
- type CaptionOption = (typeof VALID_CAPTIONS)[number];
11
- export interface VideoOptions {
12
- output?: string;
13
- fps?: number;
14
- quality?: VideoQuality;
15
- orientation?: VideoOrientation;
16
- captions?: CaptionOption;
17
- width?: number;
18
- height?: number;
19
- }
20
- export interface VideoResult {
21
- outputPath: string;
22
- duration: number;
23
- frameCount: number;
24
- }
25
- /**
26
- * Core video rendering logic — reusable by both CLI and MCP tools.
27
- */
28
- export declare function runVideo(inputPath: string, opts: VideoOptions, onProgress?: (phase: string, percent: number) => void): Promise<VideoResult>;
29
- export declare const videoCommand: Command;
30
- export {};
31
- //# sourceMappingURL=video.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/commands/video.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI9E,QAAA,MAAM,cAAc,wCAAyC,CAAC;AAE9D,KAAK,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,EAClB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACpD,OAAO,CAAC,WAAW,CAAC,CAoFtB;AAYD,eAAO,MAAM,YAAY,SAsCrB,CAAC"}
@@ -1,116 +0,0 @@
1
- /**
2
- * video command
3
- *
4
- * Renders a squisq document to MP4 video using Playwright + FFmpeg.
5
- * Wraps the squisq-cli's renderDocToMp4 programmatic API.
6
- */
7
- import { mkdir } from 'node:fs/promises';
8
- import { dirname, basename, extname, resolve } from 'node:path';
9
- import { Command } from 'commander';
10
- const VALID_QUALITIES = ['draft', 'normal', 'high'];
11
- const VALID_ORIENTATIONS = ['landscape', 'portrait'];
12
- const VALID_CAPTIONS = ['off', 'standard', 'social'];
13
- /**
14
- * Core video rendering logic — reusable by both CLI and MCP tools.
15
- */
16
- export async function runVideo(inputPath, opts, onProgress) {
17
- const resolvedInput = resolve(inputPath);
18
- const fps = opts.fps ?? 30;
19
- if (fps < 1 || fps > 120) {
20
- throw new Error('FPS must be a number between 1 and 120');
21
- }
22
- const quality = opts.quality ?? 'normal';
23
- if (!VALID_QUALITIES.includes(quality)) {
24
- throw new Error(`Invalid quality "${quality}". Valid: ${VALID_QUALITIES.join(', ')}`);
25
- }
26
- const orientation = opts.orientation ?? 'landscape';
27
- if (!VALID_ORIENTATIONS.includes(orientation)) {
28
- throw new Error(`Invalid orientation "${orientation}". Valid: ${VALID_ORIENTATIONS.join(', ')}`);
29
- }
30
- const captions = opts.captions ?? 'off';
31
- if (!VALID_CAPTIONS.includes(captions)) {
32
- throw new Error(`Invalid captions "${captions}". Valid: ${VALID_CAPTIONS.join(', ')}`);
33
- }
34
- const captionStyle = captions === 'off' ? undefined : captions;
35
- // Determine output path
36
- const inputBasename = basename(resolvedInput);
37
- const inputExt = extname(inputBasename);
38
- const baseName = inputExt ? inputBasename.slice(0, -inputExt.length) : inputBasename;
39
- const outputPath = opts.output
40
- ? resolve(opts.output)
41
- : resolve(dirname(resolvedInput), `${baseName}.mp4`);
42
- await mkdir(dirname(outputPath), { recursive: true });
43
- console.error(`Reading: ${resolvedInput}`);
44
- const { readInput, renderDocToMp4 } = await import('@bendyline/squisq-cli/api');
45
- const result = await readInput(resolvedInput);
46
- const { container } = result;
47
- // Get or parse Doc
48
- let doc;
49
- if (result.doc) {
50
- console.error('Using pre-built Doc JSON');
51
- doc = result.doc;
52
- }
53
- else if (result.markdownDoc) {
54
- const { markdownToDoc } = await import('@bendyline/squisq/doc');
55
- doc = markdownToDoc(result.markdownDoc);
56
- }
57
- else {
58
- throw new Error('No document found in input');
59
- }
60
- console.error(`Rendering: ${fps} fps, quality: ${quality}, orientation: ${orientation}, captions: ${captions}`);
61
- const renderResult = await renderDocToMp4(doc, container, {
62
- outputPath,
63
- fps,
64
- quality,
65
- orientation,
66
- width: opts.width,
67
- height: opts.height,
68
- captionStyle,
69
- onProgress: onProgress ??
70
- ((phase, percent) => {
71
- process.stderr.write(`\r ${phase}: ${percent}% `);
72
- }),
73
- });
74
- process.stderr.write('\r' + ' '.repeat(60) + '\r');
75
- console.error(` ✓ ${outputPath}`);
76
- console.error(` Duration: ${renderResult.duration.toFixed(1)}s, ${renderResult.frameCount} frames`);
77
- console.error('Done.');
78
- return {
79
- outputPath: renderResult.outputPath,
80
- duration: renderResult.duration,
81
- frameCount: renderResult.frameCount,
82
- };
83
- }
84
- export const videoCommand = new Command('video')
85
- .description('Render a squisq document to MP4 video')
86
- .argument('<input>', 'Path to .md file, .zip/.dbk container, or folder')
87
- .argument('[output]', 'Output MP4 path (default: <input>.mp4)')
88
- .option('-o, --output <path>', 'Output MP4 path (default: <input>.mp4)')
89
- .option('--fps <number>', 'Frames per second (default: 30)', '30')
90
- .option('--quality <level>', `Encoding quality: ${VALID_QUALITIES.join(', ')} (default: normal)`, 'normal')
91
- .option('--orientation <orient>', `Video orientation: ${VALID_ORIENTATIONS.join(', ')} (default: landscape)`, 'landscape')
92
- .option('--captions <style>', `Caption style: ${VALID_CAPTIONS.join(', ')} (default: off)`, 'off')
93
- .option('--width <pixels>', 'Override video width')
94
- .option('--height <pixels>', 'Override video height')
95
- .action(async (inputPath, outputArg, opts) => {
96
- try {
97
- if (outputArg && !opts.output) {
98
- opts.output = outputArg;
99
- }
100
- await runVideo(inputPath, {
101
- output: opts.output,
102
- fps: parseInt(opts.fps ?? '30', 10),
103
- quality: opts.quality,
104
- orientation: opts.orientation,
105
- captions: opts.captions,
106
- width: opts.width ? parseInt(opts.width, 10) : undefined,
107
- height: opts.height ? parseInt(opts.height, 10) : undefined,
108
- });
109
- }
110
- catch (err) {
111
- const message = err instanceof Error ? err.message : String(err);
112
- console.error(`Error: ${message}`);
113
- process.exitCode = 1;
114
- }
115
- });
116
- //# sourceMappingURL=video.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/commands/video.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * DOCX → Markdown converter.
3
- *
4
- * Uses mammoth to extract the document's structure and produce Markdown.
5
- * Covers headings, paragraphs, emphasis, lists, and tables. Embedded
6
- * images are emitted as data: URIs; binary fidelity with the source is
7
- * not guaranteed (DOCX has features Markdown cannot represent).
8
- */
9
- export declare function docxToMarkdown(input: string | Buffer | Uint8Array): Promise<string>;
10
- //# sourceMappingURL=docx-to-md.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docx-to-md.d.ts","sourceRoot":"","sources":["../../src/converters/docx-to-md.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAKzF"}
@@ -1,17 +0,0 @@
1
- /**
2
- * DOCX → Markdown converter.
3
- *
4
- * Uses mammoth to extract the document's structure and produce Markdown.
5
- * Covers headings, paragraphs, emphasis, lists, and tables. Embedded
6
- * images are emitted as data: URIs; binary fidelity with the source is
7
- * not guaranteed (DOCX has features Markdown cannot represent).
8
- */
9
- import { readFile } from 'node:fs/promises';
10
- import mammoth from 'mammoth';
11
- export async function docxToMarkdown(input) {
12
- const buffer = typeof input === 'string' ? await readFile(input) : Buffer.from(input);
13
- const m = mammoth;
14
- const { value } = await m.convertToMarkdown({ buffer });
15
- return value.replace(/\r\n/g, '\n').trimEnd() + '\n';
16
- }
17
- //# sourceMappingURL=docx-to-md.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docx-to-md.js","sourceRoot":"","sources":["../../src/converters/docx-to-md.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,OAAO,MAAM,SAAS,CAAC;AAS9B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAmC;IACtE,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtF,MAAM,CAAC,GAAG,OAAqC,CAAC;IAChD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AACvD,CAAC"}
@@ -1,14 +0,0 @@
1
- /**
2
- * PDF → Markdown converter.
3
- *
4
- * Uses pdfjs-dist (legacy build, Node-compatible) to extract the text of
5
- * each page. Text items are joined respecting vertical position so that
6
- * separate lines become separate paragraphs. Each PDF page becomes a
7
- * `## Page N` section so structure isn't lost completely.
8
- *
9
- * Heading/list structure in the source PDF is not recovered — PDFs
10
- * don't carry semantic structure reliably. This is a text extractor,
11
- * not a layout-preserving converter.
12
- */
13
- export declare function pdfToMarkdown(input: string | Buffer | Uint8Array): Promise<string>;
14
- //# sourceMappingURL=pdf-to-md.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdf-to-md.d.ts","sourceRoot":"","sources":["../../src/converters/pdf-to-md.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAsCxF"}
@@ -1,51 +0,0 @@
1
- /**
2
- * PDF → Markdown converter.
3
- *
4
- * Uses pdfjs-dist (legacy build, Node-compatible) to extract the text of
5
- * each page. Text items are joined respecting vertical position so that
6
- * separate lines become separate paragraphs. Each PDF page becomes a
7
- * `## Page N` section so structure isn't lost completely.
8
- *
9
- * Heading/list structure in the source PDF is not recovered — PDFs
10
- * don't carry semantic structure reliably. This is a text extractor,
11
- * not a layout-preserving converter.
12
- */
13
- import { readFile } from 'node:fs/promises';
14
- export async function pdfToMarkdown(input) {
15
- const raw = typeof input === 'string' ? await readFile(input) : input;
16
- // pdfjs-dist rejects Buffer — copy into a plain Uint8Array.
17
- const bytes = new Uint8Array(raw.byteLength);
18
- bytes.set(raw);
19
- const pdfjs = await import('pdfjs-dist/legacy/build/pdf.mjs');
20
- const doc = await pdfjs.getDocument({ data: bytes, isEvalSupported: false }).promise;
21
- const sections = [];
22
- for (let pageNum = 1; pageNum <= doc.numPages; pageNum++) {
23
- const page = await doc.getPage(pageNum);
24
- const content = await page.getTextContent();
25
- const lines = [];
26
- for (const item of content.items) {
27
- const i = item;
28
- if (typeof i.str !== 'string')
29
- continue;
30
- const y = i.transform ? i.transform[5] : 0;
31
- const existing = lines.find((l) => Math.abs(l.y - y) < 2);
32
- if (existing) {
33
- existing.text += i.str;
34
- }
35
- else {
36
- lines.push({ y, text: i.str });
37
- }
38
- }
39
- lines.sort((a, b) => b.y - a.y);
40
- const pageText = lines
41
- .map((l) => l.text.trim())
42
- .filter(Boolean)
43
- .join('\n\n');
44
- if (pageText) {
45
- sections.push(`## Page ${pageNum}\n\n${pageText}`);
46
- }
47
- }
48
- await doc.destroy();
49
- return sections.join('\n\n') + '\n';
50
- }
51
- //# sourceMappingURL=pdf-to-md.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdf-to-md.js","sourceRoot":"","sources":["../../src/converters/pdf-to-md.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAmC;IACrE,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,4DAA4D;IAC5D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC;IAErF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5C,MAAM,KAAK,GAAkC,EAAE,CAAC;QAChD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,IAAgE,CAAC;YAC3E,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,SAAS;YACxC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhC,MAAM,QAAQ,GAAG,KAAK;aACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aACzB,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAAC;QAChB,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,WAAW,OAAO,OAAO,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IACpB,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACtC,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * PPTX → Markdown converter.
3
- *
4
- * PPTX is a zip archive of XML parts. We extract every `ppt/slides/slide*.xml`
5
- * in slide order and pull out the text runs (`<a:t>` elements), grouped by
6
- * paragraph (`<a:p>`). The first paragraph on each slide is treated as the
7
- * slide title (→ `##` heading); remaining paragraphs become body text.
8
- *
9
- * This is a best-effort text extractor — it does not preserve formatting,
10
- * shapes, images, or animations.
11
- */
12
- export declare function pptxToMarkdown(input: string | Buffer | Uint8Array): Promise<string>;
13
- //# sourceMappingURL=pptx-to-md.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pptx-to-md.d.ts","sourceRoot":"","sources":["../../src/converters/pptx-to-md.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuCH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBzF"}
@@ -1,67 +0,0 @@
1
- /**
2
- * PPTX → Markdown converter.
3
- *
4
- * PPTX is a zip archive of XML parts. We extract every `ppt/slides/slide*.xml`
5
- * in slide order and pull out the text runs (`<a:t>` elements), grouped by
6
- * paragraph (`<a:p>`). The first paragraph on each slide is treated as the
7
- * slide title (→ `##` heading); remaining paragraphs become body text.
8
- *
9
- * This is a best-effort text extractor — it does not preserve formatting,
10
- * shapes, images, or animations.
11
- */
12
- import { readFile } from 'node:fs/promises';
13
- import JSZip from 'jszip';
14
- function decodeXmlEntities(s) {
15
- return s
16
- .replace(/&lt;/g, '<')
17
- .replace(/&gt;/g, '>')
18
- .replace(/&quot;/g, '"')
19
- .replace(/&apos;/g, "'")
20
- .replace(/&#(\d+);/g, (_, n) => String.fromCodePoint(Number(n)))
21
- .replace(/&#x([0-9a-fA-F]+);/g, (_, n) => String.fromCodePoint(parseInt(n, 16)))
22
- .replace(/&amp;/g, '&');
23
- }
24
- function extractSlideParagraphs(slideXml) {
25
- const paragraphs = [];
26
- const paraRe = /<a:p\b[^>]*>([\s\S]*?)<\/a:p>/g;
27
- const runRe = /<a:t\b[^>]*>([\s\S]*?)<\/a:t>/g;
28
- let pMatch;
29
- while ((pMatch = paraRe.exec(slideXml)) !== null) {
30
- const body = pMatch[1];
31
- const parts = [];
32
- let rMatch;
33
- while ((rMatch = runRe.exec(body)) !== null) {
34
- parts.push(decodeXmlEntities(rMatch[1]));
35
- }
36
- const text = parts.join('').trim();
37
- if (text)
38
- paragraphs.push(text);
39
- }
40
- return paragraphs;
41
- }
42
- function slideOrder(name) {
43
- const m = /slide(\d+)\.xml$/i.exec(name);
44
- return m ? parseInt(m[1], 10) : Number.POSITIVE_INFINITY;
45
- }
46
- export async function pptxToMarkdown(input) {
47
- const data = typeof input === 'string' ? await readFile(input) : input;
48
- const zip = await JSZip.loadAsync(data);
49
- const slideNames = Object.keys(zip.files)
50
- .filter((n) => /^ppt\/slides\/slide\d+\.xml$/i.test(n))
51
- .sort((a, b) => slideOrder(a) - slideOrder(b));
52
- if (slideNames.length === 0) {
53
- throw new Error('No slides found — not a valid PPTX file.');
54
- }
55
- const sections = [];
56
- for (const name of slideNames) {
57
- const xml = await zip.file(name).async('string');
58
- const paragraphs = extractSlideParagraphs(xml);
59
- if (paragraphs.length === 0)
60
- continue;
61
- const [title, ...body] = paragraphs;
62
- const section = [`## ${title}`, ...body].join('\n\n');
63
- sections.push(section);
64
- }
65
- return sections.join('\n\n') + '\n';
66
- }
67
- //# sourceMappingURL=pptx-to-md.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pptx-to-md.js","sourceRoot":"","sources":["../../src/converters/pptx-to-md.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}