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,152 @@
1
+ /**
2
+ * URL Sanitization Utility
3
+ *
4
+ * Protects against XSS attacks via malicious URLs in href attributes.
5
+ * Blocks dangerous protocols like javascript:, data:, vbscript:, file:
6
+ *
7
+ * Security Context:
8
+ * - Prevents DOM-based XSS vulnerabilities
9
+ * - Critical for Electron apps with IPC access
10
+ * - Blocks protocol smuggling attacks
11
+ *
12
+ * @module urlSanitizer
13
+ */
14
+
15
+ import logger from './logger';
16
+
17
+ /**
18
+ * List of allowed URL protocols that are safe for href attributes
19
+ */
20
+ const ALLOWED_PROTOCOLS = ['http:', 'https:', 'mailto:', 'tel:', 'ftp:', 'ftps:'] as const;
21
+
22
+ /**
23
+ * List of dangerous protocols that should be blocked
24
+ * These can execute code or access local resources
25
+ */
26
+ const DANGEROUS_PROTOCOLS = [
27
+ 'javascript:',
28
+ 'data:',
29
+ 'vbscript:',
30
+ 'file:',
31
+ 'about:',
32
+ 'blob:',
33
+ ] as const;
34
+
35
+ /**
36
+ * Sanitizes a URL to prevent XSS attacks via href attributes.
37
+ *
38
+ * Validates the URL protocol and structure to ensure it's safe for use
39
+ * in HTML href attributes. Blocks dangerous protocols that could execute
40
+ * arbitrary code or access local resources.
41
+ *
42
+ * @param url - The URL to sanitize (can be string, null, or undefined)
43
+ * @returns A safe URL string, or '#' if the URL is invalid/dangerous
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * sanitizeUrl('https://example.com') // ✅ 'https://example.com'
48
+ * sanitizeUrl('javascript:alert("XSS")') // ❌ '#'
49
+ * sanitizeUrl('data:text/html,<script>') // ❌ '#'
50
+ * sanitizeUrl('mailto:user@example.com') // ✅ 'mailto:user@example.com'
51
+ * sanitizeUrl(null) // ❌ '#'
52
+ * sanitizeUrl('') // ❌ '#'
53
+ * ```
54
+ */
55
+ export function sanitizeUrl(url: string | null | undefined): string {
56
+ // Handle null, undefined, or empty strings
57
+ if (!url || typeof url !== 'string') {
58
+ return '#';
59
+ }
60
+
61
+ // Trim whitespace
62
+ const trimmedUrl = url.trim();
63
+
64
+ // Check for empty string after trimming
65
+ if (trimmedUrl === '' || trimmedUrl === '#') {
66
+ return '#';
67
+ }
68
+
69
+ // Handle relative URLs (consider safe if they don't start with dangerous patterns)
70
+ if (trimmedUrl.startsWith('/') || trimmedUrl.startsWith('./') || trimmedUrl.startsWith('../')) {
71
+ // Relative URLs are generally safe in web contexts
72
+ // But in Electron, we want to be cautious
73
+ return '#';
74
+ }
75
+
76
+ // Check if URL starts with a hash (anchor link - safe)
77
+ if (trimmedUrl.startsWith('#')) {
78
+ return trimmedUrl;
79
+ }
80
+
81
+ try {
82
+ // Parse the URL to extract protocol
83
+ // For URLs without protocol, URL constructor will throw
84
+ let parsedUrl: URL;
85
+
86
+ try {
87
+ parsedUrl = new URL(trimmedUrl);
88
+ } catch {
89
+ // If URL parsing fails, it might be a relative URL or malformed
90
+ // Check if it looks like it has a protocol
91
+ if (trimmedUrl.includes(':')) {
92
+ // Has a colon, might be a protocol - check if dangerous
93
+ const colonIndex = trimmedUrl.indexOf(':');
94
+ const possibleProtocol = trimmedUrl.substring(0, colonIndex + 1).toLowerCase();
95
+
96
+ // Check against dangerous protocols
97
+ if (DANGEROUS_PROTOCOLS.includes(possibleProtocol as any)) {
98
+ return '#';
99
+ }
100
+ }
101
+
102
+ // If no protocol or unknown format, return safe fallback
103
+ return '#';
104
+ }
105
+
106
+ // Convert protocol to lowercase for case-insensitive comparison
107
+ const protocol = parsedUrl.protocol.toLowerCase();
108
+
109
+ // Check against dangerous protocols
110
+ if (DANGEROUS_PROTOCOLS.includes(protocol as any)) {
111
+ return '#';
112
+ }
113
+
114
+ // Check if protocol is in allowed list
115
+ if (ALLOWED_PROTOCOLS.includes(protocol as any)) {
116
+ return trimmedUrl; // Return original URL (preserves casing)
117
+ }
118
+
119
+ // Unknown protocol - reject for safety
120
+ return '#';
121
+ } catch (error) {
122
+ // If any error occurs during parsing, return safe fallback
123
+ logger.warn('[URL Sanitizer] Failed to parse URL:', url, error);
124
+ return '#';
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Checks if a URL is safe without modifying it.
130
+ *
131
+ * @param url - The URL to check
132
+ * @returns true if the URL is safe, false otherwise
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * isSafeUrl('https://example.com') // true
137
+ * isSafeUrl('javascript:alert("XSS")') // false
138
+ * ```
139
+ */
140
+ export function isSafeUrl(url: string | null | undefined): boolean {
141
+ return sanitizeUrl(url) !== '#';
142
+ }
143
+
144
+ /**
145
+ * Sanitizes an array of URLs.
146
+ *
147
+ * @param urls - Array of URLs to sanitize
148
+ * @returns Array of sanitized URLs
149
+ */
150
+ export function sanitizeUrls(urls: (string | null | undefined)[]): string[] {
151
+ return urls.map(sanitizeUrl);
152
+ }
@@ -0,0 +1,11 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ declare module '*.svg' {
4
+ const content: string;
5
+ export default content;
6
+ }
7
+
8
+ declare module '/icon.svg' {
9
+ const content: string;
10
+ export default content;
11
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "target": "ES2022",
5
+ "module": "commonjs",
6
+ "moduleResolution": "node",
7
+ "lib": ["ES2022"],
8
+ "types": ["node", "electron"],
9
+ "esModuleInterop": true,
10
+ "skipLibCheck": true,
11
+ "strict": false,
12
+ "noEmit": true,
13
+ "resolveJsonModule": true,
14
+ "allowSyntheticDefaultImports": true,
15
+ "forceConsistentCasingInFileNames": true
16
+ },
17
+ "include": ["electron/**/*"],
18
+ "exclude": ["node_modules", "dist", "release"]
19
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "_comment": "Force TypeScript reload",
3
+ "compilerOptions": {
4
+ "target": "ES2022",
5
+ "useDefineForClassFields": true,
6
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
7
+ "module": "ESNext",
8
+ "skipLibCheck": true,
9
+ "moduleResolution": "bundler",
10
+ "allowImportingTsExtensions": true,
11
+ "resolveJsonModule": true,
12
+ "isolatedModules": true,
13
+ "noEmit": true,
14
+ "jsx": "react-jsx",
15
+ "strict": true,
16
+ "noUnusedLocals": false,
17
+ "noUnusedParameters": false,
18
+ "noFallthroughCasesInSwitch": true,
19
+ "esModuleInterop": true,
20
+ "forceConsistentCasingInFileNames": true,
21
+ "allowSyntheticDefaultImports": true,
22
+ "baseUrl": ".",
23
+ "paths": {
24
+ "@/*": ["./src/*"],
25
+ "@components/*": ["./src/components/*"],
26
+ "@hooks/*": ["./src/hooks/*"],
27
+ "@utils/*": ["./src/utils/*"],
28
+ "@styles/*": ["./src/styles/*"],
29
+ "@pages/*": ["./src/pages/*"],
30
+ "@contexts/*": ["./src/contexts/*"]
31
+ }
32
+ },
33
+ "include": ["src"],
34
+ "exclude": ["electron", "node_modules", "dist", "release", "src/**/__tests__", "src/**/*.test.ts", "src/**/*.test.tsx"],
35
+ "references": [{ "path": "./tsconfig.node.json" }]
36
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "skipLibCheck": true,
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "allowSyntheticDefaultImports": true,
8
+ "strict": true,
9
+ "forceConsistentCasingInFileNames": true
10
+ },
11
+ "include": ["vite.config.ts"]
12
+ }
package/typedoc.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "https://typedoc.org/schema.json",
3
+ "entryPoints": [
4
+ "./src/services/document/DocXMLaterProcessor.ts",
5
+ "./src/services/document/types/docx-processing.ts",
6
+ "./src/utils/textSanitizer.ts"
7
+ ],
8
+ "out": "./docs/api",
9
+ "plugin": [],
10
+ "compilerOptions": {
11
+ "skipLibCheck": true
12
+ },
13
+ "readme": "./docs/api/API_README.md",
14
+ "name": "Documentation Hub - API Documentation",
15
+ "includeVersion": true,
16
+ "entryPointStrategy": "expand",
17
+ "categorizeByGroup": true,
18
+ "sort": ["source-order"],
19
+ "groupOrder": [
20
+ "Document I/O",
21
+ "Style Operations",
22
+ "Table Operations",
23
+ "Paragraph Formatting",
24
+ "High-Level Operations",
25
+ "Hyperlink Operations",
26
+ "Search & Replace",
27
+ "Document Statistics",
28
+ "Utilities",
29
+ "*"
30
+ ],
31
+ "exclude": [
32
+ "**/*+(test|spec).ts",
33
+ "**/node_modules/**",
34
+ "**/dist/**"
35
+ ],
36
+ "excludePrivate": true,
37
+ "excludeProtected": false,
38
+ "excludeInternal": false,
39
+ "hideGenerator": false,
40
+ "disableSources": false,
41
+ "searchInComments": true,
42
+ "navigationLinks": {
43
+ "GitHub": "https://github.com/ItMeDiaTech/Documentation_Hub"
44
+ }
45
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,152 @@
1
+ import { defineConfig } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+ import electron from 'vite-plugin-electron';
4
+ import renderer from 'vite-plugin-electron-renderer';
5
+ import tailwindcss from '@tailwindcss/vite';
6
+ import { resolve } from 'path';
7
+
8
+ export default defineConfig({
9
+ optimizeDeps: {
10
+ include: ['lucide-react', 'docxmlater'],
11
+ },
12
+ plugins: [
13
+ tailwindcss(),
14
+ react(),
15
+ electron([
16
+ {
17
+ entry: 'electron/main.ts',
18
+ vite: {
19
+ resolve: {
20
+ alias: {
21
+ '@': resolve(__dirname, './src'),
22
+ '@components': resolve(__dirname, './src/components'),
23
+ '@hooks': resolve(__dirname, './src/hooks'),
24
+ '@utils': resolve(__dirname, './src/utils'),
25
+ '@styles': resolve(__dirname, './src/styles'),
26
+ '@pages': resolve(__dirname, './src/pages'),
27
+ '@contexts': resolve(__dirname, './src/contexts'),
28
+ },
29
+ preserveSymlinks: false,
30
+ },
31
+ build: {
32
+ outDir: 'dist/electron',
33
+ emptyOutDir: false,
34
+ minify: false, // Disable minification to debug electron import issues
35
+ commonjsOptions: {
36
+ include: [/node_modules/, /docxmlater/],
37
+ },
38
+ rollupOptions: {
39
+ external: [
40
+ 'electron',
41
+ 'canvas',
42
+ 'docxmlater',
43
+ 'xlsx',
44
+ 'better-sqlite3',
45
+ '@azure/msal-node',
46
+ 'electron-updater',
47
+ 'electron-log',
48
+ ],
49
+ output: {
50
+ format: 'cjs', // Use CommonJS to support __dirname natively
51
+ },
52
+ },
53
+ },
54
+ },
55
+ },
56
+ {
57
+ entry: 'electron/preload.ts',
58
+ onstart(options) {
59
+ options.reload();
60
+ },
61
+ vite: {
62
+ resolve: {
63
+ alias: {
64
+ '@': resolve(__dirname, './src'),
65
+ '@components': resolve(__dirname, './src/components'),
66
+ '@hooks': resolve(__dirname, './src/hooks'),
67
+ '@utils': resolve(__dirname, './src/utils'),
68
+ '@styles': resolve(__dirname, './src/styles'),
69
+ '@pages': resolve(__dirname, './src/pages'),
70
+ '@contexts': resolve(__dirname, './src/contexts'),
71
+ },
72
+ preserveSymlinks: false,
73
+ },
74
+ build: {
75
+ outDir: 'dist/electron',
76
+ commonjsOptions: {
77
+ include: [/node_modules/, /docxmlater/],
78
+ },
79
+ rollupOptions: {
80
+ external: [
81
+ 'electron',
82
+ 'canvas',
83
+ 'docxmlater',
84
+ 'xlsx',
85
+ 'better-sqlite3',
86
+ '@azure/msal-node',
87
+ 'electron-updater',
88
+ 'electron-log',
89
+ ],
90
+ output: {
91
+ format: 'cjs', // Use CommonJS to support __dirname natively
92
+ },
93
+ },
94
+ },
95
+ },
96
+ },
97
+ ]),
98
+ renderer(),
99
+ ],
100
+ resolve: {
101
+ alias: {
102
+ '@': resolve(__dirname, './src'),
103
+ '@components': resolve(__dirname, './src/components'),
104
+ '@hooks': resolve(__dirname, './src/hooks'),
105
+ '@utils': resolve(__dirname, './src/utils'),
106
+ '@styles': resolve(__dirname, './src/styles'),
107
+ '@pages': resolve(__dirname, './src/pages'),
108
+ '@contexts': resolve(__dirname, './src/contexts'),
109
+ },
110
+ preserveSymlinks: false,
111
+ },
112
+ server: {
113
+ port: 5173,
114
+ strictPort: true,
115
+ },
116
+ build: {
117
+ outDir: 'dist',
118
+ emptyOutDir: true,
119
+ chunkSizeWarningLimit: 600, // Increase from 500kb to 600kb
120
+ commonjsOptions: {
121
+ include: [/lucide-react/, /node_modules/, /docxmlater/],
122
+ },
123
+ // Use esbuild minification (faster and already included)
124
+ minify: 'esbuild',
125
+ rollupOptions: {
126
+ input: {
127
+ index: resolve(__dirname, 'index.html'),
128
+ },
129
+ output: {
130
+ // Manual chunk splitting for better caching and smaller bundles
131
+ manualChunks: {
132
+ // Core React libraries
133
+ 'vendor-react': ['react', 'react-dom', 'react-router-dom'],
134
+
135
+ // Heavy charting library
136
+ 'vendor-charts': ['recharts'],
137
+
138
+ // Search functionality
139
+ 'vendor-search': ['fuse.js'],
140
+
141
+ // UI libraries
142
+ 'vendor-ui': ['framer-motion', 'lucide-react', 'cmdk', '@radix-ui/react-dialog'],
143
+
144
+ // Database
145
+ 'vendor-db': ['idb'],
146
+ },
147
+ },
148
+ },
149
+ // Use esbuild for CSS minification (Lightning CSS has issues with Tailwind escapes)
150
+ cssMinify: 'esbuild',
151
+ },
152
+ });