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,28 @@
1
+ /**
2
+ * Document Processors - Focused modules for WordDocumentProcessor
3
+ *
4
+ * This module exports specialized processors that handle specific aspects
5
+ * of document processing. These were refactored from the monolithic
6
+ * WordDocumentProcessor.ts (5400+ lines) into focused, testable modules.
7
+ *
8
+ * Processors:
9
+ * - HyperlinkProcessor: Hyperlink manipulation, API integration, URL updates
10
+ * - TableProcessor: Table formatting, uniformity, Header2 handling
11
+ * - ListProcessor: List bullets, numbering, indentation
12
+ * - StyleProcessor: Heading styles, text formatting, style definitions
13
+ * - StructureProcessor: Blank lines, paragraphs, document structure
14
+ */
15
+
16
+ export { HyperlinkProcessor, hyperlinkProcessor } from "./HyperlinkProcessor";
17
+ export type { UrlUpdateResult, HyperlinkProcessingResult, HyperlinkProcessingOptions } from "./HyperlinkProcessor";
18
+
19
+ export { TableProcessor, tableProcessor } from "./TableProcessor";
20
+ export type { TableShadingSettings, TableFormattingResult, Header2TableValidationResult, HLPTableAnalysis, HLPVariant, HLPTableProcessingResult } from "./TableProcessor";
21
+
22
+ export { ListProcessor, listProcessor } from "./ListProcessor";
23
+ export type { ListIndentationLevel, ListBulletSettings, ListProcessingResult } from "./ListProcessor";
24
+
25
+ export { StyleProcessor, styleProcessor } from "./StyleProcessor";
26
+ export type { SessionStyle, StyleApplicationResult } from "./StyleProcessor";
27
+
28
+ export { StructureProcessor, structureProcessor } from "./StructureProcessor";
@@ -0,0 +1,310 @@
1
+ /**
2
+ * Type definitions for DOCX processing abstraction layer
3
+ */
4
+
5
+ // ========== Document Operations ==========
6
+
7
+ export enum DocumentOperation {
8
+ CREATE = 'create',
9
+ READ = 'read',
10
+ MODIFY = 'modify',
11
+ MODIFY_TEMPLATE = 'modify_template',
12
+ MODIFY_XML = 'modify_xml',
13
+ }
14
+
15
+ // ========== Style Definitions ==========
16
+
17
+ export interface TextStyle {
18
+ fontFamily?: string;
19
+ fontSize?: number; // in points
20
+ bold?: boolean;
21
+ italic?: boolean;
22
+ underline?: boolean;
23
+ preserveBold?: boolean; // Optional: true = preserve existing bold (ignore bold property)
24
+ preserveItalic?: boolean; // Optional: true = preserve existing italic (ignore italic property)
25
+ preserveUnderline?: boolean; // Optional: true = preserve existing underline (ignore underline property)
26
+ color?: string; // hex color (e.g., "FF0000")
27
+ highlight?: string; // highlight color
28
+ }
29
+
30
+ export interface ParagraphStyle {
31
+ alignment?: 'left' | 'center' | 'right' | 'justify';
32
+ indentLeft?: number; // in twips (1/20th of a point)
33
+ indentRight?: number;
34
+ indentFirstLine?: number;
35
+ spaceBefore?: number;
36
+ spaceAfter?: number;
37
+ lineSpacing?: number;
38
+ keepNext?: boolean;
39
+ keepLines?: boolean;
40
+ }
41
+
42
+ export interface NumberingStyle {
43
+ level: number; // 0-8 (9 levels)
44
+ format: 'bullet' | 'decimal' | 'lowerLetter' | 'upperLetter' | 'lowerRoman' | 'upperRoman';
45
+ text?: string; // for bullets, the character to use
46
+ alignment?: 'left' | 'center' | 'right';
47
+ indentLeft?: number;
48
+ indentHanging?: number;
49
+ }
50
+
51
+ // ========== Document Structure ==========
52
+
53
+ export interface DocxDocument {
54
+ styles: DocxStyles;
55
+ numbering: DocxNumbering;
56
+ fonts: DocxFonts;
57
+ content: DocxContent;
58
+ }
59
+
60
+ export interface DocxStyles {
61
+ paragraphStyles: Map<string, ParagraphStyle>;
62
+ characterStyles: Map<string, TextStyle>;
63
+ defaultParagraphStyle?: ParagraphStyle;
64
+ defaultCharacterStyle?: TextStyle;
65
+ }
66
+
67
+ export interface DocxNumbering {
68
+ abstractNumberings: Map<string, NumberingDefinition>;
69
+ numberingInstances: Map<string, string>; // instanceId -> abstractNumId
70
+ }
71
+
72
+ export interface NumberingDefinition {
73
+ id: string;
74
+ levels: NumberingStyle[];
75
+ }
76
+
77
+ export interface DocxFonts {
78
+ fonts: Map<string, FontDefinition>;
79
+ }
80
+
81
+ export interface FontDefinition {
82
+ name: string;
83
+ charset?: string;
84
+ family?: string;
85
+ pitch?: string;
86
+ }
87
+
88
+ export interface DocxContent {
89
+ paragraphs: Paragraph[];
90
+ tables?: Table[];
91
+ sections?: Section[];
92
+ }
93
+
94
+ export interface Paragraph {
95
+ text: string;
96
+ style?: string; // style name
97
+ numbering?: {
98
+ id: string;
99
+ level: number;
100
+ };
101
+ runs?: Run[];
102
+ }
103
+
104
+ export interface Run {
105
+ text: string;
106
+ style?: TextStyle;
107
+ }
108
+
109
+ export interface Table {
110
+ rows: TableRow[];
111
+ style?: string;
112
+ }
113
+
114
+ export interface TableRow {
115
+ cells: TableCell[];
116
+ }
117
+
118
+ export interface TableCell {
119
+ text: string; // Combined text from all paragraphs (for quick access)
120
+ colspan: number; // Column span (1 = no merge, >1 = merged cells)
121
+ rowspan: number; // Row span (1 = no merge, >1 = merged cells)
122
+ paragraphs: Paragraph[]; // Detailed paragraph structure within cell
123
+ style?: any; // Cell style (deprecated, kept for compatibility)
124
+ }
125
+
126
+ export interface Section {
127
+ properties: SectionProperties;
128
+ content: Paragraph[];
129
+ }
130
+
131
+ export interface SectionProperties {
132
+ pageSize?: {
133
+ width: number;
134
+ height: number;
135
+ };
136
+ pageMargins?: {
137
+ top: number;
138
+ bottom: number;
139
+ left: number;
140
+ right: number;
141
+ };
142
+ columns?: number;
143
+ }
144
+
145
+ // ========== Processing Options ==========
146
+
147
+ export interface DocumentReadOptions {
148
+ parseStyles?: boolean;
149
+ parseNumbering?: boolean;
150
+ parseFonts?: boolean;
151
+ parseContent?: boolean;
152
+ }
153
+
154
+ export interface DocumentModifyOptions {
155
+ operation: DocumentOperation;
156
+ preserveFormatting?: boolean;
157
+ updateStyles?: boolean;
158
+ updateNumbering?: boolean;
159
+ }
160
+
161
+ export interface TemplateData {
162
+ [key: string]: any;
163
+ }
164
+
165
+ // ========== Style Application ==========
166
+
167
+ export interface StyleApplication {
168
+ target: 'all' | 'pattern' | 'indices';
169
+ styleId: string;
170
+ pattern?: string | RegExp;
171
+ indices?: number[];
172
+ }
173
+
174
+ export interface StyleApplicationResult {
175
+ appliedCount: number;
176
+ skippedCount: number;
177
+ paragraphsModified: number[];
178
+ totalParagraphs: number;
179
+ }
180
+
181
+ export interface DefineAndApplyStyleOptions {
182
+ styleId: string;
183
+ styleName: string;
184
+ properties: TextStyle & ParagraphStyle;
185
+ application: StyleApplication;
186
+ }
187
+
188
+ // ========== Processor Results ==========
189
+
190
+ export interface ProcessorResult<T = any> {
191
+ success: boolean;
192
+ data?: T;
193
+ error?: string;
194
+ warnings?: string[];
195
+ }
196
+
197
+ export interface DocumentReadResult extends ProcessorResult {
198
+ data?: DocxDocument;
199
+ }
200
+
201
+ export interface DocumentModifyResult extends ProcessorResult {
202
+ data?: Buffer; // Modified DOCX file as buffer
203
+ }
204
+
205
+ // ========== XML Structure Types ==========
206
+
207
+ export interface DocumentXml {
208
+ 'w:document': {
209
+ 'w:body': {
210
+ 'w:p': ParagraphXml[];
211
+ 'w:tbl'?: TableXml[];
212
+ 'w:sectPr'?: SectionXml;
213
+ };
214
+ };
215
+ }
216
+
217
+ export interface ParagraphXml {
218
+ 'w:pPr'?: {
219
+ 'w:pStyle'?: { '@_w:val': string };
220
+ 'w:numPr'?: {
221
+ 'w:ilvl': { '@_w:val': string };
222
+ 'w:numId': { '@_w:val': string };
223
+ };
224
+ [key: string]: any; // Allow other properties
225
+ };
226
+ 'w:r'?: RunXml | RunXml[];
227
+ 'w:hyperlink'?: any | any[];
228
+ [key: string]: any; // Allow other children (bookmarks, etc.)
229
+ }
230
+
231
+ export interface RunXml {
232
+ 'w:rPr'?: any;
233
+ 'w:t'?: { '#text': string } | string;
234
+ }
235
+
236
+ export interface TableXml {
237
+ 'w:tblPr'?: any;
238
+ 'w:tr'?: any[];
239
+ }
240
+
241
+ export interface SectionXml {
242
+ 'w:pgSz'?: any;
243
+ 'w:pgMar'?: any;
244
+ }
245
+
246
+ export interface StylesXml {
247
+ 'w:styles': {
248
+ 'w:style': StyleXml[];
249
+ 'w:docDefaults'?: any;
250
+ };
251
+ }
252
+
253
+ export interface StyleXml {
254
+ '@_w:type': 'paragraph' | 'character' | 'table';
255
+ '@_w:styleId': string;
256
+ 'w:name'?: { '@_w:val': string };
257
+ 'w:basedOn'?: { '@_w:val': string };
258
+ 'w:pPr'?: any;
259
+ 'w:rPr'?: any;
260
+ }
261
+
262
+ export interface NumberingXml {
263
+ 'w:numbering': {
264
+ 'w:abstractNum'?: AbstractNumXml[];
265
+ 'w:num'?: NumXml[];
266
+ };
267
+ }
268
+
269
+ export interface AbstractNumXml {
270
+ '@_w:abstractNumId': string;
271
+ 'w:lvl': LevelXml[];
272
+ }
273
+
274
+ export interface LevelXml {
275
+ '@_w:ilvl': string;
276
+ 'w:start'?: { '@_w:val': string };
277
+ 'w:numFmt'?: { '@_w:val': string };
278
+ 'w:lvlText'?: { '@_w:val': string };
279
+ 'w:lvlJc'?: { '@_w:val': string };
280
+ 'w:pPr'?: any;
281
+ 'w:rPr'?: any;
282
+ }
283
+
284
+ export interface NumXml {
285
+ '@_w:numId': string;
286
+ 'w:abstractNumId': { '@_w:val': string };
287
+ }
288
+
289
+ // ========== Error Types ==========
290
+
291
+ export class DocxProcessingError extends Error {
292
+ constructor(
293
+ message: string,
294
+ public code: string,
295
+ public details?: any
296
+ ) {
297
+ super(message);
298
+ this.name = 'DocxProcessingError';
299
+ }
300
+ }
301
+
302
+ export enum ErrorCode {
303
+ INVALID_DOCX = 'INVALID_DOCX',
304
+ FILE_NOT_FOUND = 'FILE_NOT_FOUND',
305
+ PARSE_ERROR = 'PARSE_ERROR',
306
+ XML_ERROR = 'XML_ERROR',
307
+ STYLE_NOT_FOUND = 'STYLE_NOT_FOUND',
308
+ NUMBERING_NOT_FOUND = 'NUMBERING_NOT_FOUND',
309
+ UNSUPPORTED_OPERATION = 'UNSUPPORTED_OPERATION',
310
+ }