documentation-hub 5.7.2

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 (271) hide show
  1. package/.eslintrc.json +43 -0
  2. package/.github/workflows/build.yml +64 -0
  3. package/.github/workflows/ci.yml +39 -0
  4. package/.vscode/extensions.json +3 -0
  5. package/Current.md +97 -0
  6. package/DocHub_Image.png +0 -0
  7. package/README.md +666 -0
  8. package/USER_GUIDE.md +1173 -0
  9. package/Updater.md +311 -0
  10. package/build/256x256.png +0 -0
  11. package/build/512x512.png +0 -0
  12. package/build/app-update.yml +4 -0
  13. package/build/create-icon.js +208 -0
  14. package/build/icon.ico +0 -0
  15. package/build/icon.png +0 -0
  16. package/build/icon_1024x1024.png +0 -0
  17. package/dist/assets/Analytics-BpsG9895.js +1 -0
  18. package/dist/assets/Card-IAZin8kp.js +1 -0
  19. package/dist/assets/CurrentSession-B-rFkHvf.js +12 -0
  20. package/dist/assets/Dashboard-C_5gMb0q.js +1 -0
  21. package/dist/assets/Documents-CqZ25axS.js +1 -0
  22. package/dist/assets/Input-l89xwXBi.js +1 -0
  23. package/dist/assets/Reporting-DqdHJY_a.js +1 -0
  24. package/dist/assets/Search-XNbu5z_3.js +1 -0
  25. package/dist/assets/SessionManager-lH9hZfzH.js +1 -0
  26. package/dist/assets/Sessions-ClZOPYNc.js +1 -0
  27. package/dist/assets/Settings-DUEHGURa.js +11 -0
  28. package/dist/assets/index-8xUe8ptc.js +24 -0
  29. package/dist/assets/index-RYyJqF7O.css +1 -0
  30. package/dist/assets/path-BkOl0AGO.js +1 -0
  31. package/dist/assets/promises-ID_B9S-h.js +1 -0
  32. package/dist/assets/urlHelpers-TvgahX0r.js +1 -0
  33. package/dist/assets/useToast-yRSO1dkm.js +1 -0
  34. package/dist/assets/vendor-charts-RkGK5ROP.js +36 -0
  35. package/dist/assets/vendor-db-l0sNRNKZ.js +1 -0
  36. package/dist/assets/vendor-react-BVZ_anCF.js +4 -0
  37. package/dist/assets/vendor-search-Dw8P0qyA.js +1 -0
  38. package/dist/assets/vendor-ui-BU7NfluV.js +53 -0
  39. package/dist/electron/PowerAutomateApiService-LfW09ZGr.js +147 -0
  40. package/dist/electron/main-CXkNtyv-.js +19789 -0
  41. package/dist/electron/main.js +5 -0
  42. package/dist/electron/preload.js +1 -0
  43. package/dist/icon.png +0 -0
  44. package/dist/index.html +27 -0
  45. package/docs/CODEBASE_ANALYSIS_REPORT.md +309 -0
  46. package/docs/DEBUG_LOGGING_GUIDE.md +244 -0
  47. package/docs/README.md +115 -0
  48. package/docs/TOC_WIRING_GUIDE.md +344 -0
  49. package/docs/analysis/Bullet_Symbol_Bug_Analysis.md +136 -0
  50. package/docs/analysis/DOCXMLATER_ANALYSIS_SUMMARY.txt +169 -0
  51. package/docs/analysis/Document_Processing_Issues_Analysis.md +704 -0
  52. package/docs/analysis/FIELD_PRESERVATION_ANALYSIS.md +1200 -0
  53. package/docs/analysis/INDENTATION_PRESERVE_ANALYSIS.md +181 -0
  54. package/docs/analysis/INDENTATION_PRESERVE_IMPLEMENTATION.md +207 -0
  55. package/docs/analysis/List_Implementation.md +206 -0
  56. package/docs/analysis/List_Implementation_Accuracy_Report.md +366 -0
  57. package/docs/analysis/PROCESSING_OPTIONS_UI_UPDATES.md +220 -0
  58. package/docs/analysis/RefactorStyles.md +852 -0
  59. package/docs/analysis/STYLE_PARAMETER_ENHANCEMENT.md +143 -0
  60. package/docs/analysis/docxmlater-comparison-todo-2025-11-13.md +636 -0
  61. package/docs/analysis/docxmlater-implementation-analysis-2025-11-13.md +340 -0
  62. package/docs/analysis/docxmlater-template_ui-integration-analysis.md +263 -0
  63. package/docs/analysis/github-issues-to-create.md +237 -0
  64. package/docs/api/API_README.md +538 -0
  65. package/docs/api/API_REFERENCE.md +751 -0
  66. package/docs/api/TYPE_DEFINITIONS.md +869 -0
  67. package/docs/architecture/FONT_EMBEDDING_GUIDE.md +318 -0
  68. package/docs/architecture/docxmlater-functions-and-structure.md +726 -0
  69. package/docs/docxmlater-readme.md +1341 -0
  70. package/docs/fixes/EXECUTION_LOG_TEST_BASE.md +573 -0
  71. package/docs/fixes/HYPERLINK_TEXT_SANITIZATION.md +253 -0
  72. package/docs/fixes/README.md +37 -0
  73. package/docs/github-issues/issue-1-body.md +125 -0
  74. package/docs/github-issues/issue-10-body.md +850 -0
  75. package/docs/github-issues/issue-2-body.md +200 -0
  76. package/docs/github-issues/issue-3-body.md +270 -0
  77. package/docs/github-issues/issue-4-body.md +169 -0
  78. package/docs/github-issues/issue-5-body.md +173 -0
  79. package/docs/github-issues/issue-6-body.md +158 -0
  80. package/docs/github-issues/issue-7-body.md +171 -0
  81. package/docs/github-issues/issue-8-body.md +407 -0
  82. package/docs/github-issues/issue-9-body.md +515 -0
  83. package/docs/github-issues/issue-tracker.md +274 -0
  84. package/docs/github-issues/predictive-analysis-2025-10-18.md +2131 -0
  85. package/docs/implementation/List_Framework_Refactor_Plan.md +336 -0
  86. package/docs/implementation/PRIMARY_TEXT_COLOR_FEATURE.md +217 -0
  87. package/docs/implementation/RELEASE_PLAN_v2.1.0.md +362 -0
  88. package/docs/implementation/RefactorStyles.md +588 -0
  89. package/docs/implementation/implement-plan.md +489 -0
  90. package/docs/implementation/missing-helpers-implementation.md +391 -0
  91. package/docs/implementation/refactor-plan.md +520 -0
  92. package/docs/implementation/session-implementation-complete.md +233 -0
  93. package/docs/implementation/session-management-plan.md +250 -0
  94. package/docs/setup-checklist.md +77 -0
  95. package/docs/versions/changelog.md +345 -0
  96. package/electron/customUpdater.ts +656 -0
  97. package/electron/main.ts +2441 -0
  98. package/electron/memoryConfig.ts +187 -0
  99. package/electron/preload.ts +394 -0
  100. package/electron/proxyConfig.ts +340 -0
  101. package/electron/services/BackupService.ts +452 -0
  102. package/electron/services/DictionaryService.ts +402 -0
  103. package/electron/services/LocalDictionaryLookupService.ts +147 -0
  104. package/electron/services/PowerAutomateApiService.ts +231 -0
  105. package/electron/services/SharePointSyncService.ts +474 -0
  106. package/electron/windowsCertStore.ts +427 -0
  107. package/electron/zscalerConfig.ts +381 -0
  108. package/eslint.config.js +92 -0
  109. package/jest.config.js +52 -0
  110. package/package.json +214 -0
  111. package/postcss.config.mjs +6 -0
  112. package/public/icon.png +0 -0
  113. package/publish-release.ps1 +5 -0
  114. package/renovate.json +30 -0
  115. package/src/App.tsx +216 -0
  116. package/src/__mocks__/p-limit.js +12 -0
  117. package/src/__mocks__/styleMock.js +1 -0
  118. package/src/components/common/BugReportButton.tsx +44 -0
  119. package/src/components/common/BugReportDialog.tsx +193 -0
  120. package/src/components/common/Button.tsx +153 -0
  121. package/src/components/common/Card.tsx +86 -0
  122. package/src/components/common/ColorPickerDialog.tsx +177 -0
  123. package/src/components/common/ConfirmDialog.tsx +96 -0
  124. package/src/components/common/DebugConsole.tsx +275 -0
  125. package/src/components/common/EmptyState.tsx +183 -0
  126. package/src/components/common/ErrorBoundary.tsx +98 -0
  127. package/src/components/common/ErrorDetailsDialog.tsx +153 -0
  128. package/src/components/common/ErrorFallback.tsx +218 -0
  129. package/src/components/common/Input.tsx +109 -0
  130. package/src/components/common/Skeleton.tsx +184 -0
  131. package/src/components/common/SplashScreen.tsx +81 -0
  132. package/src/components/common/Toast.tsx +155 -0
  133. package/src/components/common/Tooltip.tsx +79 -0
  134. package/src/components/common/UpdateNotification.tsx +320 -0
  135. package/src/components/comparison/ComparisonWindow.tsx +374 -0
  136. package/src/components/comparison/SideBySideDiff.tsx +486 -0
  137. package/src/components/comparison/index.ts +8 -0
  138. package/src/components/document/DocumentUploader.tsx +288 -0
  139. package/src/components/document/HyperlinkPreview.tsx +430 -0
  140. package/src/components/document/HyperlinkService.md +1484 -0
  141. package/src/components/document/Hyperlink_Technical_Documentation.md +496 -0
  142. package/src/components/document/InlineChangesView.tsx +707 -0
  143. package/src/components/document/ProcessingProgress.tsx +303 -0
  144. package/src/components/document/ProcessingResults.tsx +256 -0
  145. package/src/components/document/TrackedChangesDetail.tsx +530 -0
  146. package/src/components/document/TrackedChangesPanel.tsx +546 -0
  147. package/src/components/document/VirtualDocumentList.tsx +240 -0
  148. package/src/components/editor/DocumentEditor.tsx +723 -0
  149. package/src/components/editor/DocumentEditorModal.tsx +640 -0
  150. package/src/components/editor/EditorQuickActions.tsx +502 -0
  151. package/src/components/editor/EditorToolbar.tsx +312 -0
  152. package/src/components/editor/TableEditor.tsx +926 -0
  153. package/src/components/editor/index.ts +18 -0
  154. package/src/components/layout/Header.tsx +190 -0
  155. package/src/components/layout/Sidebar.tsx +313 -0
  156. package/src/components/layout/TitleBar.tsx +190 -0
  157. package/src/components/navigation/CommandPalette.tsx +233 -0
  158. package/src/components/navigation/KeyboardShortcutsModal.tsx +173 -0
  159. package/src/components/sessions/ChangeItem.tsx +408 -0
  160. package/src/components/sessions/ChangeViewer.tsx +1155 -0
  161. package/src/components/sessions/DocumentComparisonModal.tsx +314 -0
  162. package/src/components/sessions/ProcessingOptions.tsx +297 -0
  163. package/src/components/sessions/ReplacementsTab.tsx +438 -0
  164. package/src/components/sessions/RevisionHandlingOptions.tsx +87 -0
  165. package/src/components/sessions/SessionManager.tsx +188 -0
  166. package/src/components/sessions/StylesEditor.tsx +1335 -0
  167. package/src/components/sessions/TabContainer.tsx +151 -0
  168. package/src/components/sessions/VirtualSessionList.tsx +157 -0
  169. package/src/components/sessions/sessionToProcessorManager.tsx +420 -0
  170. package/src/components/settings/CertificateManager.tsx +410 -0
  171. package/src/components/settings/SegmentedControl.tsx +88 -0
  172. package/src/components/settings/SettingRow.tsx +52 -0
  173. package/src/contexts/GlobalStatsContext.tsx +396 -0
  174. package/src/contexts/SessionContext.tsx +2129 -0
  175. package/src/contexts/ThemeContext.tsx +428 -0
  176. package/src/contexts/UserSettingsContext.tsx +290 -0
  177. package/src/contexts/__tests__/GlobalStatsContext.test.tsx +390 -0
  178. package/src/global.d.ts +273 -0
  179. package/src/hooks/useDocumentQueue.tsx +210 -0
  180. package/src/hooks/useToast.tsx +55 -0
  181. package/src/main.tsx +10 -0
  182. package/src/pages/Analytics.tsx +386 -0
  183. package/src/pages/CurrentSession.tsx +1174 -0
  184. package/src/pages/Dashboard.tsx +319 -0
  185. package/src/pages/Documents.tsx +317 -0
  186. package/src/pages/Projects.tsx +250 -0
  187. package/src/pages/Reporting.tsx +386 -0
  188. package/src/pages/Search.tsx +349 -0
  189. package/src/pages/Sessions.tsx +285 -0
  190. package/src/pages/Settings.tsx +2662 -0
  191. package/src/services/HyperlinkService.ts +1085 -0
  192. package/src/services/document/DocXMLaterProcessor.ts +617 -0
  193. package/src/services/document/DocumentProcessingComparison.ts +856 -0
  194. package/src/services/document/DocumentSnapshotService.ts +575 -0
  195. package/src/services/document/WordDocumentProcessor.ts +10509 -0
  196. package/src/services/document/__tests__/DocXMLaterProcessor.hyperlinks.test.md +311 -0
  197. package/src/services/document/__tests__/WordDocumentProcessor.integration.test.ts +515 -0
  198. package/src/services/document/__tests__/WordDocumentProcessor.test.ts +812 -0
  199. package/src/services/document/blanklines/BlankLineManager.ts +658 -0
  200. package/src/services/document/blanklines/__tests__/paragraphChecks.test.ts +281 -0
  201. package/src/services/document/blanklines/helpers/blankLineInsertion.ts +87 -0
  202. package/src/services/document/blanklines/helpers/blankLineSnapshot.ts +251 -0
  203. package/src/services/document/blanklines/helpers/clearCustom.ts +121 -0
  204. package/src/services/document/blanklines/helpers/contextChecks.ts +117 -0
  205. package/src/services/document/blanklines/helpers/imageChecks.ts +51 -0
  206. package/src/services/document/blanklines/helpers/paragraphChecks.ts +236 -0
  207. package/src/services/document/blanklines/helpers/removeBlanksBetweenListItems.ts +91 -0
  208. package/src/services/document/blanklines/helpers/removeTrailingBlanks.ts +35 -0
  209. package/src/services/document/blanklines/helpers/tableGuards.ts +21 -0
  210. package/src/services/document/blanklines/index.ts +67 -0
  211. package/src/services/document/blanklines/rules/additionRules.ts +337 -0
  212. package/src/services/document/blanklines/rules/indentationRules.ts +317 -0
  213. package/src/services/document/blanklines/rules/removalRules.ts +362 -0
  214. package/src/services/document/blanklines/rules/ruleTypes.ts +92 -0
  215. package/src/services/document/blanklines/types.ts +29 -0
  216. package/src/services/document/helpers/ImageBorderCropper.ts +377 -0
  217. package/src/services/document/helpers/__tests__/whitespace.test.ts +272 -0
  218. package/src/services/document/helpers/whitespace.ts +117 -0
  219. package/src/services/document/list/ListNormalizer.ts +947 -0
  220. package/src/services/document/list/index.ts +45 -0
  221. package/src/services/document/list/list-detection.ts +275 -0
  222. package/src/services/document/list/list-types.ts +162 -0
  223. package/src/services/document/processors/HyperlinkProcessor.ts +370 -0
  224. package/src/services/document/processors/ListProcessor.ts +257 -0
  225. package/src/services/document/processors/StructureProcessor.ts +176 -0
  226. package/src/services/document/processors/StyleProcessor.ts +389 -0
  227. package/src/services/document/processors/TableProcessor.ts +2238 -0
  228. package/src/services/document/processors/__tests__/HyperlinkProcessor.test.ts +314 -0
  229. package/src/services/document/processors/__tests__/ListProcessor.test.ts +291 -0
  230. package/src/services/document/processors/__tests__/StructureProcessor.test.ts +257 -0
  231. package/src/services/document/processors/__tests__/TableProcessor.hlp-tips-bullets.test.ts +459 -0
  232. package/src/services/document/processors/__tests__/TableProcessor.test.ts +1604 -0
  233. package/src/services/document/processors/index.ts +28 -0
  234. package/src/services/document/types/docx-processing.ts +310 -0
  235. package/src/services/editor/EditorActionHandlers.ts +901 -0
  236. package/src/services/editor/index.ts +13 -0
  237. package/src/setupTests.ts +47 -0
  238. package/src/styles/global.css +782 -0
  239. package/src/types/backup.ts +132 -0
  240. package/src/types/dictionary.ts +125 -0
  241. package/src/types/document-processing.ts +331 -0
  242. package/src/types/docxmlater-augments.d.ts +142 -0
  243. package/src/types/editor.ts +280 -0
  244. package/src/types/electron.ts +340 -0
  245. package/src/types/globalStats.ts +155 -0
  246. package/src/types/hyperlink.ts +471 -0
  247. package/src/types/operations.ts +354 -0
  248. package/src/types/session.ts +427 -0
  249. package/src/types/settings.ts +112 -0
  250. package/src/utils/MemoryMonitor.ts +248 -0
  251. package/src/utils/cn.ts +6 -0
  252. package/src/utils/colorConvert.ts +306 -0
  253. package/src/utils/diffUtils.ts +347 -0
  254. package/src/utils/documentUtils.ts +202 -0
  255. package/src/utils/electronGuard.ts +62 -0
  256. package/src/utils/indexedDB.ts +915 -0
  257. package/src/utils/logger.ts +717 -0
  258. package/src/utils/pathSecurity.ts +232 -0
  259. package/src/utils/pathValidator.ts +236 -0
  260. package/src/utils/processingTimeEstimator.ts +153 -0
  261. package/src/utils/safeJsonParse.ts +62 -0
  262. package/src/utils/textSanitizer.ts +162 -0
  263. package/src/utils/urlHelpers.ts +304 -0
  264. package/src/utils/urlPatterns.ts +198 -0
  265. package/src/utils/urlSanitizer.ts +152 -0
  266. package/src/vite-env.d.ts +11 -0
  267. package/tsconfig.electron.json +19 -0
  268. package/tsconfig.json +36 -0
  269. package/tsconfig.node.json +12 -0
  270. package/typedoc.json +45 -0
  271. package/vite.config.ts +152 -0
@@ -0,0 +1,538 @@
1
+ # Documentation Hub API Documentation
2
+
3
+ Professional API documentation for the Documentation Hub DOCX processing system.
4
+
5
+ ## Overview
6
+
7
+ This directory contains comprehensive API documentation for the Documentation Hub's document processing capabilities, powered by the custom-built docxmlater library.
8
+
9
+ ### What's Inside
10
+
11
+ - **[API Reference](./API_REFERENCE.md)** - Complete method reference with examples for all 29 public methods
12
+ - **[Type Definitions](./TYPE_DEFINITIONS.md)** - TypeScript type definitions guide with usage examples
13
+ - **[TypeDoc Configuration](../../typedoc.json)** - Configuration for generating HTML documentation
14
+
15
+ ---
16
+
17
+ ## Quick Start
18
+
19
+ ### Installation
20
+
21
+ The API is included in the Documentation Hub application. For external use:
22
+
23
+ ```bash
24
+ npm install docxmlater
25
+ ```
26
+
27
+ ### Basic Usage
28
+
29
+ ```typescript
30
+ import { DocXMLaterProcessor } from '@/services/document/DocXMLaterProcessor';
31
+
32
+ // Create processor instance
33
+ const processor = new DocXMLaterProcessor();
34
+
35
+ // Load document
36
+ const loadResult = await processor.loadFromFile('./document.docx');
37
+
38
+ if (loadResult.success) {
39
+ const doc = loadResult.data;
40
+
41
+ // Modify hyperlinks
42
+ const urlMap = new Map([
43
+ ['http://old-site.com', 'https://new-site.com']
44
+ ]);
45
+ await processor.updateHyperlinkUrls(doc, urlMap);
46
+
47
+ // Save document
48
+ await processor.saveToFile(doc, './output.docx');
49
+
50
+ // Clean up
51
+ doc.dispose();
52
+ }
53
+ ```
54
+
55
+ ---
56
+
57
+ ## API Categories
58
+
59
+ ### 📁 Document I/O (4 methods)
60
+
61
+ Load, save, and convert documents between file paths and buffers.
62
+
63
+ | Method | Description |
64
+ |--------|-------------|
65
+ | `loadFromFile()` | Load document from file path |
66
+ | `loadFromBuffer()` | Load document from Buffer |
67
+ | `saveToFile()` | Save document to file path |
68
+ | `toBuffer()` | Convert document to Buffer |
69
+
70
+ **Use Cases:** File operations, HTTP endpoints, database storage
71
+
72
+ ---
73
+
74
+ ### 🎨 Style Operations (2 methods)
75
+
76
+ Create and apply custom styles to paragraphs.
77
+
78
+ | Method | Description |
79
+ |--------|-------------|
80
+ | `createDocumentWithStyle()` | Create document with custom style |
81
+ | `applyStyleToParagraphs()` | Apply style with pattern matching |
82
+
83
+ **Use Cases:** Consistent branding, template generation, formatting automation
84
+
85
+ ---
86
+
87
+ ### 📊 Table Operations (3 methods)
88
+
89
+ Create and format tables with borders, shading, and content.
90
+
91
+ | Method | Description |
92
+ |--------|-------------|
93
+ | `createTable()` | Create formatted table |
94
+ | `setCellShading()` | Set cell background color |
95
+ | `addCellContent()` | Add formatted text to cells |
96
+
97
+ **Use Cases:** Data presentation, reports, structured layouts
98
+
99
+ ---
100
+
101
+ ### 📝 Paragraph Formatting (2 methods)
102
+
103
+ Control paragraph alignment, indentation, and spacing.
104
+
105
+ | Method | Description |
106
+ |--------|-------------|
107
+ | `createParagraph()` | Create formatted paragraph |
108
+ | `setIndentation()` | Set paragraph indentation |
109
+
110
+ **Use Cases:** Document structure, text formatting, layout control
111
+
112
+ ---
113
+
114
+ ### 🔄 High-Level Operations (3 methods)
115
+
116
+ Atomic operations for reading and modifying documents.
117
+
118
+ | Method | Description |
119
+ |--------|-------------|
120
+ | `readDocument()` | Extract document structure |
121
+ | `modifyDocument()` | Atomic load-modify-save |
122
+ | `modifyDocumentBuffer()` | Modify from Buffer |
123
+
124
+ **Use Cases:** Analysis, bulk processing, automated workflows
125
+
126
+ ---
127
+
128
+ ### 🔗 Hyperlink Operations (5 methods)
129
+
130
+ Extract, update, and modify hyperlinks with comprehensive coverage.
131
+
132
+ | Method | Description | Performance |
133
+ |--------|-------------|-------------|
134
+ | `extractHyperlinks()` | Extract all hyperlinks | 20-30% faster |
135
+ | `updateHyperlinkUrls()` | Batch URL updates | 30-50% faster |
136
+ | `modifyHyperlinks()` | Transform URLs | Optimized |
137
+ | `appendContentIdToTheSourceUrls()` | Add #content to theSource | Batch API |
138
+ | `replaceHyperlinkText()` | Replace display text | Pattern-based |
139
+
140
+ **Use Cases:** Domain migration, URL sanitization, link management
141
+
142
+ **Performance Benefits:**
143
+ - 89% code reduction vs manual extraction
144
+ - Comprehensive coverage (body, tables, headers, footers)
145
+ - Defensive text sanitization prevents XML corruption
146
+
147
+ ---
148
+
149
+ ### 🔍 Search & Replace (2 methods)
150
+
151
+ Find and replace text with regex support.
152
+
153
+ | Method | Description |
154
+ |--------|-------------|
155
+ | `findText()` | Find text with options |
156
+ | `replaceText()` | Replace text patterns |
157
+
158
+ **Use Cases:** Template processing, content updates, data replacement
159
+
160
+ ---
161
+
162
+ ### 📈 Document Statistics (4 methods)
163
+
164
+ Analyze document size, counts, and composition.
165
+
166
+ | Method | Description |
167
+ |--------|-------------|
168
+ | `getWordCount()` | Count words |
169
+ | `getCharacterCount()` | Count characters |
170
+ | `estimateSize()` | Estimate file size |
171
+ | `getSizeStats()` | Detailed statistics |
172
+
173
+ **Use Cases:** Content analysis, size validation, reporting
174
+
175
+ ---
176
+
177
+ ### 🛠️ Utilities (4 methods)
178
+
179
+ Helper functions for document creation and unit conversion.
180
+
181
+ | Method | Description |
182
+ |--------|-------------|
183
+ | `createNewDocument()` | Create blank document |
184
+ | `inchesToTwips()` | Convert inches to twips |
185
+ | `pointsToTwips()` | Convert points to twips |
186
+ | `twipsToPoints()` | Convert twips to points |
187
+
188
+ **Conversion Reference:**
189
+ - 1 inch = 1440 twips
190
+ - 1 point = 20 twips
191
+ - 72 points = 1 inch
192
+
193
+ ---
194
+
195
+ ## Common Patterns
196
+
197
+ ### Pattern 1: Load, Modify, Save
198
+
199
+ ```typescript
200
+ const processor = new DocXMLaterProcessor();
201
+
202
+ // Load document
203
+ const loadResult = await processor.loadFromFile('input.docx');
204
+ if (!loadResult.success) {
205
+ console.error(loadResult.error);
206
+ return;
207
+ }
208
+
209
+ const doc = loadResult.data;
210
+
211
+ // Make modifications
212
+ await processor.replaceText(doc, 'old', 'new');
213
+
214
+ // Save document
215
+ await processor.saveToFile(doc, 'output.docx');
216
+
217
+ // Clean up
218
+ doc.dispose();
219
+ ```
220
+
221
+ ---
222
+
223
+ ### Pattern 2: Batch Hyperlink Updates
224
+
225
+ ```typescript
226
+ const processor = new DocXMLaterProcessor();
227
+
228
+ await processor.modifyDocument('./document.docx', async (doc) => {
229
+ // Create URL mapping
230
+ const urlMap = new Map([
231
+ ['http://old-domain.com', 'https://new-domain.com'],
232
+ ['http://legacy.site.com', 'https://site.com']
233
+ ]);
234
+
235
+ // Batch update (30-50% faster)
236
+ const result = await processor.updateHyperlinkUrls(doc, urlMap);
237
+
238
+ console.log(`Updated ${result.data?.modifiedHyperlinks} hyperlinks`);
239
+ });
240
+ ```
241
+
242
+ ---
243
+
244
+ ### Pattern 3: HTTP Document Processing
245
+
246
+ ```typescript
247
+ app.post('/api/process', async (req, res) => {
248
+ const processor = new DocXMLaterProcessor();
249
+ const inputBuffer = req.file.buffer;
250
+
251
+ const result = await processor.modifyDocumentBuffer(inputBuffer, async (doc) => {
252
+ // Apply watermark
253
+ await processor.createParagraph(doc, 'CONFIDENTIAL', {
254
+ alignment: 'center',
255
+ color: '#FF0000',
256
+ fontSize: 48
257
+ });
258
+
259
+ // Replace placeholders
260
+ doc.replaceText('{{DATE}}', new Date().toLocaleDateString());
261
+ });
262
+
263
+ if (result.success) {
264
+ res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document');
265
+ res.send(result.data);
266
+ } else {
267
+ res.status(500).json({ error: result.error });
268
+ }
269
+ });
270
+ ```
271
+
272
+ ---
273
+
274
+ ### Pattern 4: Template Processing
275
+
276
+ ```typescript
277
+ const processor = new DocXMLaterProcessor();
278
+
279
+ await processor.modifyDocument('./template.docx', async (doc) => {
280
+ // Replace all placeholders
281
+ const replacements = {
282
+ '{{COMPANY_NAME}}': 'Acme Corporation',
283
+ '{{YEAR}}': '2025',
284
+ '{{CLIENT_NAME}}': 'John Doe',
285
+ '{{PROJECT_NAME}}': 'Alpha Project'
286
+ };
287
+
288
+ for (const [find, replace] of Object.entries(replacements)) {
289
+ doc.replaceText(find, replace);
290
+ }
291
+
292
+ // Update all hyperlinks
293
+ const urlMap = new Map([
294
+ ['https://example.com', 'https://acme-corp.com']
295
+ ]);
296
+ doc.updateHyperlinkUrls(urlMap);
297
+ });
298
+ ```
299
+
300
+ ---
301
+
302
+ ## Error Handling
303
+
304
+ All methods return `ProcessorResult<T>` with consistent error handling:
305
+
306
+ ```typescript
307
+ const result = await processor.loadFromFile('file.docx');
308
+
309
+ // Check for errors
310
+ if (!result.success) {
311
+ console.error('Error:', result.error);
312
+
313
+ // Check for warnings
314
+ if (result.warnings) {
315
+ result.warnings.forEach(w => console.warn('Warning:', w));
316
+ }
317
+
318
+ return;
319
+ }
320
+
321
+ // Safe to use result.data
322
+ const doc = result.data;
323
+ ```
324
+
325
+ ---
326
+
327
+ ## Memory Management
328
+
329
+ Always dispose documents to prevent memory leaks:
330
+
331
+ ```typescript
332
+ // Manual disposal
333
+ const result = await processor.loadFromFile('file.docx');
334
+ if (result.success) {
335
+ const doc = result.data;
336
+ try {
337
+ // Work with document...
338
+ } finally {
339
+ doc.dispose(); // Always dispose
340
+ }
341
+ }
342
+
343
+ // Automatic disposal with high-level methods
344
+ await processor.modifyDocument('./file.docx', async (doc) => {
345
+ // Document automatically disposed after this function
346
+ doc.replaceText('old', 'new');
347
+ });
348
+ ```
349
+
350
+ ---
351
+
352
+ ## Performance Tips
353
+
354
+ ### 1. Use Batch Operations
355
+
356
+ For hyperlink updates, prefer `updateHyperlinkUrls()` over `modifyHyperlinks()`:
357
+
358
+ ```typescript
359
+ // ✅ FAST: Batch update (30-50% faster)
360
+ const urlMap = new Map([
361
+ ['http://old.com', 'https://new.com']
362
+ ]);
363
+ await processor.updateHyperlinkUrls(doc, urlMap);
364
+
365
+ // ⚠️ SLOWER: Use only for complex transformations
366
+ await processor.modifyHyperlinks(doc, (url) => {
367
+ // Custom transformation logic
368
+ return url.replace('http://', 'https://');
369
+ });
370
+ ```
371
+
372
+ ### 2. Use extractHyperlinks() for Analysis
373
+
374
+ The built-in extraction is 20-30% faster with comprehensive coverage:
375
+
376
+ ```typescript
377
+ // ✅ FAST: Uses built-in API (89% code reduction)
378
+ const hyperlinks = await processor.extractHyperlinks(doc);
379
+
380
+ // Comprehensive coverage: body, tables, headers, footers
381
+ console.log(`Found ${hyperlinks.length} hyperlinks`);
382
+ ```
383
+
384
+ ### 3. Use High-Level Methods for Atomic Operations
385
+
386
+ ```typescript
387
+ // ✅ ATOMIC: Automatic cleanup and error handling
388
+ await processor.modifyDocument('./file.docx', async (doc) => {
389
+ doc.replaceText('old', 'new');
390
+ });
391
+
392
+ // ⚠️ MANUAL: Must handle cleanup yourself
393
+ const result = await processor.loadFromFile('./file.docx');
394
+ try {
395
+ doc.replaceText('old', 'new');
396
+ await processor.saveToFile(doc, './file.docx');
397
+ } finally {
398
+ doc.dispose();
399
+ }
400
+ ```
401
+
402
+ ---
403
+
404
+ ## TypeScript Support
405
+
406
+ Full TypeScript definitions with strict type checking:
407
+
408
+ ```typescript
409
+ import {
410
+ DocXMLaterProcessor,
411
+ ProcessorResult,
412
+ TextStyle,
413
+ ParagraphStyle,
414
+ StyleApplication
415
+ } from '@/services/document/DocXMLaterProcessor';
416
+
417
+ // Type-safe style definition
418
+ const style: TextStyle & ParagraphStyle = {
419
+ fontFamily: 'Arial',
420
+ fontSize: 12,
421
+ bold: true,
422
+ alignment: 'left',
423
+ indentLeft: 720 // TypeScript validates this is a number
424
+ };
425
+
426
+ // Type-safe result handling
427
+ const result: ProcessorResult<Document> = await processor.loadFromFile('file.docx');
428
+
429
+ if (result.success) {
430
+ // TypeScript knows result.data exists
431
+ const doc = result.data;
432
+ }
433
+ ```
434
+
435
+ ---
436
+
437
+ ## Generating API Documentation
438
+
439
+ ### Using TypeDoc
440
+
441
+ The project includes TypeDoc configuration for generating HTML documentation:
442
+
443
+ ```bash
444
+ # Install TypeDoc (if not already installed)
445
+ npm install --save-dev typedoc
446
+
447
+ # Generate HTML documentation
448
+ npm run docs:generate
449
+
450
+ # Watch mode for development
451
+ npm run docs:watch
452
+ ```
453
+
454
+ Generated documentation will be in `docs/api/` directory.
455
+
456
+ ### TypeDoc Configuration
457
+
458
+ Configuration is in `typedoc.json`:
459
+ - Entry points: DocXMLaterProcessor, types, utilities
460
+ - Output: `docs/api/`
461
+ - Organized by groups (Document I/O, Style Operations, etc.)
462
+ - Includes examples and cross-references
463
+
464
+ ---
465
+
466
+ ## API Coverage
467
+
468
+ ### Total Methods: 29
469
+
470
+ | Category | Methods | Coverage |
471
+ |----------|---------|----------|
472
+ | Document I/O | 4 | 100% |
473
+ | Style Operations | 2 | 100% |
474
+ | Table Operations | 3 | 100% |
475
+ | Paragraph Formatting | 2 | 100% |
476
+ | High-Level Operations | 3 | 100% |
477
+ | Hyperlink Operations | 5 | 100% |
478
+ | Search & Replace | 2 | 100% |
479
+ | Document Statistics | 4 | 100% |
480
+ | Utilities | 4 | 100% |
481
+
482
+ **JSDoc Coverage:** 100% (all methods documented)
483
+ **Type Coverage:** 100% (all parameters and returns typed)
484
+ **Examples:** 29+ code examples
485
+
486
+ ---
487
+
488
+ ## Related Documentation
489
+
490
+ - **[API Reference](./API_REFERENCE.md)** - Detailed method reference
491
+ - **[Type Definitions](./TYPE_DEFINITIONS.md)** - TypeScript types guide
492
+ - **[docxmlater Library](https://github.com/ItMeDiaTech/docXMLater)** - Underlying DOCX library
493
+ - **[Main README](../../README.md)** - Project overview
494
+
495
+
496
+ ---
497
+
498
+ ## Version History
499
+
500
+ ### Version 1.0.40 (2025-11-13)
501
+
502
+ **Added:**
503
+ - ✅ Comprehensive JSDoc comments for all 29 public methods
504
+ - ✅ API Reference documentation with examples
505
+ - ✅ TypeScript Type Definitions guide
506
+ - ✅ TypeDoc configuration for HTML generation
507
+ - ✅ Performance metrics and optimization notes
508
+
509
+ **Documentation Coverage:**
510
+ - 29 methods with detailed JSDoc
511
+ - 50+ code examples across all documentation
512
+ - Type definitions for all parameters and returns
513
+ - Performance benchmarks for key operations
514
+
515
+ ---
516
+
517
+ ## Support
518
+
519
+ ### Documentation
520
+
521
+ - **API Reference:** [./API_REFERENCE.md](./API_REFERENCE.md)
522
+ - **Type Definitions:** [./TYPE_DEFINITIONS.md](./TYPE_DEFINITIONS.md)
523
+ - **Examples:** See individual method documentation
524
+
525
+ ### Issues
526
+
527
+ - **Project Issues:** [GitHub Issues](https://github.com/ItMeDiaTech/Documentation_Hub/issues)
528
+ - **Library Issues:** [docxmlater Issues](https://github.com/ItMeDiaTech/docXMLater/issues)
529
+
530
+ ### Contact
531
+
532
+ - **Repository:** https://github.com/ItMeDiaTech/Documentation_Hub
533
+ - **Version:** 1.0.40
534
+ - **Last Updated:** 2025-11-13
535
+
536
+ ---
537
+
538
+ **Built with ❤️ by the Documentation Hub Team**