@wonderwhy-er/desktop-commander 0.2.37 → 0.2.39

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 (383) hide show
  1. package/README.md +290 -100
  2. package/dist/command-manager.js +6 -3
  3. package/dist/config-field-definitions.d.ts +41 -0
  4. package/dist/config-field-definitions.js +37 -0
  5. package/dist/config-manager.d.ts +2 -0
  6. package/dist/config-manager.js +22 -2
  7. package/dist/handlers/filesystem-handlers.d.ts +5 -0
  8. package/dist/handlers/filesystem-handlers.js +19 -12
  9. package/dist/remote-device/desktop-commander-integration.js +1 -1
  10. package/dist/remote-device/remote-channel.js +1 -1
  11. package/dist/search-manager.js +31 -38
  12. package/dist/server.js +11 -4
  13. package/dist/terminal-manager.js +4 -2
  14. package/dist/tools/config.d.ts +71 -0
  15. package/dist/tools/config.js +117 -2
  16. package/dist/tools/edit.js +34 -1
  17. package/dist/tools/filesystem.js +91 -3
  18. package/dist/tools/improved-process-tools.js +2 -1
  19. package/dist/tools/schemas.d.ts +3 -0
  20. package/dist/tools/schemas.js +1 -0
  21. package/dist/types.d.ts +0 -1
  22. package/dist/ui/config-editor/app.d.ts +43 -0
  23. package/dist/ui/config-editor/app.js +840 -0
  24. package/dist/ui/config-editor/array-modal.d.ts +19 -0
  25. package/dist/ui/config-editor/array-modal.js +185 -0
  26. package/dist/ui/config-editor/config-editor-runtime.js +150 -0
  27. package/dist/ui/config-editor/index.html +13 -0
  28. package/dist/ui/config-editor/main.js +2 -0
  29. package/dist/ui/config-editor/src/App.d.ts +43 -0
  30. package/dist/ui/config-editor/src/App.js +840 -0
  31. package/dist/ui/config-editor/src/array-modal.d.ts +19 -0
  32. package/dist/ui/config-editor/src/array-modal.js +185 -0
  33. package/dist/ui/config-editor/src/components/layout.d.ts +4 -0
  34. package/dist/ui/config-editor/src/components/layout.js +83 -0
  35. package/dist/ui/config-editor/src/components/toolbar.d.ts +1 -0
  36. package/dist/ui/config-editor/src/components/toolbar.js +21 -0
  37. package/dist/ui/config-editor/src/config-values.d.ts +6 -0
  38. package/dist/ui/config-editor/src/config-values.js +61 -0
  39. package/dist/ui/config-editor/src/contracts.d.ts +14 -0
  40. package/dist/ui/config-editor/src/contracts.js +3 -0
  41. package/dist/ui/config-editor/src/directory-browser.d.ts +6 -0
  42. package/dist/ui/config-editor/src/directory-browser.js +71 -0
  43. package/dist/ui/config-editor/src/layout.d.ts +5 -0
  44. package/dist/ui/config-editor/src/layout.js +90 -0
  45. package/dist/ui/config-editor/src/main.js +2 -0
  46. package/dist/ui/config-editor/src/parsing.d.ts +5 -0
  47. package/dist/ui/config-editor/src/parsing.js +50 -0
  48. package/dist/ui/config-editor/src/toolbar.d.ts +1 -0
  49. package/dist/ui/config-editor/src/toolbar.js +18 -0
  50. package/dist/ui/config-editor/src/types.d.ts +17 -0
  51. package/dist/ui/config-editor/src/types.js +3 -0
  52. package/dist/ui/config-editor/src/utils/config-values.d.ts +9 -0
  53. package/dist/ui/config-editor/src/utils/config-values.js +61 -0
  54. package/dist/ui/config-editor/src/utils/directory-browser.d.ts +31 -0
  55. package/dist/ui/config-editor/src/utils/directory-browser.js +201 -0
  56. package/dist/ui/config-editor/src/utils/parsing.d.ts +8 -0
  57. package/dist/ui/config-editor/src/utils/parsing.js +50 -0
  58. package/dist/ui/config-editor/styles.css +587 -0
  59. package/dist/ui/file-preview/app.d.ts +8 -0
  60. package/dist/ui/file-preview/app.js +2020 -0
  61. package/dist/ui/file-preview/components/code-viewer.d.ts +6 -0
  62. package/dist/ui/file-preview/components/code-viewer.js +73 -0
  63. package/dist/ui/file-preview/components/highlighting.d.ts +2 -0
  64. package/dist/ui/file-preview/components/highlighting.js +54 -0
  65. package/dist/ui/file-preview/components/html-renderer.d.ts +5 -0
  66. package/dist/ui/file-preview/components/html-renderer.js +47 -0
  67. package/dist/ui/file-preview/components/markdown-renderer.d.ts +1 -0
  68. package/dist/ui/file-preview/components/markdown-renderer.js +67 -0
  69. package/dist/ui/file-preview/components/toolbar.d.ts +6 -0
  70. package/dist/ui/file-preview/components/toolbar.js +75 -0
  71. package/dist/ui/file-preview/image-preview.d.ts +3 -0
  72. package/dist/ui/file-preview/image-preview.js +21 -0
  73. package/dist/ui/file-preview/main.js +5 -0
  74. package/dist/ui/file-preview/markdown/editor.d.ts +36 -0
  75. package/dist/ui/file-preview/markdown/editor.js +643 -0
  76. package/dist/ui/file-preview/markdown/linking.d.ts +9 -0
  77. package/dist/ui/file-preview/markdown/linking.js +210 -0
  78. package/dist/ui/file-preview/markdown/outline.d.ts +7 -0
  79. package/dist/ui/file-preview/markdown/outline.js +40 -0
  80. package/dist/ui/file-preview/markdown/preview.d.ts +8 -0
  81. package/dist/ui/file-preview/markdown/preview.js +33 -0
  82. package/dist/ui/file-preview/markdown/slugify.d.ts +3 -0
  83. package/dist/ui/file-preview/markdown/slugify.js +31 -0
  84. package/dist/ui/file-preview/markdown/toc.d.ts +11 -0
  85. package/dist/ui/file-preview/markdown/toc.js +75 -0
  86. package/dist/ui/file-preview/markdown/utils.d.ts +1 -0
  87. package/dist/ui/file-preview/markdown/utils.js +15 -0
  88. package/dist/ui/file-preview/markdown/workspace-controller.d.ts +25 -0
  89. package/dist/ui/file-preview/markdown/workspace-controller.js +40 -0
  90. package/dist/ui/file-preview/preview-runtime.js +399 -13969
  91. package/dist/ui/file-preview/shared/preview-file-types.d.ts +1 -1
  92. package/dist/ui/file-preview/shared/preview-file-types.js +3 -1
  93. package/dist/ui/file-preview/src/App.d.ts +4 -0
  94. package/dist/ui/file-preview/src/App.js +564 -0
  95. package/dist/ui/file-preview/src/components/CodeViewer.d.ts +6 -0
  96. package/dist/ui/file-preview/src/components/CodeViewer.js +60 -0
  97. package/dist/ui/file-preview/src/components/HtmlRenderer.d.ts +8 -0
  98. package/dist/ui/file-preview/src/components/HtmlRenderer.js +45 -0
  99. package/dist/ui/file-preview/src/components/MarkdownRenderer.d.ts +1 -0
  100. package/dist/ui/file-preview/src/components/MarkdownRenderer.js +15 -0
  101. package/dist/ui/file-preview/src/components/editor-toolbar.d.ts +15 -0
  102. package/dist/ui/file-preview/src/components/editor-toolbar.js +384 -0
  103. package/dist/ui/file-preview/src/components/html-renderer.d.ts +1 -5
  104. package/dist/ui/file-preview/src/components/html-renderer.js +11 -27
  105. package/dist/ui/file-preview/src/components/markdown-editor.d.ts +29 -0
  106. package/dist/ui/file-preview/src/components/markdown-editor.js +535 -0
  107. package/dist/ui/file-preview/src/components/markdown-renderer.js +47 -9
  108. package/dist/ui/file-preview/src/directory-controller.d.ts +8 -0
  109. package/dist/ui/file-preview/src/directory-controller.js +233 -0
  110. package/dist/ui/file-preview/src/document-layout.d.ts +20 -0
  111. package/dist/ui/file-preview/src/document-layout.js +109 -0
  112. package/dist/ui/file-preview/src/document-outline.d.ts +17 -0
  113. package/dist/ui/file-preview/src/document-outline.js +97 -0
  114. package/dist/ui/file-preview/src/document-workspace.d.ts +19 -0
  115. package/dist/ui/file-preview/src/document-workspace.js +33 -0
  116. package/dist/ui/file-preview/src/file-type-handlers.d.ts +10 -0
  117. package/dist/ui/file-preview/src/file-type-handlers.js +98 -0
  118. package/dist/ui/file-preview/src/host/external-actions.d.ts +19 -0
  119. package/dist/ui/file-preview/src/host/external-actions.js +94 -0
  120. package/dist/ui/file-preview/src/host/selection-context.d.ts +9 -0
  121. package/dist/ui/file-preview/src/host/selection-context.js +106 -0
  122. package/dist/ui/file-preview/src/markdown/block-merge.d.ts +25 -0
  123. package/dist/ui/file-preview/src/markdown/block-merge.js +86 -0
  124. package/dist/ui/file-preview/src/markdown/conflict-dialog.d.ts +40 -0
  125. package/dist/ui/file-preview/src/markdown/conflict-dialog.js +163 -0
  126. package/dist/ui/file-preview/src/markdown/controller.d.ts +38 -0
  127. package/dist/ui/file-preview/src/markdown/controller.js +921 -0
  128. package/dist/ui/file-preview/src/markdown/editor.d.ts +35 -0
  129. package/dist/ui/file-preview/src/markdown/editor.js +691 -0
  130. package/dist/ui/file-preview/src/markdown/link-modal.d.ts +13 -0
  131. package/dist/ui/file-preview/src/markdown/link-modal.js +213 -0
  132. package/dist/ui/file-preview/src/markdown/linking.d.ts +16 -0
  133. package/dist/ui/file-preview/src/markdown/linking.js +228 -0
  134. package/dist/ui/file-preview/src/markdown/outline.d.ts +2 -0
  135. package/dist/ui/file-preview/src/markdown/outline.js +16 -0
  136. package/dist/ui/file-preview/src/markdown/parser.d.ts +30 -0
  137. package/dist/ui/file-preview/src/markdown/parser.js +38 -0
  138. package/dist/ui/file-preview/src/markdown/preview.d.ts +1 -0
  139. package/dist/ui/file-preview/src/markdown/preview.js +20 -0
  140. package/dist/ui/file-preview/src/markdown/raw-editor.d.ts +8 -0
  141. package/dist/ui/file-preview/src/markdown/raw-editor.js +61 -0
  142. package/dist/ui/file-preview/src/markdown/selection-toolbar.d.ts +14 -0
  143. package/dist/ui/file-preview/src/markdown/selection-toolbar.js +128 -0
  144. package/dist/ui/file-preview/src/markdown/slugify.d.ts +3 -0
  145. package/dist/ui/file-preview/src/markdown/slugify.js +31 -0
  146. package/dist/ui/file-preview/src/markdown/toc.d.ts +11 -0
  147. package/dist/ui/file-preview/src/markdown/toc.js +75 -0
  148. package/dist/ui/file-preview/src/markdown/utils.d.ts +1 -0
  149. package/dist/ui/file-preview/src/markdown/utils.js +15 -0
  150. package/dist/ui/file-preview/src/markdown-workspace/editor.d.ts +36 -0
  151. package/dist/ui/file-preview/src/markdown-workspace/editor.js +643 -0
  152. package/dist/ui/file-preview/src/markdown-workspace/linking.d.ts +9 -0
  153. package/dist/ui/file-preview/src/markdown-workspace/linking.js +210 -0
  154. package/dist/ui/file-preview/src/markdown-workspace/outline.d.ts +7 -0
  155. package/dist/ui/file-preview/src/markdown-workspace/outline.js +40 -0
  156. package/dist/ui/file-preview/src/markdown-workspace/preview.d.ts +8 -0
  157. package/dist/ui/file-preview/src/markdown-workspace/preview.js +33 -0
  158. package/dist/ui/file-preview/src/markdown-workspace/slugify.d.ts +3 -0
  159. package/dist/ui/file-preview/src/markdown-workspace/slugify.js +31 -0
  160. package/dist/ui/file-preview/src/markdown-workspace/toc.d.ts +11 -0
  161. package/dist/ui/file-preview/src/markdown-workspace/toc.js +75 -0
  162. package/dist/ui/file-preview/src/markdown-workspace/utils.d.ts +1 -0
  163. package/dist/ui/file-preview/src/markdown-workspace/utils.js +15 -0
  164. package/dist/ui/file-preview/src/markdown-workspace/workspace-controller.d.ts +25 -0
  165. package/dist/ui/file-preview/src/markdown-workspace/workspace-controller.js +40 -0
  166. package/dist/ui/file-preview/src/model.d.ts +34 -0
  167. package/dist/ui/file-preview/src/panel-actions.d.ts +17 -0
  168. package/dist/ui/file-preview/src/panel-actions.js +182 -0
  169. package/dist/ui/file-preview/src/path-utils.d.ts +6 -0
  170. package/dist/ui/file-preview/src/path-utils.js +64 -0
  171. package/dist/ui/file-preview/src/payload-utils.d.ts +11 -0
  172. package/dist/ui/file-preview/src/payload-utils.js +94 -0
  173. package/dist/ui/file-preview/styles.css +1144 -277
  174. package/dist/ui/file-preview/types.d.ts +1 -0
  175. package/dist/ui/file-preview/types.js +1 -0
  176. package/dist/ui/resources.d.ts +7 -0
  177. package/dist/ui/resources.js +16 -2
  178. package/dist/ui/server-integration.d.ts +13 -0
  179. package/dist/ui/server-integration.js +31 -0
  180. package/dist/ui/shared/ToolHeader.d.ts +9 -0
  181. package/dist/ui/shared/ToolHeader.js +29 -0
  182. package/dist/ui/shared/app-bootstrap.d.ts +9 -0
  183. package/dist/ui/shared/app-bootstrap.js +15 -0
  184. package/dist/ui/shared/compact-row.d.ts +11 -0
  185. package/dist/ui/shared/compact-row.js +18 -0
  186. package/dist/ui/shared/guards.d.ts +1 -0
  187. package/dist/ui/shared/guards.js +3 -0
  188. package/dist/ui/shared/host-context.d.ts +15 -0
  189. package/dist/ui/shared/host-context.js +51 -0
  190. package/dist/ui/shared/host-lifecycle.d.ts +1 -0
  191. package/dist/ui/shared/host-lifecycle.js +8 -2
  192. package/dist/ui/shared/tool-bridge.d.ts +30 -0
  193. package/dist/ui/shared/tool-bridge.js +137 -0
  194. package/dist/ui/shared/tool-shell.d.ts +9 -0
  195. package/dist/ui/shared/tool-shell.js +46 -4
  196. package/dist/ui/shared/ui-event-tracker.d.ts +9 -0
  197. package/dist/ui/shared/ui-event-tracker.js +27 -0
  198. package/dist/ui/shared/widget-state.d.ts +6 -1
  199. package/dist/ui/shared/widget-state.js +102 -4
  200. package/dist/utils/capture.js +3 -3
  201. package/dist/utils/files/base.d.ts +2 -0
  202. package/dist/utils/open-browser.js +1 -1
  203. package/dist/utils/ui-call-context.d.ts +8 -0
  204. package/dist/utils/ui-call-context.js +72 -0
  205. package/dist/version.d.ts +1 -1
  206. package/dist/version.js +1 -1
  207. package/package.json +13 -4
  208. package/dist/data/spec-kit-prompts.json +0 -123
  209. package/dist/handlers/node-handlers.d.ts +0 -6
  210. package/dist/handlers/node-handlers.js +0 -73
  211. package/dist/handlers/test-crash-handler.d.ts +0 -11
  212. package/dist/handlers/test-crash-handler.js +0 -26
  213. package/dist/http-index.d.ts +0 -45
  214. package/dist/http-index.js +0 -51
  215. package/dist/http-server-auto-tunnel.js +0 -667
  216. package/dist/http-server-named-tunnel.d.ts +0 -2
  217. package/dist/http-server-named-tunnel.js +0 -167
  218. package/dist/http-server-tunnel.d.ts +0 -2
  219. package/dist/http-server-tunnel.js +0 -111
  220. package/dist/http-server.d.ts +0 -2
  221. package/dist/http-server.js +0 -270
  222. package/dist/index-oauth.d.ts +0 -2
  223. package/dist/index-oauth.js +0 -201
  224. package/dist/oauth/auth-middleware.d.ts +0 -20
  225. package/dist/oauth/auth-middleware.js +0 -62
  226. package/dist/oauth/index.d.ts +0 -3
  227. package/dist/oauth/index.js +0 -3
  228. package/dist/oauth/oauth-manager.d.ts +0 -80
  229. package/dist/oauth/oauth-manager.js +0 -179
  230. package/dist/oauth/oauth-routes.d.ts +0 -3
  231. package/dist/oauth/oauth-routes.js +0 -377
  232. package/dist/oauth/provider.d.ts +0 -22
  233. package/dist/oauth/provider.js +0 -124
  234. package/dist/oauth/server.d.ts +0 -18
  235. package/dist/oauth/server.js +0 -160
  236. package/dist/oauth/types.d.ts +0 -54
  237. package/dist/oauth/types.js +0 -2
  238. package/dist/remote-device/templates/auth-success.d.ts +0 -1
  239. package/dist/remote-device/templates/auth-success.js +0 -30
  240. package/dist/setup.log +0 -275
  241. package/dist/test-setup.js +0 -14
  242. package/dist/tools/docx/builders/html-builder.d.ts +0 -17
  243. package/dist/tools/docx/builders/html-builder.js +0 -92
  244. package/dist/tools/docx/builders/image.d.ts +0 -14
  245. package/dist/tools/docx/builders/image.js +0 -84
  246. package/dist/tools/docx/builders/index.d.ts +0 -11
  247. package/dist/tools/docx/builders/index.js +0 -11
  248. package/dist/tools/docx/builders/markdown-builder.d.ts +0 -2
  249. package/dist/tools/docx/builders/markdown-builder.js +0 -260
  250. package/dist/tools/docx/builders/paragraph.d.ts +0 -12
  251. package/dist/tools/docx/builders/paragraph.js +0 -29
  252. package/dist/tools/docx/builders/table.d.ts +0 -10
  253. package/dist/tools/docx/builders/table.js +0 -138
  254. package/dist/tools/docx/builders/utils.d.ts +0 -5
  255. package/dist/tools/docx/builders/utils.js +0 -18
  256. package/dist/tools/docx/constants.d.ts +0 -32
  257. package/dist/tools/docx/constants.js +0 -61
  258. package/dist/tools/docx/converters/markdown-to-html.d.ts +0 -17
  259. package/dist/tools/docx/converters/markdown-to-html.js +0 -111
  260. package/dist/tools/docx/create.d.ts +0 -21
  261. package/dist/tools/docx/create.js +0 -386
  262. package/dist/tools/docx/dom.d.ts +0 -139
  263. package/dist/tools/docx/dom.js +0 -448
  264. package/dist/tools/docx/errors.d.ts +0 -28
  265. package/dist/tools/docx/errors.js +0 -48
  266. package/dist/tools/docx/extractors/images.d.ts +0 -14
  267. package/dist/tools/docx/extractors/images.js +0 -40
  268. package/dist/tools/docx/extractors/metadata.d.ts +0 -14
  269. package/dist/tools/docx/extractors/metadata.js +0 -64
  270. package/dist/tools/docx/extractors/sections.d.ts +0 -14
  271. package/dist/tools/docx/extractors/sections.js +0 -61
  272. package/dist/tools/docx/html.d.ts +0 -17
  273. package/dist/tools/docx/html.js +0 -111
  274. package/dist/tools/docx/index.d.ts +0 -10
  275. package/dist/tools/docx/index.js +0 -10
  276. package/dist/tools/docx/markdown.d.ts +0 -84
  277. package/dist/tools/docx/markdown.js +0 -507
  278. package/dist/tools/docx/modify.d.ts +0 -28
  279. package/dist/tools/docx/modify.js +0 -271
  280. package/dist/tools/docx/operations/handlers/index.d.ts +0 -39
  281. package/dist/tools/docx/operations/handlers/index.js +0 -152
  282. package/dist/tools/docx/operations/html-manipulator.d.ts +0 -24
  283. package/dist/tools/docx/operations/html-manipulator.js +0 -352
  284. package/dist/tools/docx/operations/index.d.ts +0 -14
  285. package/dist/tools/docx/operations/index.js +0 -61
  286. package/dist/tools/docx/operations/operation-handlers.d.ts +0 -3
  287. package/dist/tools/docx/operations/operation-handlers.js +0 -67
  288. package/dist/tools/docx/operations/preprocessor.d.ts +0 -14
  289. package/dist/tools/docx/operations/preprocessor.js +0 -44
  290. package/dist/tools/docx/operations/xml-replacer.d.ts +0 -9
  291. package/dist/tools/docx/operations/xml-replacer.js +0 -35
  292. package/dist/tools/docx/operations.d.ts +0 -13
  293. package/dist/tools/docx/operations.js +0 -13
  294. package/dist/tools/docx/ops/delete-paragraph-at-body-index.d.ts +0 -11
  295. package/dist/tools/docx/ops/delete-paragraph-at-body-index.js +0 -23
  296. package/dist/tools/docx/ops/header-replace-text-exact.d.ts +0 -13
  297. package/dist/tools/docx/ops/header-replace-text-exact.js +0 -55
  298. package/dist/tools/docx/ops/index.d.ts +0 -17
  299. package/dist/tools/docx/ops/index.js +0 -70
  300. package/dist/tools/docx/ops/insert-image-after-text.d.ts +0 -24
  301. package/dist/tools/docx/ops/insert-image-after-text.js +0 -128
  302. package/dist/tools/docx/ops/insert-paragraph-after-text.d.ts +0 -12
  303. package/dist/tools/docx/ops/insert-paragraph-after-text.js +0 -74
  304. package/dist/tools/docx/ops/insert-table-after-text.d.ts +0 -19
  305. package/dist/tools/docx/ops/insert-table-after-text.js +0 -57
  306. package/dist/tools/docx/ops/replace-hyperlink-url.d.ts +0 -12
  307. package/dist/tools/docx/ops/replace-hyperlink-url.js +0 -37
  308. package/dist/tools/docx/ops/replace-paragraph-at-body-index.d.ts +0 -9
  309. package/dist/tools/docx/ops/replace-paragraph-at-body-index.js +0 -25
  310. package/dist/tools/docx/ops/replace-paragraph-text-exact.d.ts +0 -21
  311. package/dist/tools/docx/ops/replace-paragraph-text-exact.js +0 -36
  312. package/dist/tools/docx/ops/replace-table-cell-text.d.ts +0 -25
  313. package/dist/tools/docx/ops/replace-table-cell-text.js +0 -85
  314. package/dist/tools/docx/ops/set-color-for-paragraph-exact.d.ts +0 -9
  315. package/dist/tools/docx/ops/set-color-for-paragraph-exact.js +0 -24
  316. package/dist/tools/docx/ops/set-color-for-style.d.ts +0 -13
  317. package/dist/tools/docx/ops/set-color-for-style.js +0 -31
  318. package/dist/tools/docx/ops/set-paragraph-style-at-body-index.d.ts +0 -8
  319. package/dist/tools/docx/ops/set-paragraph-style-at-body-index.js +0 -57
  320. package/dist/tools/docx/ops/table-set-cell-text.d.ts +0 -9
  321. package/dist/tools/docx/ops/table-set-cell-text.js +0 -40
  322. package/dist/tools/docx/parsers/image-extractor.d.ts +0 -18
  323. package/dist/tools/docx/parsers/image-extractor.js +0 -61
  324. package/dist/tools/docx/parsers/index.d.ts +0 -9
  325. package/dist/tools/docx/parsers/index.js +0 -9
  326. package/dist/tools/docx/parsers/paragraph-parser.d.ts +0 -2
  327. package/dist/tools/docx/parsers/paragraph-parser.js +0 -88
  328. package/dist/tools/docx/parsers/table-parser.d.ts +0 -9
  329. package/dist/tools/docx/parsers/table-parser.js +0 -72
  330. package/dist/tools/docx/parsers/xml-parser.d.ts +0 -25
  331. package/dist/tools/docx/parsers/xml-parser.js +0 -71
  332. package/dist/tools/docx/parsers/zip-reader.d.ts +0 -23
  333. package/dist/tools/docx/parsers/zip-reader.js +0 -52
  334. package/dist/tools/docx/read.d.ts +0 -27
  335. package/dist/tools/docx/read.js +0 -308
  336. package/dist/tools/docx/relationships.d.ts +0 -22
  337. package/dist/tools/docx/relationships.js +0 -76
  338. package/dist/tools/docx/structure.d.ts +0 -25
  339. package/dist/tools/docx/structure.js +0 -102
  340. package/dist/tools/docx/styled-html-parser.d.ts +0 -23
  341. package/dist/tools/docx/styled-html-parser.js +0 -1262
  342. package/dist/tools/docx/types.d.ts +0 -213
  343. package/dist/tools/docx/types.js +0 -5
  344. package/dist/tools/docx/utils/escaping.d.ts +0 -13
  345. package/dist/tools/docx/utils/escaping.js +0 -26
  346. package/dist/tools/docx/utils/images.d.ts +0 -9
  347. package/dist/tools/docx/utils/images.js +0 -26
  348. package/dist/tools/docx/utils/index.d.ts +0 -12
  349. package/dist/tools/docx/utils/index.js +0 -17
  350. package/dist/tools/docx/utils/markdown.d.ts +0 -13
  351. package/dist/tools/docx/utils/markdown.js +0 -32
  352. package/dist/tools/docx/utils/paths.d.ts +0 -15
  353. package/dist/tools/docx/utils/paths.js +0 -27
  354. package/dist/tools/docx/utils/versioning.d.ts +0 -25
  355. package/dist/tools/docx/utils/versioning.js +0 -55
  356. package/dist/tools/docx/utils.d.ts +0 -101
  357. package/dist/tools/docx/utils.js +0 -299
  358. package/dist/tools/docx/validate.d.ts +0 -33
  359. package/dist/tools/docx/validate.js +0 -49
  360. package/dist/tools/docx/validators.d.ts +0 -13
  361. package/dist/tools/docx/validators.js +0 -40
  362. package/dist/tools/docx/write.d.ts +0 -17
  363. package/dist/tools/docx/write.js +0 -88
  364. package/dist/tools/docx/xml-view-test.js +0 -63
  365. package/dist/tools/docx/xml-view.d.ts +0 -56
  366. package/dist/tools/docx/xml-view.js +0 -169
  367. package/dist/tools/docx/zip.d.ts +0 -21
  368. package/dist/tools/docx/zip.js +0 -35
  369. package/dist/tools/pdf-processor.js +0 -3
  370. package/dist/tools/search.d.ts +0 -32
  371. package/dist/tools/search.js +0 -202
  372. package/dist/ui/file-preview/src/app.d.ts +0 -4
  373. package/dist/ui/file-preview/src/app.js +0 -800
  374. package/dist/utils/crash-logger.d.ts +0 -18
  375. package/dist/utils/crash-logger.js +0 -44
  376. package/dist/utils/dedent.d.ts +0 -8
  377. package/dist/utils/dedent.js +0 -38
  378. /package/dist/{http-server-auto-tunnel.d.ts → ui/config-editor/main.d.ts} +0 -0
  379. /package/dist/{test-docx.d.ts → ui/config-editor/src/main.d.ts} +0 -0
  380. /package/dist/{tools/docx/xml-view-test.d.ts → ui/file-preview/main.d.ts} +0 -0
  381. /package/dist/ui/file-preview/src/components/{toolbar.d.ts → Toolbar.d.ts} +0 -0
  382. /package/dist/ui/file-preview/src/components/{toolbar.js → Toolbar.js} +0 -0
  383. /package/dist/{tools/pdf-processor.d.ts → ui/file-preview/src/model.js} +0 -0
@@ -1,61 +0,0 @@
1
- /**
2
- * DOCX constants — shared values used across the module.
3
- */
4
- // ═══════════════════════════════════════════════════════════════════════
5
- // Image MIME types
6
- // ═══════════════════════════════════════════════════════════════════════
7
- export const IMAGE_MIME_TYPES = {
8
- '.png': 'image/png',
9
- '.jpg': 'image/jpeg',
10
- '.jpeg': 'image/jpeg',
11
- '.gif': 'image/gif',
12
- '.bmp': 'image/bmp',
13
- '.tiff': 'image/tiff',
14
- '.tif': 'image/tiff',
15
- '.svg': 'image/svg+xml',
16
- '.webp': 'image/webp',
17
- };
18
- export function getMimeType(ext) {
19
- return IMAGE_MIME_TYPES[ext.toLowerCase()] ?? 'application/octet-stream';
20
- }
21
- // ═══════════════════════════════════════════════════════════════════════
22
- // EMU conversion (English Metric Units)
23
- // ═══════════════════════════════════════════════════════════════════════
24
- /**
25
- * Convert pixels to EMU (English Metric Units).
26
- * 1 inch = 914400 EMU, 1 px ≈ 9525 EMU (at 96 DPI)
27
- */
28
- export const PX_TO_EMU = 9525;
29
- export function pixelsToEmu(px) {
30
- return px * PX_TO_EMU;
31
- }
32
- // ═══════════════════════════════════════════════════════════════════════
33
- // XML namespaces
34
- // ═══════════════════════════════════════════════════════════════════════
35
- export const NAMESPACES = {
36
- W: 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
37
- WP: 'http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing',
38
- A: 'http://schemas.openxmlformats.org/drawingml/2006/main',
39
- PIC: 'http://schemas.openxmlformats.org/drawingml/2006/picture',
40
- R: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
41
- RELS: 'http://schemas.openxmlformats.org/package/2006/relationships',
42
- };
43
- // ═══════════════════════════════════════════════════════════════════════
44
- // Default values
45
- // ═══════════════════════════════════════════════════════════════════════
46
- export const DEFAULT_IMAGE_WIDTH = 300;
47
- export const DEFAULT_IMAGE_HEIGHT = 200;
48
- // ═══════════════════════════════════════════════════════════════════════
49
- // File paths
50
- // ═══════════════════════════════════════════════════════════════════════
51
- export const DOCX_PATHS = {
52
- CONTENT_TYPES: '[Content_Types].xml',
53
- DOCUMENT_XML: 'word/document.xml',
54
- DOCUMENT_RELS: 'word/_rels/document.xml.rels',
55
- ROOT_RELS: '_rels/.rels',
56
- STYLES_XML: 'word/styles.xml',
57
- SETTINGS_XML: 'word/settings.xml',
58
- WEB_SETTINGS_XML: 'word/webSettings.xml',
59
- FONT_TABLE_XML: 'word/fontTable.xml',
60
- MEDIA_FOLDER: 'word/media',
61
- };
@@ -1,17 +0,0 @@
1
- /**
2
- * Markdown → HTML Converter
3
- *
4
- * Provides markdown-to-HTML conversion for DOCX content operations
5
- * (appendMarkdown, insertTable with markdown input, etc.).
6
- *
7
- * @module docx/converters/markdown-to-html
8
- */
9
- /** Convert basic markdown text to HTML. */
10
- export declare function markdownToHtml(markdown: string): string;
11
- /**
12
- * Convert a markdown table to an HTML `<table>` with inline CSS borders.
13
- * html-to-docx needs explicit border styles — without them, tables are invisible in Word.
14
- */
15
- export declare function markdownTableToHtml(markdown: string): string;
16
- /** Build a markdown table string from a 2-D rows array (first row = header). */
17
- export declare function buildMarkdownTableFromRows(rows: string[][]): string;
@@ -1,111 +0,0 @@
1
- /**
2
- * Markdown → HTML Converter
3
- *
4
- * Provides markdown-to-HTML conversion for DOCX content operations
5
- * (appendMarkdown, insertTable with markdown input, etc.).
6
- *
7
- * @module docx/converters/markdown-to-html
8
- */
9
- import { escapeHtml } from '../utils/escaping.js';
10
- // ─── Markdown → HTML ─────────────────────────────────────────────────────────
11
- /** Convert basic markdown text to HTML. */
12
- export function markdownToHtml(markdown) {
13
- if (!markdown?.trim())
14
- return '';
15
- let html = markdown.trim();
16
- // Headings (h6 → h1 to avoid partial matches)
17
- html = html.replace(/^######\s+(.+)$/gm, '<h6>$1</h6>');
18
- html = html.replace(/^#####\s+(.+)$/gm, '<h5>$1</h5>');
19
- html = html.replace(/^####\s+(.+)$/gm, '<h4>$1</h4>');
20
- html = html.replace(/^###\s+(.+)$/gm, '<h3>$1</h3>');
21
- html = html.replace(/^##\s+(.+)$/gm, '<h2>$1</h2>');
22
- html = html.replace(/^#\s+(.+)$/gm, '<h1>$1</h1>');
23
- // Bold (before italic to avoid conflicts)
24
- html = html.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>');
25
- html = html.replace(/__(.+?)__/g, '<strong>$1</strong>');
26
- // Italic
27
- html = html.replace(/\*(.+?)\*/g, '<em>$1</em>');
28
- html = html.replace(/_(.+?)_/g, '<em>$1</em>');
29
- // Images & links
30
- html = html.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '<img src="$2" alt="$1" />');
31
- html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2">$1</a>');
32
- // Inline code
33
- html = html.replace(/`([^`]+)`/g, '<code>$1</code>');
34
- // Paragraphs (double-newline separated)
35
- return html
36
- .split(/\n\n+/)
37
- .map((p) => p.trim())
38
- .filter(Boolean)
39
- .map((p) => {
40
- // Don't wrap blocks that are already complete HTML elements
41
- if (p.startsWith('<') && p.endsWith('>'))
42
- return p.replace(/\n/g, '<br>');
43
- return `<p>${p.replace(/\n/g, '<br>')}</p>`;
44
- })
45
- .join('\n');
46
- }
47
- // ─── Markdown Table → HTML ───────────────────────────────────────────────────
48
- /** Parse a single markdown table row into cell values. */
49
- function parseTableRow(row) {
50
- return row.replace(/^\|/, '').replace(/\|$/, '').split('|').map((c) => c.trim());
51
- }
52
- /**
53
- * Convert a markdown table to an HTML `<table>` with inline CSS borders.
54
- * html-to-docx needs explicit border styles — without them, tables are invisible in Word.
55
- */
56
- export function markdownTableToHtml(markdown) {
57
- if (!markdown?.trim())
58
- return '';
59
- const lines = markdown
60
- .trim()
61
- .split('\n')
62
- .map((l) => l.trim())
63
- .filter(Boolean);
64
- if (lines.length < 2)
65
- return '';
66
- const headerCells = parseTableRow(lines[0]);
67
- if (headerCells.length === 0)
68
- return '';
69
- const dataRows = lines.slice(2).map(parseTableRow);
70
- const BORDER = 'border:1px solid #000;';
71
- const CELL = `${BORDER} padding:6px 10px;`;
72
- const HEADER = `${CELL} background-color:#f2f2f2; font-weight:bold;`;
73
- let html = `<table style="border-collapse:collapse; width:100%; ${BORDER}">\n`;
74
- html += ' <thead>\n <tr>\n';
75
- for (const cell of headerCells) {
76
- html += ` <th style="${HEADER}">${escapeHtml(cell)}</th>\n`;
77
- }
78
- html += ' </tr>\n </thead>\n';
79
- if (dataRows.length > 0) {
80
- html += ' <tbody>\n';
81
- for (const row of dataRows) {
82
- html += ' <tr>\n';
83
- for (const cell of row) {
84
- html += ` <td style="${CELL}">${escapeHtml(cell)}</td>\n`;
85
- }
86
- html += ' </tr>\n';
87
- }
88
- html += ' </tbody>\n';
89
- }
90
- return html + '</table>';
91
- }
92
- // ─── Rows Array → Markdown Table ─────────────────────────────────────────────
93
- /** Build a markdown table string from a 2-D rows array (first row = header). */
94
- export function buildMarkdownTableFromRows(rows) {
95
- if (!rows?.length)
96
- return '';
97
- const header = rows[0];
98
- if (!header?.length)
99
- return '';
100
- const lines = [
101
- `| ${header.join(' | ')} |`,
102
- `| ${header.map(() => '---').join(' | ')} |`,
103
- ];
104
- for (const row of rows.slice(1)) {
105
- const padded = [...row];
106
- while (padded.length < header.length)
107
- padded.push('');
108
- lines.push(`| ${padded.slice(0, header.length).join(' | ')} |`);
109
- }
110
- return lines.join('\n');
111
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * createDocxNew - Create a brand-new professional DOCX file from scratch.
3
- *
4
- * Single Responsibility: Build a complete, professional DOCX structure
5
- * with proper styles, document defaults, and content from styled DOM structure.
6
- *
7
- * This function does NOT read any existing files - it creates everything
8
- * from scratch with a professional structure.
9
- */
10
- import type { DocxContentStructure, WriteDocxResult } from './types.js';
11
- /**
12
- * Create a new professional DOCX file from content structure.
13
- *
14
- * This function creates a complete DOCX structure from scratch with:
15
- * - Professional styles (Normal, Heading1-9, ListParagraph, TableGrid)
16
- * - Document defaults (Calibri font, proper spacing)
17
- * - Complete ZIP structure
18
- *
19
- * Then builds content from the provided structure.
20
- */
21
- export declare function createDocxNew(outputPath: string, content: DocxContentStructure): Promise<WriteDocxResult>;
@@ -1,386 +0,0 @@
1
- /**
2
- * createDocxNew - Create a brand-new professional DOCX file from scratch.
3
- *
4
- * Single Responsibility: Build a complete, professional DOCX structure
5
- * with proper styles, document defaults, and content from styled DOM structure.
6
- *
7
- * This function does NOT read any existing files - it creates everything
8
- * from scratch with a professional structure.
9
- */
10
- import fs from 'fs/promises';
11
- import PizZip from 'pizzip';
12
- import { parseXml, serializeXml, getBody } from './dom.js';
13
- import { buildParagraph, buildTable, buildImageElement } from './builders/index.js';
14
- /**
15
- * Create a professional DOCX ZIP structure with:
16
- * - Complete styles.xml (Normal, Heading1-9, etc.)
17
- * - Document defaults (fonts, spacing, colors)
18
- * - Proper relationships
19
- * - Content types
20
- * - Empty document body ready for content
21
- */
22
- function createProfessionalDocxZip() {
23
- const zip = new PizZip();
24
- // ─── [Content_Types].xml ──────────────────────────────────────────
25
- zip.file('[Content_Types].xml', `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
26
- <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
27
- <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
28
- <Default Extension="xml" ContentType="application/xml"/>
29
- <Default Extension="png" ContentType="image/png"/>
30
- <Default Extension="jpg" ContentType="image/jpeg"/>
31
- <Default Extension="jpeg" ContentType="image/jpeg"/>
32
- <Default Extension="gif" ContentType="image/gif"/>
33
- <Default Extension="bmp" ContentType="image/bmp"/>
34
- <Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>
35
- <Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/>
36
- </Types>`);
37
- // ─── _rels/.rels ──────────────────────────────────────────────────
38
- zip.folder('_rels')?.file('.rels', `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
39
- <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
40
- <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>
41
- </Relationships>`);
42
- // ─── word/_rels/document.xml.rels ────────────────────────────────
43
- zip.folder('word')?.folder('_rels')?.file('document.xml.rels', `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
44
- <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
45
- </Relationships>`);
46
- // ─── word/styles.xml ───────────────────────────────────────────────
47
- zip.file('word/styles.xml', `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
48
- <w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
49
- <!-- Document Defaults -->
50
- <w:docDefaults>
51
- <w:rPrDefault>
52
- <w:rPr>
53
- <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:eastAsia="Calibri" w:cs="Calibri"/>
54
- <w:sz w:val="22"/>
55
- <w:szCs w:val="22"/>
56
- <w:color w:val="000000"/>
57
- </w:rPr>
58
- </w:rPrDefault>
59
- <w:pPrDefault>
60
- <w:pPr>
61
- <w:spacing w:after="200" w:line="276" w:lineRule="auto"/>
62
- </w:pPr>
63
- </w:pPrDefault>
64
- </w:docDefaults>
65
-
66
- <!-- Normal Style -->
67
- <w:style w:type="paragraph" w:styleId="Normal">
68
- <w:name w:val="Normal"/>
69
- <w:qFormat/>
70
- <w:pPr>
71
- <w:spacing w:after="200" w:line="276" w:lineRule="auto"/>
72
- </w:pPr>
73
- <w:rPr>
74
- <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:eastAsia="Calibri" w:cs="Calibri"/>
75
- <w:sz w:val="22"/>
76
- <w:szCs w:val="22"/>
77
- <w:color w:val="000000"/>
78
- </w:rPr>
79
- </w:style>
80
-
81
- <!-- Heading Styles -->
82
- <w:style w:type="paragraph" w:styleId="Heading1">
83
- <w:name w:val="Heading 1"/>
84
- <w:basedOn w:val="Normal"/>
85
- <w:next w:val="Normal"/>
86
- <w:qFormat/>
87
- <w:pPr>
88
- <w:keepNext/>
89
- <w:spacing w:before="480" w:after="0"/>
90
- <w:outlineLvl w:val="0"/>
91
- </w:pPr>
92
- <w:rPr>
93
- <w:rFonts w:ascii="Calibri Light" w:hAnsi="Calibri Light" w:eastAsia="Calibri Light" w:cs="Calibri Light"/>
94
- <w:b/>
95
- <w:bCs/>
96
- <w:sz w:val="32"/>
97
- <w:szCs w:val="32"/>
98
- <w:color w:val="2F5496"/>
99
- </w:rPr>
100
- </w:style>
101
-
102
- <w:style w:type="paragraph" w:styleId="Heading2">
103
- <w:name w:val="Heading 2"/>
104
- <w:basedOn w:val="Normal"/>
105
- <w:next w:val="Normal"/>
106
- <w:qFormat/>
107
- <w:pPr>
108
- <w:keepNext/>
109
- <w:spacing w:before="240" w:after="0"/>
110
- <w:outlineLvl w:val="1"/>
111
- </w:pPr>
112
- <w:rPr>
113
- <w:rFonts w:ascii="Calibri Light" w:hAnsi="Calibri Light" w:eastAsia="Calibri Light" w:cs="Calibri Light"/>
114
- <w:b/>
115
- <w:bCs/>
116
- <w:sz w:val="28"/>
117
- <w:szCs w:val="28"/>
118
- <w:color w:val="2F5496"/>
119
- </w:rPr>
120
- </w:style>
121
-
122
- <w:style w:type="paragraph" w:styleId="Heading3">
123
- <w:name w:val="Heading 3"/>
124
- <w:basedOn w:val="Normal"/>
125
- <w:next w:val="Normal"/>
126
- <w:qFormat/>
127
- <w:pPr>
128
- <w:keepNext/>
129
- <w:spacing w:before="240" w:after="0"/>
130
- <w:outlineLvl w:val="2"/>
131
- </w:pPr>
132
- <w:rPr>
133
- <w:b/>
134
- <w:bCs/>
135
- <w:sz w:val="24"/>
136
- <w:szCs w:val="24"/>
137
- <w:color w:val="1F3763"/>
138
- </w:rPr>
139
- </w:style>
140
-
141
- <w:style w:type="paragraph" w:styleId="Heading4">
142
- <w:name w:val="Heading 4"/>
143
- <w:basedOn w:val="Normal"/>
144
- <w:next w:val="Normal"/>
145
- <w:qFormat/>
146
- <w:pPr>
147
- <w:keepNext/>
148
- <w:spacing w:before="240" w:after="0"/>
149
- <w:outlineLvl w:val="3"/>
150
- </w:pPr>
151
- <w:rPr>
152
- <w:b/>
153
- <w:bCs/>
154
- <w:sz w:val="22"/>
155
- <w:szCs w:val="22"/>
156
- <w:color w:val="1F3763"/>
157
- </w:rPr>
158
- </w:style>
159
-
160
- <w:style w:type="paragraph" w:styleId="Heading5">
161
- <w:name w:val="Heading 5"/>
162
- <w:basedOn w:val="Normal"/>
163
- <w:next w:val="Normal"/>
164
- <w:qFormat/>
165
- <w:pPr>
166
- <w:keepNext/>
167
- <w:spacing w:before="240" w:after="0"/>
168
- <w:outlineLvl w:val="4"/>
169
- </w:pPr>
170
- <w:rPr>
171
- <w:b/>
172
- <w:bCs/>
173
- <w:sz w:val="22"/>
174
- <w:szCs w:val="22"/>
175
- <w:color w:val="1F3763"/>
176
- </w:rPr>
177
- </w:style>
178
-
179
- <w:style w:type="paragraph" w:styleId="Heading6">
180
- <w:name w:val="Heading 6"/>
181
- <w:basedOn w:val="Normal"/>
182
- <w:next w:val="Normal"/>
183
- <w:qFormat/>
184
- <w:pPr>
185
- <w:keepNext/>
186
- <w:spacing w:before="240" w:after="0"/>
187
- <w:outlineLvl w:val="5"/>
188
- </w:pPr>
189
- <w:rPr>
190
- <w:b/>
191
- <w:bCs/>
192
- <w:sz w:val="22"/>
193
- <w:szCs w:val="22"/>
194
- <w:color w:val="1F3763"/>
195
- </w:rPr>
196
- </w:style>
197
-
198
- <w:style w:type="paragraph" w:styleId="Heading7">
199
- <w:name w:val="Heading 7"/>
200
- <w:basedOn w:val="Normal"/>
201
- <w:next w:val="Normal"/>
202
- <w:qFormat/>
203
- <w:pPr>
204
- <w:keepNext/>
205
- <w:spacing w:before="240" w:after="0"/>
206
- <w:outlineLvl w:val="6"/>
207
- </w:pPr>
208
- <w:rPr>
209
- <w:b/>
210
- <w:bCs/>
211
- <w:sz w:val="22"/>
212
- <w:szCs w:val="22"/>
213
- <w:color w:val="1F3763"/>
214
- </w:rPr>
215
- </w:style>
216
-
217
- <w:style w:type="paragraph" w:styleId="Heading8">
218
- <w:name w:val="Heading 8"/>
219
- <w:basedOn w:val="Normal"/>
220
- <w:next w:val="Normal"/>
221
- <w:qFormat/>
222
- <w:pPr>
223
- <w:keepNext/>
224
- <w:spacing w:before="240" w:after="0"/>
225
- <w:outlineLvl w:val="7"/>
226
- </w:pPr>
227
- <w:rPr>
228
- <w:b/>
229
- <w:bCs/>
230
- <w:sz w:val="22"/>
231
- <w:szCs w:val="22"/>
232
- <w:color w:val="1F3763"/>
233
- </w:rPr>
234
- </w:style>
235
-
236
- <w:style w:type="paragraph" w:styleId="Heading9">
237
- <w:name w:val="Heading 9"/>
238
- <w:basedOn w:val="Normal"/>
239
- <w:next w:val="Normal"/>
240
- <w:qFormat/>
241
- <w:pPr>
242
- <w:keepNext/>
243
- <w:spacing w:before="240" w:after="0"/>
244
- <w:outlineLvl w:val="8"/>
245
- </w:pPr>
246
- <w:rPr>
247
- <w:b/>
248
- <w:bCs/>
249
- <w:sz w:val="22"/>
250
- <w:szCs w:val="22"/>
251
- <w:color w:val="1F3763"/>
252
- </w:rPr>
253
- </w:style>
254
-
255
- <!-- List Styles -->
256
- <w:style w:type="paragraph" w:styleId="ListParagraph">
257
- <w:name w:val="List Paragraph"/>
258
- <w:basedOn w:val="Normal"/>
259
- <w:qFormat/>
260
- <w:pPr>
261
- <w:ind w:left="720"/>
262
- </w:pPr>
263
- </w:style>
264
-
265
- <!-- Table Styles -->
266
- <w:style w:type="table" w:styleId="TableGrid">
267
- <w:name w:val="Table Grid"/>
268
- <w:basedOn w:val="NormalTable"/>
269
- <w:qFormat/>
270
- <w:tblPr>
271
- <w:tblBorders>
272
- <w:top w:val="single" w:sz="4" w:space="0" w:color="000000"/>
273
- <w:left w:val="single" w:sz="4" w:space="0" w:color="000000"/>
274
- <w:bottom w:val="single" w:sz="4" w:space="0" w:color="000000"/>
275
- <w:right w:val="single" w:sz="4" w:space="0" w:color="000000"/>
276
- <w:insideH w:val="single" w:sz="4" w:space="0" w:color="000000"/>
277
- <w:insideV w:val="single" w:sz="4" w:space="0" w:color="000000"/>
278
- </w:tblBorders>
279
- </w:tblPr>
280
- </w:style>
281
- </w:styles>`);
282
- // ─── word/document.xml ─────────────────────────────────────────────
283
- zip.file('word/document.xml', `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
284
- <w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
285
- <w:body>
286
- </w:body>
287
- </w:document>`);
288
- // ─── word/settings.xml ────────────────────────────────────────────
289
- zip.file('word/settings.xml', `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
290
- <w:settings xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
291
- <w:defaultTabStop w:val="720"/>
292
- <w:compat>
293
- <w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="15"/>
294
- </w:compat>
295
- </w:settings>`);
296
- // ─── word/webSettings.xml ────────────────────────────────────────
297
- zip.file('word/webSettings.xml', `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
298
- <w:webSettings xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
299
- <w:optimizeForBrowser/>
300
- </w:webSettings>`);
301
- // ─── word/fontTable.xml ───────────────────────────────────────────
302
- zip.file('word/fontTable.xml', `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
303
- <w:fonts xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
304
- <w:font w:name="Calibri">
305
- <w:panose1 w:val="020F0502020204030204"/>
306
- <w:charset w:val="00"/>
307
- <w:family w:val="swiss"/>
308
- <w:pitch w:val="variable"/>
309
- <w:sig w:usb0="E00002FF" w:usb1="4000ACFF" w:usb2="00000001" w:usb3="00000000" w:csb0="0000019F" w:csb1="00000000"/>
310
- </w:font>
311
- <w:font w:name="Calibri Light">
312
- <w:panose1 w:val="020F0302020204030204"/>
313
- <w:charset w:val="00"/>
314
- <w:family w:val="swiss"/>
315
- <w:pitch w:val="variable"/>
316
- <w:sig w:usb0="E00002FF" w:usb1="4000ACFF" w:usb2="00000001" w:usb3="00000000" w:csb0="0000019F" w:csb1="00000000"/>
317
- </w:font>
318
- <w:font w:name="Times New Roman">
319
- <w:panose1 w:val="02020603050405020304"/>
320
- <w:charset w:val="00"/>
321
- <w:family w:val="roman"/>
322
- <w:pitch w:val="variable"/>
323
- <w:sig w:usb0="E0002AFF" w:usb1="C0007841" w:usb2="00000009" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/>
324
- </w:font>
325
- </w:fonts>`);
326
- // ─── Create media folder ───────────────────────────────────────────
327
- zip.folder('word')?.folder('media');
328
- return zip;
329
- }
330
- // ─── Content builders are now in ./builders/index.js ───────────────────
331
- /**
332
- * Create a new professional DOCX file from content structure.
333
- *
334
- * This function creates a complete DOCX structure from scratch with:
335
- * - Professional styles (Normal, Heading1-9, ListParagraph, TableGrid)
336
- * - Document defaults (Calibri font, proper spacing)
337
- * - Complete ZIP structure
338
- *
339
- * Then builds content from the provided structure.
340
- */
341
- export async function createDocxNew(outputPath, content) {
342
- // 1. Create professional DOCX ZIP structure
343
- const zip = createProfessionalDocxZip();
344
- // 2. Parse empty document.xml
345
- const xmlStr = zip.file('word/document.xml').asText();
346
- const doc = parseXml(xmlStr);
347
- const body = getBody(doc);
348
- // 3. Build content from structure
349
- let tableCount = 0;
350
- for (const item of content.items) {
351
- if (item.type === 'paragraph') {
352
- const p = buildParagraph(doc, item);
353
- body.appendChild(p);
354
- }
355
- else if (item.type === 'table') {
356
- const tbl = buildTable(doc, item);
357
- body.appendChild(tbl);
358
- tableCount++;
359
- }
360
- else if (item.type === 'image') {
361
- const imgP = await buildImageElement(doc, zip, item);
362
- body.appendChild(imgP);
363
- }
364
- }
365
- // 4. Serialize and save
366
- const newXml = serializeXml(doc);
367
- zip.file('word/document.xml', newXml);
368
- const buf = zip.generate({ type: 'nodebuffer' });
369
- await fs.writeFile(outputPath, buf);
370
- // 5. Build stats
371
- const bodyChildCount = content.items.length;
372
- const stats = {
373
- tablesBefore: 0,
374
- tablesAfter: tableCount,
375
- bodyChildrenBefore: 0,
376
- bodyChildrenAfter: bodyChildCount,
377
- bodySignatureBefore: '',
378
- bodySignatureAfter: '', // Could compute if needed
379
- };
380
- return {
381
- outputPath,
382
- results: [], // No ops were applied
383
- stats,
384
- warnings: [],
385
- };
386
- }