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.
- package/.eslintrc.json +43 -0
- package/.github/workflows/build.yml +64 -0
- package/.github/workflows/ci.yml +39 -0
- package/.vscode/extensions.json +3 -0
- package/Current.md +97 -0
- package/DocHub_Image.png +0 -0
- package/README.md +666 -0
- package/USER_GUIDE.md +1173 -0
- package/Updater.md +311 -0
- package/build/256x256.png +0 -0
- package/build/512x512.png +0 -0
- package/build/app-update.yml +4 -0
- package/build/create-icon.js +208 -0
- package/build/icon.ico +0 -0
- package/build/icon.png +0 -0
- package/build/icon_1024x1024.png +0 -0
- package/dist/assets/Analytics-BpsG9895.js +1 -0
- package/dist/assets/Card-IAZin8kp.js +1 -0
- package/dist/assets/CurrentSession-B-rFkHvf.js +12 -0
- package/dist/assets/Dashboard-C_5gMb0q.js +1 -0
- package/dist/assets/Documents-CqZ25axS.js +1 -0
- package/dist/assets/Input-l89xwXBi.js +1 -0
- package/dist/assets/Reporting-DqdHJY_a.js +1 -0
- package/dist/assets/Search-XNbu5z_3.js +1 -0
- package/dist/assets/SessionManager-lH9hZfzH.js +1 -0
- package/dist/assets/Sessions-ClZOPYNc.js +1 -0
- package/dist/assets/Settings-DUEHGURa.js +11 -0
- package/dist/assets/index-8xUe8ptc.js +24 -0
- package/dist/assets/index-RYyJqF7O.css +1 -0
- package/dist/assets/path-BkOl0AGO.js +1 -0
- package/dist/assets/promises-ID_B9S-h.js +1 -0
- package/dist/assets/urlHelpers-TvgahX0r.js +1 -0
- package/dist/assets/useToast-yRSO1dkm.js +1 -0
- package/dist/assets/vendor-charts-RkGK5ROP.js +36 -0
- package/dist/assets/vendor-db-l0sNRNKZ.js +1 -0
- package/dist/assets/vendor-react-BVZ_anCF.js +4 -0
- package/dist/assets/vendor-search-Dw8P0qyA.js +1 -0
- package/dist/assets/vendor-ui-BU7NfluV.js +53 -0
- package/dist/electron/PowerAutomateApiService-LfW09ZGr.js +147 -0
- package/dist/electron/main-CXkNtyv-.js +19789 -0
- package/dist/electron/main.js +5 -0
- package/dist/electron/preload.js +1 -0
- package/dist/icon.png +0 -0
- package/dist/index.html +27 -0
- package/docs/CODEBASE_ANALYSIS_REPORT.md +309 -0
- package/docs/DEBUG_LOGGING_GUIDE.md +244 -0
- package/docs/README.md +115 -0
- package/docs/TOC_WIRING_GUIDE.md +344 -0
- package/docs/analysis/Bullet_Symbol_Bug_Analysis.md +136 -0
- package/docs/analysis/DOCXMLATER_ANALYSIS_SUMMARY.txt +169 -0
- package/docs/analysis/Document_Processing_Issues_Analysis.md +704 -0
- package/docs/analysis/FIELD_PRESERVATION_ANALYSIS.md +1200 -0
- package/docs/analysis/INDENTATION_PRESERVE_ANALYSIS.md +181 -0
- package/docs/analysis/INDENTATION_PRESERVE_IMPLEMENTATION.md +207 -0
- package/docs/analysis/List_Implementation.md +206 -0
- package/docs/analysis/List_Implementation_Accuracy_Report.md +366 -0
- package/docs/analysis/PROCESSING_OPTIONS_UI_UPDATES.md +220 -0
- package/docs/analysis/RefactorStyles.md +852 -0
- package/docs/analysis/STYLE_PARAMETER_ENHANCEMENT.md +143 -0
- package/docs/analysis/docxmlater-comparison-todo-2025-11-13.md +636 -0
- package/docs/analysis/docxmlater-implementation-analysis-2025-11-13.md +340 -0
- package/docs/analysis/docxmlater-template_ui-integration-analysis.md +263 -0
- package/docs/analysis/github-issues-to-create.md +237 -0
- package/docs/api/API_README.md +538 -0
- package/docs/api/API_REFERENCE.md +751 -0
- package/docs/api/TYPE_DEFINITIONS.md +869 -0
- package/docs/architecture/FONT_EMBEDDING_GUIDE.md +318 -0
- package/docs/architecture/docxmlater-functions-and-structure.md +726 -0
- package/docs/docxmlater-readme.md +1341 -0
- package/docs/fixes/EXECUTION_LOG_TEST_BASE.md +573 -0
- package/docs/fixes/HYPERLINK_TEXT_SANITIZATION.md +253 -0
- package/docs/fixes/README.md +37 -0
- package/docs/github-issues/issue-1-body.md +125 -0
- package/docs/github-issues/issue-10-body.md +850 -0
- package/docs/github-issues/issue-2-body.md +200 -0
- package/docs/github-issues/issue-3-body.md +270 -0
- package/docs/github-issues/issue-4-body.md +169 -0
- package/docs/github-issues/issue-5-body.md +173 -0
- package/docs/github-issues/issue-6-body.md +158 -0
- package/docs/github-issues/issue-7-body.md +171 -0
- package/docs/github-issues/issue-8-body.md +407 -0
- package/docs/github-issues/issue-9-body.md +515 -0
- package/docs/github-issues/issue-tracker.md +274 -0
- package/docs/github-issues/predictive-analysis-2025-10-18.md +2131 -0
- package/docs/implementation/List_Framework_Refactor_Plan.md +336 -0
- package/docs/implementation/PRIMARY_TEXT_COLOR_FEATURE.md +217 -0
- package/docs/implementation/RELEASE_PLAN_v2.1.0.md +362 -0
- package/docs/implementation/RefactorStyles.md +588 -0
- package/docs/implementation/implement-plan.md +489 -0
- package/docs/implementation/missing-helpers-implementation.md +391 -0
- package/docs/implementation/refactor-plan.md +520 -0
- package/docs/implementation/session-implementation-complete.md +233 -0
- package/docs/implementation/session-management-plan.md +250 -0
- package/docs/setup-checklist.md +77 -0
- package/docs/versions/changelog.md +345 -0
- package/electron/customUpdater.ts +656 -0
- package/electron/main.ts +2441 -0
- package/electron/memoryConfig.ts +187 -0
- package/electron/preload.ts +394 -0
- package/electron/proxyConfig.ts +340 -0
- package/electron/services/BackupService.ts +452 -0
- package/electron/services/DictionaryService.ts +402 -0
- package/electron/services/LocalDictionaryLookupService.ts +147 -0
- package/electron/services/PowerAutomateApiService.ts +231 -0
- package/electron/services/SharePointSyncService.ts +474 -0
- package/electron/windowsCertStore.ts +427 -0
- package/electron/zscalerConfig.ts +381 -0
- package/eslint.config.js +92 -0
- package/jest.config.js +52 -0
- package/package.json +214 -0
- package/postcss.config.mjs +6 -0
- package/public/icon.png +0 -0
- package/publish-release.ps1 +5 -0
- package/renovate.json +30 -0
- package/src/App.tsx +216 -0
- package/src/__mocks__/p-limit.js +12 -0
- package/src/__mocks__/styleMock.js +1 -0
- package/src/components/common/BugReportButton.tsx +44 -0
- package/src/components/common/BugReportDialog.tsx +193 -0
- package/src/components/common/Button.tsx +153 -0
- package/src/components/common/Card.tsx +86 -0
- package/src/components/common/ColorPickerDialog.tsx +177 -0
- package/src/components/common/ConfirmDialog.tsx +96 -0
- package/src/components/common/DebugConsole.tsx +275 -0
- package/src/components/common/EmptyState.tsx +183 -0
- package/src/components/common/ErrorBoundary.tsx +98 -0
- package/src/components/common/ErrorDetailsDialog.tsx +153 -0
- package/src/components/common/ErrorFallback.tsx +218 -0
- package/src/components/common/Input.tsx +109 -0
- package/src/components/common/Skeleton.tsx +184 -0
- package/src/components/common/SplashScreen.tsx +81 -0
- package/src/components/common/Toast.tsx +155 -0
- package/src/components/common/Tooltip.tsx +79 -0
- package/src/components/common/UpdateNotification.tsx +320 -0
- package/src/components/comparison/ComparisonWindow.tsx +374 -0
- package/src/components/comparison/SideBySideDiff.tsx +486 -0
- package/src/components/comparison/index.ts +8 -0
- package/src/components/document/DocumentUploader.tsx +288 -0
- package/src/components/document/HyperlinkPreview.tsx +430 -0
- package/src/components/document/HyperlinkService.md +1484 -0
- package/src/components/document/Hyperlink_Technical_Documentation.md +496 -0
- package/src/components/document/InlineChangesView.tsx +707 -0
- package/src/components/document/ProcessingProgress.tsx +303 -0
- package/src/components/document/ProcessingResults.tsx +256 -0
- package/src/components/document/TrackedChangesDetail.tsx +530 -0
- package/src/components/document/TrackedChangesPanel.tsx +546 -0
- package/src/components/document/VirtualDocumentList.tsx +240 -0
- package/src/components/editor/DocumentEditor.tsx +723 -0
- package/src/components/editor/DocumentEditorModal.tsx +640 -0
- package/src/components/editor/EditorQuickActions.tsx +502 -0
- package/src/components/editor/EditorToolbar.tsx +312 -0
- package/src/components/editor/TableEditor.tsx +926 -0
- package/src/components/editor/index.ts +18 -0
- package/src/components/layout/Header.tsx +190 -0
- package/src/components/layout/Sidebar.tsx +313 -0
- package/src/components/layout/TitleBar.tsx +190 -0
- package/src/components/navigation/CommandPalette.tsx +233 -0
- package/src/components/navigation/KeyboardShortcutsModal.tsx +173 -0
- package/src/components/sessions/ChangeItem.tsx +408 -0
- package/src/components/sessions/ChangeViewer.tsx +1155 -0
- package/src/components/sessions/DocumentComparisonModal.tsx +314 -0
- package/src/components/sessions/ProcessingOptions.tsx +297 -0
- package/src/components/sessions/ReplacementsTab.tsx +438 -0
- package/src/components/sessions/RevisionHandlingOptions.tsx +87 -0
- package/src/components/sessions/SessionManager.tsx +188 -0
- package/src/components/sessions/StylesEditor.tsx +1335 -0
- package/src/components/sessions/TabContainer.tsx +151 -0
- package/src/components/sessions/VirtualSessionList.tsx +157 -0
- package/src/components/sessions/sessionToProcessorManager.tsx +420 -0
- package/src/components/settings/CertificateManager.tsx +410 -0
- package/src/components/settings/SegmentedControl.tsx +88 -0
- package/src/components/settings/SettingRow.tsx +52 -0
- package/src/contexts/GlobalStatsContext.tsx +396 -0
- package/src/contexts/SessionContext.tsx +2129 -0
- package/src/contexts/ThemeContext.tsx +428 -0
- package/src/contexts/UserSettingsContext.tsx +290 -0
- package/src/contexts/__tests__/GlobalStatsContext.test.tsx +390 -0
- package/src/global.d.ts +273 -0
- package/src/hooks/useDocumentQueue.tsx +210 -0
- package/src/hooks/useToast.tsx +55 -0
- package/src/main.tsx +10 -0
- package/src/pages/Analytics.tsx +386 -0
- package/src/pages/CurrentSession.tsx +1174 -0
- package/src/pages/Dashboard.tsx +319 -0
- package/src/pages/Documents.tsx +317 -0
- package/src/pages/Projects.tsx +250 -0
- package/src/pages/Reporting.tsx +386 -0
- package/src/pages/Search.tsx +349 -0
- package/src/pages/Sessions.tsx +285 -0
- package/src/pages/Settings.tsx +2662 -0
- package/src/services/HyperlinkService.ts +1085 -0
- package/src/services/document/DocXMLaterProcessor.ts +617 -0
- package/src/services/document/DocumentProcessingComparison.ts +856 -0
- package/src/services/document/DocumentSnapshotService.ts +575 -0
- package/src/services/document/WordDocumentProcessor.ts +10509 -0
- package/src/services/document/__tests__/DocXMLaterProcessor.hyperlinks.test.md +311 -0
- package/src/services/document/__tests__/WordDocumentProcessor.integration.test.ts +515 -0
- package/src/services/document/__tests__/WordDocumentProcessor.test.ts +812 -0
- package/src/services/document/blanklines/BlankLineManager.ts +658 -0
- package/src/services/document/blanklines/__tests__/paragraphChecks.test.ts +281 -0
- package/src/services/document/blanklines/helpers/blankLineInsertion.ts +87 -0
- package/src/services/document/blanklines/helpers/blankLineSnapshot.ts +251 -0
- package/src/services/document/blanklines/helpers/clearCustom.ts +121 -0
- package/src/services/document/blanklines/helpers/contextChecks.ts +117 -0
- package/src/services/document/blanklines/helpers/imageChecks.ts +51 -0
- package/src/services/document/blanklines/helpers/paragraphChecks.ts +236 -0
- package/src/services/document/blanklines/helpers/removeBlanksBetweenListItems.ts +91 -0
- package/src/services/document/blanklines/helpers/removeTrailingBlanks.ts +35 -0
- package/src/services/document/blanklines/helpers/tableGuards.ts +21 -0
- package/src/services/document/blanklines/index.ts +67 -0
- package/src/services/document/blanklines/rules/additionRules.ts +337 -0
- package/src/services/document/blanklines/rules/indentationRules.ts +317 -0
- package/src/services/document/blanklines/rules/removalRules.ts +362 -0
- package/src/services/document/blanklines/rules/ruleTypes.ts +92 -0
- package/src/services/document/blanklines/types.ts +29 -0
- package/src/services/document/helpers/ImageBorderCropper.ts +377 -0
- package/src/services/document/helpers/__tests__/whitespace.test.ts +272 -0
- package/src/services/document/helpers/whitespace.ts +117 -0
- package/src/services/document/list/ListNormalizer.ts +947 -0
- package/src/services/document/list/index.ts +45 -0
- package/src/services/document/list/list-detection.ts +275 -0
- package/src/services/document/list/list-types.ts +162 -0
- package/src/services/document/processors/HyperlinkProcessor.ts +370 -0
- package/src/services/document/processors/ListProcessor.ts +257 -0
- package/src/services/document/processors/StructureProcessor.ts +176 -0
- package/src/services/document/processors/StyleProcessor.ts +389 -0
- package/src/services/document/processors/TableProcessor.ts +2238 -0
- package/src/services/document/processors/__tests__/HyperlinkProcessor.test.ts +314 -0
- package/src/services/document/processors/__tests__/ListProcessor.test.ts +291 -0
- package/src/services/document/processors/__tests__/StructureProcessor.test.ts +257 -0
- package/src/services/document/processors/__tests__/TableProcessor.hlp-tips-bullets.test.ts +459 -0
- package/src/services/document/processors/__tests__/TableProcessor.test.ts +1604 -0
- package/src/services/document/processors/index.ts +28 -0
- package/src/services/document/types/docx-processing.ts +310 -0
- package/src/services/editor/EditorActionHandlers.ts +901 -0
- package/src/services/editor/index.ts +13 -0
- package/src/setupTests.ts +47 -0
- package/src/styles/global.css +782 -0
- package/src/types/backup.ts +132 -0
- package/src/types/dictionary.ts +125 -0
- package/src/types/document-processing.ts +331 -0
- package/src/types/docxmlater-augments.d.ts +142 -0
- package/src/types/editor.ts +280 -0
- package/src/types/electron.ts +340 -0
- package/src/types/globalStats.ts +155 -0
- package/src/types/hyperlink.ts +471 -0
- package/src/types/operations.ts +354 -0
- package/src/types/session.ts +427 -0
- package/src/types/settings.ts +112 -0
- package/src/utils/MemoryMonitor.ts +248 -0
- package/src/utils/cn.ts +6 -0
- package/src/utils/colorConvert.ts +306 -0
- package/src/utils/diffUtils.ts +347 -0
- package/src/utils/documentUtils.ts +202 -0
- package/src/utils/electronGuard.ts +62 -0
- package/src/utils/indexedDB.ts +915 -0
- package/src/utils/logger.ts +717 -0
- package/src/utils/pathSecurity.ts +232 -0
- package/src/utils/pathValidator.ts +236 -0
- package/src/utils/processingTimeEstimator.ts +153 -0
- package/src/utils/safeJsonParse.ts +62 -0
- package/src/utils/textSanitizer.ts +162 -0
- package/src/utils/urlHelpers.ts +304 -0
- package/src/utils/urlPatterns.ts +198 -0
- package/src/utils/urlSanitizer.ts +152 -0
- package/src/vite-env.d.ts +11 -0
- package/tsconfig.electron.json +19 -0
- package/tsconfig.json +36 -0
- package/tsconfig.node.json +12 -0
- package/typedoc.json +45 -0
- 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**
|