@bendyline/docblocks-cli 2.0.0 → 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.
- package/README.md +5 -16
- package/dist/index.d.ts +2 -2
- package/dist/index.js +7183 -18
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
- package/dist/commands/build.d.ts +0 -14
- package/dist/commands/build.d.ts.map +0 -1
- package/dist/commands/build.js +0 -74
- package/dist/commands/build.js.map +0 -1
- package/dist/commands/convert.d.ts +0 -42
- package/dist/commands/convert.d.ts.map +0 -1
- package/dist/commands/convert.js +0 -339
- package/dist/commands/convert.js.map +0 -1
- package/dist/commands/init.d.ts +0 -3
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -23
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -12
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js +0 -106
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/parse.d.ts +0 -6
- package/dist/commands/parse.d.ts.map +0 -1
- package/dist/commands/parse.js +0 -38
- package/dist/commands/parse.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -36
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -347
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/themes.d.ts +0 -6
- package/dist/commands/themes.d.ts.map +0 -1
- package/dist/commands/themes.js +0 -15
- package/dist/commands/themes.js.map +0 -1
- package/dist/commands/transforms.d.ts +0 -6
- package/dist/commands/transforms.d.ts.map +0 -1
- package/dist/commands/transforms.js +0 -15
- package/dist/commands/transforms.js.map +0 -1
- package/dist/commands/video.d.ts +0 -38
- package/dist/commands/video.d.ts.map +0 -1
- package/dist/commands/video.js +0 -136
- package/dist/commands/video.js.map +0 -1
- package/dist/contained-file.d.ts +0 -8
- package/dist/contained-file.d.ts.map +0 -1
- package/dist/contained-file.js +0 -77
- package/dist/contained-file.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/mcp/agentic-tools.d.ts +0 -16
- package/dist/mcp/agentic-tools.d.ts.map +0 -1
- package/dist/mcp/agentic-tools.js +0 -967
- package/dist/mcp/agentic-tools.js.map +0 -1
- package/dist/mcp/artifact-store.d.ts +0 -98
- package/dist/mcp/artifact-store.d.ts.map +0 -1
- package/dist/mcp/artifact-store.js +0 -542
- package/dist/mcp/artifact-store.js.map +0 -1
- package/dist/mcp/authority.d.ts +0 -53
- package/dist/mcp/authority.d.ts.map +0 -1
- package/dist/mcp/authority.js +0 -433
- package/dist/mcp/authority.js.map +0 -1
- package/dist/mcp/conversion-service.d.ts +0 -111
- package/dist/mcp/conversion-service.d.ts.map +0 -1
- package/dist/mcp/conversion-service.js +0 -512
- package/dist/mcp/conversion-service.js.map +0 -1
- package/dist/mcp/discovery-tools.d.ts +0 -4
- package/dist/mcp/discovery-tools.d.ts.map +0 -1
- package/dist/mcp/discovery-tools.js +0 -114
- package/dist/mcp/discovery-tools.js.map +0 -1
- package/dist/mcp/document-service.d.ts +0 -47
- package/dist/mcp/document-service.d.ts.map +0 -1
- package/dist/mcp/document-service.js +0 -424
- package/dist/mcp/document-service.js.map +0 -1
- package/dist/mcp/error-result.d.ts +0 -17
- package/dist/mcp/error-result.d.ts.map +0 -1
- package/dist/mcp/error-result.js +0 -82
- package/dist/mcp/error-result.js.map +0 -1
- package/dist/mcp/intelligence.d.ts +0 -15
- package/dist/mcp/intelligence.d.ts.map +0 -1
- package/dist/mcp/intelligence.js +0 -855
- package/dist/mcp/intelligence.js.map +0 -1
- package/dist/mcp/output-bounds.d.ts +0 -13
- package/dist/mcp/output-bounds.d.ts.map +0 -1
- package/dist/mcp/output-bounds.js +0 -61
- package/dist/mcp/output-bounds.js.map +0 -1
- package/dist/mcp/preview-service.d.ts +0 -54
- package/dist/mcp/preview-service.d.ts.map +0 -1
- package/dist/mcp/preview-service.js +0 -454
- package/dist/mcp/preview-service.js.map +0 -1
- package/dist/mcp/progress.d.ts +0 -18
- package/dist/mcp/progress.d.ts.map +0 -1
- package/dist/mcp/progress.js +0 -28
- package/dist/mcp/progress.js.map +0 -1
- package/dist/mcp/prompts.d.ts +0 -4
- package/dist/mcp/prompts.d.ts.map +0 -1
- package/dist/mcp/prompts.js +0 -124
- package/dist/mcp/prompts.js.map +0 -1
- package/dist/mcp/rendered-conversion.d.ts +0 -34
- package/dist/mcp/rendered-conversion.d.ts.map +0 -1
- package/dist/mcp/rendered-conversion.js +0 -364
- package/dist/mcp/rendered-conversion.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -69
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -249
- package/dist/mcp/server.js.map +0 -1
- package/dist/preview-policy.d.ts +0 -8
- package/dist/preview-policy.d.ts.map +0 -1
- package/dist/preview-policy.js +0 -85
- package/dist/preview-policy.js.map +0 -1
- package/dist/render-html.d.ts +0 -17
- package/dist/render-html.d.ts.map +0 -1
- package/dist/render-html.js +0 -85
- package/dist/render-html.js.map +0 -1
- package/dist/version.d.ts +0 -6
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -104
- package/dist/version.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bendyline/docblocks-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Build, preview, convert, render, inspect, and automate documents",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Bendyline",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"url": "https://github.com/bendyline/docblocks.git",
|
|
10
10
|
"directory": "packages/cli"
|
|
11
11
|
},
|
|
12
|
-
"homepage": "https://
|
|
12
|
+
"homepage": "https://docblocks.com/cli/",
|
|
13
13
|
"keywords": [
|
|
14
14
|
"docblocks",
|
|
15
15
|
"cli",
|
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
"typecheck": "tsc --noEmit"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@bendyline/docblocks": "2.
|
|
36
|
-
"@bendyline/squisq": "2.0
|
|
37
|
-
"@bendyline/squisq-cli": "2.0
|
|
38
|
-
"@bendyline/squisq-editor-react": "2.
|
|
39
|
-
"@bendyline/squisq-formats": "2.0
|
|
40
|
-
"@bendyline/squisq-react": "2.0
|
|
41
|
-
"@bendyline/squisq-video": "2.0
|
|
35
|
+
"@bendyline/docblocks": "2.1.0",
|
|
36
|
+
"@bendyline/squisq": "2.3.0",
|
|
37
|
+
"@bendyline/squisq-cli": "2.3.0",
|
|
38
|
+
"@bendyline/squisq-editor-react": "2.3.1",
|
|
39
|
+
"@bendyline/squisq-formats": "2.3.0",
|
|
40
|
+
"@bendyline/squisq-react": "2.3.0",
|
|
41
|
+
"@bendyline/squisq-video": "2.2.0",
|
|
42
42
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
43
43
|
"commander": "13.1.0",
|
|
44
44
|
"jszip": "3.10.1",
|
package/dist/commands/build.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
export interface BuildOptions {
|
|
3
|
-
input: string;
|
|
4
|
-
output: string;
|
|
5
|
-
theme?: string;
|
|
6
|
-
}
|
|
7
|
-
export interface BuildResult {
|
|
8
|
-
inputDir: string;
|
|
9
|
-
outputDir: string;
|
|
10
|
-
builtFiles: string[];
|
|
11
|
-
}
|
|
12
|
-
export declare function runBuild(opts: BuildOptions): Promise<BuildResult>;
|
|
13
|
-
export declare const buildCommand: Command;
|
|
14
|
-
//# sourceMappingURL=build.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAmCvE;AAED,eAAO,MAAM,YAAY,SAiBrB,CAAC"}
|
package/dist/commands/build.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { mkdir, readdir, readFile, stat, writeFile } from 'node:fs/promises';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import { renderMarkdownHtml } from '../render-html.js';
|
|
5
|
-
export async function runBuild(opts) {
|
|
6
|
-
const inputDir = path.resolve(opts.input);
|
|
7
|
-
const outputDir = path.resolve(opts.output);
|
|
8
|
-
const inputStat = await stat(inputDir).catch(() => null);
|
|
9
|
-
if (!inputStat?.isDirectory()) {
|
|
10
|
-
throw new Error(`Input directory not found: ${inputDir}`);
|
|
11
|
-
}
|
|
12
|
-
const markdownFiles = await listMarkdownFiles(inputDir);
|
|
13
|
-
if (markdownFiles.length === 0) {
|
|
14
|
-
throw new Error(`No markdown files found in ${inputDir}.`);
|
|
15
|
-
}
|
|
16
|
-
await mkdir(outputDir, { recursive: true });
|
|
17
|
-
const builtFiles = [];
|
|
18
|
-
for (const sourcePath of markdownFiles) {
|
|
19
|
-
const relativePath = path.relative(inputDir, sourcePath);
|
|
20
|
-
const outputPath = path.join(outputDir, replaceMarkdownExtension(relativePath));
|
|
21
|
-
const source = await readFile(sourcePath, 'utf-8');
|
|
22
|
-
const html = await renderMarkdownHtml(source, {
|
|
23
|
-
title: titleFromPath(relativePath),
|
|
24
|
-
sourcePath,
|
|
25
|
-
assetRoot: inputDir,
|
|
26
|
-
themeId: opts.theme,
|
|
27
|
-
mode: 'static',
|
|
28
|
-
});
|
|
29
|
-
await mkdir(path.dirname(outputPath), { recursive: true });
|
|
30
|
-
await writeFile(outputPath, html, 'utf-8');
|
|
31
|
-
builtFiles.push(outputPath);
|
|
32
|
-
}
|
|
33
|
-
return { inputDir, outputDir, builtFiles };
|
|
34
|
-
}
|
|
35
|
-
export const buildCommand = new Command('build')
|
|
36
|
-
.description('Build markdown files into HTML output')
|
|
37
|
-
.option('-i, --input <dir>', 'input directory', '.')
|
|
38
|
-
.option('-o, --output <dir>', 'output directory', 'dist')
|
|
39
|
-
.option('-t, --theme <id>', 'Squisq theme ID to apply')
|
|
40
|
-
.action(async (opts) => {
|
|
41
|
-
try {
|
|
42
|
-
const result = await runBuild(opts);
|
|
43
|
-
for (const outFile of result.builtFiles) {
|
|
44
|
-
console.error(`Built: ${outFile}`);
|
|
45
|
-
}
|
|
46
|
-
console.error(`Done. ${result.builtFiles.length} file(s) built to ${result.outputDir}`);
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
50
|
-
console.error(`Error: ${message}`);
|
|
51
|
-
process.exitCode = 1;
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
async function listMarkdownFiles(root) {
|
|
55
|
-
const entries = await readdir(root, { withFileTypes: true });
|
|
56
|
-
const files = await Promise.all(entries.map(async (entry) => {
|
|
57
|
-
const absolutePath = path.join(root, entry.name);
|
|
58
|
-
if (entry.isDirectory())
|
|
59
|
-
return listMarkdownFiles(absolutePath);
|
|
60
|
-
return isMarkdownFile(entry.name) ? [absolutePath] : [];
|
|
61
|
-
}));
|
|
62
|
-
return files.flat().sort((a, b) => a.localeCompare(b));
|
|
63
|
-
}
|
|
64
|
-
function isMarkdownFile(fileName) {
|
|
65
|
-
return /\.(md|markdown)$/i.test(fileName);
|
|
66
|
-
}
|
|
67
|
-
function replaceMarkdownExtension(filePath) {
|
|
68
|
-
return filePath.replace(/\.(md|markdown)$/i, '.html');
|
|
69
|
-
}
|
|
70
|
-
function titleFromPath(filePath) {
|
|
71
|
-
const baseName = path.basename(filePath).replace(/\.(md|markdown)$/i, '');
|
|
72
|
-
return baseName || 'DocBlocks Document';
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=build.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* convert command
|
|
3
|
-
*
|
|
4
|
-
* Reads any input supported by the linked Squisq CLI and exports through its
|
|
5
|
-
* canonical format registry. The historical default set remains DOCX, PPTX,
|
|
6
|
-
* PDF, HTML, and DBK; callers may explicitly request any export-capable
|
|
7
|
-
* registry format.
|
|
8
|
-
*
|
|
9
|
-
* Wraps the same logic as squisq-cli's convert command, reusing the
|
|
10
|
-
* underlying squisq libraries directly.
|
|
11
|
-
*/
|
|
12
|
-
import { Command } from 'commander';
|
|
13
|
-
import type { MarkdownDocument } from '@bendyline/squisq/markdown';
|
|
14
|
-
import type { ContentContainer } from '@bendyline/squisq/storage';
|
|
15
|
-
import type { FormatRegistry } from '@bendyline/squisq-cli/api';
|
|
16
|
-
export interface ConvertOptions {
|
|
17
|
-
outputDir?: string;
|
|
18
|
-
formats?: string;
|
|
19
|
-
theme?: string;
|
|
20
|
-
transform?: string;
|
|
21
|
-
/** Cancel reading, transformation, conversion, or publication at a bounded boundary. */
|
|
22
|
-
signal?: AbortSignal;
|
|
23
|
-
/** Programmatic registry override; the CLI defaults to the linked Squisq registry. */
|
|
24
|
-
registry?: FormatRegistry;
|
|
25
|
-
}
|
|
26
|
-
export interface ConvertResult {
|
|
27
|
-
outputFiles: {
|
|
28
|
-
path: string;
|
|
29
|
-
format: string;
|
|
30
|
-
size: number;
|
|
31
|
-
mimeType: string;
|
|
32
|
-
suggestedFilename: string;
|
|
33
|
-
warnings: string[];
|
|
34
|
-
}[];
|
|
35
|
-
}
|
|
36
|
-
export declare function runConvert(inputPath: string, opts: ConvertOptions): Promise<ConvertResult>;
|
|
37
|
-
/**
|
|
38
|
-
* Apply a transform style to a MarkdownDocument.
|
|
39
|
-
*/
|
|
40
|
-
export declare function applyTransformToMarkdown(markdownDoc: MarkdownDocument, container: ContentContainer, transformStyle: string, themeId?: string): Promise<MarkdownDocument>;
|
|
41
|
-
export declare const convertCommand: Command;
|
|
42
|
-
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/commands/convert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,KAAK,EAA2B,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIzF,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,EAAE,CAAC;CACL;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAiHhG;AAUD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,gBAAgB,EAC7B,SAAS,EAAE,gBAAgB,EAC3B,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CAoB3B;AA6LD,eAAO,MAAM,cAAc,SAyBvB,CAAC"}
|
package/dist/commands/convert.js
DELETED
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* convert command
|
|
3
|
-
*
|
|
4
|
-
* Reads any input supported by the linked Squisq CLI and exports through its
|
|
5
|
-
* canonical format registry. The historical default set remains DOCX, PPTX,
|
|
6
|
-
* PDF, HTML, and DBK; callers may explicitly request any export-capable
|
|
7
|
-
* registry format.
|
|
8
|
-
*
|
|
9
|
-
* Wraps the same logic as squisq-cli's convert command, reusing the
|
|
10
|
-
* underlying squisq libraries directly.
|
|
11
|
-
*/
|
|
12
|
-
import { writeFile, mkdir, stat } from 'node:fs/promises';
|
|
13
|
-
import { dirname, basename, extname, join, resolve } from 'node:path';
|
|
14
|
-
import { Command } from 'commander';
|
|
15
|
-
const DEFAULT_FORMATS = ['docx', 'pptx', 'pdf', 'html', 'dbk'];
|
|
16
|
-
export async function runConvert(inputPath, opts) {
|
|
17
|
-
throwIfAborted(opts.signal);
|
|
18
|
-
const resolvedInput = resolve(inputPath);
|
|
19
|
-
const outputDir = opts.outputDir ? resolve(opts.outputDir) : dirname(resolvedInput);
|
|
20
|
-
const inputBasename = basename(resolvedInput);
|
|
21
|
-
const inputExt = extname(inputBasename);
|
|
22
|
-
const baseName = inputExt ? inputBasename.slice(0, -inputExt.length) : inputBasename;
|
|
23
|
-
const squisq = await import('@bendyline/squisq-cli/api');
|
|
24
|
-
throwIfAborted(opts.signal);
|
|
25
|
-
const registry = opts.registry ?? squisq.createCliRegistry();
|
|
26
|
-
const exportableIds = registry
|
|
27
|
-
.list()
|
|
28
|
-
.filter((definition) => definition.exportDoc !== undefined)
|
|
29
|
-
.map((definition) => definition.id);
|
|
30
|
-
const exportable = new Set(exportableIds);
|
|
31
|
-
const requested = opts.formats
|
|
32
|
-
? opts.formats
|
|
33
|
-
.split(',')
|
|
34
|
-
.map((format) => format.trim().toLowerCase())
|
|
35
|
-
.filter(Boolean)
|
|
36
|
-
: [...DEFAULT_FORMATS];
|
|
37
|
-
const formats = requested.filter((format) => exportable.has(format));
|
|
38
|
-
const unknown = requested.filter((format) => !exportable.has(format));
|
|
39
|
-
if (unknown.length > 0) {
|
|
40
|
-
console.warn(`Unknown or non-exportable format${unknown.length === 1 ? '' : 's'} "${unknown.join(', ')}" — skipping. Valid: ${exportableIds.join(', ')}`);
|
|
41
|
-
}
|
|
42
|
-
if (formats.length === 0) {
|
|
43
|
-
throw new squisq.ConversionError('unknown-format', `No valid formats specified. Valid: ${exportableIds.join(', ')}`, {
|
|
44
|
-
format: requested[0],
|
|
45
|
-
hint: 'Choose a format reported by the linked Squisq CLI registry.',
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
await mkdir(outputDir, { recursive: true });
|
|
49
|
-
throwIfAborted(opts.signal);
|
|
50
|
-
// Validate transform
|
|
51
|
-
if (opts.transform) {
|
|
52
|
-
const { getTransformStyleIds } = await import('@bendyline/squisq/transform');
|
|
53
|
-
throwIfAborted(opts.signal);
|
|
54
|
-
const styles = getTransformStyleIds();
|
|
55
|
-
if (!styles.includes(opts.transform)) {
|
|
56
|
-
throw new Error(`Unknown transform style "${opts.transform}". Available: ${styles.join(', ')}`);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
console.error(`Reading: ${resolvedInput}`);
|
|
60
|
-
const result = await squisq.readInput(resolvedInput, { signal: opts.signal });
|
|
61
|
-
throwIfAborted(opts.signal);
|
|
62
|
-
const { container } = result;
|
|
63
|
-
// Keep DocBlocks' source-preserving Markdown transform projection for
|
|
64
|
-
// authored Markdown. JSON Doc inputs have no Markdown source to protect, so
|
|
65
|
-
// they use the registry's native transform path below.
|
|
66
|
-
let exportMarkdownDoc = result.markdownDoc;
|
|
67
|
-
if (opts.transform && exportMarkdownDoc) {
|
|
68
|
-
exportMarkdownDoc = await applyTransformToMarkdown(exportMarkdownDoc, container, opts.transform, opts.theme);
|
|
69
|
-
throwIfAborted(opts.signal);
|
|
70
|
-
console.error(` Applied transform: ${opts.transform}`);
|
|
71
|
-
}
|
|
72
|
-
const source = exportMarkdownDoc
|
|
73
|
-
? { kind: 'markdown', markdown: exportMarkdownDoc, container, baseName }
|
|
74
|
-
: { kind: 'doc', doc: result.doc, container, baseName };
|
|
75
|
-
const outputFiles = [];
|
|
76
|
-
for (const format of formats) {
|
|
77
|
-
throwIfAborted(opts.signal);
|
|
78
|
-
const conversion = await squisq.convert(source, format, {
|
|
79
|
-
signal: opts.signal,
|
|
80
|
-
registry,
|
|
81
|
-
title: baseName,
|
|
82
|
-
themeId: opts.theme,
|
|
83
|
-
...(!exportMarkdownDoc && opts.transform ? { transformStyle: opts.transform } : {}),
|
|
84
|
-
});
|
|
85
|
-
throwIfAborted(opts.signal);
|
|
86
|
-
const suggestedFilename = basename(conversion.suggestedFilename);
|
|
87
|
-
const outPath = join(outputDir, suggestedFilename);
|
|
88
|
-
await writeFile(outPath, conversion.bytes);
|
|
89
|
-
throwIfAborted(opts.signal);
|
|
90
|
-
const info = await stat(outPath);
|
|
91
|
-
throwIfAborted(opts.signal);
|
|
92
|
-
outputFiles.push({
|
|
93
|
-
path: outPath,
|
|
94
|
-
format,
|
|
95
|
-
size: info.size,
|
|
96
|
-
mimeType: conversion.mimeType,
|
|
97
|
-
suggestedFilename: conversion.suggestedFilename,
|
|
98
|
-
warnings: [...conversion.warnings],
|
|
99
|
-
});
|
|
100
|
-
for (const warning of conversion.warnings) {
|
|
101
|
-
console.error(` Warning [${format}]: ${warning}`);
|
|
102
|
-
}
|
|
103
|
-
console.error(` ✓ ${outPath}`);
|
|
104
|
-
}
|
|
105
|
-
console.error('Done.');
|
|
106
|
-
return { outputFiles };
|
|
107
|
-
}
|
|
108
|
-
function throwIfAborted(signal) {
|
|
109
|
-
if (!signal?.aborted)
|
|
110
|
-
return;
|
|
111
|
-
if (signal.reason !== undefined)
|
|
112
|
-
throw signal.reason;
|
|
113
|
-
const error = new Error('Document conversion was cancelled');
|
|
114
|
-
error.name = 'AbortError';
|
|
115
|
-
throw error;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Apply a transform style to a MarkdownDocument.
|
|
119
|
-
*/
|
|
120
|
-
export async function applyTransformToMarkdown(markdownDoc, container, transformStyle, themeId) {
|
|
121
|
-
const { markdownToDoc, docToMarkdown } = await import('@bendyline/squisq/doc');
|
|
122
|
-
const { readFrontmatterThemeId } = await import('@bendyline/squisq/markdown');
|
|
123
|
-
const { applyTransform, extractDocImages } = await import('@bendyline/squisq/transform');
|
|
124
|
-
const doc = markdownToDoc(markdownDoc);
|
|
125
|
-
const images = extractDocImages(doc.blocks);
|
|
126
|
-
const effectiveTheme = themeId ?? readFrontmatterThemeId(markdownDoc.frontmatter);
|
|
127
|
-
const result = applyTransform(doc, transformStyle, { themeId: effectiveTheme, images });
|
|
128
|
-
const projected = projectTransformOntoMarkdownSource(doc, result.doc);
|
|
129
|
-
const transformedMarkdown = docToMarkdown(projected);
|
|
130
|
-
const resolvedTheme = effectiveTheme ?? result.doc.themeId ?? doc.themeId;
|
|
131
|
-
if (!resolvedTheme)
|
|
132
|
-
return transformedMarkdown;
|
|
133
|
-
return {
|
|
134
|
-
...transformedMarkdown,
|
|
135
|
-
frontmatter: {
|
|
136
|
-
...(transformedMarkdown.frontmatter ?? {}),
|
|
137
|
-
'squisq-theme': resolvedTheme,
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Squisq transforms produce a presentation Doc whose generated highlight
|
|
143
|
-
* blocks intentionally replace source blocks. Those generated blocks do not
|
|
144
|
-
* carry Markdown authoring nodes, so serializing the transformed Doc directly
|
|
145
|
-
* can drop complete sections. Project each selected visual template back onto
|
|
146
|
-
* its source block instead: the style remains material while the authored
|
|
147
|
-
* headings, body content, media references, and hierarchy stay intact.
|
|
148
|
-
*/
|
|
149
|
-
function projectTransformOntoMarkdownSource(source, transformed) {
|
|
150
|
-
const candidatesBySource = new Map();
|
|
151
|
-
const timedSourceBlocks = collectTransformSourceBlocks(source.blocks).sort((left, right) => left.startTime - right.startTime);
|
|
152
|
-
const collectCandidates = (blocks) => {
|
|
153
|
-
for (const block of blocks) {
|
|
154
|
-
const provenance = block;
|
|
155
|
-
const sourceBlockId = provenance.sourceBlockId ??
|
|
156
|
-
findSourceBlockAtTime(timedSourceBlocks, provenance.sourceStartTime)?.id;
|
|
157
|
-
if (sourceBlockId && block.template) {
|
|
158
|
-
const candidates = candidatesBySource.get(sourceBlockId) ?? [];
|
|
159
|
-
candidates.push(block);
|
|
160
|
-
candidatesBySource.set(sourceBlockId, candidates);
|
|
161
|
-
}
|
|
162
|
-
if (block.children)
|
|
163
|
-
collectCandidates(block.children);
|
|
164
|
-
}
|
|
165
|
-
};
|
|
166
|
-
collectCandidates(transformed.blocks);
|
|
167
|
-
const projectBlock = (block) => {
|
|
168
|
-
const children = block.children?.map(projectBlock);
|
|
169
|
-
const visual = selectVisualCandidate(candidatesBySource.get(block.id));
|
|
170
|
-
if (!visual || !block.sourceHeading) {
|
|
171
|
-
return { ...block, ...(children ? { children } : {}) };
|
|
172
|
-
}
|
|
173
|
-
const { autoTemplate: _autoTemplate, ...sourceBlock } = block;
|
|
174
|
-
void _autoTemplate;
|
|
175
|
-
const templateOverrides = {
|
|
176
|
-
...visual.overrides,
|
|
177
|
-
...(block.sourceHeading.templateAnnotation?.params ?? {}),
|
|
178
|
-
...(block.templateOverrides ?? {}),
|
|
179
|
-
};
|
|
180
|
-
const sourceHeading = {
|
|
181
|
-
...block.sourceHeading,
|
|
182
|
-
templateAnnotation: {
|
|
183
|
-
...(block.sourceHeading.templateAnnotation ?? {}),
|
|
184
|
-
template: visual.block.template,
|
|
185
|
-
...(Object.keys(templateOverrides).length > 0 ? { params: templateOverrides } : {}),
|
|
186
|
-
},
|
|
187
|
-
};
|
|
188
|
-
return {
|
|
189
|
-
...sourceBlock,
|
|
190
|
-
...(children ? { children } : {}),
|
|
191
|
-
template: visual.block.template,
|
|
192
|
-
templateOverrides,
|
|
193
|
-
sourceHeading,
|
|
194
|
-
...(block.transition || visual.block.transition
|
|
195
|
-
? { transition: block.transition ?? visual.block.transition }
|
|
196
|
-
: {}),
|
|
197
|
-
};
|
|
198
|
-
};
|
|
199
|
-
return {
|
|
200
|
-
...source,
|
|
201
|
-
blocks: source.blocks.map(projectBlock),
|
|
202
|
-
themeId: transformed.themeId ?? source.themeId,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
function collectTransformSourceBlocks(blocks) {
|
|
206
|
-
const sourceBlocks = [];
|
|
207
|
-
for (const block of blocks) {
|
|
208
|
-
if (block.children && block.children.length > 0) {
|
|
209
|
-
if (!block.contents || block.contents.length === 0)
|
|
210
|
-
sourceBlocks.push(block);
|
|
211
|
-
sourceBlocks.push(...collectTransformSourceBlocks(block.children));
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
sourceBlocks.push(block);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
return sourceBlocks;
|
|
218
|
-
}
|
|
219
|
-
function findSourceBlockAtTime(sourceBlocks, sourceStartTime) {
|
|
220
|
-
if (sourceStartTime === undefined)
|
|
221
|
-
return undefined;
|
|
222
|
-
let match;
|
|
223
|
-
for (const block of sourceBlocks) {
|
|
224
|
-
if (block.startTime > sourceStartTime)
|
|
225
|
-
break;
|
|
226
|
-
match = block;
|
|
227
|
-
}
|
|
228
|
-
return match;
|
|
229
|
-
}
|
|
230
|
-
function selectVisualCandidate(candidates) {
|
|
231
|
-
if (!candidates || candidates.length === 0)
|
|
232
|
-
return undefined;
|
|
233
|
-
for (const candidate of candidates) {
|
|
234
|
-
if (candidate.id.startsWith('transform-header-') ||
|
|
235
|
-
candidate.id.startsWith('transform-img-') ||
|
|
236
|
-
candidate.template === 'sectionHeader') {
|
|
237
|
-
continue;
|
|
238
|
-
}
|
|
239
|
-
const overrides = serializeVisualInputs(candidate);
|
|
240
|
-
if (overrides)
|
|
241
|
-
return { block: candidate, overrides };
|
|
242
|
-
}
|
|
243
|
-
return undefined;
|
|
244
|
-
}
|
|
245
|
-
function serializeVisualInputs(block) {
|
|
246
|
-
const input = block;
|
|
247
|
-
switch (block.template) {
|
|
248
|
-
case 'title':
|
|
249
|
-
return serializeStringInputs(input, ['title'], ['subtitle', 'backgroundColor']);
|
|
250
|
-
case 'statHighlight':
|
|
251
|
-
return serializeStringInputs(input, ['stat', 'description'], ['detail', 'colorScheme']);
|
|
252
|
-
case 'quote':
|
|
253
|
-
return serializeStringInputs(input, ['quote'], ['attribution']);
|
|
254
|
-
case 'fullBleedQuote':
|
|
255
|
-
return serializeStringInputs(input, ['text'], ['colorScheme']);
|
|
256
|
-
case 'factCard':
|
|
257
|
-
return serializeStringInputs(input, ['fact', 'explanation'], ['source']);
|
|
258
|
-
case 'definitionCard':
|
|
259
|
-
return serializeStringInputs(input, ['term', 'definition'], ['origin', 'colorScheme']);
|
|
260
|
-
case 'dateEvent':
|
|
261
|
-
return serializeStringInputs(input, ['date', 'description'], ['footer', 'mood']);
|
|
262
|
-
case 'twoColumn': {
|
|
263
|
-
const left = serializeLabeledPair(input.left);
|
|
264
|
-
const right = serializeLabeledPair(input.right);
|
|
265
|
-
if (!left || !right)
|
|
266
|
-
return undefined;
|
|
267
|
-
return {
|
|
268
|
-
left,
|
|
269
|
-
right,
|
|
270
|
-
...(serializeStringInputs(input, [], ['header', 'leftColor', 'rightColor']) ?? {}),
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
default:
|
|
274
|
-
// Some template inputs (lists, images, tables, and custom templates)
|
|
275
|
-
// are structured and cannot be represented losslessly in one inline
|
|
276
|
-
// annotation. Keep their source Markdown unchanged instead of emitting
|
|
277
|
-
// a visually empty or corrupt template block.
|
|
278
|
-
return undefined;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
function serializeStringInputs(input, required, optional) {
|
|
282
|
-
const serialized = {};
|
|
283
|
-
for (const key of required) {
|
|
284
|
-
const value = input[key];
|
|
285
|
-
if (typeof value !== 'string')
|
|
286
|
-
return undefined;
|
|
287
|
-
serialized[key] = value;
|
|
288
|
-
}
|
|
289
|
-
for (const key of optional) {
|
|
290
|
-
const value = input[key];
|
|
291
|
-
if (typeof value === 'string')
|
|
292
|
-
serialized[key] = value;
|
|
293
|
-
}
|
|
294
|
-
return serialized;
|
|
295
|
-
}
|
|
296
|
-
function serializeLabeledPair(value) {
|
|
297
|
-
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
298
|
-
return undefined;
|
|
299
|
-
const pair = value;
|
|
300
|
-
if (typeof pair.label !== 'string')
|
|
301
|
-
return undefined;
|
|
302
|
-
return typeof pair.sublabel === 'string' && pair.sublabel
|
|
303
|
-
? `${pair.label}|${pair.sublabel}`
|
|
304
|
-
: pair.label;
|
|
305
|
-
}
|
|
306
|
-
export const convertCommand = new Command('convert')
|
|
307
|
-
.description('Convert a document through the linked Squisq format registry')
|
|
308
|
-
.argument('<input>', 'Path to a supported document, .zip/.dbk container, or folder')
|
|
309
|
-
.option('-o, --output-dir <dir>', 'Output directory (default: same as input)')
|
|
310
|
-
.option('-f, --formats <list>', `Comma-separated linked Squisq export formats (default: ${DEFAULT_FORMATS.join(', ')})`)
|
|
311
|
-
.option('-t, --theme <id>', 'Squisq theme ID to apply (e.g., documentary, cinematic, bold)')
|
|
312
|
-
.option('--transform <style>', 'Transform style to apply before export (e.g., documentary, magazine, minimal)')
|
|
313
|
-
.action(async (inputPath, opts) => {
|
|
314
|
-
try {
|
|
315
|
-
await runConvert(inputPath, opts);
|
|
316
|
-
}
|
|
317
|
-
catch (err) {
|
|
318
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
319
|
-
console.error(`Error: ${message}`);
|
|
320
|
-
if (isConversionErrorMetadata(err)) {
|
|
321
|
-
console.error(` Code: ${err.code}${err.format ? ` (${err.format})` : ''}`);
|
|
322
|
-
if (err.hint)
|
|
323
|
-
console.error(` Hint: ${err.hint}`);
|
|
324
|
-
}
|
|
325
|
-
process.exitCode = 1;
|
|
326
|
-
}
|
|
327
|
-
});
|
|
328
|
-
function isConversionErrorMetadata(error) {
|
|
329
|
-
if (!(error instanceof Error))
|
|
330
|
-
return false;
|
|
331
|
-
const candidate = error;
|
|
332
|
-
if (typeof candidate.code !== 'string')
|
|
333
|
-
return false;
|
|
334
|
-
if (candidate.format !== undefined && typeof candidate.format !== 'string') {
|
|
335
|
-
return false;
|
|
336
|
-
}
|
|
337
|
-
return candidate.hint === undefined || typeof candidate.hint === 'string';
|
|
338
|
-
}
|
|
339
|
-
//# sourceMappingURL=convert.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/commands/convert.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,WAAW,SAuBpB,CAAC"}
|
package/dist/commands/init.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import fs from 'node:fs';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
export const initCommand = new Command('init')
|
|
5
|
-
.description('Initialize a DocBlocks workspace in the current directory')
|
|
6
|
-
.argument('[dir]', 'directory to initialize', '.')
|
|
7
|
-
.action((dir) => {
|
|
8
|
-
const targetDir = path.resolve(dir);
|
|
9
|
-
const configDir = path.join(targetDir, '.docblocks');
|
|
10
|
-
if (fs.existsSync(configDir)) {
|
|
11
|
-
console.error('DocBlocks workspace already initialized in this directory.');
|
|
12
|
-
process.exitCode = 1;
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
fs.mkdirSync(configDir, { recursive: true });
|
|
16
|
-
const config = {
|
|
17
|
-
name: path.basename(targetDir),
|
|
18
|
-
version: '0.1.0',
|
|
19
|
-
};
|
|
20
|
-
fs.writeFileSync(path.join(configDir, 'config.json'), JSON.stringify(config, null, 2) + '\n');
|
|
21
|
-
console.error(`Initialized DocBlocks workspace in ${targetDir}`);
|
|
22
|
-
});
|
|
23
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,2DAA2D,CAAC;KACxE,QAAQ,CAAC,OAAO,EAAE,yBAAyB,EAAE,GAAG,CAAC;KACjD,MAAM,CAAC,CAAC,GAAW,EAAE,EAAE;IACtB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAErD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC9B,OAAO,EAAE,OAAO;KACjB,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAE9F,OAAO,CAAC,KAAK,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC"}
|
package/dist/commands/mcp.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* mcp command — start the DocBlocks MCP server over stdio.
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* docblocks mcp
|
|
6
|
-
*
|
|
7
|
-
* For Claude Desktop, add to your config:
|
|
8
|
-
* { "mcpServers": { "docblocks": { "command": "npx", "args": ["-y", "@bendyline/docblocks-cli", "mcp"] } } }
|
|
9
|
-
*/
|
|
10
|
-
import { Command } from 'commander';
|
|
11
|
-
export declare const mcpCommand: Command;
|
|
12
|
-
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,UAAU,SAwJpB,CAAC"}
|