@wonderwhy-er/desktop-commander 0.2.33 → 0.2.35
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/dist/remote-device/scripts/blocking-offline-update.js +64 -0
- package/dist/tools/docx/builders/html-builder.d.ts +17 -0
- package/dist/tools/docx/builders/html-builder.js +92 -0
- package/dist/tools/docx/builders/index.d.ts +5 -0
- package/dist/tools/docx/builders/index.js +5 -0
- package/dist/tools/docx/builders/markdown-builder.d.ts +2 -0
- package/dist/tools/docx/builders/markdown-builder.js +260 -0
- package/dist/tools/docx/constants.d.ts +36 -0
- package/dist/tools/docx/constants.js +57 -0
- package/dist/tools/docx/converters/markdown-to-html.d.ts +17 -0
- package/dist/tools/docx/converters/markdown-to-html.js +111 -0
- package/dist/tools/docx/errors.d.ts +28 -0
- package/dist/tools/docx/errors.js +48 -0
- package/dist/tools/docx/extractors/images.d.ts +14 -0
- package/dist/tools/docx/extractors/images.js +40 -0
- package/dist/tools/docx/extractors/metadata.d.ts +14 -0
- package/dist/tools/docx/extractors/metadata.js +64 -0
- package/dist/tools/docx/extractors/sections.d.ts +14 -0
- package/dist/tools/docx/extractors/sections.js +61 -0
- package/dist/tools/docx/html.d.ts +17 -0
- package/dist/tools/docx/html.js +111 -0
- package/dist/tools/docx/index.d.ts +14 -0
- package/dist/tools/docx/index.js +16 -0
- package/dist/tools/docx/markdown.d.ts +84 -0
- package/dist/tools/docx/markdown.js +507 -0
- package/dist/tools/docx/operations/handlers/index.d.ts +39 -0
- package/dist/tools/docx/operations/handlers/index.js +152 -0
- package/dist/tools/docx/operations/html-manipulator.d.ts +24 -0
- package/dist/tools/docx/operations/html-manipulator.js +352 -0
- package/dist/tools/docx/operations/index.d.ts +14 -0
- package/dist/tools/docx/operations/index.js +61 -0
- package/dist/tools/docx/operations/operation-handlers.d.ts +3 -0
- package/dist/tools/docx/operations/operation-handlers.js +67 -0
- package/dist/tools/docx/operations/preprocessor.d.ts +14 -0
- package/dist/tools/docx/operations/preprocessor.js +44 -0
- package/dist/tools/docx/operations/xml-replacer.d.ts +9 -0
- package/dist/tools/docx/operations/xml-replacer.js +35 -0
- package/dist/tools/docx/operations.d.ts +13 -0
- package/dist/tools/docx/operations.js +13 -0
- package/dist/tools/docx/parsers/image-extractor.d.ts +18 -0
- package/dist/tools/docx/parsers/image-extractor.js +61 -0
- package/dist/tools/docx/parsers/index.d.ts +9 -0
- package/dist/tools/docx/parsers/index.js +9 -0
- package/dist/tools/docx/parsers/paragraph-parser.d.ts +2 -0
- package/dist/tools/docx/parsers/paragraph-parser.js +88 -0
- package/dist/tools/docx/parsers/table-parser.d.ts +9 -0
- package/dist/tools/docx/parsers/table-parser.js +72 -0
- package/dist/tools/docx/parsers/xml-parser.d.ts +25 -0
- package/dist/tools/docx/parsers/xml-parser.js +71 -0
- package/dist/tools/docx/parsers/zip-reader.d.ts +23 -0
- package/dist/tools/docx/parsers/zip-reader.js +52 -0
- package/dist/tools/docx/structure.d.ts +25 -0
- package/dist/tools/docx/structure.js +102 -0
- package/dist/tools/docx/styled-html-parser.d.ts +23 -0
- package/dist/tools/docx/styled-html-parser.js +1262 -0
- package/dist/tools/docx/types.d.ts +114 -0
- package/dist/tools/docx/types.js +8 -0
- package/dist/tools/docx/utils/escaping.d.ts +13 -0
- package/dist/tools/docx/utils/escaping.js +26 -0
- package/dist/tools/docx/utils/images.d.ts +9 -0
- package/dist/tools/docx/utils/images.js +26 -0
- package/dist/tools/docx/utils/index.d.ts +12 -0
- package/dist/tools/docx/utils/index.js +17 -0
- package/dist/tools/docx/utils/markdown.d.ts +13 -0
- package/dist/tools/docx/utils/markdown.js +32 -0
- package/dist/tools/docx/utils/paths.d.ts +15 -0
- package/dist/tools/docx/utils/paths.js +27 -0
- package/dist/tools/docx/utils/versioning.d.ts +25 -0
- package/dist/tools/docx/utils/versioning.js +55 -0
- package/dist/tools/docx/utils.d.ts +101 -0
- package/dist/tools/docx/utils.js +299 -0
- package/dist/tools/docx/validators.d.ts +13 -0
- package/dist/tools/docx/validators.js +40 -0
- package/dist/utils/capture.js +4 -4
- package/dist/utils/files/docx.d.ts +41 -0
- package/dist/utils/files/docx.js +245 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX Structure Parser and Builder
|
|
3
|
+
*
|
|
4
|
+
* Provides structure-preserving parsing and building of DOCX files.
|
|
5
|
+
* This approach maintains tables, images, and formatting at the DOCX element level,
|
|
6
|
+
* avoiding lossy markdown round-trips.
|
|
7
|
+
*/
|
|
8
|
+
import { createRequire } from 'module';
|
|
9
|
+
const require = createRequire(import.meta.url);
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
import * as docx from 'docx';
|
|
12
|
+
const { Document, Packer } = docx;
|
|
13
|
+
import { DocxError, DocxErrorCode, withErrorContext } from './errors.js';
|
|
14
|
+
import { createZipFromBuffer, readZipFileText, } from './parsers/zip-reader.js';
|
|
15
|
+
import { parseXml, getElementChildren, extractRelationshipMap, getHeadingLevelFromParagraph, } from './parsers/xml-parser.js';
|
|
16
|
+
import { extractImagesFromZip } from './parsers/image-extractor.js';
|
|
17
|
+
import { parseParagraphElement } from './parsers/paragraph-parser.js';
|
|
18
|
+
import { parseTableElement } from './parsers/table-parser.js';
|
|
19
|
+
/**
|
|
20
|
+
* Parse a DOCX file into structured elements that can be manipulated and rebuilt
|
|
21
|
+
*
|
|
22
|
+
* @param buffer - DOCX file buffer
|
|
23
|
+
* @returns Structured representation of the DOCX document
|
|
24
|
+
* @throws {DocxError} If the DOCX file is invalid or cannot be parsed
|
|
25
|
+
*/
|
|
26
|
+
export async function parseDocxStructure(buffer) {
|
|
27
|
+
return withErrorContext(async () => {
|
|
28
|
+
const zip = createZipFromBuffer(buffer);
|
|
29
|
+
const documentXml = readZipFileText(zip, 'word/document.xml');
|
|
30
|
+
if (!documentXml) {
|
|
31
|
+
throw new DocxError('Invalid DOCX file: word/document.xml not found', DocxErrorCode.INVALID_DOCX, {});
|
|
32
|
+
}
|
|
33
|
+
const relsXml = readZipFileText(zip, 'word/_rels/document.xml.rels');
|
|
34
|
+
const relMap = extractRelationshipMap(relsXml);
|
|
35
|
+
// Extract all images
|
|
36
|
+
const images = extractImagesFromZip(zip, relMap);
|
|
37
|
+
// Parse document body
|
|
38
|
+
const doc = parseXml(documentXml);
|
|
39
|
+
const body = doc.getElementsByTagName('w:body')[0];
|
|
40
|
+
if (!body) {
|
|
41
|
+
throw new DocxError('Invalid DOCX file: <w:body> not found', DocxErrorCode.INVALID_DOCX_XML, {});
|
|
42
|
+
}
|
|
43
|
+
// Parse all elements
|
|
44
|
+
const elements = [];
|
|
45
|
+
const children = getElementChildren(body);
|
|
46
|
+
for (const child of children) {
|
|
47
|
+
const nodeName = child.nodeName;
|
|
48
|
+
if (nodeName === 'w:p') {
|
|
49
|
+
const headingLevel = getHeadingLevelFromParagraph(child);
|
|
50
|
+
const para = parseParagraphElement(child, images, headingLevel);
|
|
51
|
+
if (para) {
|
|
52
|
+
if (headingLevel) {
|
|
53
|
+
elements.push({
|
|
54
|
+
type: 'heading',
|
|
55
|
+
level: headingLevel,
|
|
56
|
+
content: para,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
elements.push({
|
|
61
|
+
type: 'paragraph',
|
|
62
|
+
content: para,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else if (nodeName === 'w:tbl') {
|
|
68
|
+
const table = parseTableElement(child, images);
|
|
69
|
+
if (table) {
|
|
70
|
+
elements.push({
|
|
71
|
+
type: 'table',
|
|
72
|
+
content: table,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
elements,
|
|
79
|
+
images,
|
|
80
|
+
relationships: relMap,
|
|
81
|
+
};
|
|
82
|
+
}, DocxErrorCode.DOCX_READ_FAILED, { bufferSize: buffer.length });
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Build a DOCX file from structured elements
|
|
86
|
+
*
|
|
87
|
+
* @param structure - Structured DOCX representation
|
|
88
|
+
* @returns Buffer containing the DOCX file
|
|
89
|
+
* @throws {DocxError} If document building fails
|
|
90
|
+
*/
|
|
91
|
+
export async function buildDocxFromStructure(structure) {
|
|
92
|
+
return withErrorContext(async () => {
|
|
93
|
+
const children = structure.elements.map(el => el.content);
|
|
94
|
+
const doc = new Document({
|
|
95
|
+
sections: [{
|
|
96
|
+
properties: {},
|
|
97
|
+
children: children,
|
|
98
|
+
}],
|
|
99
|
+
});
|
|
100
|
+
return await Packer.toBuffer(doc);
|
|
101
|
+
}, DocxErrorCode.DOCX_CREATE_FAILED, { elementCount: structure.elements.length });
|
|
102
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Direct DOCX XML → Styled HTML Parser
|
|
3
|
+
*
|
|
4
|
+
* Parses the raw DOCX XML and produces HTML with full inline style preservation
|
|
5
|
+
* (font colours, sizes, families, text alignment, highlights, bold/italic/underline,
|
|
6
|
+
* images, hyperlinks, tables, and lists).
|
|
7
|
+
*
|
|
8
|
+
* mammoth.js deliberately strips visual styling; this parser fills that gap.
|
|
9
|
+
*
|
|
10
|
+
* @module docx/styled-html-parser
|
|
11
|
+
*/
|
|
12
|
+
import type { DocxImage, DocxDocumentDefaults } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Convert a DOCX buffer to styled HTML by parsing the DOCX XML directly.
|
|
15
|
+
*
|
|
16
|
+
* Bypasses mammoth.js to preserve all inline styles (colours, fonts, sizes,
|
|
17
|
+
* alignment, highlights, bold/italic/underline, images, hyperlinks, tables).
|
|
18
|
+
*/
|
|
19
|
+
export declare function convertDocxToStyledHtml(buffer: Buffer, includeImages?: boolean): Promise<{
|
|
20
|
+
html: string;
|
|
21
|
+
images: DocxImage[];
|
|
22
|
+
documentDefaults: DocxDocumentDefaults;
|
|
23
|
+
}>;
|