docgen-utils 1.0.5

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 (88) hide show
  1. package/README.md +118 -0
  2. package/dist/bundle.js +36086 -0
  3. package/dist/bundle.min.js +197 -0
  4. package/dist/cli.js +47432 -0
  5. package/dist/index.d.ts +9 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +9 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/packages/cli/commands/export-docs.d.ts +5 -0
  10. package/dist/packages/cli/commands/export-docs.d.ts.map +1 -0
  11. package/dist/packages/cli/commands/export-docs.js +24 -0
  12. package/dist/packages/cli/commands/export-docs.js.map +1 -0
  13. package/dist/packages/cli/commands/export-slides.d.ts +5 -0
  14. package/dist/packages/cli/commands/export-slides.d.ts.map +1 -0
  15. package/dist/packages/cli/commands/export-slides.js +86 -0
  16. package/dist/packages/cli/commands/export-slides.js.map +1 -0
  17. package/dist/packages/cli/commands/import-docx.d.ts +5 -0
  18. package/dist/packages/cli/commands/import-docx.d.ts.map +1 -0
  19. package/dist/packages/cli/commands/import-docx.js +27 -0
  20. package/dist/packages/cli/commands/import-docx.js.map +1 -0
  21. package/dist/packages/cli/commands/import-pptx.d.ts +5 -0
  22. package/dist/packages/cli/commands/import-pptx.d.ts.map +1 -0
  23. package/dist/packages/cli/commands/import-pptx.js +44 -0
  24. package/dist/packages/cli/commands/import-pptx.js.map +1 -0
  25. package/dist/packages/cli/index.d.ts +11 -0
  26. package/dist/packages/cli/index.d.ts.map +1 -0
  27. package/dist/packages/cli/index.js +103 -0
  28. package/dist/packages/cli/index.js.map +1 -0
  29. package/dist/packages/docs/common.d.ts +183 -0
  30. package/dist/packages/docs/common.d.ts.map +1 -0
  31. package/dist/packages/docs/common.js +27 -0
  32. package/dist/packages/docs/common.js.map +1 -0
  33. package/dist/packages/docs/convert.d.ts +7 -0
  34. package/dist/packages/docs/convert.d.ts.map +1 -0
  35. package/dist/packages/docs/convert.js +1399 -0
  36. package/dist/packages/docs/convert.js.map +1 -0
  37. package/dist/packages/docs/create-document.d.ts +30 -0
  38. package/dist/packages/docs/create-document.d.ts.map +1 -0
  39. package/dist/packages/docs/create-document.js +170 -0
  40. package/dist/packages/docs/create-document.js.map +1 -0
  41. package/dist/packages/docs/export.d.ts +57 -0
  42. package/dist/packages/docs/export.d.ts.map +1 -0
  43. package/dist/packages/docs/export.js +430 -0
  44. package/dist/packages/docs/export.js.map +1 -0
  45. package/dist/packages/docs/import-docx.d.ts +13 -0
  46. package/dist/packages/docs/import-docx.d.ts.map +1 -0
  47. package/dist/packages/docs/import-docx.js +2299 -0
  48. package/dist/packages/docs/import-docx.js.map +1 -0
  49. package/dist/packages/docs/parse.d.ts +6 -0
  50. package/dist/packages/docs/parse.d.ts.map +1 -0
  51. package/dist/packages/docs/parse.js +4253 -0
  52. package/dist/packages/docs/parse.js.map +1 -0
  53. package/dist/packages/shared/dom-parser-shim.d.ts +30 -0
  54. package/dist/packages/shared/dom-parser-shim.d.ts.map +1 -0
  55. package/dist/packages/shared/dom-parser-shim.js +152 -0
  56. package/dist/packages/shared/dom-parser-shim.js.map +1 -0
  57. package/dist/packages/slides/common.d.ts +325 -0
  58. package/dist/packages/slides/common.d.ts.map +1 -0
  59. package/dist/packages/slides/common.js +12 -0
  60. package/dist/packages/slides/common.js.map +1 -0
  61. package/dist/packages/slides/convert.d.ts +35 -0
  62. package/dist/packages/slides/convert.d.ts.map +1 -0
  63. package/dist/packages/slides/convert.js +308 -0
  64. package/dist/packages/slides/convert.js.map +1 -0
  65. package/dist/packages/slides/createPresentation.d.ts +51 -0
  66. package/dist/packages/slides/createPresentation.d.ts.map +1 -0
  67. package/dist/packages/slides/createPresentation.js +265 -0
  68. package/dist/packages/slides/createPresentation.js.map +1 -0
  69. package/dist/packages/slides/export.d.ts +24 -0
  70. package/dist/packages/slides/export.d.ts.map +1 -0
  71. package/dist/packages/slides/export.js +52 -0
  72. package/dist/packages/slides/export.js.map +1 -0
  73. package/dist/packages/slides/import-pptx.d.ts +13 -0
  74. package/dist/packages/slides/import-pptx.d.ts.map +1 -0
  75. package/dist/packages/slides/import-pptx.js +619 -0
  76. package/dist/packages/slides/import-pptx.js.map +1 -0
  77. package/dist/packages/slides/parse.d.ts +45 -0
  78. package/dist/packages/slides/parse.d.ts.map +1 -0
  79. package/dist/packages/slides/parse.js +1185 -0
  80. package/dist/packages/slides/parse.js.map +1 -0
  81. package/dist/packages/slides/transform.d.ts +37 -0
  82. package/dist/packages/slides/transform.d.ts.map +1 -0
  83. package/dist/packages/slides/transform.js +140 -0
  84. package/dist/packages/slides/transform.js.map +1 -0
  85. package/dist/packages/slides/vendor/VENDORING.md +58 -0
  86. package/dist/packages/slides/vendor/pptxgen.d.ts +805 -0
  87. package/dist/packages/slides/vendor/pptxgen.js +7442 -0
  88. package/package.json +57 -0
@@ -0,0 +1,9 @@
1
+ export { default as exportDocx } from "./packages/docs/export";
2
+ export { default as importDocx } from "./packages/docs/import-docx";
3
+ export { addSlideFromHtml, createPresentation, } from "./packages/slides/createPresentation";
4
+ export { exportPptx } from "./packages/slides/export";
5
+ export { transformHtmlForPptx } from "./packages/slides/transform";
6
+ export { default as importPptx } from "./packages/slides/import-pptx";
7
+ export { default as PptxGenJS } from "./packages/slides/vendor/pptxgen";
8
+ export { default as JSZip } from "jszip";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,OAAO,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export { default as exportDocx } from "./packages/docs/export";
2
+ export { default as importDocx } from "./packages/docs/import-docx";
3
+ export { addSlideFromHtml, createPresentation, } from "./packages/slides/createPresentation";
4
+ export { exportPptx } from "./packages/slides/export";
5
+ export { transformHtmlForPptx } from "./packages/slides/transform";
6
+ export { default as importPptx } from "./packages/slides/import-pptx";
7
+ export { default as PptxGenJS } from "./packages/slides/vendor/pptxgen";
8
+ export { default as JSZip } from "jszip";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,OAAO,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Export docs command - converts HTML to DOCX
3
+ */
4
+ export declare function exportDocs(filePath: string, outDir: string): Promise<void>;
5
+ //# sourceMappingURL=export-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-docs.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/export-docs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhF"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Export docs command - converts HTML to DOCX
3
+ */
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import { createDocxBuffer } from "../../docs/create-document";
7
+ export async function exportDocs(filePath, outDir) {
8
+ const absolutePath = path.resolve(filePath);
9
+ if (!fs.existsSync(absolutePath)) {
10
+ throw new Error(`File not found: ${absolutePath}`);
11
+ }
12
+ console.log(`Exporting to DOCX: ${filePath}`);
13
+ // Read the HTML file
14
+ const html = fs.readFileSync(absolutePath, "utf-8");
15
+ // Get filename for title
16
+ const baseName = path.basename(filePath, ".html");
17
+ // Create DOCX buffer
18
+ const buffer = await createDocxBuffer(html, { title: baseName });
19
+ // Write output
20
+ const outputPath = path.join(outDir, `${baseName}.docx`);
21
+ fs.writeFileSync(outputPath, buffer);
22
+ console.log(`Output: ${outputPath}`);
23
+ }
24
+ //# sourceMappingURL=export-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-docs.js","sourceRoot":"","sources":["../../../../packages/cli/commands/export-docs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,MAAc;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IAE9C,qBAAqB;IACrB,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEpD,yBAAyB;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAElD,qBAAqB;IACrB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEjE,eAAe;IACf,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;IACzD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAErC,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Export slides command - converts HTML slides to PPTX using Playwright
3
+ */
4
+ export declare function exportSlides(filePaths: string[], outDir: string): Promise<void>;
5
+ //# sourceMappingURL=export-slides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-slides.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/export-slides.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwGrF"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Export slides command - converts HTML slides to PPTX using Playwright
3
+ */
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+ import { chromium } from "playwright";
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = path.dirname(__filename);
10
+ export async function exportSlides(filePaths, outDir) {
11
+ if (filePaths.length === 0) {
12
+ throw new Error("No input files provided");
13
+ }
14
+ // Validate all files exist
15
+ const absolutePaths = [];
16
+ for (const filePath of filePaths) {
17
+ const absolutePath = path.resolve(filePath);
18
+ if (!fs.existsSync(absolutePath)) {
19
+ throw new Error(`File not found: ${absolutePath}`);
20
+ }
21
+ absolutePaths.push(absolutePath);
22
+ }
23
+ console.log(`Exporting ${absolutePaths.length} slide(s) to PPTX`);
24
+ // Read the bundle.js which contains all the PPTX generation code
25
+ const bundlePath = path.resolve(__dirname, "../../../dist/bundle.js");
26
+ if (!fs.existsSync(bundlePath)) {
27
+ throw new Error(`Bundle not found: ${bundlePath}. Run 'npm run build' first.`);
28
+ }
29
+ const bundleCode = fs.readFileSync(bundlePath, "utf-8");
30
+ // Launch browser
31
+ const browser = await chromium.launch({ headless: true });
32
+ try {
33
+ const context = await browser.newContext({
34
+ bypassCSP: true,
35
+ viewport: { width: 960, height: 540 },
36
+ });
37
+ const page = await context.newPage();
38
+ // Read all HTML files
39
+ const htmlContents = absolutePaths.map(p => fs.readFileSync(p, "utf-8"));
40
+ // Create a minimal HTML page with the bundle injected
41
+ const pageHtml = `<!DOCTYPE html>
42
+ <html>
43
+ <head>
44
+ <script>${bundleCode}</script>
45
+ </head>
46
+ <body></body>
47
+ </html>`;
48
+ // Load the page with bundle already included
49
+ await page.setContent(pageHtml, { waitUntil: "networkidle" });
50
+ // Generate PPTX in browser
51
+ const pptxBuffer = await page.evaluate(async ({ htmlContents }) => {
52
+ // Access the docgen exports from the bundle
53
+ const docgen = window.docgen;
54
+ if (!docgen) {
55
+ throw new Error("docgen bundle not loaded");
56
+ }
57
+ // Create PptxGenJS instance
58
+ const pptx = new docgen.PptxGenJS();
59
+ pptx.layout = "LAYOUT_16x9";
60
+ pptx.author = "docgen";
61
+ pptx.title = "Presentation";
62
+ // Add each slide
63
+ for (const htmlContent of htmlContents) {
64
+ const transformedHtml = docgen.transformHtmlForPptx(htmlContent);
65
+ await docgen.addSlideFromHtml(transformedHtml, pptx);
66
+ }
67
+ // Generate as base64
68
+ const base64 = await pptx.write({ outputType: "base64" });
69
+ return base64;
70
+ }, { htmlContents });
71
+ await page.close();
72
+ await context.close();
73
+ // Determine output filename
74
+ const firstBaseName = path.basename(absolutePaths[0], ".html");
75
+ const outputName = absolutePaths.length === 1 ? firstBaseName : "presentation";
76
+ const outputPath = path.join(outDir, `${outputName}.pptx`);
77
+ // Convert base64 to buffer and write to file
78
+ const buffer = Buffer.from(pptxBuffer, "base64");
79
+ fs.writeFileSync(outputPath, buffer);
80
+ console.log(`Output: ${outputPath}`);
81
+ }
82
+ finally {
83
+ await browser.close();
84
+ }
85
+ }
86
+ //# sourceMappingURL=export-slides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-slides.js","sourceRoot":"","sources":["../../../../packages/cli/commands/export-slides.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Import DOCX command - converts a DOCX file to HTML
3
+ */
4
+ export declare function importDocx(filePath: string, outDir: string): Promise<void>;
5
+ //# sourceMappingURL=import-docx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-docx.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/import-docx.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BhF"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Import DOCX command - converts a DOCX file to HTML
3
+ */
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import importDocxFn from "../../docs/import-docx";
7
+ export async function importDocx(filePath, outDir) {
8
+ const absolutePath = path.resolve(filePath);
9
+ if (!fs.existsSync(absolutePath)) {
10
+ throw new Error(`File not found: ${absolutePath}`);
11
+ }
12
+ console.log(`Importing DOCX: ${filePath}`);
13
+ // Read the DOCX file as ArrayBuffer
14
+ const docxBuffer = fs.readFileSync(absolutePath);
15
+ const arrayBuffer = docxBuffer.buffer.slice(docxBuffer.byteOffset, docxBuffer.byteOffset + docxBuffer.byteLength);
16
+ // Import the DOCX
17
+ const html = await importDocxFn(arrayBuffer);
18
+ if (!html) {
19
+ throw new Error("DOCX file produced no HTML content");
20
+ }
21
+ // Write output
22
+ const baseName = path.basename(filePath, ".docx");
23
+ const outputPath = path.join(outDir, `${baseName}.html`);
24
+ fs.writeFileSync(outputPath, html);
25
+ console.log(`Output: ${outputPath}`);
26
+ }
27
+ //# sourceMappingURL=import-docx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-docx.js","sourceRoot":"","sources":["../../../../packages/cli/commands/import-docx.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,MAAc;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IAE3C,oCAAoC;IACpC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CACzC,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAC9C,CAAC;IAEF,kBAAkB;IAClB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAE7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,eAAe;IACf,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;IACzD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Import PPTX command - converts a PPTX file to HTML (one file per slide)
3
+ */
4
+ export declare function importPptx(filePath: string, outDir: string): Promise<void>;
5
+ //# sourceMappingURL=import-pptx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-pptx.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/import-pptx.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDhF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Import PPTX command - converts a PPTX file to HTML (one file per slide)
3
+ */
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import importPptxFn from "../../slides/import-pptx";
7
+ export async function importPptx(filePath, outDir) {
8
+ const absolutePath = path.resolve(filePath);
9
+ if (!fs.existsSync(absolutePath)) {
10
+ throw new Error(`File not found: ${absolutePath}`);
11
+ }
12
+ console.log(`Importing PPTX: ${filePath}`);
13
+ // Read the PPTX file as ArrayBuffer
14
+ const pptxBuffer = fs.readFileSync(absolutePath);
15
+ const arrayBuffer = pptxBuffer.buffer.slice(pptxBuffer.byteOffset, pptxBuffer.byteOffset + pptxBuffer.byteLength);
16
+ // Import the PPTX
17
+ const slides = await importPptxFn(arrayBuffer);
18
+ if (slides.length === 0) {
19
+ throw new Error("PPTX file contains no slides");
20
+ }
21
+ // Write each slide as a separate HTML file
22
+ const baseName = path.basename(filePath, ".pptx");
23
+ for (let i = 0; i < slides.length; i++) {
24
+ const slideHtml = slides[i];
25
+ const slideNumber = i + 1;
26
+ const outputPath = path.join(outDir, `${baseName}-slide-${slideNumber}.html`);
27
+ // Wrap slide content in a full HTML document
28
+ const fullHtml = `<!DOCTYPE html>
29
+ <html>
30
+ <head>
31
+ <meta charset="UTF-8">
32
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
33
+ <title>${baseName} - Slide ${slideNumber}</title>
34
+ </head>
35
+ <body>
36
+ ${slideHtml}
37
+ </body>
38
+ </html>`;
39
+ fs.writeFileSync(outputPath, fullHtml);
40
+ console.log(`Output: ${outputPath}`);
41
+ }
42
+ console.log(`Imported ${slides.length} slide(s)`);
43
+ }
44
+ //# sourceMappingURL=import-pptx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-pptx.js","sourceRoot":"","sources":["../../../../packages/cli/commands/import-pptx.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,MAAc;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IAE3C,oCAAoC;IACpC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CACzC,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAC9C,CAAC;IAEF,kBAAkB;IAClB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAE/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,UAAU,WAAW,OAAO,CAAC,CAAC;QAE9E,6CAA6C;QAC7C,MAAM,QAAQ,GAAG;;;;;SAKZ,QAAQ,YAAY,WAAW;;;EAGtC,SAAS;;QAEH,CAAC;QAEL,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * docgen CLI - Import and export DOCX and PPTX files
3
+ *
4
+ * Usage:
5
+ * docgen import docx --file=file.docx --out-dir=./output
6
+ * docgen import pptx --file=file.pptx --out-dir=./output
7
+ * docgen export docs --file=file.html --out-dir=./output
8
+ * docgen export slides --files=slide-1.html,slide-2.html --out-dir=./output
9
+ */
10
+ import "../shared/dom-parser-shim";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,2BAA2B,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * docgen CLI - Import and export DOCX and PPTX files
3
+ *
4
+ * Usage:
5
+ * docgen import docx --file=file.docx --out-dir=./output
6
+ * docgen import pptx --file=file.pptx --out-dir=./output
7
+ * docgen export docs --file=file.html --out-dir=./output
8
+ * docgen export slides --files=slide-1.html,slide-2.html --out-dir=./output
9
+ */
10
+ import "../shared/dom-parser-shim";
11
+ import * as fs from "node:fs";
12
+ import { parseArgs } from "node:util";
13
+ import { importDocx } from "./commands/import-docx";
14
+ import { importPptx } from "./commands/import-pptx";
15
+ import { exportDocs } from "./commands/export-docs";
16
+ import { exportSlides } from "./commands/export-slides";
17
+ const USAGE = `
18
+ docgen - Import and export DOCX and PPTX files
19
+
20
+ Usage:
21
+ docgen import docx --file=<file.docx> --out-dir=<dir>
22
+ docgen import pptx --file=<file.pptx> --out-dir=<dir>
23
+ docgen export docs --file=<file.html> --out-dir=<dir>
24
+ docgen export slides --files=<slide1.html,slide2.html> --out-dir=<dir>
25
+
26
+ Commands:
27
+ import docx Convert DOCX to HTML
28
+ import pptx Convert PPTX to HTML (one file per slide)
29
+ export docs Convert HTML to DOCX
30
+ export slides Convert HTML slides to PPTX (requires Playwright)
31
+
32
+ Options:
33
+ --file=<path> Input file (for import docx/pptx and export docs)
34
+ --files=<paths> Comma-separated input files (for export slides)
35
+ --out-dir=<dir> Output directory (default: current directory)
36
+ --help Show this help message
37
+ `;
38
+ async function main() {
39
+ const args = process.argv.slice(2);
40
+ if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
41
+ console.log(USAGE);
42
+ process.exit(0);
43
+ }
44
+ const command = args[0];
45
+ const subcommand = args[1];
46
+ // Parse remaining args
47
+ const { values } = parseArgs({
48
+ args: args.slice(2),
49
+ options: {
50
+ file: { type: "string" },
51
+ files: { type: "string" },
52
+ "out-dir": { type: "string", default: "." },
53
+ },
54
+ allowPositionals: false,
55
+ });
56
+ const outDir = values["out-dir"];
57
+ // Ensure output directory exists
58
+ if (!fs.existsSync(outDir)) {
59
+ fs.mkdirSync(outDir, { recursive: true });
60
+ }
61
+ try {
62
+ if (command === "import" && subcommand === "docx") {
63
+ if (!values.file) {
64
+ console.error("Error: --file is required for import docx");
65
+ process.exit(1);
66
+ }
67
+ await importDocx(values.file, outDir);
68
+ }
69
+ else if (command === "import" && subcommand === "pptx") {
70
+ if (!values.file) {
71
+ console.error("Error: --file is required for import pptx");
72
+ process.exit(1);
73
+ }
74
+ await importPptx(values.file, outDir);
75
+ }
76
+ else if (command === "export" && subcommand === "docs") {
77
+ if (!values.file) {
78
+ console.error("Error: --file is required for export docs");
79
+ process.exit(1);
80
+ }
81
+ await exportDocs(values.file, outDir);
82
+ }
83
+ else if (command === "export" && subcommand === "slides") {
84
+ if (!values.files) {
85
+ console.error("Error: --files is required for export slides");
86
+ process.exit(1);
87
+ }
88
+ const files = values.files.split(",").map(f => f.trim());
89
+ await exportSlides(files, outDir);
90
+ }
91
+ else {
92
+ console.error(`Unknown command: ${command} ${subcommand ?? ""}`);
93
+ console.log(USAGE);
94
+ process.exit(1);
95
+ }
96
+ }
97
+ catch (error) {
98
+ console.error("Error:", error instanceof Error ? error.message : error);
99
+ process.exit(1);
100
+ }
101
+ }
102
+ main();
103
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ import { AlignmentType, HeadingLevel } from "docx";
2
+ /**
3
+ * Utility type to extract enum value types from a const enum or object.
4
+ * Usage: EnumValue<typeof MyEnum> gives the union of all enum values.
5
+ */
6
+ export type EnumValue<T> = T[keyof T];
7
+ export type HeadingLevelValue = 1 | 2 | 3 | 4 | 5 | 6;
8
+ /**
9
+ * Represents a gradient color stop for text fills.
10
+ */
11
+ export interface GradientStop {
12
+ color: string;
13
+ position: number;
14
+ }
15
+ /**
16
+ * Represents a text gradient fill.
17
+ */
18
+ export interface TextGradient {
19
+ angle: number;
20
+ stops: GradientStop[];
21
+ }
22
+ /**
23
+ * Represents a text run with inline formatting.
24
+ */
25
+ export interface InlineRun {
26
+ text: string;
27
+ bold?: boolean;
28
+ italic?: boolean;
29
+ color?: string;
30
+ backgroundColor?: string;
31
+ size?: number;
32
+ fontFamily?: string;
33
+ superscript?: boolean;
34
+ subscript?: boolean;
35
+ underline?: {
36
+ type: "single" | "dotted" | "double" | "wave";
37
+ color?: string;
38
+ };
39
+ gradient?: TextGradient;
40
+ }
41
+ export type TextAlignment = "left" | "center" | "right" | "justify";
42
+ /**
43
+ * Represents a table cell that can have plain text or formatted runs.
44
+ */
45
+ export type TableCell = string | InlineRun[];
46
+ /**
47
+ * Represents chart image data for embedding in DOCX.
48
+ */
49
+ export interface ChartImageData {
50
+ data: Buffer | Uint8Array;
51
+ width: number;
52
+ height: number;
53
+ }
54
+ /**
55
+ * Represents a list item with optional nesting level.
56
+ * level 0 = top-level, level 1 = first nesting, etc.
57
+ */
58
+ export interface ListItem {
59
+ content: string | InlineRun[];
60
+ level: number;
61
+ ordered: boolean;
62
+ }
63
+ export type ParsedElement = {
64
+ type: "heading";
65
+ level: HeadingLevelValue;
66
+ text: string;
67
+ alignment?: TextAlignment;
68
+ color?: string;
69
+ backgroundColor?: string;
70
+ runs?: InlineRun[];
71
+ textTransform?: "uppercase" | "lowercase" | "capitalize";
72
+ borderBottom?: string;
73
+ spacingAfter?: number;
74
+ fontFamily?: string;
75
+ lineSpacing?: number;
76
+ } | {
77
+ type: "paragraph";
78
+ text: string;
79
+ bold?: boolean;
80
+ italic?: boolean;
81
+ color?: string;
82
+ runs?: InlineRun[];
83
+ alignment?: TextAlignment;
84
+ firstLineIndent?: number;
85
+ hangingIndent?: number;
86
+ textTransform?: "uppercase" | "lowercase" | "capitalize";
87
+ fontFamily?: string;
88
+ spacingAfter?: number;
89
+ lineSpacing?: number;
90
+ } | {
91
+ type: "list";
92
+ ordered: boolean;
93
+ items: Array<string | InlineRun[] | ListItem>;
94
+ } | {
95
+ type: "table";
96
+ rows: TableCell[][];
97
+ hasHeader?: boolean;
98
+ noBorders?: boolean;
99
+ cellPadding?: {
100
+ top?: number;
101
+ right?: number;
102
+ bottom?: number;
103
+ left?: number;
104
+ };
105
+ headerBackgroundColor?: string;
106
+ headerTextColor?: string;
107
+ evenRowBackgroundColor?: string;
108
+ } | {
109
+ type: "code";
110
+ text: string;
111
+ } | {
112
+ type: "blockquote";
113
+ content: ParsedElement[];
114
+ borderColor?: string;
115
+ backgroundColor?: string;
116
+ backgroundGradient?: TextGradient;
117
+ variant?: "executive-summary" | "callout";
118
+ padding?: {
119
+ top?: number;
120
+ right?: number;
121
+ bottom?: number;
122
+ left?: number;
123
+ };
124
+ borderStyle?: "left" | "full" | "none";
125
+ } | {
126
+ type: "chart-placeholder";
127
+ title?: string;
128
+ chartId?: string;
129
+ } | {
130
+ type: "svg-chart";
131
+ svgContent: string;
132
+ width: number;
133
+ height: number;
134
+ title?: string;
135
+ backgroundColor?: string;
136
+ } | {
137
+ type: "chart-image";
138
+ title?: string;
139
+ imageData: ChartImageData;
140
+ } | {
141
+ type: "horizontal-rule";
142
+ color?: string;
143
+ spacingBefore?: number;
144
+ spacingAfter?: number;
145
+ borderPosition?: "top" | "bottom";
146
+ } | {
147
+ type: "stats-grid";
148
+ cards: Array<{
149
+ value: string;
150
+ label: string;
151
+ change?: string;
152
+ valueColor?: string;
153
+ labelColor?: string;
154
+ changeColor?: string;
155
+ backgroundColor?: string;
156
+ borderColor?: string;
157
+ }>;
158
+ } | {
159
+ type: "two-column-layout";
160
+ sidebar: {
161
+ content: ParsedElement[];
162
+ backgroundColor?: string;
163
+ textColor?: string;
164
+ widthPercent?: number;
165
+ };
166
+ main: {
167
+ content: ParsedElement[];
168
+ };
169
+ } | {
170
+ type: "image";
171
+ src: string;
172
+ alt?: string;
173
+ width?: number;
174
+ height?: number;
175
+ caption?: string;
176
+ imageData?: ChartImageData;
177
+ };
178
+ type HeadingLevelType = EnumValue<typeof HeadingLevel>;
179
+ export type AlignmentTypeValue = EnumValue<typeof AlignmentType>;
180
+ export declare const HEADING_LEVEL_MAP: Record<HeadingLevelValue, HeadingLevelType>;
181
+ export declare const CONTAINER_TAGS: string[];
182
+ export {};
183
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../packages/docs/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { HeadingLevel } from "docx";
2
+ export const HEADING_LEVEL_MAP = {
3
+ 1: HeadingLevel.HEADING_1,
4
+ 2: HeadingLevel.HEADING_2,
5
+ 3: HeadingLevel.HEADING_3,
6
+ 4: HeadingLevel.HEADING_4,
7
+ 5: HeadingLevel.HEADING_5,
8
+ 6: HeadingLevel.HEADING_6,
9
+ };
10
+ export const CONTAINER_TAGS = [
11
+ "div",
12
+ "span",
13
+ "article",
14
+ "section",
15
+ "main",
16
+ "header",
17
+ "footer",
18
+ "aside",
19
+ "nav",
20
+ "figure",
21
+ "figcaption",
22
+ "dl", // Definition list - container for dt/dd pairs
23
+ "dt", // Definition term - often has flex layout for name + price
24
+ "dd", // Definition description - needs style inheritance for italic, etc.
25
+ "address", // Address element - contact info in footer sections
26
+ ];
27
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../packages/docs/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,MAAM,CAAC;AA0FnD,MAAM,CAAC,MAAM,iBAAiB,GAAgD;IAC5E,CAAC,EAAE,YAAY,CAAC,SAAS;IACzB,CAAC,EAAE,YAAY,CAAC,SAAS;IACzB,CAAC,EAAE,YAAY,CAAC,SAAS;IACzB,CAAC,EAAE,YAAY,CAAC,SAAS;IACzB,CAAC,EAAE,YAAY,CAAC,SAAS;IACzB,CAAC,EAAE,YAAY,CAAC,SAAS;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK;IACL,MAAM;IACN,SAAS;IACT,SAAS;IACT,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,KAAK;IACL,QAAQ;IACR,YAAY;IACZ,IAAI,EAAG,8CAA8C;IACrD,IAAI,EAAG,2DAA2D;IAClE,IAAI,EAAG,oEAAoE;IAC3E,SAAS,EAAG,oDAAoD;CACjE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Paragraph, Table } from "docx";
2
+ import { ParsedElement } from "./common";
3
+ /**
4
+ * Convert a parsed element to docx paragraphs or tables.
5
+ */
6
+ export declare function convertElementToDocx(element: ParsedElement): (Paragraph | Table)[];
7
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../packages/docs/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsD,SAAS,EAAe,KAAK,EAA8G,MAAM,MAAM,CAAC;AACrN,OAAO,EAAwD,aAAa,EAA8D,MAAM,UAAU,CAAC;AAoqB3J;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CA43BlF"}