@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.
Files changed (79) hide show
  1. package/dist/remote-device/scripts/blocking-offline-update.js +64 -0
  2. package/dist/tools/docx/builders/html-builder.d.ts +17 -0
  3. package/dist/tools/docx/builders/html-builder.js +92 -0
  4. package/dist/tools/docx/builders/index.d.ts +5 -0
  5. package/dist/tools/docx/builders/index.js +5 -0
  6. package/dist/tools/docx/builders/markdown-builder.d.ts +2 -0
  7. package/dist/tools/docx/builders/markdown-builder.js +260 -0
  8. package/dist/tools/docx/constants.d.ts +36 -0
  9. package/dist/tools/docx/constants.js +57 -0
  10. package/dist/tools/docx/converters/markdown-to-html.d.ts +17 -0
  11. package/dist/tools/docx/converters/markdown-to-html.js +111 -0
  12. package/dist/tools/docx/errors.d.ts +28 -0
  13. package/dist/tools/docx/errors.js +48 -0
  14. package/dist/tools/docx/extractors/images.d.ts +14 -0
  15. package/dist/tools/docx/extractors/images.js +40 -0
  16. package/dist/tools/docx/extractors/metadata.d.ts +14 -0
  17. package/dist/tools/docx/extractors/metadata.js +64 -0
  18. package/dist/tools/docx/extractors/sections.d.ts +14 -0
  19. package/dist/tools/docx/extractors/sections.js +61 -0
  20. package/dist/tools/docx/html.d.ts +17 -0
  21. package/dist/tools/docx/html.js +111 -0
  22. package/dist/tools/docx/index.d.ts +14 -0
  23. package/dist/tools/docx/index.js +16 -0
  24. package/dist/tools/docx/markdown.d.ts +84 -0
  25. package/dist/tools/docx/markdown.js +507 -0
  26. package/dist/tools/docx/operations/handlers/index.d.ts +39 -0
  27. package/dist/tools/docx/operations/handlers/index.js +152 -0
  28. package/dist/tools/docx/operations/html-manipulator.d.ts +24 -0
  29. package/dist/tools/docx/operations/html-manipulator.js +352 -0
  30. package/dist/tools/docx/operations/index.d.ts +14 -0
  31. package/dist/tools/docx/operations/index.js +61 -0
  32. package/dist/tools/docx/operations/operation-handlers.d.ts +3 -0
  33. package/dist/tools/docx/operations/operation-handlers.js +67 -0
  34. package/dist/tools/docx/operations/preprocessor.d.ts +14 -0
  35. package/dist/tools/docx/operations/preprocessor.js +44 -0
  36. package/dist/tools/docx/operations/xml-replacer.d.ts +9 -0
  37. package/dist/tools/docx/operations/xml-replacer.js +35 -0
  38. package/dist/tools/docx/operations.d.ts +13 -0
  39. package/dist/tools/docx/operations.js +13 -0
  40. package/dist/tools/docx/parsers/image-extractor.d.ts +18 -0
  41. package/dist/tools/docx/parsers/image-extractor.js +61 -0
  42. package/dist/tools/docx/parsers/index.d.ts +9 -0
  43. package/dist/tools/docx/parsers/index.js +9 -0
  44. package/dist/tools/docx/parsers/paragraph-parser.d.ts +2 -0
  45. package/dist/tools/docx/parsers/paragraph-parser.js +88 -0
  46. package/dist/tools/docx/parsers/table-parser.d.ts +9 -0
  47. package/dist/tools/docx/parsers/table-parser.js +72 -0
  48. package/dist/tools/docx/parsers/xml-parser.d.ts +25 -0
  49. package/dist/tools/docx/parsers/xml-parser.js +71 -0
  50. package/dist/tools/docx/parsers/zip-reader.d.ts +23 -0
  51. package/dist/tools/docx/parsers/zip-reader.js +52 -0
  52. package/dist/tools/docx/structure.d.ts +25 -0
  53. package/dist/tools/docx/structure.js +102 -0
  54. package/dist/tools/docx/styled-html-parser.d.ts +23 -0
  55. package/dist/tools/docx/styled-html-parser.js +1262 -0
  56. package/dist/tools/docx/types.d.ts +114 -0
  57. package/dist/tools/docx/types.js +8 -0
  58. package/dist/tools/docx/utils/escaping.d.ts +13 -0
  59. package/dist/tools/docx/utils/escaping.js +26 -0
  60. package/dist/tools/docx/utils/images.d.ts +9 -0
  61. package/dist/tools/docx/utils/images.js +26 -0
  62. package/dist/tools/docx/utils/index.d.ts +12 -0
  63. package/dist/tools/docx/utils/index.js +17 -0
  64. package/dist/tools/docx/utils/markdown.d.ts +13 -0
  65. package/dist/tools/docx/utils/markdown.js +32 -0
  66. package/dist/tools/docx/utils/paths.d.ts +15 -0
  67. package/dist/tools/docx/utils/paths.js +27 -0
  68. package/dist/tools/docx/utils/versioning.d.ts +25 -0
  69. package/dist/tools/docx/utils/versioning.js +55 -0
  70. package/dist/tools/docx/utils.d.ts +101 -0
  71. package/dist/tools/docx/utils.js +299 -0
  72. package/dist/tools/docx/validators.d.ts +13 -0
  73. package/dist/tools/docx/validators.js +40 -0
  74. package/dist/utils/capture.js +4 -4
  75. package/dist/utils/files/docx.d.ts +41 -0
  76. package/dist/utils/files/docx.js +245 -0
  77. package/dist/version.d.ts +1 -1
  78. package/dist/version.js +1 -1
  79. 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
+ }>;